Przeglądaj źródła

优化短信登录和发送验证码,让新客户也可以使用

xw 1 tydzień temu
rodzic
commit
4b52b4d1ce

+ 24 - 15
fs-user-app/src/main/java/com/fs/app/controller/AppLoginController.java

@@ -452,10 +452,7 @@ public class AppLoginController extends AppBaseController{
         if (CollectionUtil.isEmpty(user)){
             user = userService.selectFsUserListByPhone(encryptPhoneOldKey(phone));
         }
-        if (CollectionUtil.isEmpty(user)){
-            return R.error("此电话号码未绑定用户");
-        }
-        if (user.size()>1){
+        if (!CollectionUtil.isEmpty(user) && user.size()>1){
             //如果出现了一个手机号多个用户的情况,找出登陆过app的那个用户
             user.removeIf(fsUser -> StringUtils.isEmpty(fsUser.getHistoryApp()));
         }
@@ -469,9 +466,15 @@ public class AppLoginController extends AppBaseController{
                 return R.error("验证码错误");
             }
         }
-        updateExistingUserJpushId(user.get(0), map.get("jpushId"));
-        userNewTaskService.performFirstLoginApp(user.get(0).getUserId());
-        return generateTokenAndReturn(user.get(0));
+        FsUser currentUser;
+        if (CollectionUtil.isEmpty(user)) {
+            currentUser = createNewUserBySmsLogin(phone, map);
+        } else {
+            currentUser = user.get(0);
+            updateExistingUserJpushId(currentUser, map.get("jpushId"));
+        }
+        userNewTaskService.performFirstLoginApp(currentUser.getUserId());
+        return generateTokenAndReturn(currentUser);
     }
 
     @PostMapping("/resetPassword")
@@ -783,14 +786,6 @@ public class AppLoginController extends AppBaseController{
     @PostMapping("/sendCode")
     public R sendCode(@RequestBody Map<String, String> body){
         String phone = body.get("phone");
-        String encryptPhone = encryptPhone(phone);
-        List<FsUser> user = userService.selectFsUserListByPhone(encryptPhone);
-        if(CollectionUtil.isEmpty(user)){
-            user = userService.selectFsUserListByPhone(encryptPhoneOldKey(phone));
-        }
-        if (CollectionUtil.isEmpty(user)){
-            return R.error("此电话号码未绑定用户");
-        }
 
         // 验证码 key(3分钟有效)
         String smsCodeKey = "sms:code:" + phone;
@@ -939,6 +934,20 @@ public class AppLoginController extends AppBaseController{
         return newUser;
     }
 
+    private FsUser createNewUserBySmsLogin(String phone, Map<String, String> map) {
+        FsUser newUser = new FsUser();
+        newUser.setPhone(phone);
+        newUser.setJpushId(map.get("jpushId"));
+        newUser.setSource(map.get("source"));
+        newUser.setLoginDevice(map.get("loginDevice"));
+        newUser.setNickName("app用户" + phone.substring(phone.length() - 4));
+        newUser.setStatus(1);
+        newUser.setAvatar("https://cos.his.cdwjyyh.com/fs/20240926/420728ee06e54575ba82665dedb4756b.png");
+        newUser.setCreateTime(new Date());
+        userService.insertFsUser(newUser);
+        return newUser;
+    }
+
     private FsUser findUserByPhone(String phone) {
         // 先根据加密手机号查询用户
         String jiami = (encryptPhone(phone));