Browse Source

角色管理时,限制机构网格长数量

feature/dangjian
yujintao 6 years ago
parent
commit
25822181eb
  1. 20
      esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/constant/TypeKeyConstant.java
  2. 2
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java
  3. 18
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysRoleDao.java
  4. 4
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java
  5. 8
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java
  6. 44
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleServiceImpl.java
  7. 15
      esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysRoleDao.xml

20
esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/constant/TypeKeyConstant.java

@ -0,0 +1,20 @@
package com.elink.esua.epdc.constant;
/**
* TypeKey 常量
*
* @author work@yujt.net.cn
* @date 2019/12/18 10:10
*/
public interface TypeKeyConstant {
/**
* 机构基础网格
*/
String DEPT_GRID_PARTY = "grid_party";
/**
* 角色网格长
*/
String ROLE_GRID_LEADER = "gridLeader";
}

2
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java

@ -144,7 +144,7 @@ public class SysDeptController {
*/
@GetMapping("getParentAndAllDept/{deptId}")
public Result<ParentAndAllDeptDTO> getParentAndAllDept(@PathVariable("deptId") String deptId) {
return sysDeptService.getParentAndAllDept(deptId);
return new Result().ok(sysDeptService.getParentAndAllDept(deptId));
}
/**

18
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysRoleDao.java

@ -1,8 +1,8 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* <p>
* https://www.renren.io
*
* <p>
* 版权所有侵权必究
*/
@ -12,6 +12,10 @@ import com.elink.esua.epdc.entity.SysRoleEntity;
import com.elink.esua.epdc.commons.mybatis.dao.BaseDao;
import com.elink.esua.epdc.entity.SysRoleEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* 角色管理
@ -22,4 +26,14 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SysRoleDao extends BaseDao<SysRoleEntity> {
/**
* 根据角色类型获取机构的此类角色数量
*
* @param roleType
* @param deptIdList
* @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
* @author work@yujt.net.cn
* @date 2019/12/18 10:20
*/
List<Map<String, Object>> selectAmountByRoleTpye(@Param("roleType") String roleType, @Param("deptIdList") List<Long> deptIdList);
}

4
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java

@ -78,11 +78,11 @@ public interface SysDeptService extends BaseService<SysDeptEntity> {
* 通过网格ID获取该网格所有上级机构
*
* @param deptId
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.CompleteDeptDTO>
* @return com.elink.esua.epdc.dto.CompleteDeptDTO
* @author yujintao
* @date 2019/9/7 09:13
*/
Result<ParentAndAllDeptDTO> getParentAndAllDept(String deptId);
ParentAndAllDeptDTO getParentAndAllDept(String deptId);
/**
* 通过街道ID获取项目可流转部门

8
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java

@ -243,7 +243,7 @@ public class SysDeptServiceImpl extends BaseServiceImpl<SysDeptDao, SysDeptEntit
}
@Override
public Result<ParentAndAllDeptDTO> getParentAndAllDept(String deptId) {
public ParentAndAllDeptDTO getParentAndAllDept(String deptId) {
Long deptIdL = null;
try {
deptIdL = Long.parseLong(deptId.trim());
@ -251,7 +251,7 @@ public class SysDeptServiceImpl extends BaseServiceImpl<SysDeptDao, SysDeptEntit
log.error("->getCompleteDept:::部门ID格式转换异常:::deptId->{}", deptId);
}
if (null == deptIdL) {
return new Result().error("参数格式异常");
throw new RenException("参数格式异常");
}
CompleteDeptDTO completeDept = this.baseDao.getParentAndAllDept(deptIdL);
ParentAndAllDeptDTO parentAndAllDeptDTO = new ParentAndAllDeptDTO();
@ -274,11 +274,11 @@ public class SysDeptServiceImpl extends BaseServiceImpl<SysDeptDao, SysDeptEntit
parentAndAllDeptDTO.setAllDeptIds(deptIds);
parentAndAllDeptDTO.setAllDeptNames(deptNames);
} else {
return new Result().error("部门Id错误");
throw new RenException("部门Id错误");
}
return new Result().ok(parentAndAllDeptDTO);
return parentAndAllDeptDTO;
}
@Override

44
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleServiceImpl.java

@ -8,17 +8,23 @@
package com.elink.esua.epdc.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.commons.mybatis.enums.DelFlagEnum;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.constant.Constant;
import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.enums.SuperAdminEnum;
import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.security.user.SecurityUser;
import com.elink.esua.epdc.commons.tools.security.user.UserDetail;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.constant.TypeKeyConstant;
import com.elink.esua.epdc.dao.SysRoleDao;
import com.elink.esua.epdc.dto.ParentAndAllDeptDTO;
import com.elink.esua.epdc.dto.SysRoleDTO;
import com.elink.esua.epdc.entity.SysRoleEntity;
import com.elink.esua.epdc.service.*;
@ -97,6 +103,8 @@ public class SysRoleServiceImpl extends BaseServiceImpl<SysRoleDao, SysRoleEntit
public void save(SysRoleDTO dto) {
SysRoleEntity entity = ConvertUtils.sourceToTarget(dto, SysRoleEntity.class);
checkDeptRoleAmount(dto.getTypeKey(), dto.getDeptIdList());
//保存角色
insert(entity);
@ -110,6 +118,42 @@ public class SysRoleServiceImpl extends BaseServiceImpl<SysRoleDao, SysRoleEntit
appRoleMenuService.saveOrUpdate(entity.getId(), dto.getAppMenuIdList());
}
/**
* 根据角色类型获取机构的此类角色数量
*
* @param roleType 角色类型
* @param deptidList 机构id列表
* @return void
* @author work@yujt.net.cn
* @date 2019/12/18 10:14
*/
private void checkDeptRoleAmount(String roleType, List<Long> deptidList) {
if (TypeKeyConstant.ROLE_GRID_LEADER.equals(roleType)) {
List<Map<String, Object>> resultList = baseDao.selectAmountByRoleTpye(roleType, deptidList);
if (CollUtil.isEmpty(resultList)) {
return;
}
Map<String, Object> map;
String mapValue;
for (int i = 0; i < resultList.size(); i++) {
map = resultList.get(i);
mapValue = map.get("typeKey").toString();
if (!mapValue.equals(TypeKeyConstant.DEPT_GRID_PARTY)) {
continue;
}
mapValue = map.get("amount").toString();
if (Integer.parseInt(mapValue) <= NumConstant.THREE) {
continue;
}
mapValue = map.get("id").toString();
ParentAndAllDeptDTO parentAndAllDept = sysDeptService.getParentAndAllDept(mapValue);
throw new RenException("保存失败:" + parentAndAllDept.getAllDeptNames() + ",网格长多于3人");
}
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(SysRoleDTO dto) {

15
esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysRoleDao.xml

@ -3,4 +3,19 @@
<mapper namespace="com.elink.esua.epdc.dao.SysRoleDao">
<select id="selectAmountByRoleTpye" resultType="java.util.Map">
SELECT
d.id, d.type_key typeKey, count( u.real_name) amount
FROM
sys_dept d
LEFT JOIN sys_role_data_scope rds ON rds.dept_id = d.id
LEFT JOIN sys_role r ON rds.role_id = r.id
LEFT JOIN sys_role_user ru ON ru.role_id = r.id
LEFT JOIN sys_user u ON u.id = ru.user_id
WHERE
r.type_key = #{roleType} AND u.id != ''
AND d.id in (<foreach collection="deptIdList" item="item" separator=",">#{item}</foreach>)
GROUP BY
d.id
</select>
</mapper>

Loading…
Cancel
Save