diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/system/domain/SysUserExt.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/system/domain/SysUserExt.java index 23078f9f..44d4aa3b 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/system/domain/SysUserExt.java +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/system/domain/SysUserExt.java @@ -29,6 +29,26 @@ public class SysUserExt extends BaseEntity @Excel(name = "用户类型", readConverterExp = "0=0系统用户") private String userType; + private Long comId; + + public Long getComId() { + return comId; + } + + public void setComId(Long comId) { + this.comId = comId; + } + + public Long getIsActive() { + return isActive; + } + + public void setIsActive(Long isActive) { + this.isActive = isActive; + } + + private Long isActive; + public void setUserId(Long userId) { this.userId = userId; diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/system/SysUserExtMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/system/SysUserExtMapper.xml index 695f5ba2..c2d99702 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/system/SysUserExtMapper.xml +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/system/SysUserExtMapper.xml @@ -7,12 +7,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + - select user_id, project_id, status, user_type from sys_user_ext + select user_id, project_id, status, user_type,com_id,is_active from sys_user_ext @@ -35,12 +40,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" project_id, status, user_type, + com_id, + is_active, #{userId}, #{projectId}, #{status}, #{userType}, + #{comId}, + #{isActive}, @@ -50,6 +59,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" project_id = #{projectId}, status = #{status}, user_type = #{userType}, + com_id = #{comId}, + is_active = #{isActive}, where user_id = #{userId} diff --git a/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/controller/SysUserController.java b/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/controller/SysUserController.java index 36b03d9a..353f272f 100644 --- a/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/controller/SysUserController.java +++ b/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/controller/SysUserController.java @@ -3,6 +3,7 @@ package com.yanzhu.system.controller; import com.yanzhu.common.core.constant.Constants; import com.yanzhu.common.core.domain.R; import com.yanzhu.common.core.enums.UserTypeEnums; +import com.yanzhu.common.core.exception.ServiceException; import com.yanzhu.common.core.text.Convert; import com.yanzhu.common.core.utils.StringUtils; import com.yanzhu.common.core.utils.poi.ExcelUtil; @@ -14,11 +15,13 @@ import com.yanzhu.common.log.enums.BusinessType; import com.yanzhu.common.redis.service.RedisService; import com.yanzhu.common.security.annotation.InnerAuth; import com.yanzhu.common.security.annotation.RequiresPermissions; +import com.yanzhu.common.security.service.TokenService; import com.yanzhu.common.security.utils.SecurityUtils; import com.yanzhu.system.api.domain.SysDept; import com.yanzhu.system.api.domain.SysRole; import com.yanzhu.system.api.domain.SysUser; import com.yanzhu.system.api.model.LoginUser; +import com.yanzhu.system.domain.SysUserCom; import com.yanzhu.system.domain.vo.TreeSelect; import com.yanzhu.system.service.*; import com.yanzhu.system.vo.AlertUserPassVo; @@ -29,6 +32,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; @@ -65,6 +69,8 @@ public class SysUserController extends BaseController { @Autowired private ISysConfigService configService; + @Autowired + private TokenService tokenService; /** * 获取用户列表 @@ -109,12 +115,22 @@ public class SysUserController extends BaseController { @InnerAuth @GetMapping("/info/{username}") public R info(@PathVariable("username") String username) { + try { + LoginUser sysUserVo = getLoginInfo(username); + + return R.ok(sysUserVo); + }catch (ServiceException ex){ + return R.fail(ex.getMessage()); + } + } + + private LoginUser getLoginInfo(String username){ SysUser sysUser = userService.selectUserByUserName(username); if (StringUtils.isNull(sysUser)) { - return R.fail("用户名或密码错误"); + throw new ServiceException("用户名或密码错误"); } if (StringUtils.isEmpty(sysUser.getRoles())) { - return R.fail("用户未查询到分配角色,请联系管理员!!!"); + throw new ServiceException("用户未查询到分配角色,请联系管理员!!!"); } // 重写登录方法 if (!sysUser.isAdmin() && sysUser.getRoles().size() > 1) { @@ -125,6 +141,7 @@ public class SysUserController extends BaseController { sysUser.setActiveComId(sysUser.getComId()); sysUser.setActiveComName(sysUser.getComName()); } else { + /* // 查询用户绑定项目列表 List> list = userService.selectProjectsByUserId(sysUser.getUserId()); if (StringUtils.isEmpty(list)) { @@ -136,6 +153,16 @@ public class SysUserController extends BaseController { sysUser.setActiveComName(Convert.toStr(list.get(0).get("com_name"))); sysUser.setActiveProjectId(Convert.toLong(list.get(0).get("project_id"))); sysUser.setActiveProjectName(Convert.toStr(list.get(0).get("project_name"))); + + */ + sysUser.setActiveComId(sysUser.getComId()); + sysUser.setActiveComName(sysUser.getComName()); + sysUser.setActiveProjectId(sysUser.getDeptId()); + if(sysUser.getDept()!=null){ + sysUser.setActiveProjectName(sysUser.getDept().getDeptName()); + }else{ + sysUser.setActiveProjectName(""); + } } } @@ -155,8 +182,7 @@ public class SysUserController extends BaseController { roles.add("visitors"); sysUserVo.setRoles(roles); } - - return R.ok(sysUserVo); + return sysUserVo; } /** @@ -238,7 +264,7 @@ public class SysUserController extends BaseController { * * @return 用户信息 */ - @GetMapping("getInfo") + @GetMapping("/getInfo") public AjaxResult getInfo() { SysUser user = SecurityUtils.getLoginUser().getSysUser(); AjaxResult ajax = AjaxResult.success(); @@ -428,4 +454,21 @@ public class SysUserController extends BaseController { return AjaxResult.success(list); } + @PostMapping("/activeUserCom") + public AjaxResult activeUserCom(@RequestBody SysUserCom userCom, HttpServletRequest request){ + SysUser user= userService.activeUserCom(userCom); + + LoginUser sysUserVo = getLoginInfo(user.getUserName()); + LoginUser loginUser = tokenService.getLoginUser(request); + loginUser.setSysUser(sysUserVo.getSysUser()); + loginUser.setProjectId(sysUserVo.getProjectId()); + loginUser.setProjectName(sysUserVo.getProjectName()); + loginUser.setProjectDeptId(sysUserVo.getProjectDeptId()); + loginUser.setProjectDeptName(sysUserVo.getProjectDeptName()); + loginUser.setRoles(sysUserVo.getRoles()); + loginUser.setPermissions(sysUserVo.getPermissions()); + tokenService.refreshToken(loginUser); + return AjaxResult.success(); + } + } diff --git a/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/service/ISysUserService.java b/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/service/ISysUserService.java index 6250fed0..489d79a0 100644 --- a/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/service/ISysUserService.java +++ b/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/service/ISysUserService.java @@ -264,5 +264,5 @@ public interface ISysUserService public List getUserComs(Long userId); - public int activeUserCom(SysUserCom userCom); + public SysUser activeUserCom(SysUserCom userCom); } diff --git a/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/service/impl/SysUserExtServiceImpl.java b/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/service/impl/SysUserExtServiceImpl.java index b7e61556..f65e4750 100644 --- a/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/service/impl/SysUserExtServiceImpl.java +++ b/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/service/impl/SysUserExtServiceImpl.java @@ -81,7 +81,10 @@ public class SysUserExtServiceImpl implements ISysUserExtService public void updateBySysUser(SysUser sysUser) { SysUserExt where=new SysUserExt(); where.setUserId(sysUser.getUserId()); + where.setComId(sysUser.getComId()); + List userExts=sysUserExtMapper.selectSysUserExtList(where); where.setProjectId(sysUser.getDeptId()); + where.setIsActive(userExts.size()==0?1l:0l); SysUserExt old=selectSysUserExtById(where); if(Objects.nonNull(old)){ old.setUserType(sysUser.getUserType()); diff --git a/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/service/impl/SysUserServiceImpl.java b/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/service/impl/SysUserServiceImpl.java index c14a4ef6..166eeab5 100644 --- a/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/service/impl/SysUserServiceImpl.java +++ b/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/service/impl/SysUserServiceImpl.java @@ -10,10 +10,12 @@ import com.yanzhu.common.core.enums.ShiFouEnums; import com.yanzhu.common.core.enums.UserTypeEnums; import com.yanzhu.common.core.utils.DateUtils; import com.yanzhu.common.core.web.domain.AjaxResult; +import com.yanzhu.common.security.service.TokenService; import com.yanzhu.system.api.RemoteProService; import com.yanzhu.system.api.RemoteUserService; import com.yanzhu.system.api.domain.SysDept; import com.yanzhu.system.api.domain.SysRoleDept; +import com.yanzhu.system.api.model.LoginUser; import com.yanzhu.system.domain.*; import com.yanzhu.system.mapper.*; import com.yanzhu.system.service.ISysUserExtService; @@ -83,6 +85,11 @@ public class SysUserServiceImpl implements ISysUserService private ISysUserExtService userExtService; @Autowired private SysUserComMapper userComMapper; + + @Autowired + private TokenService tokenService; + + /** * 根据条件分页查询用户列表 * @@ -319,7 +326,7 @@ public class SysUserServiceImpl implements ISysUserService public int insertUser(SysUser user) { // 新增用户信息 - user.setUserName(userNameAndCout(user.getNickName())); + //user.setUserName(userNameAndCout(user.getNickName())); SysDept dept = deptMapper.selectDeptById(user.getDeptId()); if(Objects.isNull(dept)){ throw new ServiceException("所属单位选择异常,必须选择子公司及下属单位"); @@ -328,11 +335,11 @@ public class SysUserServiceImpl implements ISysUserService int rows=0; SysUser sysUser = userMapper.selectByPhone(user.getPhonenumber()); if(Objects.nonNull(sysUser)){//此电话号码已注册 - SysUser where=new SysUser(); + SysUserExt where=new SysUserExt(); where.setUserId(sysUser.getUserId()); - where.setComId(user.getComId()); - SysUser oldUserCom=userMapper.selectUserCom(where); - if(Objects.nonNull(oldUserCom)){ + where.setProjectId(user.getDeptId()); + List userExts=userExtService.selectSysUserExtList(where); + if(userExts.size()>0){ throw new ServiceException("此用户己在此项目中!"); } user.setUserId(sysUser.getUserId()); @@ -340,7 +347,9 @@ public class SysUserServiceImpl implements ISysUserService user.setStatus("0"); userMapper.insertUserCom(user); sysUser.setUserName(user.getUserName()); - sysUser.setPhonenumber(user.getUserName()); + sysUser.setComId(user.getComId()); + sysUser.setDeptId(user.getDeptId()); + sysUser.setPhonenumber(user.getPhonenumber()); sysUser.setNickName(user.getNickName()); sysUser.setUpdateBy(user.getUpdateBy()); sysUser.setUpdateTime(user.getUpdateTime()); @@ -915,14 +924,38 @@ public class SysUserServiceImpl implements ISysUserService } @Override - public int activeUserCom(SysUserCom userCom) { + public SysUser activeUserCom(SysUserCom userCom) { userCom.setIsActive(1l); int cnt= userComMapper.updateActiveTo0(userCom); cnt+= userComMapper.updateActive(userCom); + SysUserExt userExtWhere=new SysUserExt(); + userExtWhere.setUserId(userCom.getUserId()); + userExtWhere.setComId(userCom.getComId()); + List userExts=userExtService.selectSysUserExtList(userExtWhere); + if(userExts.size()==0){ + throw new ServiceException("此租户下面没有项目"); + } + SysUserExt sysUserExt=findActiveUserExt(userExts); SysUser user=selectUserById(userCom.getUserId()); user.setComId(userCom.getComId()); + user.setDeptId(sysUserExt.getProjectId()); cnt+= userMapper.updateUser(user); - return cnt; + return user; + } + + private SysUserExt findActiveUserExt(List userExts) { + SysUserExt find=null; + for(SysUserExt userExt:userExts){ + if(userExt.getIsActive()==1){ + find=userExt; + } + } + if(find==null){ + find=userExts.get(0); + find.setIsActive(1l); + userExtService.updateSysUserExt(find); + } + return find; } } diff --git a/yanzhu-ui-vue3/src/api/system/user.js b/yanzhu-ui-vue3/src/api/system/user.js index 45529c56..f2c89570 100644 --- a/yanzhu-ui-vue3/src/api/system/user.js +++ b/yanzhu-ui-vue3/src/api/system/user.js @@ -172,7 +172,7 @@ export function getUserComs(userId){ export function activeUserCom(userCom){ return request({ - url:'/system/user/profile/activeUserCom', + url:'/system/user/activeUserCom', method:'post', data:userCom }) diff --git a/yanzhu-ui-vue3/src/store/modules/user.js b/yanzhu-ui-vue3/src/store/modules/user.js index c5f6dd60..c1bfddde 100644 --- a/yanzhu-ui-vue3/src/store/modules/user.js +++ b/yanzhu-ui-vue3/src/store/modules/user.js @@ -56,8 +56,8 @@ const useUserStore = defineStore( this.nickName = user.nickName; this.compInfo=user.comp; this.avatar = avatar; - this.currentComId = user.comp?.deptId||user.activeComId; - this.currentComName =user.comp?.deptName|| user.activeComName; + this.currentComId = user.activeComId; + this.currentComName = user.activeComName; this.currentPrjId = user.activeProjectId; this.currentProName = user.activeProjectName; resolve(res) diff --git a/yanzhu-ui-vue3/src/views/system/user/profile/index.vue b/yanzhu-ui-vue3/src/views/system/user/profile/index.vue index 02faf8f1..ba79883c 100644 --- a/yanzhu-ui-vue3/src/views/system/user/profile/index.vue +++ b/yanzhu-ui-vue3/src/views/system/user/profile/index.vue @@ -1,143 +1,156 @@