Explorar o código

红德堂-销售邀请注册链接绑定用户逻辑调整

Long hai 1 semana
pai
achega
74d0cbb7cb

+ 2 - 2
fs-service/src/main/java/com/fs/his/mapper/FsUserMapper.java

@@ -40,7 +40,7 @@ import org.apache.ibatis.annotations.Param;
  */
 public interface FsUserMapper
 {
-    @Select("select * from fs_user where phone=#{phone}")
+    @Select("select * from fs_user where phone=#{phone} and is_del = 0")
     List<FsUser> selectFsUsersByPhoneLimitOne(String phone);
     /**
      * 查询用户
@@ -86,7 +86,7 @@ public interface FsUserMapper
 
     @Select("SELECT * \n" +
             "FROM fs_user\n" +
-            "WHERE phone IS NOT NULL AND phone != ''\n" +
+            "WHERE phone IS NOT NULL AND phone != '' and is_del = 0\n" +
             "GROUP BY phone \n" +
             "HAVING COUNT(*) > 1")
     List<FsUser> findDuplicatePhonesWithCount();

+ 31 - 65
fs-user-app/src/main/java/com/fs/app/controller/CompanyUserController.java

@@ -147,76 +147,42 @@ public class CompanyUserController extends AppBaseController {
     @Transactional
     public R bindCompanyUser(@Validated @RequestBody FsBindCompanyUserParam param, HttpServletRequest request) {
         Long currentUserId = Long.parseLong(getUserId());
-        CompanyUserUser map = new CompanyUserUser();
-        map.setCompanyUserId(param.getCompanyUserId());
-        map.setUserId(currentUserId);
         FsUser user = fsUserService.selectFsUserByUserId(currentUserId);
-        if(user != null && StringUtils.isNotEmpty(param.getPhone())){
-            List<FsUser> usersByPhone = findUsersByPhone(param.getPhone());
-            //如果有多个相同手机号的用户 就合并用户保留unionid 存在的  只有一个用户就正常绑定手机号就可以了
-            if(CollectionUtil.isNotEmpty(usersByPhone)){
-                //和绑定的用户id比较 如果相同给出限制
-                for (FsUser fsUser : usersByPhone){
-                    if(fsUser.getUserId().equals(user.getUserId())){
-                        return R.error("您已注册康享银龄APP,如需修改手机号,请联系您的专属客服");
-                    }
+        if (user == null) {
+            return R.error("用户不存在");
+        }
+
+        List<FsUser> usersByPhone = findUsersByPhone(param.getPhone());
+
+        // 手机号查询出来的用户数大于1联系客服处理
+        if (usersByPhone != null && usersByPhone.size() > 1) {
+            return R.error("手机号已注册,请联系您的专属客服");
+        }
+
+        // 手机号查询出来的用户归属于其他用户联系客服处理
+        if (usersByPhone != null && usersByPhone.size() == 1) {
+            FsUser userByPhone = usersByPhone.get(0);
+            // 用户ID不同
+            if (!user.getUserId().equals(userByPhone.getUserId())) {
+                // 手机号查询出的用户unionId为空合并账号
+                if (StringUtils.isBlank(userByPhone.getUnionId())) {
+                    fsUserService.realDeleteFsUserByUserId(userByPhone.getUserId());
                 }
-                // 有多个相同手机号的用户,需要合并用户
-                if (usersByPhone.size() > 1) {
-                    // 合并规则:优先保留有 union_id 的用户
-                    FsUser keepUser = null;
-                    FsUser userByUnionId = usersByPhone.stream()
-                            .filter(u -> StringUtils.isNotEmpty(u.getUnionId()))
-                            .findFirst()
-                            .orElse(null);
-
-                    if (userByUnionId != null) {
-                        // 有 union_id 的用户保留
-                        keepUser = userByUnionId;
-                    } else {
-                        // 都没有 union_id,按创建时间保留较早的用户
-                        keepUser = usersByPhone.get(0);
-                        for (FsUser u : usersByPhone) {
-                            if (u.getCreateTime().before(keepUser.getCreateTime())) {
-                                keepUser = u;
-                            }
-                        }
-                    }
-
-                    if (keepUser != null) {
-                        // 找出所有需要删除的用户(除了保留用户)
-                        FsUser finalKeepUser = keepUser;
-                        List<FsUser> deleteUsers = usersByPhone.stream()
-                                .filter(u -> !u.getUserId().equals(finalKeepUser.getUserId()))
-                                .collect(Collectors.toList());
-
-                        // 合并所有需要删除用户的信息到保留用户
-                        for (FsUser deleteUser : deleteUsers) {
-                            // 如果保留用户没有 source,而被删除用户有 source,则转移 source
-                            if (StringUtils.isEmpty(keepUser.getSource()) && StringUtils.isNotEmpty(deleteUser.getSource())) {
-                                keepUser.setSource(deleteUser.getSource());
-                            }
-                            // 如果保留用户没有 loginDevice,而被删除用户有 loginDevice,则转移 loginDevice
-                            if (StringUtils.isEmpty(keepUser.getLoginDevice()) && StringUtils.isNotEmpty(deleteUser.getLoginDevice())) {
-                                keepUser.setLoginDevice(deleteUser.getLoginDevice());
-                            }
-                            // 删除被合并的用户
-                            fsUserService.realDeleteFsUserByUserId(deleteUser.getUserId());
-                        }
-
-                        // 如果当前用户不是保留用户,需要更新当前用户
-                        if (!user.getUserId().equals(keepUser.getUserId())) {
-                            currentUserId = keepUser.getUserId();
-                            map.setUserId(currentUserId);
-                            user = keepUser;
-                        }
-                    }
+
+                // 手机号查询出的用户unionId不为空且于登录用户unionId不一致
+                else if (!user.getUnionId().equals(userByPhone.getUnionId())) {
+                    return R.error("手机号已注册,请联系您的专属客服");
                 }
             }
-            //手机号加密
-            user.setPhone(encryptPhone(param.getPhone()));
-            fsUserService.updateFsUser(user);
         }
+
+        //手机号加密
+        user.setPhone(encryptPhone(param.getPhone()));
+        fsUserService.updateFsUser(user);
+
+        CompanyUserUser map = new CompanyUserUser();
+        map.setCompanyUserId(param.getCompanyUserId());
+        map.setUserId(currentUserId);
         List<CompanyUserUser> list = companyUserUserService.selectCompanyUserUserList(map);
         if (list == null || list.isEmpty()) {
             CompanyUser companyUser = companyUserService.selectCompanyUserById(param.getCompanyUserId());

+ 1 - 0
fs-user-app/src/main/java/com/fs/app/param/FsBindCompanyUserParam.java

@@ -12,6 +12,7 @@ public class FsBindCompanyUserParam implements Serializable {
 
     private Long companyUserId;
 
+    @NotBlank(message = "手机号不能为空")
     private  String phone;
 
 }