|
@@ -6,6 +6,8 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
|
|
|
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.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;
|
|
@@ -18,7 +20,6 @@ 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;
|
|
@@ -32,7 +33,12 @@ 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
|
|
@@ -58,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 =
|
|
@@ -147,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);
|
|
|
}
|
|
|
}
|