Browse Source

1.添加客户,给客户初始化角色的时候,同时初始化角色的操作列表和范围列表

2.查询一个角色权限的时候,不再同时查询默认表和配置表,改为只查询配置表
dev_shibei_match
wxz 5 years ago
parent
commit
1c14c14b84
  1. 1
      epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/feign/GovAccessFeignClient.java
  2. 35
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/dao/OperationScopeDefaultDao.java
  3. 51
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/entity/OperationScopeDefaultEntity.java
  4. 58
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/RoleOperationServiceImpl.java
  5. 12
      epmet-module/gov-access/gov-access-server/src/main/resources/mapper/OperationScopeDao.xml
  6. 24
      epmet-module/gov-access/gov-access-server/src/main/resources/mapper/OperationScopeDefaultDao.xml
  7. 2
      epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java
  8. 10
      epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/feign/OperCustomizeFeignClient.java

1
epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/feign/GovAccessFeignClient.java

@ -8,6 +8,7 @@ import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
//@FeignClient(name = ServiceConstant.GOV_ACCESS_SERVER, fallback = GovAccessFeignClientFallBack.class, url = "http://localhost:8099")
@FeignClient(name = ServiceConstant.GOV_ACCESS_SERVER, fallback = GovAccessFeignClientFallBack.class) @FeignClient(name = ServiceConstant.GOV_ACCESS_SERVER, fallback = GovAccessFeignClientFallBack.class)
public interface GovAccessFeignClient { public interface GovAccessFeignClient {

35
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/dao/OperationScopeDefaultDao.java

@ -0,0 +1,35 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.OperationScopeDefaultEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 默认操作范围表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-06-17
*/
@Mapper
public interface OperationScopeDefaultDao extends BaseDao<OperationScopeDefaultEntity> {
List<OperationScopeDefaultEntity> listAllValid();
}

51
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/entity/OperationScopeDefaultEntity.java

@ -0,0 +1,51 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 默认操作范围表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-06-17
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("operation_scope_default")
public class OperationScopeDefaultEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 操作key
*/
private String operationKey;
/**
* 范围key
*/
private String scopeKey;
}

58
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/RoleOperationServiceImpl.java

@ -23,13 +23,17 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.dao.OperationScopeDefaultDao;
import com.epmet.dao.RoleOperationDao; import com.epmet.dao.RoleOperationDao;
import com.epmet.dao.RoleOperationDefaultDao; import com.epmet.dao.RoleOperationDefaultDao;
import com.epmet.dao.RoleScopeDao;
import com.epmet.dto.RoleOperationDTO; import com.epmet.dto.RoleOperationDTO;
import com.epmet.dto.form.InitDefaultOperationsFormDTO; import com.epmet.dto.form.InitDefaultOperationsFormDTO;
import com.epmet.dto.result.RoleOperationDefaultResultDTO; import com.epmet.dto.result.RoleOperationDefaultResultDTO;
import com.epmet.dto.result.RoleOperationResultDTO; import com.epmet.dto.result.RoleOperationResultDTO;
import com.epmet.entity.OperationScopeDefaultEntity;
import com.epmet.entity.RoleOperationEntity; import com.epmet.entity.RoleOperationEntity;
import com.epmet.entity.RoleScopeEntity;
import com.epmet.service.RoleOperationService; import com.epmet.service.RoleOperationService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -37,9 +41,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.Arrays; import java.util.*;
import java.util.List;
import java.util.Map;
/** /**
* 角色能进行那些操作 * 角色能进行那些操作
@ -56,6 +58,12 @@ public class RoleOperationServiceImpl extends BaseServiceImpl<RoleOperationDao,
@Autowired @Autowired
private RoleOperationDao roleOperationDao; private RoleOperationDao roleOperationDao;
@Autowired
private OperationScopeDefaultDao operationScopeDefaultDao;
@Autowired
private RoleScopeDao roleScopeDao;
@Override @Override
public PageData<RoleOperationDTO> page(Map<String, Object> params) { public PageData<RoleOperationDTO> page(Map<String, Object> params) {
IPage<RoleOperationEntity> page = baseDao.selectPage( IPage<RoleOperationEntity> page = baseDao.selectPage(
@ -116,7 +124,9 @@ public class RoleOperationServiceImpl extends BaseServiceImpl<RoleOperationDao,
@Override @Override
@Transactional @Transactional
public void initDefaultOperationsForRoles(List<InitDefaultOperationsFormDTO.InitDefaultOpesRoleDTO> roles) { public void initDefaultOperationsForRoles(List<InitDefaultOperationsFormDTO.InitDefaultOpesRoleDTO> roles) {
//roleOperationDefaultDao.listAllValid(); List<OperationScopeDefaultEntity> validScopeDefaults = operationScopeDefaultDao.listAllValid();
HashMap<String, Set<String>> opeScopeMap = convertScopeDefaultEntity2Map(validScopeDefaults);
for (InitDefaultOperationsFormDTO.InitDefaultOpesRoleDTO role : roles) { for (InitDefaultOperationsFormDTO.InitDefaultOpesRoleDTO role : roles) {
String roleId = role.getRoleId(); String roleId = role.getRoleId();
String roleKey = role.getRoleKey(); String roleKey = role.getRoleKey();
@ -124,6 +134,7 @@ public class RoleOperationServiceImpl extends BaseServiceImpl<RoleOperationDao,
if (!CollectionUtils.isEmpty(defaultOperations)) { if (!CollectionUtils.isEmpty(defaultOperations)) {
// 有的角色并没有配置默认的操作权限,应该忽略 // 有的角色并没有配置默认的操作权限,应该忽略
initDefaultOperationsForRole(roleId, defaultOperations); initDefaultOperationsForRole(roleId, defaultOperations);
initDefaultOperationScopesForRole(roleId, defaultOperations, opeScopeMap);
} }
} }
} }
@ -142,4 +153,43 @@ public class RoleOperationServiceImpl extends BaseServiceImpl<RoleOperationDao,
} }
} }
/**
* 为角色初始化操作范围
* 传入的map为所有操作的默认操作范围但是具体要为该角色初始化哪一些操作是由operations参数决定的并不是map中所有操作都会被初始化给该role
* @param roleId 角色ID
* @param operations 该角色可以做的操作列表
*/
public void initDefaultOperationScopesForRole(String roleId, List<RoleOperationDefaultResultDTO> operations, HashMap<String, Set<String>> opeScopeMap) {
for (RoleOperationDefaultResultDTO operation : operations) {
Set<String> scopeKeys4ThisOpe = opeScopeMap.get(operation.getOperationKey());
if (!CollectionUtils.isEmpty(scopeKeys4ThisOpe)) {
for (String scopeKey : scopeKeys4ThisOpe) {
RoleScopeEntity roleScopeEntity = new RoleScopeEntity();
roleScopeEntity.setOperationKey(operation.getOperationKey());
roleScopeEntity.setRoleId(roleId);
roleScopeEntity.setScopeKey(scopeKey);
roleScopeDao.insert(roleScopeEntity);
}
}
}
}
/**
* 将默认范围entity转换为map
* @param entities
* @return
*/
private HashMap<String, Set<String>> convertScopeDefaultEntity2Map(List<OperationScopeDefaultEntity> entities) {
HashMap<String, Set<String>> map = new HashMap<>();
for (OperationScopeDefaultEntity entity : entities) {
Set<String> scopes = map.get(entity.getOperationKey());
if (scopes == null) {
scopes = new HashSet<>();
map.put(entity.getOperationKey(), scopes);
}
scopes.add(entity.getScopeKey());
}
return map;
}
} }

