diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/EventTypeEnum.java b/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/EventTypeEnum.java index 5331efd5..c279e02a 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/EventTypeEnum.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/event/inner/EventTypeEnum.java @@ -13,6 +13,7 @@ public enum EventTypeEnum { PAGE_ELEMENT_FEATURE_RESOURCE_UPSERT("page-element-feature-resource", "page-element-feature-resource-upsert", "菜单-页面元素绑定关系更新"), SAAS_ROLE_USER_RELATION_REMOVED("saas-role-user-relation", "saas-role-user-relation-removed", "删除用户角色信息"), SAAS_ROLE_USER_RELATION_UPSERT("saas-role-user-relation", "saas-role-user-relation-upsert", "更新用户角色信息"), + SAAS_ROLE_UPSERT("saas-role", "saas-role-upsert", "更新角色信息"), ; EventTypeEnum(String model, String name, String desc) { diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/event/payload/SaasRoleUpsertPayload.java b/tyr-server/src/main/java/cn/axzo/tyr/server/event/payload/SaasRoleUpsertPayload.java new file mode 100644 index 00000000..b3a1c8d0 --- /dev/null +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/event/payload/SaasRoleUpsertPayload.java @@ -0,0 +1,20 @@ +package cn.axzo.tyr.server.event.payload; + +import cn.axzo.tyr.server.repository.entity.SaasRole; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SaasRoleUpsertPayload implements Serializable { + + private SaasRole newRole; + + private SaasRole oldRole; +} diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java index 993f3f89..9c15fe27 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java @@ -55,6 +55,7 @@ import cn.axzo.tyr.client.model.vo.SaveOrUpdateRoleVO; import cn.axzo.tyr.server.config.MqProducer; import cn.axzo.tyr.server.event.payload.RolePermissionCreatedPayload; import cn.axzo.tyr.server.event.payload.SaasFeatureResourceUpsertPayload; +import cn.axzo.tyr.server.event.payload.SaasRoleUpsertPayload; import cn.axzo.tyr.server.model.RelationOperateLogResourceBindRoleDO; import cn.axzo.tyr.server.model.RelationOperateLogRoleBindResourceDO; import cn.axzo.tyr.server.model.ResourcePermission; @@ -141,6 +142,7 @@ import java.util.stream.Stream; import static cn.axzo.tyr.server.event.inner.EventTypeEnum.ROLE_PERMISSION_CREATED; import static cn.axzo.tyr.server.event.inner.EventTypeEnum.SAAS_FEATURE_RESOURCE_UPSERT; +import static cn.axzo.tyr.server.event.inner.EventTypeEnum.SAAS_ROLE_UPSERT; import static cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation.NEW_FEATURE; import static cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation.OLD_FEATURE; @@ -497,6 +499,10 @@ public class RoleServiceImpl extends ServiceImpl List groupTrees = saveOrUpdateRole.getGroupTree(); // 验证角色分组信息 validRoleGroup(groupTrees); + SaasRole oldSaasRole = Optional.ofNullable(saveOrUpdateRole.getId()) + .map(id -> saasRoleDao.getById(id)) + .orElse(null); + SaasRole saasRole = validAndBuildRole(saveOrUpdateRole, now); //验证权限集信息 SaasPermissionGroup saasPermissionGroup = validPermissionGroupCommon(saveOrUpdateRole); @@ -544,6 +550,15 @@ public class RoleServiceImpl extends ServiceImpl .build()) .build(); mqProducer.send(event); + // 上面是因为原来做权限的缓存,需要角色权限的事件,因为代码没有收口,所以这里把最基本的角色相关的事件补上 + mqProducer.send(Event.builder() + .targetType("saasRoleId") + .eventCode(SAAS_ROLE_UPSERT.getEventCode()) + .data(SaasRoleUpsertPayload.builder() + .newRole(saasRoleDao.getById(saasRole.getId())) + .oldRole(oldSaasRole) + .build()) + .build()); return saasRole.getId(); }