人事管理修改厂区权限

master
sunjianxi 2 years ago
parent e77ca79c52
commit 022859d4b7
  1. 16
      lab-service/lab-system/src/main/java/org/springblade/system/controller/DeptController.java
  2. 24
      lab-service/lab-system/src/main/java/org/springblade/system/controller/RoleController.java
  3. 16
      lab-service/lab-system/src/main/java/org/springblade/system/mapper/DeptMapper.java
  4. 39
      lab-service/lab-system/src/main/java/org/springblade/system/mapper/DeptMapper.xml
  5. 9
      lab-service/lab-system/src/main/java/org/springblade/system/mapper/RoleMapper.java
  6. 13
      lab-service/lab-system/src/main/java/org/springblade/system/mapper/RoleMapper.xml
  7. 16
      lab-service/lab-system/src/main/java/org/springblade/system/service/IDeptService.java
  8. 9
      lab-service/lab-system/src/main/java/org/springblade/system/service/IRoleService.java
  9. 16
      lab-service/lab-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java
  10. 9
      lab-service/lab-system/src/main/java/org/springblade/system/service/impl/RoleServiceImpl.java
  11. 7
      lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@ -112,7 +112,13 @@ public class DeptController extends BladeController {
@ApiOperationSupport(order = 4) @ApiOperationSupport(order = 4)
@ApiOperation(value = "树形结构", notes = "树形结构") @ApiOperation(value = "树形结构", notes = "树形结构")
public R<List<DeptVO>> tree(String tenantId, BladeUser bladeUser) { public R<List<DeptVO>> tree(String tenantId, BladeUser bladeUser) {
List<DeptVO> tree = deptService.tree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId())); List<DeptVO> tree = new ArrayList<>();
if(bladeUser.getRoleName().equals("厂区")){
Long deptId = Long.parseLong(bladeUser.getDeptId());
tree = deptService.companyTree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()), deptId);
}else{
tree = deptService.tree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()));
}
return R.data(tree); return R.data(tree);
} }
@ -123,7 +129,13 @@ public class DeptController extends BladeController {
@ApiOperationSupport(order = 5) @ApiOperationSupport(order = 5)
@ApiOperation(value = "懒加载树形结构", notes = "树形结构") @ApiOperation(value = "懒加载树形结构", notes = "树形结构")
public R<List<DeptVO>> lazyTree(String tenantId, Long parentId, BladeUser bladeUser) { public R<List<DeptVO>> lazyTree(String tenantId, Long parentId, BladeUser bladeUser) {
List<DeptVO> tree = deptService.lazyTree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()), parentId); List<DeptVO> tree = new ArrayList<>();
if(bladeUser.getRoleName().equals("厂区")&&parentId==0){
Long deptId = Long.parseLong(bladeUser.getDeptId());
tree = deptService.lazyCompanyTree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()), deptId);
}else{
tree = deptService.lazyTree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()), parentId);
}
return R.data(tree); return R.data(tree);
} }

