Start card read migration
This commit is contained in:
parent
9c759c3b1a
commit
6eb71437cf
@ -21,4 +21,10 @@
|
|||||||
<PackageReference Include="Throw" Version="1.3.1" />
|
<PackageReference Include="Throw" Version="1.3.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="Game\Card\OnlineMatching" />
|
||||||
|
<Folder Include="Game\Card\Read" />
|
||||||
|
<Folder Include="Game\Card\Write" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
using ChoETL;
|
using System.Text;
|
||||||
|
using ChoETL;
|
||||||
using Throw;
|
using Throw;
|
||||||
|
|
||||||
namespace Application.Common;
|
namespace Application.Common.Extensions;
|
||||||
|
|
||||||
public static class XmlSerializationExtensions
|
public static class XmlSerializationExtensions
|
||||||
{
|
{
|
||||||
@ -14,4 +15,24 @@ public static class XmlSerializationExtensions
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string SerializeCardData<T>(this T source, string xpath) where T : class
|
||||||
|
{
|
||||||
|
var buffer = new StringBuilder();
|
||||||
|
using var writer = new ChoXmlWriter<T>(buffer).WithXPath(xpath).UseXmlSerialization();
|
||||||
|
writer.Configuration.OmitXmlDeclaration = false;
|
||||||
|
writer.Configuration.DoNotEmitXmlNamespace = true;
|
||||||
|
writer.Write(source);
|
||||||
|
return buffer.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string SerializeCardDataList<T>(this IEnumerable<T> source, string xpath) where T : class
|
||||||
|
{
|
||||||
|
var buffer = new StringBuilder();
|
||||||
|
using var writer = new ChoXmlWriter<T>(buffer).WithXPath(xpath).UseXmlSerialization();
|
||||||
|
writer.Configuration.OmitXmlDeclaration = false;
|
||||||
|
writer.Configuration.DoNotEmitXmlNamespace = true;
|
||||||
|
writer.Write(source);
|
||||||
|
return buffer.ToString();
|
||||||
|
}
|
||||||
}
|
}
|
21
Application/Dto/SessionDto.cs
Normal file
21
Application/Dto/SessionDto.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
|
namespace Application.Dto;
|
||||||
|
|
||||||
|
public class SessionDto
|
||||||
|
{
|
||||||
|
[XmlElement(ElementName = "card_id")]
|
||||||
|
public long CardId { get; set; }
|
||||||
|
|
||||||
|
[XmlElement(ElementName = "mac_addr")]
|
||||||
|
public string Mac { get; set; } = "000000000000";
|
||||||
|
|
||||||
|
[XmlElement(ElementName = "session_id")]
|
||||||
|
public string SessionId { get; set; } = "12345678901234567890123456789012";
|
||||||
|
|
||||||
|
[XmlElement(ElementName = "expires")]
|
||||||
|
public int Expires { get; set; }
|
||||||
|
|
||||||
|
[XmlElement(ElementName = "player_id")]
|
||||||
|
public int PlayerId { get; set; }
|
||||||
|
}
|
@ -1,14 +1,10 @@
|
|||||||
using Application.Common;
|
using Application.Common.Extensions;
|
||||||
using Application.Common.Exceptions;
|
|
||||||
using Application.Common.Models;
|
using Application.Common.Models;
|
||||||
using Application.Dto;
|
using Application.Dto;
|
||||||
using Application.Interfaces;
|
using Application.Interfaces;
|
||||||
using Application.Mappers;
|
using Application.Mappers;
|
||||||
using MediatR;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
using Throw;
|
|
||||||
|
|
||||||
namespace Application.Game.Card;
|
namespace Application.Game.Card.Management;
|
||||||
|
|
||||||
public record CardRegisterCommand(long CardId, string Data) : IRequestWrapper<string>;
|
public record CardRegisterCommand(long CardId, string Data) : IRequestWrapper<string>;
|
||||||
|
|
21
Application/Game/Card/Management/CardReissueCommand.cs
Normal file
21
Application/Game/Card/Management/CardReissueCommand.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
using Application.Common.Models;
|
||||||
|
using Application.Interfaces;
|
||||||
|
using Domain.Enums;
|
||||||
|
|
||||||
|
namespace Application.Game.Card.Management;
|
||||||
|
|
||||||
|
public record CardReissueCommand(long CardId) : IRequestWrapper<string>;
|
||||||
|
|
||||||
|
public class CardReissueCommandHandler : CardRequestHandlerBase<CardReissueCommand, string>
|
||||||
|
{
|
||||||
|
public CardReissueCommandHandler(ICardDependencyAggregate aggregate) : base(aggregate)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<ServiceResult<string>> Handle(CardReissueCommand request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
// TODO: Support actual reissue
|
||||||
|
var result = $"{(int)CardReturnCode.NotReissue}";
|
||||||
|
return Task.FromResult(new ServiceResult<string>(result));
|
||||||
|
}
|
||||||
|
}
|
30
Application/Game/Card/Session/GetSessionCommand.cs
Normal file
30
Application/Game/Card/Session/GetSessionCommand.cs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
using Application.Common.Extensions;
|
||||||
|
using Application.Common.Models;
|
||||||
|
using Application.Dto;
|
||||||
|
using Application.Interfaces;
|
||||||
|
|
||||||
|
namespace Application.Game.Card.Session;
|
||||||
|
|
||||||
|
public record GetSessionCommand(long CardId, string Mac) : IRequestWrapper<string>;
|
||||||
|
|
||||||
|
public class GetSessionCommandHandler : CardRequestHandlerBase<GetSessionCommand, string>
|
||||||
|
{
|
||||||
|
private const string SESSION_XPATH = "/root/session";
|
||||||
|
|
||||||
|
public GetSessionCommandHandler(ICardDependencyAggregate aggregate) : base(aggregate)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<ServiceResult<string>> Handle(GetSessionCommand request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var session = new SessionDto
|
||||||
|
{
|
||||||
|
CardId = request.CardId,
|
||||||
|
Mac = request.Mac,
|
||||||
|
PlayerId = 1,
|
||||||
|
Expires = 9999,
|
||||||
|
SessionId = "12345678901234567890123456789012"
|
||||||
|
};
|
||||||
|
return Task.FromResult(new ServiceResult<string>(session.SerializeCardData(SESSION_XPATH)));
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
namespace Domain;
|
namespace Domain.Enums;
|
||||||
|
|
||||||
public enum CardCommandType
|
public enum CardCommandType
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
namespace Domain;
|
namespace Domain.Enums;
|
||||||
|
|
||||||
public enum CardRequestType
|
public enum CardRequestType
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
namespace Domain;
|
namespace Domain.Enums;
|
||||||
|
|
||||||
public enum CardReturnCode
|
public enum CardReturnCode
|
||||||
{
|
{
|
||||||
@ -23,5 +23,5 @@ public enum CardReturnCode
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Server side validation error
|
/// Server side validation error
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Unknown = 999
|
Unknown = -1
|
||||||
}
|
}
|
@ -1,7 +1,10 @@
|
|||||||
using System.Net;
|
using System.Net;
|
||||||
using Application.Common.Models;
|
using Application.Common.Models;
|
||||||
using Application.Game.Card;
|
using Application.Game.Card;
|
||||||
|
using Application.Game.Card.Management;
|
||||||
|
using Application.Game.Card.Session;
|
||||||
using Domain;
|
using Domain;
|
||||||
|
using Domain.Enums;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Throw;
|
using Throw;
|
||||||
|
|
||||||
@ -28,6 +31,7 @@ public class CardController : BaseController<CardController>
|
|||||||
switch (cardCommandType)
|
switch (cardCommandType)
|
||||||
{
|
{
|
||||||
case CardCommandType.CardReadRequest:
|
case CardCommandType.CardReadRequest:
|
||||||
|
case CardCommandType.CardWriteRequest:
|
||||||
{
|
{
|
||||||
switch (cardRequestType)
|
switch (cardRequestType)
|
||||||
{
|
{
|
||||||
@ -72,8 +76,8 @@ public class CardController : BaseController<CardController>
|
|||||||
case CardRequestType.ReadTotalTrophy:
|
case CardRequestType.ReadTotalTrophy:
|
||||||
break;
|
break;
|
||||||
case CardRequestType.GetSession:
|
case CardRequestType.GetSession:
|
||||||
break;
|
|
||||||
case CardRequestType.StartSession:
|
case CardRequestType.StartSession:
|
||||||
|
result = await Mediator.Send(new GetSessionCommand(request.CardId, request.Mac));
|
||||||
break;
|
break;
|
||||||
case CardRequestType.WriteCard:
|
case CardRequestType.WriteCard:
|
||||||
|
|
||||||
@ -111,12 +115,11 @@ public class CardController : BaseController<CardController>
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CardCommandType.CardWriteRequest:
|
|
||||||
break;
|
|
||||||
case CardCommandType.RegisterRequest:
|
case CardCommandType.RegisterRequest:
|
||||||
result = await Mediator.Send(new CardRegisterCommand(request.CardId, request.Data));
|
result = await Mediator.Send(new CardRegisterCommand(request.CardId, request.Data));
|
||||||
break;
|
break;
|
||||||
case CardCommandType.ReissueRequest:
|
case CardCommandType.ReissueRequest:
|
||||||
|
result = await Mediator.Send(new CardReissueCommand(request.CardId));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new ArgumentOutOfRangeException(message: "Should not happen", paramName:null);
|
throw new ArgumentOutOfRangeException(message: "Should not happen", paramName:null);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user