using Microsoft.AspNetCore.Mvc;
using QYZH.InteractiveMagazine.IService;
using QYZH.InteractiveMagazine.Models.Dto;
using QYZH.InteractiveMagazine.Models.Dto.Mall;
namespace QYZH.InteractiveMagazine.WebApi.Controllers.WeChat;
///
/// 小程序商城控制器
///
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);
}
}