|
@@ -147,76 +147,42 @@ public class CompanyUserController extends AppBaseController {
|
|
|
@Transactional
|
|
@Transactional
|
|
|
public R bindCompanyUser(@Validated @RequestBody FsBindCompanyUserParam param, HttpServletRequest request) {
|
|
public R bindCompanyUser(@Validated @RequestBody FsBindCompanyUserParam param, HttpServletRequest request) {
|
|
|
Long currentUserId = Long.parseLong(getUserId());
|
|
Long currentUserId = Long.parseLong(getUserId());
|
|
|
- CompanyUserUser map = new CompanyUserUser();
|
|
|
|
|
- map.setCompanyUserId(param.getCompanyUserId());
|
|
|
|
|
- map.setUserId(currentUserId);
|
|
|
|
|
FsUser user = fsUserService.selectFsUserByUserId(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);
|
|
List<CompanyUserUser> list = companyUserUserService.selectCompanyUserUserList(map);
|
|
|
if (list == null || list.isEmpty()) {
|
|
if (list == null || list.isEmpty()) {
|
|
|
CompanyUser companyUser = companyUserService.selectCompanyUserById(param.getCompanyUserId());
|
|
CompanyUser companyUser = companyUserService.selectCompanyUserById(param.getCompanyUserId());
|