diff --git a/laws-module-system/src/main/java/com/jero/modules/system/entity/SysPermission.java b/laws-module-system/src/main/java/com/jero/modules/system/entity/SysPermission.java index 85e7424b..b7b14cac 100644 --- a/laws-module-system/src/main/java/com/jero/modules/system/entity/SysPermission.java +++ b/laws-module-system/src/main/java/com/jero/modules/system/entity/SysPermission.java @@ -145,6 +145,11 @@ public class SysPermission implements Serializable { */ private Date updateTime; + /** + * appId + */ + private String appId; + /**按钮权限状态(0无效1有效)*/ private java.lang.String status; diff --git a/laws-module-system/src/main/java/com/jero/modules/system/entity/SysRole.java b/laws-module-system/src/main/java/com/jero/modules/system/entity/SysRole.java index 29efc162..c5bc64ee 100644 --- a/laws-module-system/src/main/java/com/jero/modules/system/entity/SysRole.java +++ b/laws-module-system/src/main/java/com/jero/modules/system/entity/SysRole.java @@ -75,5 +75,8 @@ public class SysRole implements Serializable { @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date updateTime; - + /** + * appId + */ + private String appId; } diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/controller/SyncIamController.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/controller/SyncIamController.java index 7d187853..785de102 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/controller/SyncIamController.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/controller/SyncIamController.java @@ -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 userRoleDtoList = objectMapper.readValue(bpmcAcceptDto.getEntity(), new TypeReference>() {}); - // 根据新增/删除调用不同的业务处理代码 - 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 roleResourceDtoList = objectMapper.readValue(bpmcAcceptDto.getEntity(), new TypeReference>() {}); - // 根据新增/删除调用不同的业务处理代码 - 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().response( @@ -424,6 +409,54 @@ public class SyncIamController { ); } + private BpmcResponseDto bpmcTypeRoleResource(ObjectMapper objectMapper, BpmcAcceptDto bpmcAcceptDto, BpmcResponseDto bpmcResponseDto) throws JsonProcessingException { + List roleResourceDtoList = objectMapper.readValue(bpmcAcceptDto.getEntity(), new TypeReference>() {}); + // 根据新增/删除调用不同的业务处理代码 + 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 userRoleDtoList = objectMapper.readValue(bpmcAcceptDto.getEntity(), new TypeReference>() {}); + // 根据新增/删除调用不同的业务处理代码 + 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 diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/service/SyncIamService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/service/SyncIamService.java index f4d50da2..3753aeec 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/service/SyncIamService.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/service/SyncIamService.java @@ -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() + .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() + .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 roleResourceDtoList){ try { for (RoleResourceDto roleResourceDto : roleResourceDtoList){ - QueryWrapper queryWrapper = new QueryWrapper(); + QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("permission_id", roleResourceDto.getAmId()); queryWrapper.eq("role_id", roleResourceDto.getArId()); diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/DockingConstant.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/DockingConstant.java index 2e587bc6..3ebe29c0 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/DockingConstant.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/DockingConstant.java @@ -43,22 +43,22 @@ public class DockingConstant { /** * 竹云统一认证平台,接口类型:角色 */ - public static String BPMC_TYPE_ROLE = "D_AR"; + public static final String BPMC_TYPE_ROLE = "D_AR"; /** * 竹云统一认证平台,接口类型:功能权限 */ - public static String BPMC_TYPE_RESOURCE = "D_AM"; + public static final String BPMC_TYPE_RESOURCE = "D_AM"; /** * 竹云统一认证平台,接口类型:账号与应用角色关系 */ - public static String BPMC_TYPE_USER_ROLE = "R_USER_AR"; + public static final String BPMC_TYPE_USER_ROLE = "R_USER_AR"; /** * 竹云统一认证平台,接口类型:应用角色与应用功能权限关系 */ - public static String BPMC_TYPE_ROLE_RESOURCE = "R_AR_AM"; + public static final String BPMC_TYPE_ROLE_RESOURCE = "R_AR_AM"; /** * 竹云统一认证平台,操作类型:新增