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