fix(iam): 完善数据校验

This commit is contained in:
yjz
2023-11-20 13:58:48 +08:00
parent 211edb6a47
commit d3cf0ae1fc
5 changed files with 187 additions and 118 deletions
@@ -331,7 +331,6 @@ public class SyncIamController {
ObjectMapper objectMapper = new ObjectMapper();
BpmcAcceptDto bpmcAcceptDto = objectMapper.readValue(acceptDecryptPo.getMessageDecryptTabels().getHeader().getData(), BpmcAcceptDto.class);
// BpmcAcceptDto bpmcAcceptDto = acceptDecryptPo.getMessageDecryptTabels().getHeader();
MessageHeader messageHeader = acceptDecryptPo.getMessageHeader();
if (CharSequenceUtil.isEmpty(bpmcAcceptDto.getType())){
@@ -372,50 +371,36 @@ public class SyncIamController {
}
BpmcResponseDto bpmcResponseDto = BpmcResponseDto.success();
try {
switch (bpmcAcceptDto.getType()){
// 角色
case DockingConstant.BPMC_TYPE_ROLE:
bpmcResponseDto = bpmcTypeRole(objectMapper, bpmcAcceptDto, bpmcResponseDto);
break;
// 分接口类型分别处理
if (bpmcAcceptDto.getType().equals(DockingConstant.BPMC_TYPE_ROLE)){
RoleDto roleDto = objectMapper.readValue(bpmcAcceptDto.getEntity(), RoleDto.class);
// 根据新增/编辑/删除调用不同的业务处理代码
if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_ADD)){
bpmcResponseDto = this.syncIamService.roleCreateService(roleDto);
} else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_UPDATE)) {
bpmcResponseDto = this.syncIamService.roleUpdateService(roleDto);
} else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_DELETE)) {
bpmcResponseDto = this.syncIamService.roleDeleteService(roleDto);
}
}
// 菜单
case DockingConstant.BPMC_TYPE_RESOURCE:
bpmcResponseDto = bpmcTypeResource(objectMapper, bpmcAcceptDto, bpmcResponseDto);
break;
if (bpmcAcceptDto.getType().equals(DockingConstant.BPMC_TYPE_RESOURCE)){
ResourceDto resourceDto = objectMapper.readValue(bpmcAcceptDto.getEntity(), ResourceDto.class);
// 根据新增/编辑/删除调用不同的业务处理代码
if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_ADD)){
bpmcResponseDto = this.syncIamService.resourceCreateService(resourceDto);
} else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_UPDATE)) {
bpmcResponseDto = this.syncIamService.resourceUpdateService(resourceDto);
} else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_DELETE)) {
bpmcResponseDto = this.syncIamService.resourceDeleteService(resourceDto);
}
}
// 用户角色关联
case DockingConstant.BPMC_TYPE_USER_ROLE:
bpmcResponseDto = bpmcTypeUserRole(objectMapper, bpmcAcceptDto, bpmcResponseDto);
break;
if (bpmcAcceptDto.getType().equals(DockingConstant.BPMC_TYPE_USER_ROLE)){
List<UserRoleDto> userRoleDtoList = objectMapper.readValue(bpmcAcceptDto.getEntity(), new TypeReference<List<UserRoleDto>>() {});
// 根据新增/删除调用不同的业务处理代码
if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_ADD)){
bpmcResponseDto = this.syncIamService.userRoleCreateService(userRoleDtoList);
} else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_DELETE)) {
bpmcResponseDto = this.syncIamService.userRoleDeleteService(userRoleDtoList);
}
}
// 角色菜单关联
case DockingConstant.BPMC_TYPE_ROLE_RESOURCE:
bpmcResponseDto = bpmcTypeRoleResource(objectMapper, bpmcAcceptDto, bpmcResponseDto);
break;
if (bpmcAcceptDto.getType().equals(DockingConstant.BPMC_TYPE_ROLE_RESOURCE)){
List<RoleResourceDto> roleResourceDtoList = objectMapper.readValue(bpmcAcceptDto.getEntity(), new TypeReference<List<RoleResourceDto>>() {});
// 根据新增/删除调用不同的业务处理代码
if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_ADD)){
bpmcResponseDto = this.syncIamService.roleResourceCreateService(roleResourceDtoList);
} else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_DELETE)) {
bpmcResponseDto = this.syncIamService.roleResourceDeleteService(roleResourceDtoList);
default:
bpmcResponseDto = BpmcResponseDto.error("接口类型(type)未找到,请检查");
break;
}
}catch (Exception e){
e.printStackTrace();
log.error(e.getMessage());
bpmcResponseDto = BpmcResponseDto.error(e.getMessage());
}
return new SendPoDecryptPo<BpmcResponseDto>().response(
@@ -424,6 +409,54 @@ public class SyncIamController {
);
}
private BpmcResponseDto bpmcTypeRoleResource(ObjectMapper objectMapper, BpmcAcceptDto bpmcAcceptDto, BpmcResponseDto bpmcResponseDto) throws JsonProcessingException {
List<RoleResourceDto> roleResourceDtoList = objectMapper.readValue(bpmcAcceptDto.getEntity(), new TypeReference<List<RoleResourceDto>>() {});
// 根据新增/删除调用不同的业务处理代码
if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_ADD)){
bpmcResponseDto = this.syncIamService.roleResourceCreateService(roleResourceDtoList);
} else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_DELETE)) {
bpmcResponseDto = this.syncIamService.roleResourceDeleteService(roleResourceDtoList);
}
return bpmcResponseDto;
}
private BpmcResponseDto bpmcTypeUserRole(ObjectMapper objectMapper, BpmcAcceptDto bpmcAcceptDto, BpmcResponseDto bpmcResponseDto) throws JsonProcessingException {
List<UserRoleDto> userRoleDtoList = objectMapper.readValue(bpmcAcceptDto.getEntity(), new TypeReference<List<UserRoleDto>>() {});
// 根据新增/删除调用不同的业务处理代码
if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_ADD)){
bpmcResponseDto = this.syncIamService.userRoleCreateService(userRoleDtoList);
} else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_DELETE)) {
bpmcResponseDto = this.syncIamService.userRoleDeleteService(userRoleDtoList);
}
return bpmcResponseDto;
}
private BpmcResponseDto bpmcTypeResource(ObjectMapper objectMapper, BpmcAcceptDto bpmcAcceptDto, BpmcResponseDto bpmcResponseDto) throws JsonProcessingException {
ResourceDto resourceDto = objectMapper.readValue(bpmcAcceptDto.getEntity(), ResourceDto.class);
// 根据新增/编辑/删除调用不同的业务处理代码
if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_ADD)){
bpmcResponseDto = this.syncIamService.resourceCreateService(resourceDto);
} else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_UPDATE)) {
bpmcResponseDto = this.syncIamService.resourceUpdateService(resourceDto);
} else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_DELETE)) {
bpmcResponseDto = this.syncIamService.resourceDeleteService(resourceDto);
}
return bpmcResponseDto;
}
private BpmcResponseDto bpmcTypeRole(ObjectMapper objectMapper, BpmcAcceptDto bpmcAcceptDto, BpmcResponseDto bpmcResponseDto) throws JsonProcessingException {
RoleDto roleDto = objectMapper.readValue(bpmcAcceptDto.getEntity(), RoleDto.class);
// 根据新增/编辑/删除调用不同的业务处理代码
if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_ADD)){
bpmcResponseDto = this.syncIamService.roleCreateService(roleDto);
} else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_UPDATE)) {
bpmcResponseDto = this.syncIamService.roleUpdateService(roleDto);
} else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_DELETE)) {
bpmcResponseDto = this.syncIamService.roleDeleteService(roleDto);
}
return bpmcResponseDto;
}
/**
* 查询全部用户id
* @param iamCommon
@@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.NumberUtil;
import com.bamboocloud.codec.BamboocloudFacade;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -586,6 +587,7 @@ public class SyncIamService {
sysRole.setCreateTime(roleDto.getCreateTime());
sysRole.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
sysRole.setUpdateTime(roleDto.getModifyTime());
sysRole.setAppId(roleDto.getAppId());
sysRoleService.save(sysRole);
} catch (Exception e){
@@ -609,6 +611,8 @@ public class SyncIamService {
if (sysRole == null){
return BpmcResponseDto.error("未找到对应id角色,无法更新");
}else {
sysRole.setId(roleDto.getId());
}
if (CharSequenceUtil.isNotEmpty(roleDto.getName())){
@@ -623,6 +627,10 @@ public class SyncIamService {
sysRole.setDescription(roleDto.getDescription());
}
if (CharSequenceUtil.isNotEmpty(roleDto.getAppId())){
sysRole.setAppId(roleDto.getAppId());
}
sysRole.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
if (roleDto.getModifyTime() != null){
@@ -670,7 +678,13 @@ public class SyncIamService {
sysPermission.setPerms(resourceDto.getCode());
sysPermission.setComponent(resourceDto.getComponent()); // 组件的路径
sysPermission.setUrl(resourceDto.getRedirect()); // 地址栏显示的路径
sysPermission.setSortNo(Double.valueOf(resourceDto.getSort()));
sysPermission.setAppId(resourceDto.getAppId()); // appId
if (!Objects.isNull(resourceDto.getSort())){
sysPermission.setSortNo(Double.valueOf(resourceDto.getSort()));
}else {
sysPermission.setSortNo(1D);
}
// TODO 菜单英文名数据库中没有,需要确认
@@ -714,78 +728,78 @@ public class SyncIamService {
* 菜单更新
*/
public BpmcResponseDto resourceUpdateService(ResourceDto resourceDto){
try {
if (CharSequenceUtil.isEmpty(resourceDto.getId())){
return BpmcResponseDto.error("菜单id为空,无法更新");
}
SysPermission sysPermission = sysPermissionService.getById(resourceDto.getId());
if (sysPermission == null){
return BpmcResponseDto.error("未找到对应id功能权限,无法更新");
}
if (CharSequenceUtil.isNotEmpty(resourceDto.getParentId())){
sysPermission.setParentId(resourceDto.getParentId());
}
if (CharSequenceUtil.isNotEmpty(resourceDto.getName())){
sysPermission.setName(resourceDto.getName());
}
if (CharSequenceUtil.isNotEmpty(resourceDto.getCode())){
sysPermission.setPerms(resourceDto.getCode());
}
if (CharSequenceUtil.isNotEmpty(resourceDto.getComponent())){
sysPermission.setComponent(resourceDto.getComponent()); // 组件的路径
}
if (CharSequenceUtil.isNotEmpty(resourceDto.getRedirect())){
sysPermission.setUrl(resourceDto.getRedirect()); // 地址栏显示的路径
}
if (resourceDto.getSort() != null){
sysPermission.setSortNo(Double.valueOf(resourceDto.getSort()));
}
// sysPermission的 menuType 0:一级菜单;1:子菜单 ;2:按钮权限)
if (DockingConstant.BPMC_RESOURCE_TYPE_MENU == resourceDto.getMenu_type()){
if (CharSequenceUtil.isEmpty(resourceDto.getParentId())){
sysPermission.setMenuType(0);
} else {
sysPermission.setMenuType(1);
}
} else {
sysPermission.setMenuType(2);
}
sysPermission.setUpdateTime(resourceDto.getModifyTime());
sysPermission.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
sysPermission.setDescription(resourceDto.getDescription());
if (resourceDto.getIs_route() != null){
sysPermission.setRoute(resourceDto.getIs_route() == 0 ? false : true);
}
if (resourceDto.getKeep_alive() != null){
sysPermission.setKeepAlive(resourceDto.getKeep_alive() == 0 ? false : true);
}
if (resourceDto.getHidden() != null){
sysPermission.setHidden(resourceDto.getKeep_alive() == 0 ? false : true);
}
if (resourceDto.getInternal_or_external() != null){
sysPermission.setInternalOrExternal(resourceDto.getInternal_or_external() == 0 ? false : true);
}
sysPermissionService.editPermission(sysPermission);
} catch (Exception e){
e.printStackTrace();
return BpmcResponseDto.error(e.getMessage());
if (CharSequenceUtil.isEmpty(resourceDto.getId())){
return BpmcResponseDto.error("菜单id为空,无法更新");
}
SysPermission sysPermission = sysPermissionService.getById(resourceDto.getId());
if (sysPermission == null){
return BpmcResponseDto.error("未找到对应id功能权限,无法更新");
}else {
sysPermission.setId(resourceDto.getId());
}
if (CharSequenceUtil.isNotEmpty(resourceDto.getParentId())){
sysPermission.setParentId(resourceDto.getParentId());
}
if (CharSequenceUtil.isNotEmpty(resourceDto.getName())){
sysPermission.setName(resourceDto.getName());
}
if (CharSequenceUtil.isNotEmpty(resourceDto.getCode())){
sysPermission.setPerms(resourceDto.getCode());
}
if (CharSequenceUtil.isNotEmpty(resourceDto.getComponent())){
sysPermission.setComponent(resourceDto.getComponent()); // 组件的路径
}
if (CharSequenceUtil.isNotEmpty(resourceDto.getRedirect())){
sysPermission.setUrl(resourceDto.getRedirect()); // 地址栏显示的路径
}
if (resourceDto.getSort() != null){
sysPermission.setSortNo(Double.valueOf(resourceDto.getSort()));
}
if (CharSequenceUtil.isNotEmpty(resourceDto.getAppId())){
sysPermission.setAppId(resourceDto.getAppId());
}
// sysPermission的 menuType 0:一级菜单;1:子菜单 ;2:按钮权限)
if (DockingConstant.BPMC_RESOURCE_TYPE_MENU == resourceDto.getMenu_type()){
if (CharSequenceUtil.isEmpty(resourceDto.getParentId())){
sysPermission.setMenuType(0);
} else {
sysPermission.setMenuType(1);
}
} else {
sysPermission.setMenuType(2);
}
sysPermission.setUpdateTime(resourceDto.getModifyTime());
sysPermission.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
sysPermission.setDescription(resourceDto.getDescription());
if (resourceDto.getIs_route() != null){
sysPermission.setRoute(resourceDto.getIs_route() == 0 ? false : true);
}
if (resourceDto.getKeep_alive() != null){
sysPermission.setKeepAlive(resourceDto.getKeep_alive() == 0 ? false : true);
}
if (resourceDto.getHidden() != null){
sysPermission.setHidden(resourceDto.getKeep_alive() == 0 ? false : true);
}
if (resourceDto.getInternal_or_external() != null){
sysPermission.setInternalOrExternal(resourceDto.getInternal_or_external() == 0 ? false : true);
}
sysPermissionService.editPermission(sysPermission);
return BpmcResponseDto.success();
}
@@ -827,6 +841,14 @@ public class SyncIamService {
sysUserRole.setUserId(userInfo.getId());
sysUserRole.setRoleId(userRoleDto.getArId());
// 角色重复性校验
int count = sysUserRoleService.count(new LambdaQueryWrapper<SysUserRole>()
.eq(SysUserRole::getUserId, sysUserRole.getUserId())
.eq(SysUserRole::getRoleId, sysUserRole.getRoleId()));
if (count > 0){
continue;
}
userRoleList.add(sysUserRole);
}
}
@@ -870,7 +892,13 @@ public class SyncIamService {
SysRolePermission sysRolePermission = new SysRolePermission();
sysRolePermission.setPermissionId(roleResourceDto.getAmId());
sysRolePermission.setRoleId(roleResourceDto.getArId());
// 重复性校验
int count = sysRolePermissionService.count(new LambdaQueryWrapper<SysRolePermission>()
.eq(SysRolePermission::getRoleId, sysRolePermission.getRoleId())
.eq(SysRolePermission::getPermissionId, sysRolePermission.getPermissionId()));
if (count > 0){
continue;
}
sysRolePermissionList.add(sysRolePermission);
}
this.sysRolePermissionService.saveBatch(sysRolePermissionList);
@@ -888,7 +916,7 @@ public class SyncIamService {
public BpmcResponseDto roleResourceDeleteService(List<RoleResourceDto> roleResourceDtoList){
try {
for (RoleResourceDto roleResourceDto : roleResourceDtoList){
QueryWrapper<SysRolePermission> queryWrapper = new QueryWrapper<SysRolePermission>();
QueryWrapper<SysRolePermission> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("permission_id", roleResourceDto.getAmId());
queryWrapper.eq("role_id", roleResourceDto.getArId());