zhengyuxuan
2025-03-19 82831a86d529817e51f5b6e3cec636d21cef3c9b
LifePayment/LifePayment.Application/LifePay/LifePayService.cs
@@ -29,6 +29,8 @@
using Z.EntityFramework.Plus;
using LifePayment.Domain.LifePay;
using pingan.openbank.api.sdk.enums;
using System.Linq.Dynamic.Core;
using static Volo.Abp.Identity.Settings.IdentitySettingNames;
namespace LifePayment.Application;
@@ -169,13 +171,19 @@
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    public async Task<PageOutput<UserListOutput>> GetUserPage(PageInput input)
    public async Task<PageOutput<UserListOutput>> GetUserPage(QueryUserPageInput input)
    {
        return await _lifePayUserRepository.Select(x =>
        return await _lifePayUserRepository.Where(x => x.IsDeleted == false)
            .WhereIf(!string.IsNullOrEmpty(input.QueryCondition), x => x.PhoneNumber.Contains(input.QueryCondition) || x.Name.Contains(input.QueryCondition))
            .WhereIf(input.CreationTime.HasValue, x => x.CreationTime.ToString("yyyy-MM-dd") == input.CreationTime.Value.ToString("yyyy-MM-dd"))
                                            .Select(x =>
                                                   new UserListOutput()
                                                   {
                                                       Id = x.Id,
                                                       CreationChannle = string.IsNullOrEmpty(x.CreationChannleNum) ? "" : _lifePayChannlesRep.Where(c => c.ChannlesNum == x.CreationChannleNum).FirstOrDefault().ChannlesName,
                                                       LastLoginChannle = string.IsNullOrEmpty(x.LastLoginChannleNum) ? "" : _lifePayChannlesRep.Where(c => c.ChannlesNum == x.LastLoginChannleNum).FirstOrDefault().ChannlesName,
                                                       PhoneNumber = x.PhoneNumber,
                                                       Name = string.IsNullOrEmpty(x.Name) ? "" : x.Name,
                                                       CreationTime = x.CreationTime,
                                                       LastLoginTime = x.LastLoginTime
                                                   })
@@ -352,19 +360,12 @@
    public async Task<PageOutput<CreateEditPayChannelsInput>> GetLifePayChannlesPage(PageInput input)
    {
        return await GetLifePayChannlesListFilter().GetPageResult(input.PageModel);
    }
        return await _lifePayChannlesRep.Select(x =>
                                                new CreateEditPayChannelsInput
                                                {
                                                    Id = x.Id,
                                                    ChannlesRate = x.ChannlesRate,
                                                    ChannlesName = x.ChannlesName,
                                                    ChannlesNum = x.ChannlesNum,
                                                    Status = x.Status,
                                                    SwitchType = x.SwitchType,
                                                    ChannlesType = x.ChannlesType,
                                                })
                                            .GetPageResult(input.PageModel);
    public async Task<List<CreateEditPayChannelsInput>> GetLifePayChannlesAllList()
    {
        return await GetLifePayChannlesListFilter().Where(x => x.Status == LifePayChannelsStatsEnum.启用).ToListAsync();
    }
    public async Task<CreateEditPayChannelsInput> GetLifePayChannlesDto(Guid id)
@@ -374,6 +375,7 @@
                                                    {
                                                        Id = x.Id,
                                                        ChannlesRate = x.ChannlesRate,
                                                        ChannlesRakeRate = x.ChannlesRakeRate,
                                                        ChannlesName = x.ChannlesName,
                                                        ChannlesNum = x.ChannlesNum,
                                                        Status = x.Status,
@@ -389,6 +391,7 @@
                                                    {
                                                        Id = x.Id,
                                                        ChannlesRate = x.ChannlesRate,
                                                        ChannlesRakeRate = x.ChannlesRakeRate,
                                                        ChannlesName = x.ChannlesName,
                                                        ChannlesNum = x.ChannlesNum,
                                                        Status = x.Status,
@@ -1074,6 +1077,15 @@
        await _lifePayOrderRepository.UpdateAsync(order);
    }
    /// <summary>
    /// 微信退款
    /// </summary>
    /// <param name="outTradeNo"></param>
    /// <param name="reason"></param>
    /// <param name="refund"></param>
    /// <param name="total"></param>
    /// <param name="currency"></param>
    /// <returns></returns>
    public async Task<WxPayDomesticRefundsReponse> WxPayDomesticRefunds(string outTradeNo, string reason, int refund, int total, string currency = "CNY")
    {
        WxPayDomesticRefundsRequest req = new WxPayDomesticRefundsRequest
@@ -1094,8 +1106,13 @@
        return res;
    }
    public async Task<int> AddUpdateUserAccount(AddUpdateUserAccountInput input)
    {
        var user = await _lifePayUserRepository.Where(r => r.Id == input.UserId && !r.IsDeleted).FirstOrDefaultAsync();
        CheckExtensions.IfTrueThrowUserFriendlyException(user == null, "用户不存在");
        if (input.Id.HasValue)
        {
            var userAccount = await _lifePayAccount.Where(x => x.UserId == input.UserId && x.Id == input.Id)
@@ -1132,6 +1149,16 @@
            };
            await _lifePayAccount.InsertAsync(userAccount);
        }
        if (input.LifePayType == LifePayOrderTypeEnum.话费订单)
        {
            var extraProperties = JsonConvert.DeserializeObject<Model_UserAccountExtraProperties>(input.ExtraProperties);
            if (!string.IsNullOrEmpty(extraProperties.Name))
            {
                user.Name = extraProperties.Name;
            }
        }
        return Constant.SUCCESS;
    }
@@ -1200,6 +1227,7 @@
            dto.ChannlesName = input.ChannlesName;
            dto.ChannlesNum = input.ChannlesNum;
            dto.ChannlesRate = input.ChannlesRate;
            dto.ChannlesRakeRate = input.ChannlesRakeRate;
            dto.SwitchType = input.SwitchType;
            dto.ChannlesType = input.ChannlesType;
            dto.Status = input.Status;
@@ -1583,6 +1611,21 @@
        return result;
    }
    private IQueryable<CreateEditPayChannelsInput> GetLifePayChannlesListFilter()
    {
        return _lifePayChannlesRep.Select(x =>
                    new CreateEditPayChannelsInput
                    {
                        Id = x.Id,
                        ChannlesRate = x.ChannlesRate,
                        ChannlesRakeRate = x.ChannlesRakeRate,
                        ChannlesName = x.ChannlesName,
                        ChannlesNum = x.ChannlesNum,
                        Status = x.Status,
                        SwitchType = x.SwitchType,
                        ChannlesType = x.ChannlesType,
                    });
    }
    #endregion
}
        #endregion
    }