From ad64f9d240fb054856afe4ab9523062b2bc079b9 Mon Sep 17 00:00:00 2001 From: 移动系统liao <liaoxujun@qq.com> Date: 星期三, 20 八月 2025 10:22:08 +0800 Subject: [PATCH] 完成客户企业资料改造和相关表修改和建立,基础APi建立完成 --- Admin.NET/FZCTB.NET.API.Application/Auth/AuthService.cs | 142 ++++++++++++++++++++++++++++++++++------------ 1 files changed, 104 insertions(+), 38 deletions(-) diff --git a/Admin.NET/FZCTB.NET.API.Application/Auth/AuthService.cs b/Admin.NET/FZCTB.NET.API.Application/Auth/AuthService.cs index 4c6b98e..b651365 100644 --- a/Admin.NET/FZCTB.NET.API.Application/Auth/AuthService.cs +++ b/Admin.NET/FZCTB.NET.API.Application/Auth/AuthService.cs @@ -21,6 +21,11 @@ using FZCZTB.NET.SYSService.CustomerSYS; using Furion; using NewLife; +using cylsg.utility.Extend; +using static QRCoder.PayloadGenerator; +using FZCZTB.NET.MD.CutomerMd.Extend; +using Furion.DependencyInjection; +using Microsoft.Extensions.Options; namespace FZCTB.NET.API.Application.Auth { @@ -32,8 +37,10 @@ { - private readonly UserManager _userManager; - private readonly SqlSugarRepository<FBS_Customer> _sysUserRep; + private readonly SMSConfigOptions _smsOptions; + private readonly SqlSugarRepository<FBS_CustormerUsers> _sysUserRep; + private readonly SqlSugarRepository<FBS_CoutomerExRole> _sysUserExRol; + private readonly SqlSugarRepository<FBS_ExRole> _sysExRol; private readonly IHttpContextAccessor _httpContextAccessor; private readonly SysMenuService _sysMenuService; private readonly SysOnlineUserService _sysOnlineUserService; @@ -46,7 +53,8 @@ private readonly SysCacheService _sysCacheService; public AuthService( - SqlSugarRepository<FBS_Customer> sysUserRep, + SqlSugarRepository<FBS_CustormerUsers> sysUserRep, + SqlSugarRepository<FBS_CoutomerExRole> sysUserExRol, IHttpContextAccessor httpContextAccessor, SysOnlineUserService sysOnlineUserService, SysConfigService sysConfigService, @@ -56,12 +64,16 @@ SysCacheService sysCacheService, SysMenuService sysMenuService, SysUserService sysUserService, - UserManager userManager, - ICaptcha captcha) + IOptions<SMSConfigOptions> smsConfigOptions, + SqlSugarRepository<FBS_ExRole> exrel, + + ICaptcha captcha + + ) { _captcha = captcha; _sysUserRep = sysUserRep; - _userManager = userManager; + _sysSmsService = sysSmsService; _eventPublisher = eventPublisher; _sysUserService = sysUserService; @@ -71,6 +83,9 @@ _httpContextAccessor = httpContextAccessor; _sysOnlineUserService = sysOnlineUserService; _sysLdapService = sysLdapService; + _smsOptions = smsConfigOptions.Value; + _sysExRol = exrel; + _sysUserExRol = sysUserExRol; } /// <summary> @@ -82,24 +97,67 @@ [DisplayName("鎵嬫満鍙风櫥褰�")] public virtual async Task<CustomerLoginOutput> LoginPhone([Required] CustomerLoginPhoneInput input) { + if(input.Id>0) + { + //鏈�鍚庝竴娆$‘璁ょ櫥闄嗙姸鎬� + var verifyCode = _sysCacheService.Get<string>($"{CacheConst.KeyPhoneVerCode}{input.Phone}"); + if (string.IsNullOrWhiteSpace(verifyCode)) throw Oops.Oh("楠岃瘉鐮佷笉瀛樺湪鎴栧凡澶辨晥锛岃閲嶆柊鑾峰彇锛�"); + + _sysCacheService.Remove($"{CacheConst.KeyPhoneVerCode}{input.Phone}"); + if (verifyCode != input.Code) + throw Oops.Oh("鐧诲綍鐮佸け鏁�"); + var user = await _sysUserRep.AsQueryable().Where(x => x.Id == input.Id && x.IsEn == true).FirstAsync(); + if(user == null) + throw Oops.Oh("娌℃湁鎵惧埌璇ユ墜鏈虹敤鎴�"); + return await CreateToken(user, input.ExRuleCode ?? ""); + } if(input.Code!="TEST") // 鏍¢獙鐭俊楠岃瘉鐮� _sysSmsService.VerifyCode(new SmsVerifyCodeInput { Phone = input.Phone, Code = input.Code }); // 鑾峰彇鐧诲綍绉熸埛鍜岀敤鎴� // 鑾峰彇鐧诲綍绉熸埛鍜岀敤鎴� - var user = await _sysUserRep.AsQueryable().Where(x => x.Account == input.Phone).Includes(x => x.CoutomerExRols, y => y.ExRole).FirstAsync(); - if (user == null) + var userList = await _sysUserRep.AsQueryable().Where(x => x.PhoneNumber == input.Phone&&x.IsEn==true).Includes(x=>x.CusExtend).ToListAsync(); + if (userList == null) { - throw Oops.Oh("璇ョ敤鎴锋病鏈夋敞鍐�"); + throw Oops.Oh("娌℃湁鎵惧埌璇ユ墜鏈虹敤鎴�"); } - if(user.Status== StatusEnum.Disable) + if(userList.Count>1) { - throw Oops.Oh("鐢ㄥ紓甯�"); - } + // 鐢熸垚闅忔満楠岃瘉鐮� + var random = new Random(); + var verifyCode = random.Next(100000, 999999); + //闇�瑕佷簩娆$櫥闄� + var aRet = new CustomerLoginOutput + { + TheLastLogo = false, + CustomerExs = new List<CustomerExVm>(), + Code = verifyCode.ToString(), + + + + }; + _sysCacheService.Set($"{CacheConst.KeyPhoneVerCode}{input.Phone}", verifyCode.ToString(), TimeSpan.FromSeconds(_smsOptions.lingKai.VerifyTimeOut.ToInt())); + foreach (var item in userList) + { + aRet.CustomerExs.Add(new CustomerExVm + { + CustomerUserID = item.Id, + EnterpriseName = item.CusExtend.EnterpriseName, + UnifiedSocialCreditCode = item.CusExtend.UnifiedSocialCreditCode.MaskMiddle(), + IsManger = item.IsManager - return await CreateToken(user, input.ExRuleCode??""); + }); + } + return aRet; + + } + + + + + return await CreateToken(userList[0], input.ExRuleCode??""); } /// <summary> @@ -114,19 +172,24 @@ throw Oops.Oh("鐢ㄦ埛鍑瘉閿欒"); } - // - + var rols = await _sysExRol.GetFirstAsync(x => x.Code == RuleCode && x.Status == StatusEnum.Enable); + if(rols==null) + throw Oops.Oh("瑙掕壊宸茬粡涓嬬嚎"); + // 鑾峰彇鐧诲綍绉熸埛鍜岀敤鎴� // 鑾峰彇鐧诲綍绉熸埛鍜岀敤鎴� - var user = await _sysUserRep.AsQueryable().Where(x => x.Id == id).Includes(x => x.CoutomerExRols, y => y.ExRole).FirstAsync(); + var user = await _sysUserRep.AsQueryable().Where(x => x.Id == id).FirstAsync(); if (user == null) { throw Oops.Oh("璇ョ敤鎴锋病鏈夋敞鍐�"); } - if (user.Status == StatusEnum.Disable) + if (user.IsEn == false) { throw Oops.Oh("鐢ㄥ紓甯�"); } + var exr= await _sysUserExRol.GetFirstAsync(x=>x.CusExtendId==user.CusExtendId&&x.ExRoleId== rols.Id); + if (exr==null) + throw Oops.Oh("娌℃湁鐢宠璇ヨ鑹�"); return await CreateToken(user, RuleCode); @@ -141,18 +204,18 @@ [DisplayName("寰俊鎵爜鐧诲綍")] public virtual async Task<CustomerLoginOutput> WeiXinLoginPhone([Required] CustomerLoginPhoneInput input) { - throw Oops.Oh("鍜嬩笉鏀寔寰俊鎵爜鐧诲綍"); + throw Oops.Oh("鏆傛椂涓嶆敮鎸佸井淇℃壂鐮佺櫥褰�"); // 鏍¢獙鐭俊楠岃瘉鐮� - _sysSmsService.VerifyCode(new SmsVerifyCodeInput { Phone = input.Phone, Code = input.Code }); + //_sysSmsService.VerifyCode(new SmsVerifyCodeInput { Phone = input.Phone, Code = input.Code }); - // 鑾峰彇鐧诲綍绉熸埛鍜岀敤鎴� - var user = await _sysUserRep.AsQueryable().Where(x=>x.Account==input.Phone).Includes(x => x.CoutomerExRols, y => y.ExRole).FirstAsync(); - if(user==null) - { + //// 鑾峰彇鐧诲綍绉熸埛鍜岀敤鎴� + //var user = await _sysUserRep.AsQueryable().Where(x=>x.Account==input.Phone).Includes(x => x.CoutomerExRols, y => y.ExRole).FirstAsync(); + //if(user==null) + //{ - } + //} - return await CreateToken(user, input.ExRuleCode ); + //return await CreateToken(user, input.ExRuleCode ); } /// <summary> @@ -162,7 +225,7 @@ /// <param name="sysUserEventTypeEnum"></param>\ /// <returns></returns> [NonAction] - internal async Task<CustomerLoginOutput> CreateToken(FBS_Customer user,string ExRuleCode, SysUserEventTypeEnum sysUserEventTypeEnum = SysUserEventTypeEnum.Login) + internal async Task<CustomerLoginOutput> CreateToken(FBS_CustormerUsers user,string ExRuleCode, SysUserEventTypeEnum sysUserEventTypeEnum = SysUserEventTypeEnum.Login) { // 鍗曠敤鎴风櫥褰� await _sysOnlineUserService.SingleLogin(user.Id); @@ -172,11 +235,12 @@ var accessToken = JWTEncryption.Encrypt(new Dictionary<string, object> { { ClaimConst.UserId, user.Id }, - { ClaimConst.TenantId, user.TenantId }, - { ClaimConst.Account, user.Account }, - { ClaimConst.RealName, user.RealName }, + { ClaimConst.TenantId, user.CusExtendId }, + { ClaimConst.Account, user.PhoneNumber.PrivacyStr() }, + { ClaimConst.RealName, user.Nickname??user.Name }, { ClaimConst.UserType, "Customer" }, + { ClaimConst.CustomerExId, user.CusExtendId }, { ClaimConst.CustomerLogoinType, ExRuleCode }, }, tokenExpire); @@ -210,6 +274,8 @@ { AccessToken = accessToken, RefreshToken = refreshToken, + TheLastLogo=true, + @@ -217,20 +283,20 @@ } + + }; payload.Output.ExRoles = new List<CustomerExRoleVm>(); - foreach (var item in user.CoutomerExRols) + + payload.Output.ExRoles = await _sysUserExRol.AsQueryable().Where(x => x.CusExtendId == user.CusExtendId).Includes(x => x.ExRole).Select(x => new CustomerExRoleVm { + Code = x.ExRole.Code, + HasFlsh = x.steps == CusExtendStep.Pass, + Name = x.ExRole.Name + }).ToListAsync(); - payload.Output.ExRoles.Add(new CustomerExRoleVm - { - Code = item.ExRole.Code, - Name = item.ExRole.Name, - HasFlsh = item.HasFlsh - }); - } - + //鏆傛椂涓嶅嚭鐢ㄦ埛浜嬩欢 // 鍙戝竷绯荤粺鐢ㄦ埛鎿嶄綔浜嬩欢 //await _eventPublisher.PublishAsync(sysUserEventTypeEnum, payload); -- Gitblit v1.9.1