Browse Source

新增:将默认权限同步到所有客户的指定角色的接口

dev
wxz 5 years ago
parent
commit
99ea55660c
  1. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  2. 17
      epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/form/AccessConfigAsyncDefaultFormDTO.java
  3. 19
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/controller/AccessConfigController.java
  4. 2
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/AccessConfigService.java
  5. 57
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/AccessConfigServiceImpl.java
  6. 4
      epmet-module/gov-access/gov-access-server/src/main/resources/bootstrap.yml
  7. 9
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java
  8. 5
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java
  9. 12
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/GovStaffRoleController.java
  10. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/GovStaffRoleDao.java
  11. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/GovStaffRoleService.java
  12. 11
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GovStaffRoleServiceImpl.java
  13. 8
      epmet-user/epmet-user-server/src/main/resources/mapper/GovStaffRoleDao.xml

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java

@ -110,6 +110,7 @@ public enum EpmetErrorCode {
OPER_CUSTOMER_FOOTBAR_EXISTS(8712, "footbar已存在"),
OPER_CUSTOMER_FOOTBAR_NOT_FOUND(8713, "footbar不存在"),
OPER_EXT_APP_SECRET_RESET_FAIL(8714, "秘钥更新失败"),
USER_LIST_ROLES_BY_KEY_FAIL(8715, "根据角色key查询角色列表失败"),
// 党建声音 前端提示 88段
DRAFT_CONTENT_IS_NULL(8801, "至少需要添加一个段落"),

17
epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/form/AccessConfigAsyncDefaultFormDTO.java

@ -0,0 +1,17 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.List;
@Data
public class AccessConfigAsyncDefaultFormDTO {
@NotBlank(message = "角色Key不能为空")
private String roleKey;
@NotBlank(message = "操作Key不能为空")
private String operationKey;
private List<String> scopeKeys;
}

19
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/controller/AccessConfigController.java

@ -12,6 +12,7 @@ import oracle.jdbc.proxy.annotation.Post;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import java.util.List;
import java.util.Set;
@ -116,4 +117,22 @@ public class AccessConfigController {
return new Result();
}
/**
* @Description 将默认的角色操作和范围同步给具体的角色
* @return
* @author wxz
* @date 2020.11.17 17:41
*/
@PostMapping("role-ope-and-scopes/async-from-default")
public Result asyncRoleOpeAndScopesFromDefault(@RequestBody AccessConfigAsyncDefaultFormDTO form ) {
ValidatorUtils.validateEntity(form);
String roleKey = form.getRoleKey();
String operationKey = form.getOperationKey();
List<String> scopeKeys = form.getScopeKeys();
accessConfigService.asyncRoleOpeAndScopesFromDefault(roleKey, operationKey, scopeKeys);
return new Result();
}
}

2
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/AccessConfigService.java

@ -25,4 +25,6 @@ public interface AccessConfigService {
List<AccessConfigOpeDefaultScopesResultDTO> listOpeDefaultScopes4Role(String roleKey, String operationKey);
void saveOpeDefaultScopes(String roleKey, String operationKey, List<String> scopeKeys);
void asyncRoleOpeAndScopesFromDefault(String roleKey, String operationKey, List<String> scopeKeys);
}

57
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/AccessConfigServiceImpl.java

@ -2,12 +2,14 @@ package com.epmet.service.impl;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.*;
import com.epmet.dto.result.*;
import com.epmet.entity.OperationScopeDefaultEntity;
import com.epmet.entity.RoleOperationDefaultEntity;
import com.epmet.entity.RoleOperationEntity;
import com.epmet.entity.RoleScopeEntity;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.redis.RoleOpeScopeRedis;
import com.epmet.service.AccessConfigService;
import org.slf4j.Logger;
@ -41,6 +43,9 @@ public class AccessConfigServiceImpl implements AccessConfigService {
@Autowired
private OperationScopeDefaultDao operationScopeDefaultDao;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Override
public List<AccessConfigOpesResultDTO> listOpesByRole(String roleId) {
return roleOperationDao.listOpesForAccessConfig(roleId);
@ -196,4 +201,56 @@ public class AccessConfigServiceImpl implements AccessConfigService {
operationScopeDefaultDao.insert(entity);
}
}
/**
* @Description 将默认的角色操作和范围同步给具体的角色
* @return
* @author wxz
* @date 2020.11.17 17:41
*/
@Override
public void asyncRoleOpeAndScopesFromDefault(String roleKey, String operationKey, List<String> scopeKeys) {
Result<List<GovStaffRoleResultDTO>> rolesResult = epmetUserOpenFeignClient.listRolesByRoleKey(roleKey);
if (!rolesResult.success()) {
String msg = "调用user服务,根据key查询角色列表失败";
throw new RenException(EpmetErrorCode.USER_LIST_ROLES_BY_KEY_FAIL.getCode(), msg, msg,
RenException.MessageMode.CODE_INTERNAL_EXTERNAL.CODE_INTERNAL_EXTERNAL);
}
List<GovStaffRoleResultDTO> roles = rolesResult.getData();
List<String> roleIds2Add = roles.stream().map(GovStaffRoleResultDTO::getRoleId).collect(Collectors.toList());
asyncRoleOpeAndScopesFromDefault(roleIds2Add, operationKey, scopeKeys);
}
/**
* @Description 将默认的角色操作和范围同步给具体的角色
* @return
* @author wxz
* @date 2020.11.17 17:38
*/
@Transactional(rollbackFor = Exception.class)
public void asyncRoleOpeAndScopesFromDefault(List<String> roleIds, String operationKey, List<String> scopeKeys) {
for (String roleId : roleIds) {
// 只给没有添加该权限的用户赋予该权限,已经添加了和添加了又取消的不操作
RoleOperationEntity roleOpe = roleOperationDao.getRoleOpe(roleId, operationKey);
if (roleOpe == null) {
// 没有该操作,则添加
RoleOperationEntity roleOperation = new RoleOperationEntity();
roleOperation.setOperationKey(operationKey);
roleOperation.setRoleId(roleId);
roleOperationDao.insert(roleOperation);
}
for (String scopeKey : scopeKeys) {
// 没有的话则添加
RoleScopeEntity roleScopeInDb = roleScopeDao.getByRoleIdAndOpeKey(roleId, operationKey, scopeKey);
if (roleScopeInDb == null) {
RoleScopeEntity roleScopeEntity = new RoleScopeEntity();
roleScopeEntity.setOperationKey(operationKey);
roleScopeEntity.setRoleId(roleId);
roleScopeEntity.setScopeKey(scopeKey);
roleScopeDao.insert(roleScopeEntity);
}
}
}
}
}

