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

@@ -152,6 +152,42 @@ public sealed record TenantCouponList(IReadOnlyCollection<Coupon> Items);
public sealed record TenantCouponRedemptionList(IReadOnlyCollection<CouponRedemption> Items);
public sealed record TenantCouponReport(int CouponCount, int ClaimedCount, int UsedCount, int DiscountAppliedCents);
public sealed record CreateRefundRequestCommand(
Guid OrderId,
Guid? PaymentId,
int AmountCents,
string? Reason,
RefundEntitlementAction EntitlementAction,
JsonElement Metadata);
public sealed record UpdateRefundStatusCommand(
Guid RefundRequestId,
CommerceRefundStatus Status,
string? Reason = null,
string? ProviderRefundNo = null);
public sealed record TenantRefundList(IReadOnlyCollection<CommerceRefundRequest> Items);
public sealed record TenantRefundEventList(IReadOnlyCollection<CommerceRefundEvent> Items);
public sealed record CreateReconciliationBatchCommand(
string Provider,
DateOnly BillDate,
ReconciliationBillType BillType,
ReconciliationSource Source,
string? SourceName,
string SourceHash,
JsonElement Metadata);
public sealed record TenantReconciliationBatchList(IReadOnlyCollection<CommerceReconciliationBatch> Items);
public sealed record TenantReconciliationIssueList(IReadOnlyCollection<CommerceReconciliationIssue> Items);
public sealed record UpdateReconciliationIssueCommand(
Guid IssueId,
ReconciliationIssueStatus Status,
ReconciliationResolutionType ResolutionType,
string? Note,
Guid? AssignedTo = null);
public interface ICommerceAdminService
{
Task<IReadOnlyCollection<TenantPaymentProviderItem>> GetPaymentAccountsAsync(
@@ -248,4 +284,44 @@ public interface ICommerceAdminService
CommerceAdminActor actor,
CommerceAdminQuery query,
CancellationToken cancellationToken = default);
Task<TenantRefundList> GetRefundsAsync(
CommerceAdminActor actor,
CommerceAdminQuery query,
CancellationToken cancellationToken = default);
Task<CommerceRefundRequest> CreateRefundRequestAsync(
CommerceAdminActor actor,
CreateRefundRequestCommand command,
CancellationToken cancellationToken = default);
Task<CommerceRefundRequest> UpdateRefundStatusAsync(
CommerceAdminActor actor,
UpdateRefundStatusCommand command,
CancellationToken cancellationToken = default);
Task<TenantRefundEventList> GetRefundEventsAsync(
CommerceAdminActor actor,
Guid refundRequestId,
CancellationToken cancellationToken = default);
Task<TenantReconciliationBatchList> GetReconciliationBatchesAsync(
CommerceAdminActor actor,
CommerceAdminQuery query,
CancellationToken cancellationToken = default);
Task<CommerceReconciliationBatch> CreateReconciliationBatchAsync(
CommerceAdminActor actor,
CreateReconciliationBatchCommand command,
CancellationToken cancellationToken = default);
Task<TenantReconciliationIssueList> GetReconciliationIssuesAsync(
CommerceAdminActor actor,
CommerceAdminQuery query,
CancellationToken cancellationToken = default);
Task<CommerceReconciliationIssue> UpdateReconciliationIssueAsync(
CommerceAdminActor actor,
UpdateReconciliationIssueCommand command,
CancellationToken cancellationToken = default);
}