From 0e12e4ab45db6768a0f45d8952f78b0ae9190723 Mon Sep 17 00:00:00 2001
From: ZQN <364596817@qq.com>
Date: 星期一, 19 五月 2025 16:09:01 +0800
Subject: [PATCH] 手机号登录,去掉短信验证。脱敏

---
 project-framework/src/main/java/com/project/framework/web/service/SysLoginService.java |   85 ++++++++++++++++++++++++++++++++++--------
 1 files changed, 69 insertions(+), 16 deletions(-)

diff --git a/project-framework/src/main/java/com/project/framework/web/service/SysLoginService.java b/project-framework/src/main/java/com/project/framework/web/service/SysLoginService.java
index 0a9eb08..e622e67 100644
--- a/project-framework/src/main/java/com/project/framework/web/service/SysLoginService.java
+++ b/project-framework/src/main/java/com/project/framework/web/service/SysLoginService.java
@@ -33,6 +33,7 @@
 import com.project.system.mapper.SysUserMapper;
 import com.project.system.service.ISysConfigService;
 import com.project.system.service.ISysUserService;
+import com.project.system.sms.YPSmsApi;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.security.authentication.AuthenticationManager;
@@ -60,6 +61,7 @@
     private final ISysUserService userService;
     private final SysUserMapper userMapper;
     private final ISysConfigService configService;
+    private final YPSmsApi smsApi;
 
 
     /**
@@ -113,6 +115,26 @@
         return tokenService.createToken(loginUser);
     }
 
+    /**
+     * 鏂版敞鍐岃幏鍙栭獙璇佺爜
+     * @param phone 鎵嬫満
+     * @return  楠岃瘉鐮�
+     */
+    public Boolean getVerifyCodeNew(String phone) {
+        // 鐢熸垚4浣嶉殢鏈烘暟
+        String code = "";
+        Random ran = new Random();
+        int randomNum = ran.nextInt(10000);
+        code = String.format("%04d", randomNum);
+        log.info("鎵嬫満鍙凤細"+phone+"->楠岃瘉鐮侊細"+code);
+        boolean send = sendYp(phone, code);
+        if (send){
+            redisCache.setCacheObject(getCacheKey(phone), code, Constants.PHONE_EXPIRATION, TimeUnit.MINUTES);
+            return true;
+        }
+        redisCache.setCacheObject(getCacheKey(phone), code, Constants.PHONE_EXPIRATION, TimeUnit.MINUTES);
+        return false;
+    }
 
     /**
      * 鑾峰彇楠岃瘉鐮�
@@ -125,14 +147,33 @@
         if (user==null){
             throw new BaseException("鎮ㄦ墜鏈哄彿灏氭湭娉ㄥ唽锛�");
         }
+        return getVerifyCodeNew(phone);
+    }
 
-        // 鐢熸垚4浣嶉殢鏈烘暟
-        String code = "";
-        Random ran = new Random();
-        int randomNum = ran.nextInt(10000);
-        code = String.format("%04d", randomNum);
-        log.info("鎵嬫満鍙凤細"+phone+"->楠岃瘉鐮侊細"+code);
-        Boolean flag = true;
+    /**
+     * 浜戠墖楠岃瘉鐮�
+     * @param phone 鎵嬫満
+     * @param code  楠岃瘉鐮�
+     * @return  缁撴灉
+     */
+    private boolean sendYp(String phone, String code)
+    {
+        String result = smsApi.sendSms(phone, StringUtils.format(YPSmsApi.CODE_TMP, code, Constants.PHONE_EXPIRATION));
+        if (result.contains("\"code\":0,\"msg\":\"OK\"")){
+            log.info("鍙戦�佹垚鍔� ->楠岃瘉鐮侊細"+code);
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 闃块噷楠岃瘉鐮�
+     * @param phone 鎵嬫満
+     * @param code  楠岃瘉鐮�
+     * @return  缁撴灉
+     */
+    private boolean sendAl(String phone, String code )
+    {
         DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", AliyunSmsConstants.SMS_APPID, AliyunSmsConstants.SMS_SECRET);
         IAcsClient client = new DefaultAcsClient(profile);
         CommonRequest request = new CommonRequest();
@@ -149,15 +190,12 @@
             JSONObject jsonObject = JSON.parseObject(response.getData());
             if ("OK".equals(jsonObject.get("Code"))) {
                 log.info("鍙戦�佹垚鍔� ->楠岃瘉鐮侊細"+code);
-                redisCache.setCacheObject(getCacheKey(phone), code, Constants.PHONE_EXPIRATION, TimeUnit.MINUTES);
                 return true;
             }
-
         } catch (ClientException e) {
             e.printStackTrace();
         }
-        redisCache.setCacheObject(getCacheKey(phone), code, Constants.PHONE_EXPIRATION, TimeUnit.MINUTES);
-        return flag;
+        return false;
     }
 
     /**
@@ -168,13 +206,26 @@
     public String phoneLogin(UserPhoneLoginBo bo)
     {
         String phone = bo.getPhone();
-        Boolean verified = verifyPhone(phone, bo.getCode());
-        if (!verified){
-            throw new BaseException("鎵嬫満鍙烽獙璇佺爜鏍¢獙澶辫触锛�");
+//        Boolean verified = verifyPhone(phone, bo.getCode());
+//        if (!verified){
+//            throw new BaseException("鎵嬫満鍙烽獙璇佺爜鏍¢獙澶辫触锛�");
+//        }
+        SysUser user = null;
+        if ("01".equals(bo.getUserType())){
+            user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
+                    .eq(SysUser::getPhonenumber,bo.getPhone())
+                    .and(wrapper->wrapper.eq(SysUser::getUserType,"00").or().eq(SysUser::getUserType, "01")));
+        } else {
+            user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
+                    .eq(SysUser::getPhonenumber,bo.getPhone())
+                    .eq(SysUser::getUserType,bo.getUserType())
+                    );
         }
-        SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getPhonenumber,bo.getPhone()));
         if (user==null){
-            throw new BaseException("鎮ㄦ墜鏈哄彿灏氭湭娉ㄥ唽锛�");
+            throw new BaseException("鎮ㄦ墜鏈哄彿灏氭湭娉ㄥ唽鎴栨偍閫夋嫨鐧诲綍绫诲瀷鏈夎锛�");
+        }
+        if (!"0".equals(user.getStatus())){
+            throw new BaseException("鎮ㄨ处鍙峰凡鍋滅敤鎴栧緟瀹℃壒锛岃鑱旂郴钀ュ晢鍔炵鐞嗕汉鍛橈紒");
         }
         return this.login(user.getUserName(), user.getRecommendUser(), null, null);
     }
@@ -249,4 +300,6 @@
 
         return verify;
     }
+
+
 }

--
Gitblit v1.9.1