| | |
| | | using FlexJobApi.Core; |
| | | using Furion.DatabaseAccessor; |
| | | using Furion.FriendlyException; |
| | | using Mapster; |
| | | using MediatR; |
| | | using Microsoft.EntityFrameworkCore; |
| | | using System; |
| | |
| | | /// 用户信息命令处理器 |
| | | /// </summary> |
| | | public class UserInfoCommandHandler( |
| | | IRepository<User> rep |
| | | ) : |
| | | IRequestHandler<SetUserInfoStatusCommand, int> |
| | | IRepository<User> rep, |
| | | IRepository<UserBankCard> repUserBankCard |
| | | ) : |
| | | IRequestHandler<SetUserInfoStatusCommand, int>, |
| | | IRequestHandler<SetUserInfoRolesCommand, int>, |
| | | IRequestHandler<SavePersonalUserBankCardCommand, Guid> |
| | | { |
| | | private readonly IRepository<User> rep = rep; |
| | | private readonly IRepository<UserBankCard> repUserBankCard = repUserBankCard; |
| | | |
| | | /// <summary> |
| | | /// 设置用户信息状态 |
| | |
| | | } |
| | | return entities.Count; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 设置用户信息角色 |
| | | /// </summary> |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public async Task<int> Handle(SetUserInfoRolesCommand request, CancellationToken cancellationToken) |
| | | { |
| | | var entity = await rep.AsQueryable() |
| | | .Include(it => it.UserRoles) |
| | | .Where(it => it.Id == request.UserInfoId) |
| | | .FirstOrDefaultAsync(cancellationToken); |
| | | if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "用户"); |
| | | entity.UserRoles = request.RoleIds |
| | | .Select(it => new UserRole |
| | | { |
| | | RoleId = it |
| | | }) |
| | | .ToList(); |
| | | 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; |
| | | } |
| | | } |
| | | } |