feat(item-acquire-history): controller + DTOs
Add ItemAcquireHistoryController (POST /item_acquire_history/info) with its three DTOs and two integration tests (ordering + empty-viewer). The endpoint reads ViewerAcquireHistory rows written by InventoryTransaction.CommitAsync, ordered newest-first, capped at 300. Tests access doc.RootElement.histories directly (no envelope wrapper in the test path — middleware skips non-UnityPlayer UA). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using MessagePack;
|
||||
|
||||
namespace SVSim.EmulatedEntrypoint.Models.Dtos.ItemAcquireHistory;
|
||||
|
||||
/// <summary>
|
||||
/// One row in the <c>/item_acquire_history/info</c> response. All numeric fields ship as
|
||||
/// decimal strings to match the prod capture.
|
||||
/// </summary>
|
||||
[MessagePackObject]
|
||||
public sealed class ItemAcquireHistoryEntryDto
|
||||
{
|
||||
[JsonPropertyName("reward_type")]
|
||||
[Key("reward_type")]
|
||||
public string RewardType { get; set; } = "0";
|
||||
|
||||
[JsonPropertyName("reward_detail_id")]
|
||||
[Key("reward_detail_id")]
|
||||
public string RewardDetailId { get; set; } = "0";
|
||||
|
||||
[JsonPropertyName("reward_count")]
|
||||
[Key("reward_count")]
|
||||
public string RewardCount { get; set; } = "0";
|
||||
|
||||
[JsonPropertyName("acquire_type")]
|
||||
[Key("acquire_type")]
|
||||
public string AcquireType { get; set; } = "0";
|
||||
|
||||
[JsonPropertyName("acquire_time")]
|
||||
[Key("acquire_time")]
|
||||
public string AcquireTime { get; set; } = string.Empty;
|
||||
|
||||
[JsonPropertyName("message")]
|
||||
[Key("message")]
|
||||
public string Message { get; set; } = string.Empty;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using MessagePack;
|
||||
|
||||
namespace SVSim.EmulatedEntrypoint.Models.Dtos.ItemAcquireHistory;
|
||||
|
||||
/// <summary>
|
||||
/// Empty request body. The endpoint takes no parameters; this DTO exists so model binding
|
||||
/// resolves the envelope correctly.
|
||||
/// </summary>
|
||||
[MessagePackObject(true)]
|
||||
public sealed class ItemAcquireHistoryInfoRequest
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using MessagePack;
|
||||
|
||||
namespace SVSim.EmulatedEntrypoint.Models.Dtos.ItemAcquireHistory;
|
||||
|
||||
[MessagePackObject]
|
||||
public sealed class ItemAcquireHistoryInfoResponse
|
||||
{
|
||||
[JsonPropertyName("histories")]
|
||||
[Key("histories")]
|
||||
public List<ItemAcquireHistoryEntryDto> Histories { get; set; } = new();
|
||||
}
|
||||
Reference in New Issue
Block a user