Forráskód Böngészése

fix更新机构员工信息

Eric 1 éve
szülő
commit
44dad9ae1e

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

@@ -1,15 +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.service.*;
+import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
+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;
@@ -18,19 +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
@@ -56,6 +64,12 @@ public class TenantInfoController extends BaseController {
     @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 =
@@ -145,66 +159,147 @@ 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("请登录");
+        }
 
+        TenantStaff staff = tenantStaffService.getByUserId(user.getId());
+        if (Objects.nonNull(staff)) {
+            // 设置用户机构ID
+            user.setTenantId(staff.getTenantId());
+        }
         //如果传手机号
-        if (StringUtils.isNotBlank(phone)){
-            boolean re = smsCodeService.verifyValidCode(phone, code, "PHONE");
-            if (re){
-                SysUser user = sysUserFeignService.queryUserInfo();
-                tenantInfoService.updateSysUser(sysUser1, user.getId());
-
-                //设置默认头像
-                if (StringUtils.isEmpty(sysUser.getAvatar())) {
-                    sysUser.setAvatar(sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD));
-                }
+        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("验证码错误");
+            }
+
+            long userId;
+            // 查询输入的手机号  是否存在于sysUser表中
+            SysUser sysUserInfo = sysUserMapper.findUserByPhone(sysUser.getPhone());
+
+            // 用户默认头象
+            if (Objects.nonNull(sysUserInfo)) {
 
-                //判断更改的手机所属的机构信息
-
-                String oldPhone = user.getPhone();
-                //查看原机构信息
-                List<TenantInfo> list = tenantInfoService.lambdaQuery().eq(TenantInfo::getPhone, oldPhone).list();
-                if (CollectionUtils.isNotEmpty(list)){
-                    TenantInfo info = list.get(0);
-                    if (ObjectUtil.isEmpty(info)) {
-                        //更新tennatInfo
-                        info.setPhone(phone);
-                        tenantInfoService.updateById(info);
-                    }
+                //如果存在 判断是否为机构员工
+                TenantStaff tenantStaff = tenantStaffService.getByUserId(sysUserInfo.getId());
+                if (Objects.nonNull(tenantStaff)) {
+                    throw new BizException("该手机号已绑定机构");
                 }
 
-                //更新员工表
-                Long id = user.getId();
-                TenantStaff staff = tenantStaffService.getByUserId(id);
-                if (staff != null){
-                    staff.setNickname(sysUser.getUsername());
-                    staff.setAvatar(sysUser.getAvatar());
-                    tenantStaffService.updateById(staff);
+                // 平台员工不允许重复
+                SysUser employee = employeeService.queryUserByMobile(sysUser.getPhone());
+                if (Objects.nonNull(employee)) {
+                    throw new BizException("当前手机号已绑定平台员工");
                 }
+
+                // 更新用户身份
+                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 {
-                throw new BizException("手机号校验有误");
+
+                // 重新生成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();
             }
-        }  else {
-            SysUser user = sysUserFeignService.queryUserInfo();
-            tenantInfoService.updateSysUser(sysUser1, user.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 {
+
+            // 修改用户基础信息流程
             //设置默认头像
             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);
+            // 更新用户头象
+            com.yonge.cooleshow.biz.dal.entity.SysUser updateSysUser = new com.yonge.cooleshow.biz.dal.entity.SysUser();
+            updateSysUser.setId(user.getId());
+            updateSysUser.setAvatar(sysUser.getAvatar());
+            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();
             }
+
         }
+
         return HttpResponseResult.succeed(true);
     }
 }