12
epmet-module/gov-access/gov-access-server/src/main/resources/mapper/OperationScopeDao.xml

@ -32,6 +32,16 @@
<!--查询角色所有operation及其范围--> <!--查询角色所有operation及其范围-->
<select id="listAllRoleOperationScopesByRoleId" resultType="com.epmet.dto.result.RoleOpeScopeResultDTO"> <select id="listAllRoleOperationScopesByRoleId" resultType="com.epmet.dto.result.RoleOpeScopeResultDTO">
SELECT rs.ROLE_ID, rs.OPERATION_KEY, rs.SCOPE_KEY, os.SCOPE_INDEX, os.SERIES, os.SORT
FROM role_scope rs
INNER JOIN operation_scope os ON (rs.SCOPE_KEY = os.SCOPE_KEY)
WHERE rs.DEL_FLAG = 0
AND rs.ROLE_ID = #{roleId}
ORDER BY rs.OPERATION_KEY ASC
</select>
<!--查询角色所有operation及其范围,old方式-->
<!--<select id="listAllRoleOperationScopesByRoleId" resultType="com.epmet.dto.result.RoleOpeScopeResultDTO">
SELECT t.*, os.SCOPE_INDEX, os.SERIES, os.SORT SELECT t.*, os.SCOPE_INDEX, os.SERIES, os.SORT
FROM ( FROM (
SELECT ope.ROLE_ID, SELECT ope.ROLE_ID,
@ -48,7 +58,7 @@
ORDER BY OPERATION_KEY ASC ORDER BY OPERATION_KEY ASC
) t ) t
INNER JOIN operation_scope os ON (t.SCOPE_KEY = os.SCOPE_KEY) INNER JOIN operation_scope os ON (t.SCOPE_KEY = os.SCOPE_KEY)
</select> </select>-->
<select id="getDefaultScopeKeyForOperation" resultType="java.lang.String"> <select id="getDefaultScopeKeyForOperation" resultType="java.lang.String">
SELECT def.SCOPE_KEY SELECT def.SCOPE_KEY

