using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using MilliSim.Common.Dtos; using MilliSim.Services; using IAuthorizationService = MilliSim.Services.IAuthorizationService; namespace MilliSim.Controllers; [ApiController] [Route("api/authorizations")] public class AuthorizationsController : ControllerBase { private readonly IAuthorizationService _authorizationService; public AuthorizationsController(IAuthorizationService authorizationService) { _authorizationService = authorizationService; } /// /// 授权列表(销售只能看自己客户的授权) /// [HttpGet] [Authorize(Policy = "Staff")] public async Task GetList([FromQuery] AuthorizationQueryRequest request) { var result = await _authorizationService.GetAuthorizationsAsync(request); return Ok(result); } /// /// 授权详情 /// [HttpGet("{id:long}")] [Authorize(Policy = "Staff")] public async Task GetById(long id) { var result = await _authorizationService.GetAuthorizationByIdAsync(id); return Ok(result); } /// /// 创建授权(默认 365 天) /// [HttpPost] [Authorize(Policy = "Staff")] public async Task Create([FromBody] CreateAuthorizationRequest request) { var result = await _authorizationService.CreateAuthorizationAsync(request); return Ok(result); } /// /// 批量授权 /// [HttpPost("batch")] [Authorize(Policy = "Staff")] public async Task Batch([FromBody] BatchAuthorizationRequest request) { var result = await _authorizationService.BatchAuthorizeAsync(request); return Ok(result); } /// /// 续期(在原到期时间基础上加天数) /// [HttpPost("{id:long}/renew")] [Authorize(Policy = "Staff")] public async Task Renew(long id, [FromBody] RenewAuthorizationRequest request) { var result = await _authorizationService.RenewAuthorizationAsync(id, request.Days); return Ok(result); } /// /// 取消授权 /// [HttpPost("{id:long}/cancel")] [Authorize(Policy = "Staff")] public async Task Cancel(long id) { var result = await _authorizationService.CancelAuthorizationAsync(id); return Ok(result); } /// /// 检查用户是否有授权(客户级授权,授权后可运行所有项目) /// [HttpGet("check")] [Authorize] public async Task Check([FromQuery] long userId) { var result = await _authorizationService.CheckAuthorizationAsync(userId); return Ok(result); } /// /// 当前客户的授权列表 /// [HttpGet("my")] [Authorize] public async Task My() { var result = await _authorizationService.GetMyAuthorizationsAsync(); return Ok(result); } }