sunpengfei
6 天以前 a2efd6c3bdbea77ef13205f4102cae774a233041
FlexJobApi.UserServer.Application/Users/Commands/UserInfoCommandHandler.cs
@@ -1,6 +1,7 @@
using FlexJobApi.Core;
using Furion.DatabaseAccessor;
using Furion.FriendlyException;
using Mapster;
using MediatR;
using Microsoft.EntityFrameworkCore;
using System;
@@ -15,12 +16,15 @@
    /// 用户信息命令处理器
    /// </summary>
    public class UserInfoCommandHandler(
            IRepository<User> rep
            IRepository<User> rep,
            IRepository<UserBankCard> repUserBankCard
        ) :
        IRequestHandler<SetUserInfoStatusCommand, int>,
        IRequestHandler<SetUserInfoRolesCommand, int>
        IRequestHandler<SetUserInfoRolesCommand, int>,
        IRequestHandler<SavePersonalUserBankCardCommand, Guid>
    {
        private readonly IRepository<User> rep = rep;
        private readonly IRepository<UserBankCard> repUserBankCard = repUserBankCard;
        /// <summary>
        /// 设置用户信息状态
@@ -62,5 +66,41 @@
            await rep.UpdateAsync(entity);
            return entity.UserRoles.Count;
        }
        /// <summary>
        /// 保存用户银行卡信息
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task<Guid> Handle(SavePersonalUserBankCardCommand request, CancellationToken cancellationToken)
        {
            var logier = JwtUtils.GetCurrentLogier();
            var entity = await repUserBankCard.AsQueryable()
                .Where(it => it.UserId == logier.Id)
                .FirstOrDefaultAsync();
            var add = false;
            if (entity == null)
            {
                entity = new UserBankCard();
                entity.UserId = logier.Id;
                add = true;
            }
            request.Adapt(entity);
            if (entity.Access == EnumEnterpriseWalletAccess.Alipay)
            {
                entity.Bank = "支付宝";
                entity.BankBranch = null;
            }
            if (add)
            {
                await repUserBankCard.InsertAsync(entity);
            }
            else
            {
                await repUserBankCard.UpdateAsync(entity);
            }
            return entity.Id;
        }
    }
}