Bladeren bron

fix机构员工信息修改

Eric 1 jaar geleden
bovenliggende
commit
ae91be3843

+ 127 - 70
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TenantInfoController.java

@@ -1,18 +1,17 @@
 package com.yonge.cooleshow.tenant.controller;
 
 import com.alibaba.fastjson.JSON;
-import com.google.gson.JsonObject;
-import com.timevale.tech.sdk.seal.IFontsLoader;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.entity.TenantAlbumPurchase;
 import com.yonge.cooleshow.biz.dal.entity.TenantInfo;
 import com.yonge.cooleshow.biz.dal.entity.TenantStaff;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
-import com.yonge.cooleshow.biz.dal.mapper.TenantInfoMapper;
-import com.yonge.cooleshow.biz.dal.mapper.TenantStaffMapper;
-import com.yonge.cooleshow.biz.dal.service.*;
+import com.yonge.cooleshow.biz.dal.service.EmployeeService;
+import com.yonge.cooleshow.biz.dal.service.SmsCodeService;
+import com.yonge.cooleshow.biz.dal.service.SysConfigService;
+import com.yonge.cooleshow.biz.dal.service.TenantInfoService;
+import com.yonge.cooleshow.biz.dal.service.TenantStaffService;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantInfoWrapper;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.controller.BaseController;
@@ -21,20 +20,25 @@ import com.yonge.cooleshow.common.security.SecurityConstants;
 import com.yonge.cooleshow.tenant.io.request.SysUserWrapper;
 import com.yonge.cooleshow.tenant.io.request.TenantInfoVo;
 import com.yonge.toolset.base.exception.BizException;
-import com.yonge.toolset.utils.obj.ObjectUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.BeanInstantiationException;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.time.LocalDateTime;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * @Author:haonan
@@ -65,10 +69,7 @@ public class TenantInfoController extends BaseController {
     private SysUserMapper sysUserMapper;
 
     @Autowired
-    private TenantStaffMapper tenantStaffMapper;
-
-    @Autowired
-    private TenantInfoMapper tenantInfoMapper;
+    private EmployeeService employeeService;
 
     @ApiOperation(value = "发送登录短信验证码")
     @ApiImplicitParams({@ApiImplicitParam(name = "mobile", value = "手机号", required = true, dataType = "String"),
@@ -159,78 +160,134 @@ public class TenantInfoController extends BaseController {
     @ApiOperation(value = "用户修改", notes = "用户修改")
 //    @PreAuthorize("@pcs.hasPermissions('tenantInfoUpdate/sysUserUpdate')")
     public HttpResponseResult<Boolean> sysUserUpdate(@RequestBody SysUserWrapper.SysUser sysUser) {
-        String code = sysUser.getCode();
-        String phone = sysUser.getPhone();
 
-        com.yonge.cooleshow.biz.dal.entity.SysUser sysUser1 = JSON.parseObject(sysUser.jsonString(), com.yonge.cooleshow.biz.dal.entity.SysUser.class);
+        // 当前用户请登录,提示请登录
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (Objects.isNull(user)) {
+            throw new BizException("请登录");
+        }
 
         //如果传手机号
-        if (StringUtils.isNotBlank(phone)){
-            boolean re = smsCodeService.verifyValidCode(phone, code, "PHONE");
-            if (re){
-                //查询输入的手机号  是否存在于sysUser表中
-                SysUser user = sysUserMapper.findUserByPhone(phone);
-                if (Objects.nonNull(user)){
-                    //如果存在 判断是否为机构员工
-                    TenantStaff tenantStaff = tenantStaffService.getByUserId(user.getId());
-                    if (!ObjectUtil.isEmpty(tenantStaff)){
-                        throw new BizException("该手机号已绑定机构");
-                    }
-                } else {
-                    //没有存在于sysUser表
-                    SysUser newUser = new SysUser();
-
-                    //查询当前登录账号
-                    SysUser OldUser = sysUserFeignService.queryUserInfo();
-
-                    //给新账户赋值
-                    newUser = JSON.parseObject(OldUser.jsonString(), SysUser.class);
-                    com.yonge.cooleshow.biz.dal.entity.SysUser sysUser2 = JSON.parseObject(newUser.jsonString(), com.yonge.cooleshow.biz.dal.entity.SysUser.class);
-                    sysUser2.setUsername(sysUser.getUsername());
-                    //设置默认头像
-                    if (StringUtils.isEmpty(sysUser.getAvatar())) {
-                        sysUser.setAvatar(sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD));
-                    } else {
-                        sysUser2.setAvatar(sysUser.getAvatar());
-                    }
-                    sysUserMapper.insert(sysUser2);
-                    //查询当前登录用户的userId
-                    Long oldId = OldUser.getId();
-                    //查询新用户的userId
-                    Long newId = sysUser2.getId();
-
-                    //staff 更新userId
-                    tenantStaffMapper.updateUserId(newId,oldId, sysUser2.getUsername(),sysUser2.getAvatar());
-                    //tennatinfo  更新userId  和 phone
-                    tenantInfoMapper.updateIdPhone(newId,phone,oldId);
-                }
-            } else {
+        if (StringUtils.isNotBlank(sysUser.getPhone())) {
+
+            if (StringUtils.isBlank(sysUser.getCode())) {
+                throw new BizException("验证码不能为空");
+            }
+
+            boolean exists = smsCodeService.verifyValidCode(sysUser.getPhone(), sysUser.getCode(), "PHONE");
+            if (Boolean.FALSE.equals(exists)) {
                 throw new BizException("手机号校验有误");
             }
-        }  else {
-            //更新当前用户的staff表
 
+            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("该手机号已绑定机构");
+                }
+
+                // 平台员工不允许重复
+                SysUser employee = employeeService.queryUserByMobile(sysUser.getPhone());
+                if (Objects.nonNull(employee)) {
+                    throw new BizException("当前手机号已绑定平台员工");
+                }
 
-            SysUser user = sysUserFeignService.queryUserInfo();
-            tenantInfoService.updateSysUser(sysUser1, user.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());
+                newSysUser.setAvatar(sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD));
+                // 锁定状态
+                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)
+                        .update();
+            }
+
+        } else {
+
+            // 修改用户基础信息流程
             //设置默认头像
             if (StringUtils.isBlank(sysUser.getAvatar())) {
                 sysUser.setAvatar(sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD));
             }
 
-            //更新员工表
-            Long id = user.getId();
-            TenantStaff staff = tenantStaffService.getByUserId(id);
-            if (staff != null){
-                staff.setNickname(sysUser.getUsername());
-                staff.setAvatar(sysUser.getAvatar());
-                tenantStaffService.updateById(staff);
+            // 更新机构员工头像和昵称,机构信息表中的用户昵称
+            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();
             }
 
-            //更新tenantInfo的username
-        }
-            return HttpResponseResult.succeed(true);
         }
+
+        return HttpResponseResult.succeed(true);
+    }
 }