24
epmet-module/gov-access/gov-access-server/src/main/resources/mapper/OperationScopeDefaultDao.xml

@ -0,0 +1,24 @@
<?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.epmet.dao.OperationScopeDefaultDao">
<resultMap type="com.epmet.entity.OperationScopeDefaultEntity" id="operationScopeDefaultMap">
<result property="id" column="ID"/>
<result property="operationKey" column="OPERATION_KEY"/>
<result property="scopeKey" column="SCOPE_KEY"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<select id="listAllValid" resultType="com.epmet.entity.OperationScopeDefaultEntity">
SELECT *
FROM operation_scope_default WHERE DEL_FLAG=0
</select>
</mapper>

2
epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java

@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
//, url = "localhost:8087" //@FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallback = EpmetUserFeignClientFallBack.class, url = "localhost:8087")
@FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallback = EpmetUserFeignClientFallBack.class) @FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallback = EpmetUserFeignClientFallBack.class)
public interface EpmetUserFeignClient { public interface EpmetUserFeignClient {

10
epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/feign/OperCustomizeFeignClient.java

@ -2,22 +2,12 @@ package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.CustomerHomeDTO; import com.epmet.dto.CustomerHomeDTO;
import com.epmet.dto.form.AddAgencyFormDTO;
import com.epmet.dto.form.AddRootAgencyFormDTO;
import com.epmet.dto.form.StaffSubmitFromDTO;
import com.epmet.dto.result.AddAgencyResultDTO;
import com.epmet.feign.fallback.GovOrgFeignClientFallBack;
import com.epmet.feign.fallback.OperCustomizeFeignClientFallBack; import com.epmet.feign.fallback.OperCustomizeFeignClientFallBack;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import java.util.Map;
//@FeignClient(name = ServiceConstant.OPER_CUSTOMIZE_SERVER, fallback = OperCustomizeFeignClientFallBack.class, url = "localhost:8089") //@FeignClient(name = ServiceConstant.OPER_CUSTOMIZE_SERVER, fallback = OperCustomizeFeignClientFallBack.class, url = "localhost:8089")
@FeignClient(name = ServiceConstant.OPER_CUSTOMIZE_SERVER, fallback = OperCustomizeFeignClientFallBack.class) @FeignClient(name = ServiceConstant.OPER_CUSTOMIZE_SERVER, fallback = OperCustomizeFeignClientFallBack.class)
public interface OperCustomizeFeignClient { public interface OperCustomizeFeignClient {

Loading…
Cancel
Save