using Dlhis.Basic.Vouchers.Request; using Dlhis.Canteen.Tickets.Request; using Dlhis.Canteen.Tickets.Services; using Dlhis.Canteen.Voucher.Requests; using Dlhis.Canteen.Voucher.Response; using Dlhis.Constants; using Dlhis.Entity.Canteen.Enums; using Kurisu.AspNetCore.Authentication.Abstractions; using Kurisu.AspNetCore.DataAccess.Dto; using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop; using Kurisu.AspNetCore.Utils.Extensions; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace Dlhis.Canteen.Voucher.Controllers; /// /// 券 /// [Authorize] [Route("api/[controller]")] [ApiController] public class VouchersController : ControllerBase { private readonly INamedResolver _namedResolver; private readonly ICurrentUser _currentUser; public VouchersController(INamedResolver namedResolver, ICurrentUser currentUser) { _namedResolver = namedResolver; _currentUser = currentUser; } /// /// 获取分页数据(按券类型) /// /// /// [HttpGet("page")] [IgnoreTenant] public async Task> GetPageAsync([FromQuery] VoucherPageRequest request) { return await _namedResolver.GetService(request.Type.ToString() + "VoucherService").GetPageAsync(request); } /// /// 获取我的分页数据(按券类型)(H5) /// /// /// [HttpGet("my")] public async Task> GetMyPageAsync([FromQuery] VoucherPageRequest request) { var userCode = _currentUser.GetUserClaim(UserClaimConstants.JinkoCode); request.UserCode = userCode; return await _namedResolver.GetService(request.Type.ToString() + "VoucherService").GetPageAsync(request); } /// /// 创建生日券 /// /// [AllowAnonymous] [HttpPost("birthday/create")] public async Task CreateBirthdayVoucherAsync(VoucherByBirthdayRequest request) { var srv = _namedResolver.GetService(VoucherEnumType.Birthday.ToString() + "VoucherService"); srv.ThrowIfNull("不支持的券类型"); await srv.CreateAsync(new Dictionary { ["userCodes"] = request.UserCodes, ["begin"] = request.Begin, ["end"] = request.End, ["remark"] = request.Remark }); } /// /// 餐券消费分页 /// /// /// [HttpGet("balance/page")] public async Task> GetVoucherBalancePageAsync([FromQuery] VoucherBalancePageRequest request) { var srv = _namedResolver.GetService(request.Type.ToString() + "VoucherService"); return await srv.GetVoucherBalancePageAsync(request); } /// /// 我的餐券消费分页(H5) /// /// /// [HttpGet("balance/my/page")] [IgnoreTenant] public async Task> GetMyVoucherBalancePageAsync([FromQuery] VoucherBalancePageRequest request) { var userCode = _currentUser.GetUserClaim(UserClaimConstants.JinkoCode); var srv = _namedResolver.GetService(request.Type.ToString() + "VoucherService"); request.UserCode = userCode; return await srv.GetVoucherBalancePageAsync(request); } }