4
epmet-module/gov-access/gov-access-server/src/main/resources/bootstrap.yml

@ -119,3 +119,7 @@ pagehelper:
helper-dialect: mysql
reasonable: false #分页合理化配置,例如输入页码为-1,则自动转化为最小页码1
#feign 日志需要该配置
logging:
level:
com.epmet: debug

9
epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java

@ -334,4 +334,13 @@ public interface EpmetUserOpenFeignClient {
*/
@PostMapping("/epmetuser/customerstaff/getstaffbasicinfo")
Result<BasicInfoResultDTO> getStaffBasicInfo(@RequestBody StaffBasicInfoFromDTO fromDTO);
/**
* @Description 根据角色key查询具有该key的所有角色列表
* @return
* @author wxz
* @date 2020.11.17 16:20
*/
@PostMapping("/epmetuser/govstaffrole/list-roles-by-rolekey/{role-key}")
Result<List<GovStaffRoleResultDTO>> listRolesByRoleKey(@PathVariable("role-key") String roleKey);
}

5
epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java

@ -225,4 +225,9 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien
public Result<BasicInfoResultDTO> getStaffBasicInfo(StaffBasicInfoFromDTO fromDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getStaffBasicInfo", fromDTO);
}
@Override
public Result<List<GovStaffRoleResultDTO>> listRolesByRoleKey(String roleKey) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "listRolesByRoleKey", roleKey);
}
}

12
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/GovStaffRoleController.java

@ -100,4 +100,16 @@ public class GovStaffRoleController {
return new Result();
}
/**
* @Description 根据角色key查询具有该key的所有角色列表
* @return
* @author wxz
* @date 2020.11.17 16:20
*/
@PostMapping("list-roles-by-rolekey/{role-key}")
public Result<List<GovStaffRoleResultDTO>> listRolesByRoleKey(@PathVariable("role-key") String roleKey) {
List<GovStaffRoleResultDTO> roles = govStaffRoleService.listRolesByRoleKey(roleKey);
return new Result<List<GovStaffRoleResultDTO>>().ok(roles);
}
}

2
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/GovStaffRoleDao.java

@ -75,4 +75,6 @@ public interface GovStaffRoleDao extends BaseDao<GovStaffRoleEntity> {
int updateColumnsById(@Param("roleId") String roleId, @Param("roleName") String roleName);
int updateSortById(@Param("roleId") String roleId, @Param("sort") int sort);
List<GovStaffRoleResultDTO> listRolesByRoleKey(@Param("roleKey") String roleKey);
}

2
epmet-user/epmet-user-server/src/main/java/com/epmet/service/GovStaffRoleService.java

@ -138,4 +138,6 @@ public interface GovStaffRoleService extends BaseService<GovStaffRoleEntity> {
int updateRole(String roleId, String roleName);
void saveSortOrder(List<String> roleIdList);
List<GovStaffRoleResultDTO> listRolesByRoleKey(String roleKey);
}

11
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GovStaffRoleServiceImpl.java

@ -222,4 +222,15 @@ public class GovStaffRoleServiceImpl extends BaseServiceImpl<GovStaffRoleDao, Go
System.out.println(r);
}
}
/**
* @Description 根据角色key查询具有该key的所有角色列表
* @return
* @author wxz
* @date 2020.11.17 16:28
*/
@Override
public List<GovStaffRoleResultDTO> listRolesByRoleKey(String roleKey) {
return govStaffRoleDao.listRolesByRoleKey(roleKey);
}
}

8
epmet-user/epmet-user-server/src/main/resources/mapper/GovStaffRoleDao.xml

@ -103,4 +103,12 @@
</foreach>
)
</select>
<!--根据角色key查询具有该key的所有角色列表-->
<select id="listRolesByRoleKey" resultType="com.epmet.dto.result.GovStaffRoleResultDTO">
select gsr.ID roleId, gsr.ROLE_KEY roleKey, gsr.ROLE_NAME, gsr.CUSTOMER_ID customerId
from gov_staff_role gsr
where gsr.ROLE_KEY = #{roleKey}
and gsr.DEL_FLAG=0
</select>
</mapper>
Loading…
Cancel
Save