From 2382a47279b6ed520593539f73aa5e512b4f016e Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期二, 03 六月 2025 11:31:55 +0800 Subject: [PATCH] 用户绑定多公司 --- src/main/java/com/ruoyi/framework/security/LoginUser.java | 18 +- src/main/java/com/ruoyi/project/system/mapper/SysUserDeptMapper.java | 15 ++ src/main/resources/mapper/system/SysUserDeptMapper.xml | 21 +++ src/main/java/com/ruoyi/project/system/service/ISysUserService.java | 7 + src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java | 43 +++++-- src/main/java/com/ruoyi/framework/security/service/UserDetailsServiceImpl.java | 2 src/main/java/com/ruoyi/project/system/service/impl/SysUserDeptServiceImpl.java | 22 +++ src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java | 12 - src/main/java/com/ruoyi/framework/web/domain/TreeSelect.java | 12 ++ src/main/java/com/ruoyi/project/system/domain/SysUser.java | 51 ++++++-- src/main/java/com/ruoyi/common/config/IgnoreTableConfig.java | 1 src/main/java/com/ruoyi/common/utils/SecurityUtils.java | 4 src/main/java/com/ruoyi/framework/web/controller/BaseController.java | 4 src/main/java/com/ruoyi/project/system/domain/SysUserDept.java | 34 +++++ src/main/java/com/ruoyi/project/system/controller/SysUserController.java | 22 +- src/main/java/com/ruoyi/project/system/domain/vo/SysUserDeptVo.java | 15 ++ src/main/resources/mapper/system/SysUserMapper.xml | 24 ++- src/main/java/com/ruoyi/project/system/service/ISysUserDeptService.java | 10 + 18 files changed, 248 insertions(+), 69 deletions(-) diff --git a/src/main/java/com/ruoyi/common/config/IgnoreTableConfig.java b/src/main/java/com/ruoyi/common/config/IgnoreTableConfig.java index b1f9874..597a0af 100644 --- a/src/main/java/com/ruoyi/common/config/IgnoreTableConfig.java +++ b/src/main/java/com/ruoyi/common/config/IgnoreTableConfig.java @@ -31,5 +31,6 @@ IGNORE_TABLES.add("common_file"); IGNORE_TABLES.add("DepartmentHierarchy"); IGNORE_TABLES.add("sys_oper_log"); + IGNORE_TABLES.add("sys_user_dept"); } } diff --git a/src/main/java/com/ruoyi/common/utils/SecurityUtils.java b/src/main/java/com/ruoyi/common/utils/SecurityUtils.java index 009384f..dc46ef1 100644 --- a/src/main/java/com/ruoyi/common/utils/SecurityUtils.java +++ b/src/main/java/com/ruoyi/common/utils/SecurityUtils.java @@ -38,11 +38,11 @@ /** * 鑾峰彇閮ㄩ棬ID **/ - public static Long getDeptId() + public static Long [] getDeptId() { try { - return getLoginUser().getDeptId(); + return getLoginUser().getDeptIds(); } catch (Exception e) { diff --git a/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java b/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java index 9e82409..a15b110 100644 --- a/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java +++ b/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java @@ -129,14 +129,10 @@ sqlString.append(StringUtils.format(" OR {}.dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = {} ) ", deptAlias, role.getRoleId())); } } - else if (DATA_SCOPE_DEPT.equals(dataScope)) - { - sqlString.append(StringUtils.format(" OR {}.dept_id = {} ", deptAlias, user.getDeptId())); - } - else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)) - { - sqlString.append(StringUtils.format(" OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )", deptAlias, user.getDeptId(), user.getDeptId())); - } +// else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)) +// { +// sqlString.append(StringUtils.format(" OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )", deptAlias, user.getDeptId(), user.getDeptId())); +// } else if (DATA_SCOPE_SELF.equals(dataScope)) { if (StringUtils.isNotBlank(userAlias)) diff --git a/src/main/java/com/ruoyi/framework/security/LoginUser.java b/src/main/java/com/ruoyi/framework/security/LoginUser.java index 53459bc..c1ce6ab 100644 --- a/src/main/java/com/ruoyi/framework/security/LoginUser.java +++ b/src/main/java/com/ruoyi/framework/security/LoginUser.java @@ -24,7 +24,7 @@ /** * 閮ㄩ棬ID */ - private Long deptId; + private Long [] deptIds; /** * 鐢ㄦ埛鍞竴鏍囪瘑 @@ -86,18 +86,18 @@ this.permissions = permissions; } - public LoginUser(Long userId, Long deptId, SysUser user, Set<String> permissions) + public LoginUser(Long userId, Long [] deptId, SysUser user, Set<String> permissions) { this.userId = userId; - this.deptId = deptId; + this.deptIds = deptId; this.user = user; this.permissions = permissions; } - public LoginUser(Long userId, Long deptId, SysUser user,Integer tenantId, Set<String> permissions) + public LoginUser(Long userId, Long [] deptIds, SysUser user,Integer tenantId, Set<String> permissions) { this.userId = userId; - this.deptId = deptId; + this.deptIds = deptIds; this.user = user; this.permissions = permissions; this.tenantId = tenantId; @@ -113,14 +113,14 @@ this.userId = userId; } - public Long getDeptId() + public Long [] getDeptIds() { - return deptId; + return deptIds; } - public void setDeptId(Long deptId) + public void setDeptId(Long [] deptIds) { - this.deptId = deptId; + this.deptIds = deptIds; } public String getToken() diff --git a/src/main/java/com/ruoyi/framework/security/service/UserDetailsServiceImpl.java b/src/main/java/com/ruoyi/framework/security/service/UserDetailsServiceImpl.java index e4c55ce..a5552b4 100644 --- a/src/main/java/com/ruoyi/framework/security/service/UserDetailsServiceImpl.java +++ b/src/main/java/com/ruoyi/framework/security/service/UserDetailsServiceImpl.java @@ -60,6 +60,6 @@ public UserDetails createLoginUser(SysUser user) { - return new LoginUser(user.getUserId(), user.getDeptId(), user, user.getTenantId(), permissionService.getMenuPermission(user)); + return new LoginUser(user.getUserId(), user.getDeptIds(), user, user.getTenantId(), permissionService.getMenuPermission(user)); } } diff --git a/src/main/java/com/ruoyi/framework/web/controller/BaseController.java b/src/main/java/com/ruoyi/framework/web/controller/BaseController.java index 4189533..5c6fe3e 100644 --- a/src/main/java/com/ruoyi/framework/web/controller/BaseController.java +++ b/src/main/java/com/ruoyi/framework/web/controller/BaseController.java @@ -179,9 +179,9 @@ /** * 鑾峰彇鐧诲綍閮ㄩ棬id */ - public Long getDeptId() + public Long [] getDeptId() { - return getLoginUser().getDeptId(); + return getLoginUser().getDeptIds(); } /** diff --git a/src/main/java/com/ruoyi/framework/web/domain/TreeSelect.java b/src/main/java/com/ruoyi/framework/web/domain/TreeSelect.java index cf4e43c..af11ba2 100644 --- a/src/main/java/com/ruoyi/framework/web/domain/TreeSelect.java +++ b/src/main/java/com/ruoyi/framework/web/domain/TreeSelect.java @@ -24,6 +24,9 @@ /** 鑺傜偣鍚嶇О */ private String label; + /** 鑺傜偣ID */ + private Long value; + /** 鑺傜偣绂佺敤 */ private boolean disabled = false; @@ -39,6 +42,7 @@ public TreeSelect(SysDept dept) { this.id = dept.getDeptId(); + this.value = dept.getDeptId(); this.label = dept.getDeptName(); this.disabled = StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()); this.children = dept.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); @@ -90,4 +94,12 @@ { this.children = children; } + + public Long getValue() { + return value; + } + + public void setValue(Long value) { + this.value = value; + } } diff --git a/src/main/java/com/ruoyi/project/system/controller/SysUserController.java b/src/main/java/com/ruoyi/project/system/controller/SysUserController.java index 79b0c99..d66dc5e 100644 --- a/src/main/java/com/ruoyi/project/system/controller/SysUserController.java +++ b/src/main/java/com/ruoyi/project/system/controller/SysUserController.java @@ -3,6 +3,9 @@ import java.util.List; import java.util.stream.Collectors; import javax.servlet.http.HttpServletResponse; + +import com.ruoyi.project.system.domain.vo.SysUserDeptVo; +import com.ruoyi.project.system.service.*; import org.apache.commons.lang3.ArrayUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; @@ -27,10 +30,6 @@ import com.ruoyi.project.system.domain.SysDept; import com.ruoyi.project.system.domain.SysRole; import com.ruoyi.project.system.domain.SysUser; -import com.ruoyi.project.system.service.ISysDeptService; -import com.ruoyi.project.system.service.ISysPostService; -import com.ruoyi.project.system.service.ISysRoleService; -import com.ruoyi.project.system.service.ISysUserService; /** * 鐢ㄦ埛淇℃伅 @@ -52,6 +51,9 @@ @Autowired private ISysPostService postService; + + @Autowired + private ISysUserDeptService userDeptService; /** * 鑾峰彇鐢ㄦ埛鍒楄〃 @@ -113,6 +115,10 @@ List<SysRole> roles = roleService.selectRoleAll(); ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); ajax.put("posts", postService.selectPostAll()); + SysUserDeptVo sysUserDeptVo = new SysUserDeptVo(); + sysUserDeptVo.setUserId(userId); + List<SysUserDeptVo> sysUserDeptVos = userDeptService.selectUserDeptList(sysUserDeptVo); + ajax.put("deptIds",sysUserDeptVos.stream().map(SysUserDeptVo::getDeptId).collect(Collectors.toList())); return ajax; } @@ -124,7 +130,6 @@ @PostMapping public AjaxResult add(@Validated @RequestBody SysUser user) { - deptService.checkDeptDataScope(user.getDeptId()); roleService.checkRoleDataScope(user.getRoleIds()); if (!userService.checkUserNameUnique(user)) { @@ -140,11 +145,6 @@ } user.setCreateBy(getUsername()); user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); - // 鏌ヨ椤跺眰閮ㄩ棬鐖秈d鍋氫负绉熸埛tenant_id - Long tenantId = deptService.maxLevelDeptId(user.getDeptId()); - if(tenantId != null){ - user.setTenantId(tenantId.intValue()); - } return toAjax(userService.insertUser(user)); } @@ -158,7 +158,6 @@ { userService.checkUserAllowed(user); userService.checkUserDataScope(user.getUserId()); - deptService.checkDeptDataScope(user.getDeptId()); roleService.checkRoleDataScope(user.getRoleIds()); if (!userService.checkUserNameUnique(user)) { @@ -173,6 +172,7 @@ return error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪"); } user.setUpdateBy(getUsername()); + userService.bindUserDept(user); return toAjax(userService.updateUser(user)); } diff --git a/src/main/java/com/ruoyi/project/system/domain/SysUser.java b/src/main/java/com/ruoyi/project/system/domain/SysUser.java index 64938d0..3f7e227 100644 --- a/src/main/java/com/ruoyi/project/system/domain/SysUser.java +++ b/src/main/java/com/ruoyi/project/system/domain/SysUser.java @@ -3,6 +3,8 @@ import java.util.Date; import java.util.List; import javax.validation.constraints.*; + +import com.baomidou.mybatisplus.annotation.TableField; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.common.xss.Xss; @@ -24,10 +26,6 @@ /** 鐢ㄦ埛ID */ @Excel(name = "鐢ㄦ埛搴忓彿", type = Type.EXPORT, cellType = ColumnType.NUMERIC, prompt = "鐢ㄦ埛缂栧彿") private Long userId; - - /** 閮ㄩ棬ID */ - @Excel(name = "閮ㄩ棬缂栧彿", type = Type.IMPORT) - private Long deptId; /** 鐢ㄦ埛璐﹀彿 */ @Excel(name = "鐧诲綍鍚嶇О") @@ -92,6 +90,16 @@ /** 绉熸埛ID */ private Integer tenantId; + private Long[] deptIds; + + @TableField(exist = false) + private Long deptId; + + /** + * 閮ㄩ棬鍚嶇О + */ + private String deptNames; + public SysUser() { @@ -120,16 +128,6 @@ public static boolean isAdmin(Long userId) { return userId != null && 1L == userId; - } - - public Long getDeptId() - { - return deptId; - } - - public void setDeptId(Long deptId) - { - this.deptId = deptId; } @Xss(message = "鐢ㄦ埛鏄电О涓嶈兘鍖呭惈鑴氭湰瀛楃") @@ -308,11 +306,34 @@ this.tenantId = tenantId; } + public Long[] getDeptIds() { + return deptIds; + } + + public void setDeptIds(Long[] deptIds) { + this.deptIds = deptIds; + } + + public String getDeptNames() { + return deptNames; + } + + public void setDeptNames(String deptNames) { + this.deptNames = deptNames; + } + + public Long getDeptId() { + return deptId; + } + + public void setDeptId(Long deptId) { + this.deptId = deptId; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("userId", getUserId()) - .append("deptId", getDeptId()) .append("userName", getUserName()) .append("nickName", getNickName()) .append("email", getEmail()) diff --git a/src/main/java/com/ruoyi/project/system/domain/SysUserDept.java b/src/main/java/com/ruoyi/project/system/domain/SysUserDept.java new file mode 100644 index 0000000..8ca1d40 --- /dev/null +++ b/src/main/java/com/ruoyi/project/system/domain/SysUserDept.java @@ -0,0 +1,34 @@ +package com.ruoyi.project.system.domain; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class SysUserDept { + + private Long id; + + private Long userId; + + private Long deptId; + + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛") + @TableField(fill = FieldFill.INSERT) + private Integer createUser; + + @ApiModelProperty(value = "淇敼鏃堕棿") + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + @ApiModelProperty(value = "淇敼鐢ㄦ埛") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Integer updateUser; +} diff --git a/src/main/java/com/ruoyi/project/system/domain/vo/SysUserDeptVo.java b/src/main/java/com/ruoyi/project/system/domain/vo/SysUserDeptVo.java new file mode 100644 index 0000000..8135c26 --- /dev/null +++ b/src/main/java/com/ruoyi/project/system/domain/vo/SysUserDeptVo.java @@ -0,0 +1,15 @@ +package com.ruoyi.project.system.domain.vo; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.ruoyi.project.system.domain.SysUserDept; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class SysUserDeptVo extends SysUserDept { + + private String deptName; +} diff --git a/src/main/java/com/ruoyi/project/system/mapper/SysUserDeptMapper.java b/src/main/java/com/ruoyi/project/system/mapper/SysUserDeptMapper.java new file mode 100644 index 0000000..fbcab9a --- /dev/null +++ b/src/main/java/com/ruoyi/project/system/mapper/SysUserDeptMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.project.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.project.system.domain.SysUserDept; +import com.ruoyi.project.system.domain.vo.SysUserDeptVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface SysUserDeptMapper extends BaseMapper<SysUserDept> { + + List<SysUserDeptVo> selectUserDeptList(@Param("userDeptVo") SysUserDeptVo userDeptVo); +} diff --git a/src/main/java/com/ruoyi/project/system/service/ISysUserDeptService.java b/src/main/java/com/ruoyi/project/system/service/ISysUserDeptService.java new file mode 100644 index 0000000..c21dbeb --- /dev/null +++ b/src/main/java/com/ruoyi/project/system/service/ISysUserDeptService.java @@ -0,0 +1,10 @@ +package com.ruoyi.project.system.service; + +import com.ruoyi.project.system.domain.vo.SysUserDeptVo; + +import java.util.List; + +public interface ISysUserDeptService { + + List<SysUserDeptVo> selectUserDeptList(SysUserDeptVo userDeptVo); +} diff --git a/src/main/java/com/ruoyi/project/system/service/ISysUserService.java b/src/main/java/com/ruoyi/project/system/service/ISysUserService.java index 300fe2d..7d5ba4a 100644 --- a/src/main/java/com/ruoyi/project/system/service/ISysUserService.java +++ b/src/main/java/com/ruoyi/project/system/service/ISysUserService.java @@ -210,4 +210,11 @@ * @return */ List<SysUser> userListNoPage(SysUser user); + + /** + * 缁戝畾鐢ㄦ埛閮ㄩ棬 + * @param user + * @return + */ + int bindUserDept(SysUser user); } diff --git a/src/main/java/com/ruoyi/project/system/service/impl/SysUserDeptServiceImpl.java b/src/main/java/com/ruoyi/project/system/service/impl/SysUserDeptServiceImpl.java new file mode 100644 index 0000000..5e5eed0 --- /dev/null +++ b/src/main/java/com/ruoyi/project/system/service/impl/SysUserDeptServiceImpl.java @@ -0,0 +1,22 @@ +package com.ruoyi.project.system.service.impl; + +import com.ruoyi.project.system.domain.vo.SysUserDeptVo; +import com.ruoyi.project.system.mapper.SysUserDeptMapper; +import com.ruoyi.project.system.service.ISysUserDeptService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; + +@Service +public class SysUserDeptServiceImpl implements ISysUserDeptService { + + @Autowired + private SysUserDeptMapper sysUserDeptMapper; + + @Override + public List<SysUserDeptVo> selectUserDeptList(SysUserDeptVo userDeptVo) { + return sysUserDeptMapper.selectUserDeptList(userDeptVo); + } +} diff --git a/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java b/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java index fd9df5a..903f7ae 100644 --- a/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java +++ b/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java @@ -5,6 +5,11 @@ import java.util.List; import java.util.stream.Collectors; import javax.validation.Validator; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.project.system.domain.*; +import com.ruoyi.project.system.mapper.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -18,16 +23,6 @@ import com.ruoyi.common.utils.bean.BeanValidators; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.framework.aspectj.lang.annotation.DataScope; -import com.ruoyi.project.system.domain.SysPost; -import com.ruoyi.project.system.domain.SysRole; -import com.ruoyi.project.system.domain.SysUser; -import com.ruoyi.project.system.domain.SysUserPost; -import com.ruoyi.project.system.domain.SysUserRole; -import com.ruoyi.project.system.mapper.SysPostMapper; -import com.ruoyi.project.system.mapper.SysRoleMapper; -import com.ruoyi.project.system.mapper.SysUserMapper; -import com.ruoyi.project.system.mapper.SysUserPostMapper; -import com.ruoyi.project.system.mapper.SysUserRoleMapper; import com.ruoyi.project.system.service.ISysConfigService; import com.ruoyi.project.system.service.ISysDeptService; import com.ruoyi.project.system.service.ISysUserService; @@ -40,6 +35,9 @@ @Service public class SysUserServiceImpl implements ISysUserService { + @Autowired + private SysUserDeptMapper sysUserDeptMapper; + private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class); @Autowired @@ -267,6 +265,8 @@ insertUserPost(user); // 鏂板鐢ㄦ埛涓庤鑹茬鐞� insertUserRole(user); + // 鏂板閮ㄩ棬鍏宠仈 + bindUserDept(user); return rows; } @@ -503,7 +503,6 @@ if (StringUtils.isNull(u)) { BeanValidators.validateWithException(validator, user); - deptService.checkDeptDataScope(user.getDeptId()); String password = configService.selectConfigByKey("sys.user.initPassword"); user.setPassword(SecurityUtils.encryptPassword(password)); user.setCreateBy(operName); @@ -516,7 +515,6 @@ BeanValidators.validateWithException(validator, user); checkUserAllowed(u); checkUserDataScope(u.getUserId()); - deptService.checkDeptDataScope(user.getDeptId()); user.setUserId(u.getUserId()); user.setUpdateBy(operName); userMapper.updateUser(user); @@ -558,4 +556,25 @@ public List<SysUser> userListNoPage(SysUser user) { return userMapper.selectUserList(user); } + + /** + * 缁戝畾鐢ㄦ埛閮ㄩ棬 + * @param user + * @return + */ + @Override + public int bindUserDept(SysUser user) { + // 鍒犻櫎鎵�鏈夊叧鑱旂粦瀹� + LambdaQueryWrapper<SysUserDept> delWrapper = new LambdaQueryWrapper<>(); + delWrapper.eq(SysUserDept::getUserId, user.getUserId()); + sysUserDeptMapper.delete(delWrapper); + // 閲嶆柊缁戝畾 + for (int i = 0; i < user.getDeptIds().length; i++) { + SysUserDept sysUserDept = new SysUserDept(); + sysUserDept.setDeptId(user.getDeptIds()[i]); + sysUserDept.setUserId(user.getUserId()); + sysUserDeptMapper.insert(sysUserDept); + } + return user.getDeptIds().length; + } } diff --git a/src/main/resources/mapper/system/SysUserDeptMapper.xml b/src/main/resources/mapper/system/SysUserDeptMapper.xml new file mode 100644 index 0000000..0a62acb --- /dev/null +++ b/src/main/resources/mapper/system/SysUserDeptMapper.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper +PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.project.system.mapper.SysUserDeptMapper"> + + <select id="selectUserDeptList" resultType="com.ruoyi.project.system.domain.vo.SysUserDeptVo"> + SELECT + T1.user_id, + T1.dept_id, + T2.dept_name + FROM + sys_user_dept T1 + LEFT JOIN sys_dept T2 ON T1.dept_id = T2.dept_id + <where> + <if test="userDeptVo.userId != null"> + T1.user_id = #{userDeptVo.userId} + </if> + </where> + </select> +</mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/system/SysUserMapper.xml b/src/main/resources/mapper/system/SysUserMapper.xml index fcd4016..b62aefc 100644 --- a/src/main/resources/mapper/system/SysUserMapper.xml +++ b/src/main/resources/mapper/system/SysUserMapper.xml @@ -6,7 +6,6 @@ <resultMap type="com.ruoyi.project.system.domain.SysUser" id="SysUserResult"> <id property="userId" column="user_id" /> - <result property="deptId" column="dept_id" /> <result property="userName" column="user_name" /> <result property="nickName" column="nick_name" /> <result property="email" column="email" /> @@ -23,6 +22,7 @@ <result property="updateBy" column="update_by" /> <result property="updateTime" column="update_time" /> <result property="remark" column="remark" /> + <result property="deptNames" column="dept_names" /> <result property="tenantId" column="tenant_id" /> <association property="dept" javaType="com.ruoyi.project.system.domain.SysDept" resultMap="deptResult" /> <collection property="roles" javaType="java.util.List" resultMap="RoleResult" /> @@ -48,18 +48,22 @@ </resultMap> <sql id="selectUserVo"> - select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, - d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status, + select u.user_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status,u.tenant_id from sys_user u - left join sys_dept d on u.dept_id = d.dept_id left join sys_user_role ur on u.user_id = ur.user_id left join sys_role r on r.role_id = ur.role_id </sql> <select id="selectUserList" parameterType="com.ruoyi.project.system.domain.SysUser" resultMap="SysUserResult"> - select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u - left join sys_dept d on u.dept_id = d.dept_id + select u.user_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,T2.dept_names from sys_user u + left join + ( SELECT T1.user_id,GROUP_CONCAT(T2.dept_name SEPARATOR ', ') AS dept_names + FROM + sys_user_dept T1 + LEFT JOIN sys_dept T2 ON T1.dept_id = T2.dept_id + GROUP BY T1.user_id + ) T2 on T2.user_id = u.user_id where u.del_flag = '0' <if test="userId != null and userId != 0"> AND u.user_id = #{userId} @@ -79,8 +83,11 @@ <if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� --> AND date_format(u.create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d') </if> - <if test="deptId != null and deptId != 0"> - AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) )) + <if test="deptId != null"> + AND u.user_id IN + ( + SELECT user_id FROM sys_user_dept WHERE dept_id = #{deptId} + ) </if> <!-- 鏁版嵁鑼冨洿杩囨护 --> ${params.dataScope} @@ -180,7 +187,6 @@ <update id="updateUser" parameterType="com.ruoyi.project.system.domain.SysUser"> update sys_user <set> - <if test="deptId != null and deptId != 0">dept_id = #{deptId},</if> <if test="nickName != null and nickName != ''">nick_name = #{nickName},</if> <if test="email != null ">email = #{email},</if> <if test="phonenumber != null ">phonenumber = #{phonenumber},</if> -- Gitblit v1.9.3