feat: add tenant points and coupon operations

This commit is contained in:
xiong
2026-07-26 20:08:23 +08:00
parent 7139da766a
commit 4efccf8355
5 changed files with 780 additions and 0 deletions

View File

@@ -119,6 +119,149 @@ public sealed class TenantCommerceController(
cancellationToken));
}
[HttpGet("point-activity-tasks")]
[EndpointSummary("查询积分活动任务")]
[ProducesResponseType<TenantPointTaskList>(StatusCodes.Status200OK)]
public async Task<ActionResult<TenantPointTaskList>> PointTasks(
[FromQuery] TenantCommerceQueryDto query,
CancellationToken cancellationToken)
{
return Ok(await commerceAdminService.GetPointTasksAsync(
ResolveActor(),
ToPointQuery(query),
cancellationToken));
}
[HttpPut("point-activity-tasks")]
[EndpointSummary("新增或更新积分活动任务")]
[ProducesResponseType<object>(StatusCodes.Status200OK)]
public async Task<ActionResult<object>> UpsertPointTask(
UpsertPointTaskDto request,
CancellationToken cancellationToken)
{
return Ok(await commerceAdminService.UpsertPointTaskAsync(
ResolveActor(),
request.ToCommand(),
cancellationToken));
}
[HttpGet("point-activity-claims")]
[EndpointSummary("查询积分任务领取记录")]
[ProducesResponseType<TenantPointClaimList>(StatusCodes.Status200OK)]
public async Task<ActionResult<TenantPointClaimList>> PointClaims(
[FromQuery] TenantCommerceQueryDto query,
CancellationToken cancellationToken)
{
return Ok(await commerceAdminService.GetPointClaimsAsync(
ResolveActor(),
ToPointQuery(query),
cancellationToken));
}
[HttpGet("point-exchange-items")]
[EndpointSummary("查询积分兑换项")]
[ProducesResponseType<TenantPointExchangeItemList>(StatusCodes.Status200OK)]
public async Task<ActionResult<TenantPointExchangeItemList>> PointExchangeItems(
[FromQuery] TenantCommerceQueryDto query,
CancellationToken cancellationToken)
{
return Ok(await commerceAdminService.GetPointExchangeItemsAsync(
ResolveActor(),
ToPointQuery(query),
cancellationToken));
}
[HttpPut("point-exchange-items")]
[EndpointSummary("新增或更新积分兑换项")]
[ProducesResponseType<object>(StatusCodes.Status200OK)]
public async Task<ActionResult<object>> UpsertPointExchangeItem(
UpsertPointExchangeItemDto request,
CancellationToken cancellationToken)
{
return Ok(await commerceAdminService.UpsertPointExchangeItemAsync(
ResolveActor(),
request.ToCommand(),
cancellationToken));
}
[HttpGet("point-exchange-orders")]
[EndpointSummary("查询积分兑换订单")]
[ProducesResponseType<TenantPointExchangeOrderList>(StatusCodes.Status200OK)]
public async Task<ActionResult<TenantPointExchangeOrderList>> PointExchangeOrders(
[FromQuery] TenantCommerceQueryDto query,
CancellationToken cancellationToken)
{
return Ok(await commerceAdminService.GetPointExchangeOrdersAsync(
ResolveActor(),
ToPointQuery(query),
cancellationToken));
}
[HttpPost("point-exchange-orders/status")]
[EndpointSummary("更新积分兑换订单状态")]
[ProducesResponseType<object>(StatusCodes.Status200OK)]
public async Task<ActionResult<object>> UpdatePointExchangeOrderStatus(
UpdatePointExchangeOrderStatusDto request,
CancellationToken cancellationToken)
{
return Ok(await commerceAdminService.UpdatePointExchangeOrderStatusAsync(
ResolveActor(),
request.ToCommand(),
cancellationToken));
}
[HttpGet("coupons")]
[EndpointSummary("查询租户优惠券")]
[ProducesResponseType<TenantCouponList>(StatusCodes.Status200OK)]
public async Task<ActionResult<TenantCouponList>> Coupons(
[FromQuery] TenantCommerceQueryDto query,
CancellationToken cancellationToken)
{
return Ok(await commerceAdminService.GetCouponsAsync(
ResolveActor(),
ToQuery(query),
cancellationToken));
}
[HttpPut("coupons")]
[EndpointSummary("新增或更新租户优惠券")]
[ProducesResponseType<object>(StatusCodes.Status200OK)]
public async Task<ActionResult<object>> UpsertCoupon(
UpsertTenantCouponDto request,
CancellationToken cancellationToken)
{
return Ok(await commerceAdminService.UpsertCouponAsync(
ResolveActor(),
request.ToCommand(),
cancellationToken));
}
[HttpGet("coupons/redemptions")]
[EndpointSummary("查询优惠券领取和核销记录")]
[ProducesResponseType<TenantCouponRedemptionList>(StatusCodes.Status200OK)]
public async Task<ActionResult<TenantCouponRedemptionList>> CouponRedemptions(
[FromQuery] TenantCommerceQueryDto query,
CancellationToken cancellationToken)
{
return Ok(await commerceAdminService.GetCouponRedemptionsAsync(
ResolveActor(),
ToQuery(query),
cancellationToken));
}
[HttpGet("coupons/report")]
[EndpointSummary("查询优惠券基础报表")]
[ProducesResponseType<TenantCouponReport>(StatusCodes.Status200OK)]
public async Task<ActionResult<TenantCouponReport>> CouponReport(
[FromQuery] TenantCommerceQueryDto query,
CancellationToken cancellationToken)
{
return Ok(await commerceAdminService.GetCouponReportAsync(
ResolveActor(),
ToQuery(query),
cancellationToken));
}
private CommerceAdminActor ResolveActor()
{
if (currentTenant.TenantId is null || currentUser.UserId is null)
@@ -133,4 +276,9 @@ public sealed class TenantCommerceController(
{
return new CommerceAdminQuery(query.Provider, query.Status, query.Limit);
}
private static TenantPointQuery ToPointQuery(TenantCommerceQueryDto query)
{
return new TenantPointQuery(query.Status, query.Limit, query.UserId, query.RegionId);
}
}