using System; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using NCC.Common.Core.Manager; using NCC.Common.Filter; using NCC.Dependency; using NCC.DynamicApiController; using NCC.Extend.Entitys.Dto.LqCardTransferLog; using NCC.Extend.Entitys.lq_card_transfer_log; using NCC.Extend.Interfaces; using NCC.FriendlyException; using SqlSugar; namespace NCC.Extend.LqCardTransferLog { /// /// 转卡日志服务 /// [ApiDescriptionSettings(Tag = "绿纤转卡日志服务", Name = "LqCardTransferLog", Order = 200)] [Route("api/Extend/[controller]")] public class LqCardTransferLogService : IDynamicApiController, ILqCardTransferLogService, ITransient { private readonly ISqlSugarClient _db; private readonly IUserManager _userManager; private readonly ILogger _logger; public LqCardTransferLogService(ISqlSugarClient db, IUserManager userManager, ILogger logger) { _db = db; _userManager = userManager; _logger = logger; } #region 添加转卡日志 /// /// 添加转卡日志 /// /// 转卡日志创建输入参数 /// 创建结果 [HttpPost("add")] public async Task AddTransferLog([FromBody] LqCardTransferLogCrInput input) { try { if (input == null) { throw NCCException.Oh("输入参数不能为空"); } var entity = new LqCardTransferLogEntity { Id = Guid.NewGuid().ToString(), RefundCardId = input.refundCardId, BillingCardId = input.billingCardId, TransferFromMemberId = input.transferFromMemberId, TransferToMemberId = input.transferToMemberId, TransferAmount = input.transferAmount, TransferTime = input.transferTime, OperatorId = input.operatorId, Remarks = input.remarks ?? "", CreateTime = DateTime.Now, IsEffective = 1 }; var result = await _db.Insertable(entity).ExecuteCommandAsync(); return new { Success = true, Message = "转卡日志创建成功", Data = new { Id = entity.Id } }; } catch (Exception ex) { throw NCCException.Oh($"创建转卡日志失败: {ex.Message}"); } } #endregion #region 获取转卡日志列表 /// /// 获取转卡日志列表 /// /// 查询输入参数 /// 转卡日志列表 [HttpGet("")] public async Task GetList([FromQuery] LqCardTransferLogListQueryInput input) { try { var result = await _db.Queryable() .WhereIF(input.isEffective != 0, x => x.IsEffective == input.isEffective) .WhereIF(!string.IsNullOrEmpty(input.transferFromMemberId), x => x.TransferFromMemberId == input.transferFromMemberId) .WhereIF(!string.IsNullOrEmpty(input.transferToMemberId), x => x.TransferToMemberId == input.transferToMemberId) .WhereIF(!string.IsNullOrEmpty(input.operatorId), x => x.OperatorId == input.operatorId) .WhereIF(input.transferStartTime.HasValue, x => x.TransferTime >= input.transferStartTime.Value) .WhereIF(input.transferEndTime.HasValue, x => x.TransferTime <= input.transferEndTime.Value) .WhereIF(input.minTransferAmount.HasValue, x => x.TransferAmount >= input.minTransferAmount.Value) .WhereIF(input.maxTransferAmount.HasValue, x => x.TransferAmount <= input.maxTransferAmount.Value) .WhereIF(!string.IsNullOrEmpty(input.keyword), x => x.Remarks.Contains(input.keyword)) .Select(x => new LqCardTransferLogListOutput { id = x.Id, refundCardId = x.RefundCardId, billingCardId = x.BillingCardId, transferFromMemberId = x.TransferFromMemberId, transferToMemberId = x.TransferToMemberId, transferAmount = x.TransferAmount, transferTime = x.TransferTime, operatorId = x.OperatorId, remarks = x.Remarks, createTime = x.CreateTime, updateTime = x.UpdateTime, isEffective = x.IsEffective }) .OrderBy(x => x.transferTime, OrderByType.Desc) .ToPagedListAsync(input.currentPage, input.pageSize); return PageResult.SqlSugarPageResult(result); } catch (Exception ex) { throw NCCException.Oh($"获取转卡日志列表失败: {ex.Message}"); } } #endregion } }