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
}
}