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