@ -9,11 +9,9 @@ import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.cache.utils.CacheUtil; import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.PreAuth;
import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant; import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.constant.RoleConstant;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springblade.system.cache.SysCache; import org.springblade.system.cache.SysCache;
import org.springblade.system.entity.Role; import org.springblade.system.entity.Role;
@ -25,6 +23,7 @@ import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore; import springfox.documentation.annotations.ApiIgnore;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -69,6 +68,13 @@ public class RoleController extends BladeController {
public R<List<RoleVO>> list(@ApiIgnore @RequestParam Map<String, Object> role, BladeUser bladeUser) { public R<List<RoleVO>> list(@ApiIgnore @RequestParam Map<String, Object> role, BladeUser bladeUser) {
QueryWrapper<Role> queryWrapper = Condition.getQueryWrapper(role, Role.class); QueryWrapper<Role> queryWrapper = Condition.getQueryWrapper(role, Role.class);
List<Role> list = roleService.list((!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(Role::getTenantId, bladeUser.getTenantId()) : queryWrapper); List<Role> list = roleService.list((!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(Role::getTenantId, bladeUser.getTenantId()) : queryWrapper);
if(bladeUser.getRoleName().equals("厂区")){
List<String> excludes = new ArrayList<>();
excludes.add("admin");
excludes.add("政府");
excludes.add("政府大屏");
list.removeIf(role1 -> excludes.contains(role1.getRoleAlias()));
}
return R.data(RoleWrapper.build().listNodeVO(list)); return R.data(RoleWrapper.build().listNodeVO(list));
} }
@ -79,7 +85,12 @@ public class RoleController extends BladeController {
@ApiOperationSupport(order = 3) @ApiOperationSupport(order = 3)
@ApiOperation(value = "树形结构", notes = "树形结构") @ApiOperation(value = "树形结构", notes = "树形结构")
public R<List<RoleVO>> tree(String tenantId, BladeUser bladeUser) { public R<List<RoleVO>> tree(String tenantId, BladeUser bladeUser) {
List<RoleVO> tree = roleService.tree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId())); List<RoleVO> tree = new ArrayList<>();
if(bladeUser.getRoleName().equals("厂区")){
tree = roleService.companyTree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()));
}else{
tree = roleService.tree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()));
}
return R.data(tree); return R.data(tree);
} }
@ -91,7 +102,12 @@ public class RoleController extends BladeController {
@ApiOperation(value = "树形结构", notes = "树形结构") @ApiOperation(value = "树形结构", notes = "树形结构")
public R<List<RoleVO>> treeById(Long roleId, BladeUser bladeUser) { public R<List<RoleVO>> treeById(Long roleId, BladeUser bladeUser) {
Role role = SysCache.getRole(roleId); Role role = SysCache.getRole(roleId);
List<RoleVO> tree = roleService.tree(Func.notNull(role) ? role.getTenantId() : bladeUser.getTenantId()); List<RoleVO> tree = new ArrayList<>();
if(bladeUser.getRoleName().equals("厂区")){
tree = roleService.companyTree(Func.notNull(role) ? role.getTenantId() : bladeUser.getTenantId());
}else{
tree = roleService.tree(Func.notNull(role) ? role.getTenantId() : bladeUser.getTenantId());
}
return R.data(tree); return R.data(tree);
} }

@ -33,6 +33,14 @@ public interface DeptMapper extends BaseMapper<Dept> {
*/ */
List<DeptVO> tree(String tenantId); List<DeptVO> tree(String tenantId);
/**
* 获取厂区树形节点
*
* @param tenantId
* @return
*/
List<DeptVO> companyTree(String tenantId,Long deptId);
/** /**
* 懒加载获取树形节点 * 懒加载获取树形节点
* *
@ -42,6 +50,14 @@ public interface DeptMapper extends BaseMapper<Dept> {
*/ */
List<DeptVO> lazyTree(String tenantId, Long parentId); List<DeptVO> lazyTree(String tenantId, Long parentId);
/**
* 懒加载获取树形节点
*
* @param tenantId
* @return
*/
List<DeptVO> lazyCompanyTree(String tenantId, Long deptId);
/** /**
* 获取部门名 * 获取部门名
* *

@ -74,6 +74,17 @@
ORDER BY sort ORDER BY sort
</select> </select>
<select id="companyTree" resultMap="treeNodeResultMap">
select id, parent_id, dept_name as title, id as "value", id as "key" from blade_dept where is_deleted = 0
<if test="tenantId!=null and tenantId!=''">
and tenant_id = #{tenantId}
</if>
<if test="deptId!=null">
and (id = #{deptId} or (parent_id = #{deptId}))
</if>
ORDER BY sort
</select>
<select id="lazyTree" resultMap="treeNodeResultMap" > <select id="lazyTree" resultMap="treeNodeResultMap" >
SELECT SELECT
dept.id, dept.id,
@ -99,6 +110,34 @@
ORDER BY dept.sort ORDER BY dept.sort
</select> </select>
<select id="lazyCompanyTree" resultMap="treeNodeResultMap" >
SELECT
dept.id,
dept.parent_id,
dept.dept_name AS title,
dept.id AS "value",
dept.id AS "key",
(
SELECT
CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
FROM
blade_dept
WHERE
parent_id = dept.id and is_deleted = 0
) AS "has_children"
FROM
blade_dept dept
WHERE
dept.is_deleted = 0
<if test="param1!=null and param1!=''">
and dept.tenant_id = #{param1}
</if>
<if test="param2!=null">
and dept.id = #{param2}
</if>
ORDER BY dept.sort
</select>
<select id="getDeptNames" resultType="java.lang.String"> <select id="getDeptNames" resultType="java.lang.String">
SELECT SELECT
dept_name dept_name

@ -33,6 +33,15 @@ public interface RoleMapper extends BaseMapper<Role> {
*/ */
List<RoleVO> tree(String tenantId, String excludeRole); List<RoleVO> tree(String tenantId, String excludeRole);
/**
* 获取厂区树形节点
*
* @param tenantId
* @param roleList
* @return
*/
List<RoleVO> companyTree(String tenantId, List<String> roleList);
/** /**
* 获取角色名 * 获取角色名
* *

@ -34,6 +34,19 @@
</if> </if>
</select> </select>
<select id="companyTree" resultMap="treeNodeResultMap">
select id, parent_id, role_name as title, id as "value", id as "key" from blade_role where is_deleted = 0
<if test="tenantId!=null">
and tenant_id = #{param1}
</if>
<if test="roleList!=null">
and role_alias not in
<foreach collection="roleList" item="roleAlias" index="index" open="(" close=")" separator=",">
#{roleAlias}
</foreach>
</if>
</select>
<select id="getRoleNames" resultType="java.lang.String"> <select id="getRoleNames" resultType="java.lang.String">
SELECT SELECT
role_name role_name

@ -33,6 +33,14 @@ public interface IDeptService extends IService<Dept> {
*/ */
List<DeptVO> tree(String tenantId); List<DeptVO> tree(String tenantId);
/**
* 厂区树形结构
*
* @param tenantId
* @return
*/
List<DeptVO> companyTree(String tenantId,Long deptId);
/** /**
* 懒加载树形结构 * 懒加载树形结构
* *
@ -42,6 +50,14 @@ public interface IDeptService extends IService<Dept> {
*/ */
List<DeptVO> lazyTree(String tenantId, Long parentId); List<DeptVO> lazyTree(String tenantId, Long parentId);
/**
* 懒加载树形结构
*
* @param tenantId
* @return
*/
List<DeptVO> lazyCompanyTree(String tenantId, Long deptId);
/** /**
* 获取部门ID * 获取部门ID
* *

@ -3,7 +3,6 @@ package org.springblade.system.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.core.tool.api.R;
import org.springblade.system.entity.Role; import org.springblade.system.entity.Role;
import org.springblade.system.vo.RoleVO; import org.springblade.system.vo.RoleVO;
@ -34,6 +33,14 @@ public interface IRoleService extends IService<Role> {
*/ */
List<RoleVO> tree(String tenantId); List<RoleVO> tree(String tenantId);
/**
* 树形结构
*
* @param tenantId
* @return
*/
List<RoleVO> companyTree(String tenantId);
/** /**
* 权限配置 * 权限配置
* *

@ -54,6 +54,9 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements ID
if (dept.getParentId() != 0) { if (dept.getParentId() != 0) {
parentId = dept.getParentId(); parentId = dept.getParentId();
} }
if(AuthUtil.getUser().getRoleName().equals("厂区")){
parentId = dept.getId();
}
} }
// 判断点击搜索带有查询条件的情况 // 判断点击搜索带有查询条件的情况
if (Func.isEmpty(param.get(PARENT_ID)) && param.size() > 1 && Func.toLong(parentId) == 0L) { if (Func.isEmpty(param.get(PARENT_ID)) && param.size() > 1 && Func.toLong(parentId) == 0L) {
@ -69,6 +72,11 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements ID
return ForestNodeMerger.merge(baseMapper.tree(tenantId)); return ForestNodeMerger.merge(baseMapper.tree(tenantId));
} }
@Override
public List<DeptVO> companyTree(String tenantId,Long deptId) {
return ForestNodeMerger.merge(baseMapper.companyTree(tenantId,deptId));
}
@Override @Override
public List<DeptVO> lazyTree(String tenantId, Long parentId) { public List<DeptVO> lazyTree(String tenantId, Long parentId) {
if (AuthUtil.isAdministrator()) { if (AuthUtil.isAdministrator()) {
@ -77,6 +85,14 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements ID
return ForestNodeMerger.merge(baseMapper.lazyTree(tenantId, parentId)); return ForestNodeMerger.merge(baseMapper.lazyTree(tenantId, parentId));
} }
@Override
public List<DeptVO> lazyCompanyTree(String tenantId, Long deptId) {
if (AuthUtil.isAdministrator()) {
tenantId = StringPool.EMPTY;
}
return ForestNodeMerger.merge(baseMapper.lazyCompanyTree(tenantId, deptId));
}
@Override @Override
public String getDeptIds(String tenantId, String deptNames) { public String getDeptIds(String tenantId, String deptNames) {
List<Dept> deptList = baseMapper.selectList(Wrappers.<Dept>query().lambda().eq(Dept::getTenantId, tenantId).in(Dept::getDeptName, Func.toStrList(deptNames))); List<Dept> deptList = baseMapper.selectList(Wrappers.<Dept>query().lambda().eq(Dept::getTenantId, tenantId).in(Dept::getDeptName, Func.toStrList(deptNames)));

@ -63,6 +63,15 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
return ForestNodeMerger.merge(baseMapper.tree(tenantId, excludeRole)); return ForestNodeMerger.merge(baseMapper.tree(tenantId, excludeRole));
} }
@Override
public List<RoleVO> companyTree(String tenantId) {
List<String> roleList = new ArrayList<>();
roleList.add("admin");
roleList.add("政府");
roleList.add("政府大屏");
return ForestNodeMerger.merge(baseMapper.companyTree(tenantId,roleList));
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean grant(@NotEmpty List<Long> roleIds, List<Long> menuIds, List<Long> dataScopeIds, List<Long> apiScopeIds) { public boolean grant(@NotEmpty List<Long> roleIds, List<Long> menuIds, List<Long> dataScopeIds, List<Long> apiScopeIds) {

@ -25,7 +25,6 @@ import org.springblade.system.cache.DictCache;
import org.springblade.system.cache.ParamCache; import org.springblade.system.cache.ParamCache;
import org.springblade.system.cache.SysCache; import org.springblade.system.cache.SysCache;
import org.springblade.system.entity.Dept; import org.springblade.system.entity.Dept;
import org.springblade.system.entity.Role;
import org.springblade.system.entity.Tenant; import org.springblade.system.entity.Tenant;
import org.springblade.system.enums.DictEnum; import org.springblade.system.enums.DictEnum;
import org.springblade.system.feign.ISysClient; import org.springblade.system.feign.ISysClient;
@ -41,7 +40,6 @@ import org.springblade.system.user.vo.UserVO;
import org.springblade.system.user.wrapper.UserWrapper; import org.springblade.system.user.wrapper.UserWrapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Base64Utils;
import java.io.*; import java.io.*;
import java.util.*; import java.util.*;
@ -199,6 +197,10 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
public IPage<User> selectUserPage(IPage<User> page, User user, Long deptId, String tenantId) { public IPage<User> selectUserPage(IPage<User> page, User user, Long deptId, String tenantId) {
String roleIdsTemp = AuthUtil.getUser().getRoleId(); String roleIdsTemp = AuthUtil.getUser().getRoleId();
String[] roleIds = roleIdsTemp.split(","); String[] roleIds = roleIdsTemp.split(",");
List<String> roles = Arrays.asList(AuthUtil.getUserRole().split(","));
if(!roles.contains("admin") && !roles.contains("政府")&&deptId==null){
deptId = Long.parseLong(AuthUtil.getDeptId());
}
List<Long> deptIdList = SysCache.getDeptChildIds(deptId); List<Long> deptIdList = SysCache.getDeptChildIds(deptId);
List<Long> userIds = new ArrayList<>(); List<Long> userIds = new ArrayList<>();
for (String myRoleId : roleIds) { for (String myRoleId : roleIds) {
@ -213,6 +215,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
userIds.addAll(collect); userIds.addAll(collect);
} }
} }
return page.setRecords(baseMapper.selectUserPage(page, user, deptIdList, tenantId, userIds)); return page.setRecords(baseMapper.selectUserPage(page, user, deptIdList, tenantId, userIds));
} }

Loading…
Cancel
Save