live-forum/server/webapi/LiveForum/LiveForum.WebApi/Controllers/FlowersController.cs
2026-03-24 11:27:37 +08:00

62 lines
2.0 KiB
C#

using LiveForum.Code.Base;
using LiveForum.Code.JwtInfrastructure;
using LiveForum.IService.Cdk;
using LiveForum.IService.Flowers;
using LiveForum.IService.Permission;
using LiveForum.Model.Dto.Flowers;
using LiveForum.Model.Enum;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace LiveForum.WebApi.Controllers
{
/// <summary>
/// 送花相关接口
/// </summary>
[Route("api/[controller]/[action]")]
[ApiController]
public class FlowersController : ControllerBase
{
private readonly IFlowersService _flowersService;
private readonly ICdkService _cdkService;
private readonly IPermissionService _permissionService;
private readonly JwtUserInfoModel _userInfoModel;
/// <summary>
/// 构造函数
/// </summary>
public FlowersController(IFlowersService flowersService, ICdkService cdkService, IPermissionService permissionService, JwtUserInfoModel userInfoModel)
{
_flowersService = flowersService;
_cdkService = cdkService;
_permissionService = permissionService;
_userInfoModel = userInfoModel;
}
/// <summary>
/// 送花
/// </summary>
/// <param name="request">请求参数</param>
/// <returns></returns>
[HttpPost]
[Authorize]
public async Task<BaseResponse<SendFlowerRespDto>> SendFlower([FromBody] SendFlowerReq request)
{
var userId = _userInfoModel.UserId;
// 权限校验:送花权限
await _permissionService.CheckPermissionAsync(userId, PermissionType.Flower);
// CDK激活检查
if (await _cdkService.RequiresCdkActivationAsync(userId))
{
return new BaseResponse<SendFlowerRespDto>(ResponseCode.CdkNotActivated, "需要激活 CDK");
}
return await _flowersService.SendFlower(request);
}
}
}