diff --git a/laws-module-system/src/main/java/com/jero/modules/system/controller/SysPermissionController.java b/laws-module-system/src/main/java/com/jero/modules/system/controller/SysPermissionController.java index af1d2d20..f6845961 100644 --- a/laws-module-system/src/main/java/com/jero/modules/system/controller/SysPermissionController.java +++ b/laws-module-system/src/main/java/com/jero/modules/system/controller/SysPermissionController.java @@ -8,6 +8,7 @@ import com.jero.common.api.vo.Result; import com.jero.common.constant.CommonConstant; import com.jero.common.system.vo.LoginUser; import com.jero.common.util.MD5Util; +import com.jero.common.util.UUIDGenerator; import com.jero.common.util.oConvertUtils; import com.jero.modules.system.entity.SysDepartPermission; import com.jero.modules.system.entity.SysPermission; @@ -232,6 +233,7 @@ public class SysPermissionController { public Result add(@RequestBody SysPermission permission) { try { permission = PermissionDataUtil.intelligentProcessData(permission); + permission.setId(UUIDGenerator.generate()); sysPermissionService.addPermission(permission); return Result.OK(OPTION_SUCCESS); } catch (Exception e) { @@ -249,6 +251,7 @@ public class SysPermissionController { public Result edit(@RequestBody SysPermission permission) { try { permission = PermissionDataUtil.intelligentProcessData(permission); + permission.setId(UUIDGenerator.generate()); sysPermissionService.editPermission(permission); return Result.OK(OPTION_SUCCESS); } catch (Exception e) { 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 f10bfe69..cd7c76c9 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 @@ -29,7 +29,7 @@ public class SysPermission implements Serializable { /** * id */ - @TableId(type = IdType.ASSIGN_ID) + @TableId(type = IdType.INPUT) private String id; /** 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 d280f167..ed10c47f 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 @@ -290,6 +290,13 @@ public class SyncIamController { 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); + } } if (bpmcAcceptDto.getType().equals(DockingConstant.BPMC_TYPE_USER_ROLE)){ @@ -302,7 +309,7 @@ public class SyncIamController { // 根据新增/编辑/删除调用不同的业务处理代码 } - return BpmcResponseDto.success(); + return bpmcResponseDto; } } 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 c2aa856d..98220d1a 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 @@ -16,6 +16,7 @@ import com.jero.modules.docking.iam.annotation.IamProperty; import com.jero.modules.docking.iam.dto.IamCommonAcceptDto; import com.jero.modules.docking.iam.dto.IamOrgAcceptDto; import com.jero.modules.docking.iam.dto.IamUserAcceptDto; +import com.jero.modules.docking.iam.dto.bpmc.ResourceDto; import com.jero.modules.docking.iam.dto.bpmc.RoleDto; import com.jero.modules.docking.iam.dto.response.*; import com.jero.modules.docking.iam.exception.IamGlobalException; @@ -24,9 +25,11 @@ import com.jero.modules.docking.iam.po.SendPoSystemPo; import com.jero.modules.docking.iam.po.SendReturnsPo; import com.jero.modules.docking.utils.DockingConstant; import com.jero.modules.system.entity.SysDepart; +import com.jero.modules.system.entity.SysPermission; import com.jero.modules.system.entity.SysRole; import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.service.ISysDepartService; +import com.jero.modules.system.service.ISysPermissionService; import com.jero.modules.system.service.ISysRoleService; import com.jero.modules.system.service.ISysUserService; import org.apache.commons.lang3.StringUtils; @@ -65,6 +68,9 @@ public class SyncIamService { @Resource private ISysRoleService sysRoleService; + @Resource + private ISysPermissionService sysPermissionService; + /** * 校验IAM调用时的账号密码是否正确 * 校验通过了正常走后续,不通过直接返回 @@ -627,6 +633,10 @@ public class SyncIamService { SysRole sysRole = sysRoleService.getById(roleDto.getId()); + if (sysRole == null){ + return BpmcResponseDto.error("未找到对应id角色,无法更新"); + } + if (StrUtil.isNotEmpty(roleDto.getName())){ sysRole.setRoleName(roleDto.getName()); } @@ -672,4 +682,132 @@ public class SyncIamService { return BpmcResponseDto.success(); } + /** + * 菜单创建 + */ + public BpmcResponseDto resourceCreateService(ResourceDto resourceDto){ + try { + SysPermission sysPermission = new SysPermission(); + sysPermission.setId(resourceDto.getId()); + sysPermission.setParentId(resourceDto.getParentId()); + sysPermission.setName(resourceDto.getName()); + sysPermission.setPermsType("1"); // 1显示2禁用,固定为1 + sysPermission.setIcon("copy"); //IAM 没有icon字段,设定为固定值 + sysPermission.setPerms(resourceDto.getCode()); + sysPermission.setComponent(resourceDto.getCode()); // 组件的路径 + sysPermission.setUrl(resourceDto.getUrl()); // 地址栏显示的路径 + sysPermission.setSortNo(Double.valueOf(resourceDto.getSort())); + + // sysPermission的 menuType (0:一级菜单;1:子菜单 ;2:按钮权限) + if (DockingConstant.BPMC_RESOURCE_TYPE_MENU == resourceDto.getType()){ + if (StrUtil.isEmpty(resourceDto.getParentId())){ + sysPermission.setMenuType(0); + } else { + sysPermission.setMenuType(1); + } + } else { + sysPermission.setMenuType(2); + } + + sysPermission.setCreateTime(new Date()); + sysPermission.setCreateBy(DockingConstant.IAM_SYSTEM_NAME); + sysPermission.setUpdateTime(resourceDto.getModifyTime()); + sysPermission.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME); + sysPermission.setDescription(resourceDto.getDescription()); + + // 以下为IAM没有的属性,设置默认值 + sysPermission.setRoute(true); // 是否路由,设固定值 + sysPermission.setKeepAlive(false); // 是否缓存,设固定值 + sysPermission.setDelFlag(CommonConstant.DEL_FLAG_0); + sysPermission.setRuleFlag(0); // 是否配置菜单的数据权限 1是0否 默认0 + sysPermission.setHidden(false); // 是否配置菜单的数据权限 1是0否 默认0 + sysPermission.setStatus("1"); // 按钮权限状态(0无效1有效) + sysPermission.setAlwaysShow(false); + sysPermission.setInternalOrExternal(false); // 默认为内部打开(即跳转页面) + + sysPermissionService.addPermission(sysPermission); + } catch (Exception e){ + e.printStackTrace(); + return BpmcResponseDto.error(e.getMessage()); + } + + return BpmcResponseDto.success(); + } + + /** + * 菜单更新 + */ + public BpmcResponseDto resourceUpdateService(ResourceDto resourceDto){ + try { + if (StrUtil.isEmpty(resourceDto.getId())){ + return BpmcResponseDto.error("菜单id为空,无法更新"); + } + + SysPermission sysPermission = sysPermissionService.getById(resourceDto.getId()); + + if (sysPermission == null){ + return BpmcResponseDto.error("未找到对应id功能权限,无法更新"); + } + + if (StrUtil.isNotEmpty(resourceDto.getParentId())){ + sysPermission.setParentId(resourceDto.getParentId()); + } + + if (StrUtil.isNotEmpty(resourceDto.getName())){ + sysPermission.setName(resourceDto.getName()); + } + + if (StrUtil.isNotEmpty(resourceDto.getCode())){ + sysPermission.setPerms(resourceDto.getCode()); + sysPermission.setComponent(resourceDto.getCode()); // 组件的路径 + } + + if (StrUtil.isNotEmpty(resourceDto.getUrl())){ + sysPermission.setUrl(resourceDto.getUrl()); // 地址栏显示的路径 + } + + sysPermission.setSortNo(Double.valueOf(resourceDto.getSort())); + + // sysPermission的 menuType (0:一级菜单;1:子菜单 ;2:按钮权限) + if (DockingConstant.BPMC_RESOURCE_TYPE_MENU == resourceDto.getType()){ + if (StrUtil.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()); + + sysPermissionService.editPermission(sysPermission); + } catch (Exception e){ + e.printStackTrace(); + return BpmcResponseDto.error(e.getMessage()); + } + + return BpmcResponseDto.success(); + } + + /** + * 菜单删除(真实删除) + */ + public BpmcResponseDto resourceDeleteService(ResourceDto resourceDto){ + try { + if (StrUtil.isEmpty(resourceDto.getId())){ + return BpmcResponseDto.error("菜单id为空,无法删除"); + } + + sysPermissionService.deletePermission(resourceDto.getId()); + } catch (Exception e){ + e.printStackTrace(); + return BpmcResponseDto.error(e.getMessage()); + } + + return BpmcResponseDto.success(); + } + } 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 bb703822..78a3c57a 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 @@ -69,4 +69,14 @@ public class DockingConstant { */ public static String BPMC_ACTION_DELETE = "delete"; + /** + * 竹云统一认证平台,功能权限(资源类型):菜单 + */ + public static int BPMC_RESOURCE_TYPE_MENU = 0; + + /** + * 竹云统一认证平台,功能权限(资源类型):按钮 + */ + public static int BPMC_RESOURCE_TYPE_BUTTON = 1; + }