using Microsoft.AspNetCore.Mvc; using QYZH.InteractiveMagazine.IService; using QYZH.InteractiveMagazine.Models.Dto; using QYZH.InteractiveMagazine.Models.Dto.Mall; namespace QYZH.InteractiveMagazine.WeChatApi.Controllers; /// /// 小程序商城控制器 /// public class MallController(IWxMallService mallService, ILogger logger) : WeChatBaseController { /// /// 获取商城商品列表 /// /// 商品类型筛选(可选): MakeUpCard, PetBg [HttpGet("products")] public async Task>> GetProducts([FromQuery] string? type = null) { var userId = GetCurrentUserId(); if (userId == 0) return Fail("未获取到用户信息") as dynamic; var products = await mallService.GetProductsAsync(userId, type); return Success(products); } /// /// 获取商品详情 /// /// 商品Id [HttpGet("product/{id}")] public async Task> GetProductDetail(long id) { var userId = GetCurrentUserId(); if (userId == 0) return Fail("未获取到用户信息") as dynamic; var product = await mallService.GetProductDetailAsync(userId, id); if (product == null) return BaseResponse.Fail(ResultCode.DENY, "商品不存在或已下架"); return Success(product); } /// /// 积分兑换商品 /// [HttpPost("exchange")] public async Task> Exchange([FromBody] ExchangeInput input) { var userId = GetCurrentUserId(); if (userId == 0) return Fail("未获取到用户信息") as dynamic; var result = await mallService.ExchangeAsync(userId, input); return Success(result); } /// /// 获取我的兑换记录 /// /// 返回数量(默认20) [HttpGet("exchangeRecords")] public async Task>> GetExchangeRecords([FromQuery] int limit = 20) { var userId = GetCurrentUserId(); if (userId == 0) return Fail("未获取到用户信息") as dynamic; var records = await mallService.GetExchangeRecordsAsync(userId, limit); return Success(records); } }