Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master'

wjj před 12 hodinami
rodič
revize
1fab012e18

+ 52 - 16
fs-user-app/src/main/java/com/fs/app/controller/AppLoginController.java

@@ -418,15 +418,33 @@ public class AppLoginController extends AppBaseController{
         FsUser userMap = findUserByPhone(param.getPhone());
         //绑定的手机号已存在用户的情况,将微信登录的时候创建的新号的UnionId移动到老号中,删除新号(将两个号合并)
         if (userMap!=null){
+            if (userMap.getUserId().equals(user.getUserId())) {
+                user.setPhone(param.getPhone());
+                user.setLoginDevice(param.getLoginDevice());
+                user.setSource(param.getSource());
+                userService.updateFsUser(user);
+                return generateTokenAndReturn(user);
+            }
             if (StringUtils.isNotEmpty(userMap.getUnionId())&&!userMap.getUnionId().equals(user.getUnionId())){
                 return R.error("该手机号已绑定其他微信");
             }
-            userMap.setLoginDevice(param.getLoginDevice() != null ? param.getLoginDevice() : null);
-            userMap.setSource(param.getSource());
-            userMap.setUnionId(user.getUnionId());
-            if (userService.updateFsUser(userMap)>0){
-                userService.realDeleteFsUserByUserId(user.getUserId());
-                return generateTokenAndReturn(userMap);
+            //如果存在手机号也有用户,微信也有用户,保留创建时间比较久的用户
+            FsUser keepUser;
+            FsUser deleteUser;
+            if (userMap.getCreateTime().before(user.getCreateTime())){
+                keepUser = userMap;
+                deleteUser = user;
+            }else {
+                keepUser = user;
+                deleteUser = userMap;
+            }
+            keepUser.setLoginDevice(param.getLoginDevice() != null ? param.getLoginDevice() : null);
+            keepUser.setSource(param.getSource());
+            keepUser.setUnionId(user.getUnionId());
+            keepUser.setPhone(param.getPhone());
+            if (userService.updateFsUser(keepUser)>0){
+                userService.realDeleteFsUserByUserId(deleteUser.getUserId());
+                return generateTokenAndReturn(keepUser);
             }
             return R.error("绑定手机号失败");
         }
@@ -464,20 +482,38 @@ public class AppLoginController extends AppBaseController{
             FsUser user = findUserByPhone(param.getPhone());
             if (user!=null && StringUtils.isEmpty(user.getUnionId())){
                 FsUser userByUnionId = userMapper.selectFsUserByUnionid(unionid);
-                //绑定的微信已存在用户的情况,将手机号一键登录的时候创建的新号的UnionId移动到老号中,删除新号(将两个号合并)
+                //绑定的微信已存在用户的情况,将手机号一键登录的时候创建的新号的手机号移动到老号中,删除新号(将两个号合并)
                 if (userByUnionId!=null){
                     if (StringUtils.isNotEmpty(userByUnionId.getPhone())&&!user.getPhone().equals(userByUnionId.getPhone())){
                         return R.error("该微信已绑定其他手机号");
                     }
-                    userByUnionId.setPhone(user.getPhone());
-                    userByUnionId.setSource(param.getSource() != null ? param.getSource() : null );
-                    userByUnionId.setLoginDevice(param.getLoginDevice() != null ? param.getLoginDevice() : null);
-                    userByUnionId.setNickName(nickname);
-                    userByUnionId.setAvatar(avatar);
-                    userByUnionId.setSex(sex);
-                    if (userService.updateFsUser(userByUnionId)>0){
-                        userService.realDeleteFsUserByUserId(user.getUserId());
-                        return generateTokenAndReturn(userByUnionId);
+                    if (userByUnionId.getUserId().equals(user.getUserId())) {
+                        user.setPhone(param.getPhone());
+                        user.setLoginDevice(param.getLoginDevice());
+                        user.setSource(param.getSource());
+                        user.setUnionId(unionid);
+                        userService.updateFsUser(user);
+                        return generateTokenAndReturn(user);
+                    }
+                    FsUser keepUser;
+                    FsUser deleteUser;
+                    if (user.getCreateTime().before(userByUnionId.getCreateTime())){
+                        keepUser = user;
+                        deleteUser = userByUnionId;
+                    } else {
+                        keepUser = userByUnionId;
+                        deleteUser = user;
+                    }
+                    keepUser.setUnionId(unionid);
+                    keepUser.setPhone(param.getPhone());
+                    keepUser.setSource(param.getSource() != null ? param.getSource() : null );
+                    keepUser.setLoginDevice(param.getLoginDevice() != null ? param.getLoginDevice() : null);
+                    keepUser.setNickName(nickname);
+                    keepUser.setAvatar(avatar);
+                    keepUser.setSex(sex);
+                    if (userService.updateFsUser(keepUser)>0){
+                        userService.realDeleteFsUserByUserId(deleteUser.getUserId());
+                        return generateTokenAndReturn(keepUser);
                     }
                     else {
                         return R.error("绑定微信失败");