From 5152a95d44906e6a10695f9177eede720fdb2c04 Mon Sep 17 00:00:00 2001 From: wxz Date: Fri, 22 May 2020 18:00:39 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=96=B0=E5=A2=9E=EF=BC=9A=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E6=97=B6=EF=BC=8C=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=9A=84=E8=A7=92=E8=89=B2=20=E7=9A=84?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E6=93=8D=E4=BD=9C=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/dto/feign/GovAccessFeignClient.java | 23 +++++++++++ .../GovAccessFeignClientFallBack.java | 22 +++++++++++ .../form/InitDefaultOperationsFormDTO.java | 20 ++++++++++ ...ava => RoleOperationDefaultResultDTO.java} | 2 +- .../com/epmet/controller/RoleController.java | 19 ++++++--- .../epmet/dao/RoleOperationDefaultDao.java | 19 ++++++++- .../epmet/service/RoleOperationService.java | 3 ++ .../impl/RoleOperationServiceImpl.java | 39 +++++++++++++++++++ .../mapper/RoleOperationDefaultDao.xml | 18 +++++++++ epmet-user/epmet-user-server/pom.xml | 6 +++ .../service/impl/GovStaffRoleServiceImpl.java | 25 ++++++++++++ 11 files changed, 189 insertions(+), 7 deletions(-) create mode 100644 epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/feign/GovAccessFeignClient.java create mode 100644 epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/feign/fallback/GovAccessFeignClientFallBack.java create mode 100644 epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/form/InitDefaultOperationsFormDTO.java rename epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/{RoleOperationDefaultDTO.java => RoleOperationDefaultResultDTO.java} (94%) diff --git a/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/feign/GovAccessFeignClient.java b/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/feign/GovAccessFeignClient.java new file mode 100644 index 0000000000..3492e75587 --- /dev/null +++ b/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/feign/GovAccessFeignClient.java @@ -0,0 +1,23 @@ +package com.epmet.dto.feign; + +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.feign.fallback.GovAccessFeignClientFallBack; +import com.epmet.dto.form.InitDefaultOperationsFormDTO; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +//@FeignClient(name = ServiceConstant.GOV_ORG_SERVER, fallback = GovAccessFeignClientFallBack.class) +@FeignClient(name = ServiceConstant.GOV_ORG_SERVER, fallback = GovAccessFeignClientFallBack.class, url = "localhost:8099") +public interface GovAccessFeignClient { + + /** + * 批量为角色ID初始化操作权限列表 + * @param formDTO + * @return + */ + @PostMapping("/gov/access/role/initdefaultoperationsforroles") + Result initDefaultOperationsForRoles(@RequestBody InitDefaultOperationsFormDTO formDTO); + +} diff --git a/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/feign/fallback/GovAccessFeignClientFallBack.java b/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/feign/fallback/GovAccessFeignClientFallBack.java new file mode 100644 index 0000000000..d75b4c8946 --- /dev/null +++ b/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/feign/fallback/GovAccessFeignClientFallBack.java @@ -0,0 +1,22 @@ +package com.epmet.dto.feign.fallback; + +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.utils.ModuleUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.feign.GovAccessFeignClient; +import com.epmet.dto.form.InitDefaultOperationsFormDTO; +import org.springframework.stereotype.Component; + +/** + * @Description + * @Author sun + */ +@Component +public class GovAccessFeignClientFallBack implements GovAccessFeignClient { + + + @Override + public Result initDefaultOperationsForRoles(InitDefaultOperationsFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ACCESS_SERVER, "initDefaultOperationsForRoles", formDTO); + } +} \ No newline at end of file diff --git a/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/form/InitDefaultOperationsFormDTO.java b/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/form/InitDefaultOperationsFormDTO.java new file mode 100644 index 0000000000..d7b487ad67 --- /dev/null +++ b/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/form/InitDefaultOperationsFormDTO.java @@ -0,0 +1,20 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import java.util.List; + +@Data +public class InitDefaultOperationsFormDTO { + + private List roles; + + @Data + public static class InitDefaultOpesRoleDTO { + public InitDefaultOpesRoleDTO() { + } + + private String roleId; + private String roleKey; + } +} diff --git a/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/RoleOperationDefaultDTO.java b/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/RoleOperationDefaultResultDTO.java similarity index 94% rename from epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/RoleOperationDefaultDTO.java rename to epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/RoleOperationDefaultResultDTO.java index d39f405e29..a757844fe3 100755 --- a/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/RoleOperationDefaultDTO.java +++ b/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/result/RoleOperationDefaultResultDTO.java @@ -29,7 +29,7 @@ import lombok.Data; * @since v1.0.0 2020-05-21 */ @Data -public class RoleOperationDefaultDTO implements Serializable { +public class RoleOperationDefaultResultDTO implements Serializable { private static final long serialVersionUID = 1L; diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/controller/RoleController.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/controller/RoleController.java index 0cf13fdfb8..5b7c01e23e 100644 --- a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/controller/RoleController.java +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/controller/RoleController.java @@ -1,14 +1,11 @@ package com.epmet.controller; import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.form.InitDefaultOperationsFormDTO; import com.epmet.dto.result.RoleOperationResultDTO; import com.epmet.service.RoleOperationService; -import oracle.jdbc.proxy.annotation.Post; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -29,4 +26,16 @@ public class RoleController { List roleOperationResultDTOS = roleOperationService.listOperationsByRoleId(roleId); return new Result>().ok(roleOperationResultDTOS); } + + /** + * 批量为角色ID初始化操作权限列表 + * @param formDTO + * @return + */ + @PostMapping("initdefaultoperationsforroles") + public Result initDefaultOperationsForRoles(@RequestBody InitDefaultOperationsFormDTO formDTO) { + List roles = formDTO.getRoles(); + roleOperationService.initDefaultOperationsForRoles(roles); + return new Result(); + } } diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/dao/RoleOperationDefaultDao.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/dao/RoleOperationDefaultDao.java index 0417991bb5..820c23bba6 100755 --- a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/dao/RoleOperationDefaultDao.java +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/dao/RoleOperationDefaultDao.java @@ -18,8 +18,13 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.RoleOperationDefaultResultDTO; import com.epmet.entity.RoleOperationDefaultEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.HashMap; +import java.util.List; /** * 角色默认的可操作功能列表 @@ -29,5 +34,17 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface RoleOperationDefaultDao extends BaseDao { - + + /** + * 查询可用 + * @return + */ + List listAllValid(); + + /** + * 查询某个roleKey的所有默认操作权限 + * @param roleKey + * @return + */ + List listByRoleKey(@Param("roleKey") String roleKey); } \ No newline at end of file diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/RoleOperationService.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/RoleOperationService.java index ebc000a36b..109cdf7a51 100644 --- a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/RoleOperationService.java +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/RoleOperationService.java @@ -20,6 +20,7 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.RoleOperationDTO; +import com.epmet.dto.form.InitDefaultOperationsFormDTO; import com.epmet.dto.result.RoleOperationResultDTO; import com.epmet.entity.RoleOperationEntity; @@ -100,4 +101,6 @@ public interface RoleOperationService extends BaseService { * @return */ List listOperationsByRoleId(String roleId); + + void initDefaultOperationsForRoles(List roles); } \ No newline at end of file diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/RoleOperationServiceImpl.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/RoleOperationServiceImpl.java index a690363b33..a1320faf7b 100644 --- a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/RoleOperationServiceImpl.java +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/RoleOperationServiceImpl.java @@ -24,7 +24,10 @@ import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.dao.RoleOperationDao; +import com.epmet.dao.RoleOperationDefaultDao; import com.epmet.dto.RoleOperationDTO; +import com.epmet.dto.form.InitDefaultOperationsFormDTO; +import com.epmet.dto.result.RoleOperationDefaultResultDTO; import com.epmet.dto.result.RoleOperationResultDTO; import com.epmet.entity.RoleOperationEntity; import com.epmet.service.RoleOperationService; @@ -32,6 +35,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.util.Arrays; import java.util.List; @@ -46,6 +50,12 @@ import java.util.Map; @Service public class RoleOperationServiceImpl extends BaseServiceImpl implements RoleOperationService { + @Autowired + private RoleOperationDefaultDao roleOperationDefaultDao; + + @Autowired + private RoleOperationDao roleOperationDao; + @Override public PageData page(Map params) { IPage page = baseDao.selectPage( @@ -103,4 +113,33 @@ public class RoleOperationServiceImpl extends BaseServiceImpl roles) { + //roleOperationDefaultDao.listAllValid(); + for (InitDefaultOperationsFormDTO.InitDefaultOpesRoleDTO role : roles) { + String roleId = role.getRoleId(); + String roleKey = role.getRoleKey(); + List defaultOperations = roleOperationDefaultDao.listByRoleKey(roleKey); + if (!CollectionUtils.isEmpty(defaultOperations)) { + // 有的角色并没有配置默认的操作权限,应该忽略 + initDefaultOperationsForRole(roleId, defaultOperations); + } + } + } + + /** + * 为某一个角色初始化默认操作权限 + * @param roleId + * @param operations + */ + public void initDefaultOperationsForRole(String roleId, List operations) { + for (RoleOperationDefaultResultDTO operation : operations) { + RoleOperationEntity entity = new RoleOperationEntity(); + entity.setOperationKey(operation.getOperationKey()); + entity.setRoleId(roleId); + roleOperationDao.insert(entity); + } + } + } \ No newline at end of file diff --git a/epmet-module/gov-access/gov-access-server/src/main/resources/mapper/RoleOperationDefaultDao.xml b/epmet-module/gov-access/gov-access-server/src/main/resources/mapper/RoleOperationDefaultDao.xml index d7d7532ca6..dfd74bfea0 100755 --- a/epmet-module/gov-access/gov-access-server/src/main/resources/mapper/RoleOperationDefaultDao.xml +++ b/epmet-module/gov-access/gov-access-server/src/main/resources/mapper/RoleOperationDefaultDao.xml @@ -15,5 +15,23 @@ + + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/pom.xml b/epmet-user/epmet-user-server/pom.xml index a8b3e08ae9..2eec92dce2 100644 --- a/epmet-user/epmet-user-server/pom.xml +++ b/epmet-user/epmet-user-server/pom.xml @@ -76,6 +76,12 @@ 2.0.0 compile + + com.epmet + gov-access-client + 2.0.0 + compile + diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GovStaffRoleServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GovStaffRoleServiceImpl.java index 6e0860f82e..20a8a344a7 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GovStaffRoleServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GovStaffRoleServiceImpl.java @@ -20,12 +20,16 @@ package com.epmet.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.utils.Result; import com.epmet.dao.GovStaffRoleDao; import com.epmet.dao.GovStaffRoleTemplateDao; import com.epmet.dto.GovStaffRoleDTO; +import com.epmet.dto.feign.GovAccessFeignClient; +import com.epmet.dto.form.InitDefaultOperationsFormDTO; import com.epmet.dto.result.GovStaffRoleTemplateDTO; import com.epmet.entity.GovStaffRoleEntity; import com.epmet.redis.GovStaffRoleRedis; @@ -35,6 +39,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -57,6 +62,9 @@ public class GovStaffRoleServiceImpl extends BaseServiceImpl page(Map params) { IPage page = baseDao.selectPage( @@ -127,12 +135,29 @@ public class GovStaffRoleServiceImpl extends BaseServiceImpl validRoles = govStaffRoleTemplateDao.listValidateRoles(); + + ArrayList roles = new ArrayList<>(); + for (GovStaffRoleTemplateDTO validRole : validRoles) { GovStaffRoleEntity entity = ConvertUtils.sourceToTarget(validRole, GovStaffRoleEntity.class); entity.setCustomerId(customerId); entity.setId(null); baseDao.insert(entity); + + InitDefaultOperationsFormDTO.InitDefaultOpesRoleDTO role = new InitDefaultOperationsFormDTO.InitDefaultOpesRoleDTO(); + role.setRoleId(entity.getId()); + role.setRoleKey(entity.getRoleKey()); + roles.add(role); + } + + // 调用access给角色列表分配操作权限 + InitDefaultOperationsFormDTO formDTO = new InitDefaultOperationsFormDTO(); + formDTO.setRoles(roles); + Result result = govAccessFeignClient.initDefaultOperationsForRoles(formDTO); + if (!result.success()) { + throw new RenException("为客户的角色初始化操作权限列表失败:".concat(result.getInternalMsg())); } }