Browse Source

1.机构修改手机号逻辑调整

yuanliang 1 year ago
parent
commit
3ebdd79de4

+ 50 - 142
cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/TenantInfoController.java

@@ -64,14 +64,8 @@ public class TenantInfoController extends BaseController {
     private TenantStaffService tenantStaffService;
 
     @Autowired
-    private SysConfigService sysConfigService;
-
-    @Autowired
     private SysUserMapper sysUserMapper;
 
-    @Autowired
-    private EmployeeService employeeService;
-
     @ApiOperation(value = "发送登录短信验证码")
     @ApiImplicitParams({@ApiImplicitParam(name = "mobile", value = "手机号", required = true, dataType = "String"),
             @ApiImplicitParam(name = "type", value = "类型(PASSWD:修改密码,LOGIN:登录或注册,BANK:绑定银行卡,PHONE:修改手机号)", required =
@@ -169,10 +163,11 @@ public class TenantInfoController extends BaseController {
         }
 
         TenantStaff staff = tenantStaffService.getByUserId(user.getId());
-        if (Objects.nonNull(staff)) {
-            // 设置用户机构ID
-            user.setTenantId(staff.getTenantId());
+        if (staff == null) {
+            throw new BizException("账号不存在");
         }
+        // 设置用户机构ID
+        user.setTenantId(staff.getTenantId());
         //如果传手机号
         if (StringUtils.isNotBlank(sysUser.getPhone())) {
 
@@ -185,145 +180,58 @@ public class TenantInfoController extends BaseController {
                 throw new BizException("验证码错误");
             }
 
-            long userId;
-            // 查询输入的手机号  是否存在于sysUser表中
-            SysUser sysUserInfo = sysUserMapper.findUserByPhone(sysUser.getPhone());
-
-            // 用户默认头象
-            if (Objects.nonNull(sysUserInfo)) {
-
-                //如果存在 判断是否为机构员工
-                TenantStaff tenantStaff = tenantStaffService.getByUserId(sysUserInfo.getId());
-                if (Objects.nonNull(tenantStaff)) {
-                    throw new BizException("该手机号已绑定机构");
+            // 如果修改了手机号
+            if (StringUtils.isNotEmpty(sysUser.getPhone()) && !user.getPhone().equals(sysUser.getPhone())) {
+                // 查询输入的手机号  是否存在于sysUser表中
+                SysUser sysUserInfo = sysUserMapper.findUserByPhone(sysUser.getPhone());
+                if (Objects.nonNull(sysUserInfo)) {
+                    throw new BizException("手机号已经注册平台账号");
                 }
-
-                // 平台员工不允许重复
-                SysUser employee = employeeService.queryUserByMobile(sysUser.getPhone());
-                if (Objects.nonNull(employee) && employee.getPhone().equals(sysUser.getPhone())
-                        && employee.getUserType().contains(ClientEnum.SYSTEM.getCode())) {
-                    throw new BizException("当前手机号已绑定平台员工");
+                // 清除登录token信息,有wxOpenId说明登陆过
+                if (StringUtils.isNotEmpty(staff.getWxOpenid())) {
+                    sysUserFeignService.exitByPhoneAndOpenId(ClientEnum.ORGANIZATION.getCode().toLowerCase(),
+                            user.getPhone(), staff.getWxOpenid());
+                    // 清除WXOpenId
+                    tenantStaffService.update(null, Wrappers.<TenantStaff>lambdaUpdate()
+                            .set(TenantStaff::getWxOpenid, null)
+                            .eq(TenantStaff::getId, staff.getId()));
                 }
-
-                // 更新用户身份
-                com.yonge.cooleshow.biz.dal.entity.SysUser newSysUser = new com.yonge.cooleshow.biz.dal.entity.SysUser();
-                // 设置用户ID
-                newSysUser.setId(sysUserInfo.getId());
-                // 用户身份
-                newSysUser.setUserType(sysUserInfo.getUserType() + ",ORGANIZATION");
-                newSysUser.setUpdateTime(LocalDateTime.now());
-
-                // 新用户更新
-                sysUserMapper.updateById(newSysUser);
-
-                // 新用户ID
-                userId = sysUserInfo.getId();
-            } else {
-
-                // 重新生成sysUser数据
-                com.yonge.cooleshow.biz.dal.entity.SysUser newSysUser = JSON.parseObject(JSON.toJSONString(user),
-                        com.yonge.cooleshow.biz.dal.entity.SysUser.class);
-                // 重置主键ID
-                newSysUser.setId(null);
-                // 设置新手机号
-                newSysUser.setPhone(sysUser.getPhone());
-                // 创建和修改时间
-                newSysUser.setCreateTime(LocalDateTime.now());
-                newSysUser.setUpdateTime(LocalDateTime.now());
-                if (StringUtils.isBlank(newSysUser.getAvatar())) {
-                    // 使用默认用户头像
-                    newSysUser.setAvatar(sysConfigService.findConfigValue(SysConfigConstant.TEACHER_AVATAR));
-                }
-                // 锁定状态
-                newSysUser.setLockFlag(0);
-                // 用户类型
-                newSysUser.setUserType("ORGANIZATION");
-                // 删除状态
-                newSysUser.setDelFlag(0);
-                newSysUser.setImToken("");
-
-                sysUserMapper.insert(newSysUser);
-                // 新用户ID
-                userId = newSysUser.getId();
-            }
-
-            // 旧用户移动机构身份
-            com.yonge.cooleshow.biz.dal.entity.SysUser oldSysUser = new com.yonge.cooleshow.biz.dal.entity.SysUser();
-            oldSysUser.setId(user.getId());
-            // 用户身份
-            String userType = Arrays.stream(user.getUserType().split(","))
-                    .filter(x -> !x.equals("ORGANIZATION")).collect(Collectors.joining(","));
-            oldSysUser.setUserType(userType);
-            sysUserMapper.updateById(oldSysUser);
-
-            // 更新用户ID
-            tenantStaffService.lambdaUpdate()
-                    .eq(TenantStaff::getUserId, user.getId())
-                    .set(TenantStaff::getUserId, userId)
-                    .update();
-
-            // 更新机构信息表中的用户
-            if (Optional.ofNullable(user.getTenantId()).orElse(-1L) > 0) {
-
-                tenantInfoService.lambdaUpdate()
-                        .eq(TenantInfo::getId, user.getTenantId())
-                        .set(TenantInfo::getUserId, userId)
-                        .set(TenantInfo::getPhone,sysUser.getPhone())
-                        .update();
-            }
-
-        } else {
-
-            // 修改用户基础信息流程
-            // 更新用户头象
-            com.yonge.cooleshow.biz.dal.entity.SysUser updateSysUser = new com.yonge.cooleshow.biz.dal.entity.SysUser();
-            updateSysUser.setId(user.getId());
-            // 用户昵称
-            if (StringUtils.isNotBlank(sysUser.getUsername())) {
-                updateSysUser.setUsername(sysUser.getUsername());
-            }
-            //设置默认头像
-            if (StringUtils.isNotBlank(sysUser.getAvatar())) {
-                //sysUser.setAvatar(sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD));
-                updateSysUser.setAvatar(sysUser.getAvatar());
-            }
-            updateSysUser.setUpdateTime(LocalDateTime.now());
-            sysUserMapper.updateById(updateSysUser);
-
-            // 更新机构员工头像和昵称,机构信息表中的用户昵称
-            tenantStaffService.lambdaUpdate()
-                    .eq(TenantStaff::getUserId, user.getId())
-                    .set(StringUtils.isNotEmpty(sysUser.getUsername()), TenantStaff::getNickname, sysUser.getUsername())
-                    .set(StringUtils.isNotEmpty(sysUser.getAvatar()), TenantStaff::getAvatar, sysUser.getAvatar())
-                    .set(TenantStaff::getUpdateTime, LocalDateTime.now())
-                    .update();
-
-
-            // 更新机构信息表中的用户昵称
-            if (StringUtils.isNotBlank(sysUser.getUsername()) && Optional.ofNullable(user.getTenantId()).orElse(-1L) > 0) {
-
-                tenantInfoService.lambdaUpdate()
-                        .eq(TenantInfo::getId, user.getTenantId())
-                        .set(TenantInfo::getUsername, sysUser.getUsername())
-                        .update();
             }
-
         }
 
-        // 修改了手机号码,清理token和WXOpenId
-        if (StringUtils.isNotEmpty(sysUser.getPhone()) && !user.getPhone().equals(sysUser.getPhone())) {
-            // 清除登录token信息,有wxOpenId说明登陆过
-            if (StringUtils.isNotEmpty(staff.getWxOpenid())) {
-                TenantStaff newStaff = tenantStaffService.getByPhone(sysUser.getPhone());
-                sysUserFeignService.exitByPhoneAndOpenId(ClientEnum.ORGANIZATION.getCode().toLowerCase(),
-                        user.getPhone(), staff.getWxOpenid());
-                // 清除WXOpenId
-                tenantStaffService.update(null, Wrappers.<TenantStaff>lambdaUpdate()
-                        .set(TenantStaff::getWxOpenid, null)
-                        .eq(TenantStaff::getUserId, newStaff.getUserId()));
-            }
+        // 修改用户基础信息流程
+        // 更新用户头象
+        com.yonge.cooleshow.biz.dal.entity.SysUser updateSysUser = new com.yonge.cooleshow.biz.dal.entity.SysUser();
+        updateSysUser.setId(user.getId());
+        // 用户昵称
+        if (StringUtils.isNotBlank(sysUser.getUsername())) {
+            updateSysUser.setUsername(sysUser.getUsername());
         }
-
+        //设置默认头像
+        if (StringUtils.isNotBlank(sysUser.getAvatar())) {
+            updateSysUser.setAvatar(sysUser.getAvatar());
+        }
+        if (StringUtils.isNotBlank(sysUser.getPhone())) {
+            updateSysUser.setPhone(sysUser.getPhone());
+        }
+        updateSysUser.setUpdateTime(LocalDateTime.now());
+        sysUserMapper.updateById(updateSysUser);
+
+
+        // 更新机构员工头像和昵称,机构信息表中的用户昵称
+        tenantStaffService.lambdaUpdate()
+                .eq(TenantStaff::getId, staff.getId())
+                .set(StringUtils.isNotEmpty(sysUser.getUsername()), TenantStaff::getNickname, sysUser.getUsername())
+                .set(StringUtils.isNotEmpty(sysUser.getAvatar()), TenantStaff::getAvatar, sysUser.getAvatar())
+                .set(TenantStaff::getUpdateTime, LocalDateTime.now())
+                .update();
+
+        // 更新机构信息表中的用户昵称
+        tenantInfoService.lambdaUpdate()
+                .eq(TenantInfo::getId, staff.getTenantId())
+                .set(StringUtils.isNotEmpty(sysUser.getUsername()), TenantInfo::getUsername, sysUser.getUsername())
+                .set(StringUtils.isNotEmpty(sysUser.getPhone()), TenantInfo::getPhone, sysUser.getPhone())
+                .update();
         return HttpResponseResult.succeed(true);
     }
 }

+ 20 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantInfoServiceImpl.java

@@ -291,6 +291,25 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoMapper, TenantI
         return sysUser;
     }
 
+    private SysUser getUpdateAccount(TenantInfo tenantInfo, TenantInfo oldTenantInfo) {
+        SysUser sysUser = new SysUser();
+        com.yonge.cooleshow.auth.api.entity.SysUser newSysUser = sysUserMapper.findUserByPhone(tenantInfo.getPhone());
+        if (!tenantInfo.getPhone().equals(oldTenantInfo.getPhone())) {
+            if (newSysUser != null) {
+                throw new BizException("手机号已经注册平台账号");
+            } else {
+                com.yonge.cooleshow.auth.api.entity.SysUser oldSysUser = sysUserMapper.findUserByPhone(oldTenantInfo.getPhone());
+                sysUser.setId(oldSysUser.getId());
+            }
+        } else {
+            sysUser.setId(newSysUser.getId());
+        }
+        sysUser.setPhone(tenantInfo.getPhone());
+        sysUser.setUsername(tenantInfo.getUsername());
+        sysUserMapper.updateById(sysUser);
+        return sysUser;
+    }
+
 
 
     private SysUser getAccount(TenantInfo tenantInfo, TenantInfo oldTenantInfo) {
@@ -414,7 +433,7 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoMapper, TenantI
         // todo  机构冻结状态是否允许修改
         //更新或创建sysUser
         TenantInfo oldTenantInfo = this.getById(info.getId());
-        SysUser sysUser = getOrCreateAccount(info, oldTenantInfo);
+        SysUser sysUser = getUpdateAccount(info, oldTenantInfo);
 
         if (sysUser.getId() != null){
             tenantStaffMapper.update(null, Wrappers.<TenantStaff>lambdaUpdate()

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantStaffServiceImpl.java

@@ -177,6 +177,9 @@ public class TenantStaffServiceImpl extends ServiceImpl<TenantStaffMapper, Tenan
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void updateStatus(Long id, UserLockFlag status) {
+        if (UserLockFlag.LOCKED.equals(status)) {
+            clearWxOpenId(id);
+        }
         this.lambdaUpdate()
                 .set(TenantStaff::getStatus, status)
                 .eq(TenantStaff::getId, id)