feat: add phase five operations foundation

This commit is contained in:
2026-07-28 09:57:50 +08:00
parent 71793a2de0
commit f22f329d33
39 changed files with 4810 additions and 160 deletions

View File

@@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Mvc;
using Tiku.Api.Contracts;
using Tiku.Application.Commerce;
using Tiku.Application.Security;
using Tiku.Domain.Commerce;
namespace Tiku.Api.Controllers;
@@ -262,6 +263,110 @@ public sealed class TenantCommerceController(
cancellationToken));
}
[HttpGet("refunds")]
[EndpointSummary("查询退款申请")]
[ProducesResponseType<TenantRefundList>(StatusCodes.Status200OK)]
public async Task<ActionResult<TenantRefundList>> Refunds(
[FromQuery] TenantCommerceQueryDto query,
CancellationToken cancellationToken)
{
return Ok(await commerceAdminService.GetRefundsAsync(
ResolveActor(),
ToQuery(query),
cancellationToken));
}
[HttpPost("refunds")]
[EndpointSummary("创建退款申请")]
[ProducesResponseType<CommerceRefundRequest>(StatusCodes.Status200OK)]
public async Task<ActionResult<CommerceRefundRequest>> CreateRefund(
CreateRefundRequestDto request,
CancellationToken cancellationToken)
{
return Ok(await commerceAdminService.CreateRefundRequestAsync(
ResolveActor(),
request.ToCommand(),
cancellationToken));
}
[HttpPost("refunds/status")]
[EndpointSummary("更新退款状态")]
[ProducesResponseType<CommerceRefundRequest>(StatusCodes.Status200OK)]
public async Task<ActionResult<CommerceRefundRequest>> UpdateRefundStatus(
UpdateRefundStatusDto request,
CancellationToken cancellationToken)
{
return Ok(await commerceAdminService.UpdateRefundStatusAsync(
ResolveActor(),
request.ToCommand(),
cancellationToken));
}
[HttpGet("refunds/{refundRequestId:guid}/events")]
[EndpointSummary("查询退款事件")]
[ProducesResponseType<TenantRefundEventList>(StatusCodes.Status200OK)]
public async Task<ActionResult<TenantRefundEventList>> RefundEvents(
Guid refundRequestId,
CancellationToken cancellationToken)
{
return Ok(await commerceAdminService.GetRefundEventsAsync(
ResolveActor(),
refundRequestId,
cancellationToken));
}
[HttpGet("reconciliation/batches")]
[EndpointSummary("查询对账批次")]
[ProducesResponseType<TenantReconciliationBatchList>(StatusCodes.Status200OK)]
public async Task<ActionResult<TenantReconciliationBatchList>> ReconciliationBatches(
[FromQuery] TenantCommerceQueryDto query,
CancellationToken cancellationToken)
{
return Ok(await commerceAdminService.GetReconciliationBatchesAsync(
ResolveActor(),
ToQuery(query),
cancellationToken));
}
[HttpPost("reconciliation/batches")]
[EndpointSummary("创建对账批次")]
[ProducesResponseType<CommerceReconciliationBatch>(StatusCodes.Status200OK)]
public async Task<ActionResult<CommerceReconciliationBatch>> CreateReconciliationBatch(
CreateReconciliationBatchDto request,
CancellationToken cancellationToken)
{
return Ok(await commerceAdminService.CreateReconciliationBatchAsync(
ResolveActor(),
request.ToCommand(),
cancellationToken));
}
[HttpGet("reconciliation/issues")]
[EndpointSummary("查询对账异常")]
[ProducesResponseType<TenantReconciliationIssueList>(StatusCodes.Status200OK)]
public async Task<ActionResult<TenantReconciliationIssueList>> ReconciliationIssues(
[FromQuery] TenantCommerceQueryDto query,
CancellationToken cancellationToken)
{
return Ok(await commerceAdminService.GetReconciliationIssuesAsync(
ResolveActor(),
ToQuery(query),
cancellationToken));
}
[HttpPost("reconciliation/issues/status")]
[EndpointSummary("更新对账异常状态")]
[ProducesResponseType<CommerceReconciliationIssue>(StatusCodes.Status200OK)]
public async Task<ActionResult<CommerceReconciliationIssue>> UpdateReconciliationIssue(
UpdateReconciliationIssueDto request,
CancellationToken cancellationToken)
{
return Ok(await commerceAdminService.UpdateReconciliationIssueAsync(
ResolveActor(),
request.ToCommand(),
cancellationToken));
}
private CommerceAdminActor ResolveActor()
{
if (currentTenant.TenantId is null || currentUser.UserId is null)