Fix alive, migrate write, add online matching stub, start rank

This commit is contained in:
asesidaa
2023-02-14 02:47:08 +08:00
parent 5c85e83c3e
commit 02a241567c
17 changed files with 341 additions and 139 deletions
+13
View File
@@ -1,3 +1,16 @@
{
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://0.0.0.0:80"
},
"Https": {
"Url": "https://0.0.0.0:443"
},
"Test": {
"Url": "http://0.0.0.0:5107"
}
}
},
"ServerIp": "127.0.0.1"
}
@@ -17,7 +17,7 @@ public class AliveController : ControllerBase
return Ok(response);
}
[HttpGet("/{id}/Alive.txt")]
[HttpGet("{id}/Alive.txt")]
public IActionResult GetAliveFile()
{
return Ok("");
+59 -109
View File
@@ -2,6 +2,7 @@
using Application.Common.Models;
using Application.Game.Card;
using Application.Game.Card.Management;
using Application.Game.Card.OnlineMatching;
using Application.Game.Card.Read;
using Application.Game.Card.Session;
using Application.Game.Card.Write;
@@ -28,120 +29,69 @@ public class CardController : BaseController<CardController>
}
request.Data = WebUtility.UrlDecode(request.Data);
var result = ServiceResult.Failed<string>(ServiceError.DefaultError);
ServiceResult<string> result;
switch (cardCommandType)
{
case CardCommandType.CardReadRequest:
case CardCommandType.CardWriteRequest:
{
switch (cardRequestType)
result = cardRequestType switch
{
case CardRequestType.ReadCard:
result = await Mediator.Send(new ReadCardQuery(request.CardId));
break;
case CardRequestType.ReadCardDetail:
result = await Mediator.Send(new ReadCardDetailQuery(request.CardId, request.Data));
break;
case CardRequestType.ReadCardDetails:
result = await Mediator.Send(new ReadAllCardDetailsQuery(request.CardId));
break;
case CardRequestType.ReadCardBData:
result = await Mediator.Send(new ReadCardBDataQuery(request.CardId));
break;
case CardRequestType.ReadAvatar:
result = await Mediator.Send(new ReadAvatarQuery(request.CardId));
break;
case CardRequestType.ReadItem:
result = await Mediator.Send(new ReadItemQuery(request.CardId));
break;
case CardRequestType.ReadSkin:
result = await Mediator.Send(new ReadSkinQuery(request.CardId));
break;
case CardRequestType.ReadTitle:
result = await Mediator.Send(new ReadTitleQuery(request.CardId));
break;
case CardRequestType.ReadNavigator:
result = await Mediator.Send(new ReadNavigatorQuery(request.CardId));
break;
case CardRequestType.ReadSoundEffect:
result = await Mediator.Send(new ReadSoundEffectQuery(request.CardId));
break;
case CardRequestType.ReadMusic:
result = await Mediator.Send(new ReadMusicQuery(request.CardId));
break;
case CardRequestType.ReadMusicAou:
result = await Mediator.Send(new ReadMusicAouQuery(request.CardId));
break;
case CardRequestType.ReadMusicExtra:
result = await Mediator.Send(new ReadMusicExtraQuery(request.CardId));
break;
case CardRequestType.ReadEventReward:
result = await Mediator.Send(new ReadEventRewardQuery(request.CardId));
break;
case CardRequestType.ReadCoin:
result = await Mediator.Send(new ReadCoinQuery(request.CardId));
break;
case CardRequestType.ReadUnlockReward:
result = await Mediator.Send(new ReadUnlockRewardQuery(request.CardId));
break;
case CardRequestType.ReadUnlockKeynum:
result = await Mediator.Send(new ReadUnlockKeynumQuery(request.CardId));
break;
case CardRequestType.ReadGetMessage:
result = await Mediator.Send(new ReadGetMessageQuery(request.CardId));
break;
case CardRequestType.ReadCond:
result = await Mediator.Send(new ReadCondQuery(request.CardId));
break;
case CardRequestType.ReadTotalTrophy:
result = await Mediator.Send(new ReadTotalTrophyQuery(request.CardId));
break;
case CardRequestType.GetSession:
case CardRequestType.StartSession:
result = await Mediator.Send(new GetSessionCommand(request.CardId, request.Mac));
break;
case CardRequestType.WriteCard:
break;
case CardRequestType.WriteCardDetail:
break;
case CardRequestType.WriteCardBData:
break;
case CardRequestType.WriteAvatar:
result = await Mediator.Send(new WriteAvatarCommand(request.CardId, request.Data));
break;
case CardRequestType.WriteItem:
result = await Mediator.Send(new WriteItemCommand(request.CardId, request.Data));
break;
case CardRequestType.WriteTitle:
result = await Mediator.Send(new WriteTitleCommand(request.CardId, request.Data));
break;
case CardRequestType.WriteMusicDetail:
result = await Mediator.Send(new WriteMusicDetailCommand(request.CardId, request.Data));
break;
case CardRequestType.WriteNavigator:
result = await Mediator.Send(new WriteNavigatorCommand(request.CardId, request.Data));
break;
case CardRequestType.WriteCoin:
result = await Mediator.Send(new WriteCoinCommand(request.CardId, request.Data));
break;
case CardRequestType.WriteSkin:
result = await Mediator.Send(new WriteSkinCommand(request.CardId, request.Data));
break;
case CardRequestType.WriteUnlockKeynum:
result = await Mediator.Send(new WriteUnlockKeynumCommand(request.CardId, request.Data));
break;
case CardRequestType.WriteSoundEffect:
result = await Mediator.Send(new WriteSoundEffectCommand(request.CardId, request.Data));
break;
case CardRequestType.StartOnlineMatching:
break;
case CardRequestType.UpdateOnlineMatching:
break;
case CardRequestType.UploadOnlineMatchingResult:
break;
default:
throw new ArgumentOutOfRangeException(message: "Should not happen", paramName:null);
}
CardRequestType.ReadCard => await Mediator.Send(new ReadCardQuery(request.CardId)),
CardRequestType.ReadCardDetail => await Mediator.Send(
new ReadCardDetailQuery(request.CardId, request.Data)),
CardRequestType.ReadCardDetails => await Mediator.Send(new ReadAllCardDetailsQuery(request.CardId)),
CardRequestType.ReadCardBData => await Mediator.Send(new ReadCardBDataQuery(request.CardId)),
CardRequestType.ReadAvatar => await Mediator.Send(new ReadAvatarQuery(request.CardId)),
CardRequestType.ReadItem => await Mediator.Send(new ReadItemQuery(request.CardId)),
CardRequestType.ReadSkin => await Mediator.Send(new ReadSkinQuery(request.CardId)),
CardRequestType.ReadTitle => await Mediator.Send(new ReadTitleQuery(request.CardId)),
CardRequestType.ReadMusic => await Mediator.Send(new ReadMusicQuery(request.CardId)),
CardRequestType.ReadEventReward => await Mediator.Send(new ReadEventRewardQuery(request.CardId)),
CardRequestType.ReadNavigator => await Mediator.Send(new ReadNavigatorQuery(request.CardId)),
CardRequestType.ReadMusicExtra => await Mediator.Send(new ReadMusicExtraQuery(request.CardId)),
CardRequestType.ReadMusicAou => await Mediator.Send(new ReadMusicAouQuery(request.CardId)),
CardRequestType.ReadCoin => await Mediator.Send(new ReadCoinQuery(request.CardId)),
CardRequestType.ReadUnlockReward => await Mediator.Send(new ReadUnlockRewardQuery(request.CardId)),
CardRequestType.ReadUnlockKeynum => await Mediator.Send(new ReadUnlockKeynumQuery(request.CardId)),
CardRequestType.ReadSoundEffect => await Mediator.Send(new ReadSoundEffectQuery(request.CardId)),
CardRequestType.ReadGetMessage => await Mediator.Send(new ReadGetMessageQuery(request.CardId)),
CardRequestType.ReadCond => await Mediator.Send(new ReadCondQuery(request.CardId)),
CardRequestType.ReadTotalTrophy => await Mediator.Send(new ReadTotalTrophyQuery(request.CardId)),
CardRequestType.GetSession or CardRequestType.StartSession => await Mediator.Send(
new GetSessionCommand(request.CardId, request.Mac)),
CardRequestType.WriteCard =>
await Mediator.Send(new WriteCardCommand(request.CardId, request.Data)),
CardRequestType.WriteCardDetail => await Mediator.Send(
new WriteCardDetailCommand(request.CardId, request.Data)),
CardRequestType.WriteCardBData => await Mediator.Send(
new WriteCardBDataCommand(request.CardId, request.Data)),
CardRequestType.WriteAvatar => await Mediator.Send(new WriteAvatarCommand(request.CardId,
request.Data)),
CardRequestType.WriteItem =>
await Mediator.Send(new WriteItemCommand(request.CardId, request.Data)),
CardRequestType.WriteTitle => await Mediator.Send(new WriteTitleCommand(request.CardId,
request.Data)),
CardRequestType.WriteMusicDetail => await Mediator.Send(
new WriteMusicDetailCommand(request.CardId, request.Data)),
CardRequestType.WriteNavigator => await Mediator.Send(
new WriteNavigatorCommand(request.CardId, request.Data)),
CardRequestType.WriteCoin =>
await Mediator.Send(new WriteCoinCommand(request.CardId, request.Data)),
CardRequestType.WriteSkin =>
await Mediator.Send(new WriteSkinCommand(request.CardId, request.Data)),
CardRequestType.WriteUnlockKeynum => await Mediator.Send(
new WriteUnlockKeynumCommand(request.CardId, request.Data)),
CardRequestType.WriteSoundEffect => await Mediator.Send(
new WriteSoundEffectCommand(request.CardId, request.Data)),
CardRequestType.StartOnlineMatching => await Mediator.Send(
new StartOnlineMatchingCommand(request.CardId, request.Data)),
CardRequestType.UpdateOnlineMatching => await Mediator.Send(
new UpdateOnlineMatchingCommand(request.CardId, request.Data)),
CardRequestType.UploadOnlineMatchingResult => await Mediator.Send(
new UploadOnlineMatchingResultCommand(request.CardId, request.Data)),
_ => throw new ArgumentOutOfRangeException(nameof(cardRequestType), cardRequestType, "Should not happen")
};
break;
}
case CardCommandType.RegisterRequest:
@@ -151,7 +101,7 @@ public class CardController : BaseController<CardController>
result = await Mediator.Send(new CardReissueCommand(request.CardId));
break;
default:
throw new ArgumentOutOfRangeException(message: "Should not happen", paramName:null);
throw new ArgumentOutOfRangeException(nameof(cardCommandType), cardCommandType, "Should not happen");
}
if (result.Succeeded)
@@ -0,0 +1,34 @@
using Domain.Enums;
using Microsoft.AspNetCore.Mvc;
using Throw;
namespace MainServer.Controllers.Game;
[ApiController]
[Route("ranking")]
public class RankingController : BaseController<RankingController>
{
[HttpGet("ranking.php")]
public async Task<ActionResult<string>> Ranking([FromQuery(Name = "cmd_type")] int rankType)
{
var type = (RankingCommandType)rankType;
type.Throw().IfOutOfRange();
switch (type)
{
case RankingCommandType.GlobalRank:
break;
case RankingCommandType.PlayNumRank:
break;
case RankingCommandType.EventRank:
break;
case RankingCommandType.MonthlyRank:
break;
case RankingCommandType.ShopRank:
break;
default:
throw new ArgumentOutOfRangeException(nameof(type), type, "Should not happen!");
}
return "";
}
}
+12 -12
View File
@@ -10,18 +10,18 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="CertificateManager" Version="1.0.8"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.2"/>
<PackageReference Include="CertificateManager" Version="1.0.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="7.0.3"/>
<PackageReference Include="Serilog.AspNetCore" Version="6.1.1-dev-00293"/>
<PackageReference Include="Serilog.Expressions" Version="3.4.2-dev-00119"/>
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0"/>
<PackageReference Include="System.Security.Cryptography.X509Certificates" Version="4.3.2"/>
<PackageReference Include="Throw" Version="1.3.1"/>
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="7.0.3" />
<PackageReference Include="Serilog.AspNetCore" Version="6.1.1-dev-00293" />
<PackageReference Include="Serilog.Expressions" Version="3.4.2-dev-00119" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
<PackageReference Include="System.Security.Cryptography.X509Certificates" Version="4.3.2" />
<PackageReference Include="Throw" Version="1.3.1" />
</ItemGroup>
<ItemGroup>
@@ -68,13 +68,13 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Infrastructure\Infrastructure.csproj"/>
<ProjectReference Include="..\Infrastructure\Infrastructure.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Controllers\API"/>
<Folder Include="Logs"/>
<Folder Include="wwwroot"/>
<Folder Include="Controllers\API" />
<Folder Include="Logs" />
<Folder Include="wwwroot" />
</ItemGroup>
</Project>
+13 -7
View File
@@ -8,6 +8,7 @@ using Infrastructure.Persistence;
using MainServer.Filters;
using Microsoft.AspNetCore.StaticFiles;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.FileProviders;
using Serilog;
using Serilog.Extensions.Logging;
using Throw;
@@ -64,9 +65,16 @@ try
builder.Services.AddApplication();
builder.Services.AddInfrastructure(builder.Configuration);
builder.Services.AddResponseCompression(options =>
{
options.EnableForHttps = true;
});
var app = builder.Build();
app.UseResponseCompression();
using (var scope = app.Services.CreateScope())
{
var db = scope.ServiceProvider.GetRequiredService<CardDbContext>();
@@ -96,13 +104,11 @@ try
// Add content type for .cmp and .evt files as static files with unknown file extensions return 404 by default
// See https://learn.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-7.0#fileextensioncontenttypeprovider
// ReSharper disable once UseObjectOrCollectionInitializer
var provider = new FileExtensionContentTypeProvider();
provider.Mappings[".cmp"] = "text/plain";
provider.Mappings[".evt"] = "text/plain";
app.UseStaticFiles(new StaticFileOptions
{
ContentTypeProvider = provider
});
var contentTypeProvider = new FileExtensionContentTypeProvider();
contentTypeProvider.Mappings[".cmp"] = "text/plain";
contentTypeProvider.Mappings[".evt"] = "text/plain";
app.UseStaticFiles();
app.MapControllers();