From 738eb72bbdc7b568caae9ee38bc7aa0c5fa912c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=BE=99?= Date: Mon, 16 Dec 2024 17:11:16 +0800 Subject: [PATCH 1/9] =?UTF-8?q?feat:(REQ-3342)=20=E8=A7=92=E8=89=B2upsert?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=A2=9E=E5=8A=A0=E8=A7=92=E8=89=B2=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E7=9A=84=E4=BA=8B=E4=BB=B6mq?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tyr/server/event/inner/EventTypeEnum.java | 1 + .../event/payload/SaasRoleUpsertPayload.java | 20 +++++++++++++++++++ .../server/service/impl/RoleServiceImpl.java | 15 ++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 tyr-server/src/main/java/cn/axzo/tyr/server/event/payload/SaasRoleUpsertPayload.java 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(); } From ced714a9fa16b8bb9344005a358fab93182737d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=BE=99?= Date: Mon, 16 Dec 2024 17:31:27 +0800 Subject: [PATCH 2/9] =?UTF-8?q?feat:(REQ-3342)=20=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=A7=92=E8=89=B2=E6=97=B6=EF=BC=8CpersonId?= =?UTF-8?q?=E4=B8=BA0=E6=97=B6=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=91=8A?= =?UTF-8?q?=E8=AD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/RoleUserService.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleUserService.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleUserService.java index be98ed25..e76a6d18 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleUserService.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleUserService.java @@ -39,6 +39,7 @@ import cn.axzo.tyr.client.model.roleuser.req.RoleUserReq; import cn.axzo.tyr.client.model.roleuser.req.SuperAdminParam; import cn.axzo.tyr.client.model.roleuser.req.WorkerManagerRoleUserReq; import cn.axzo.tyr.client.model.vo.SaasRoleGroupVO; +import cn.axzo.tyr.server.common.util.DingTalkUtil; import cn.axzo.tyr.server.config.MqProducer; import cn.axzo.tyr.server.event.payload.SaasRoleUserRelationUpsertPayload; import cn.axzo.tyr.server.model.RoleUserInfo; @@ -58,6 +59,7 @@ import cn.axzo.tyr.server.service.SaasRoleGroupService; import cn.axzo.tyr.server.service.SaasRoleUserRelationService; import cn.axzo.tyr.server.service.SaasRoleUserService; import cn.axzo.tyr.server.utils.RpcExternalUtil; +import cn.azxo.framework.common.constatns.Constants; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; @@ -69,6 +71,7 @@ import com.google.common.collect.Sets; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.BooleanUtils; +import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Service; @@ -124,7 +127,12 @@ public class RoleUserService implements SaasRoleUserService { @Value("#{${axzo.role.superAdmin}}") private Map superAdminCodes; + @Value("${spring.profiles.active}") + private String env; + // 更新角色时,personId = 0的情况,线上有很多这样的数据,要排查到原因 + private static final String ACCESS_TOKEN = "11cdf26d77211ee887184844910bf249b94aa2675c7ce36d75a7aa87d619490f"; + private static final String SECRET = "SEC3c1be9e4fe4cc09f16eb4b2eebf91659f21d5bdfb1d764b52f3e47825e6bed3f"; /** * 获取分包负责人等特殊角色 * @return @@ -305,6 +313,20 @@ public class RoleUserService implements SaasRoleUserService { .build()) .build(); mqProducer.send(event); + + // 历史有的记录personId = 0,故加上告警,排查问题 + if (Objects.isNull(req.getPersonId()) || Objects.equals(req.getPersonId(), 0L)) { + String traceId = MDC.get(Constants.CTX_LOG_ID_MDC); + StringBuilder sb = new StringBuilder() + .append("环境:").append(env).append("\n") + .append("添加用户角色时,personId异常") + .append("personId:") + .append(req.getPersonId()) + .append("\n") + .append("traceId:") + .append(traceId); + DingTalkUtil.sendMessage(sb.toString(), ACCESS_TOKEN, SECRET); + } } @Override From 03918eadae94b43acf18ed7e7b2871965702e679 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=BE=99?= Date: Tue, 24 Dec 2024 10:52:54 +0800 Subject: [PATCH 3/9] =?UTF-8?q?feat:(REQ-3342)=20=E5=A2=9E=E5=8A=A0resourc?= =?UTF-8?q?eIds=E6=89=B9=E9=87=8F=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/roleuser/req/ListRoleUserRelationParam.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/ListRoleUserRelationParam.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/ListRoleUserRelationParam.java index 8175fcb8..f6e3ff72 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/ListRoleUserRelationParam.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/ListRoleUserRelationParam.java @@ -47,6 +47,12 @@ public class ListRoleUserRelationParam { @CriteriaField(field = "resourceId", operator = Operator.EQ) private Long resourceId; + /** + * 资源Id + */ + @CriteriaField(field = "resourceId", operator = Operator.IN) + private Set resourceIds; + /** * 是否显示 */ From fc6dad57c800f5b418699d2d9b7e65489c4b026d Mon Sep 17 00:00:00 2001 From: yangheng Date: Tue, 31 Dec 2024 18:26:36 +0800 Subject: [PATCH 4/9] =?UTF-8?q?feat(server):=20REQ-3342=20=E5=8E=BB?= =?UTF-8?q?=E6=8E=89@NotEmpty?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/tyr/client/model/req/ChangeGroupLeaderRoleReq.java | 1 - 1 file changed, 1 deletion(-) diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/ChangeGroupLeaderRoleReq.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/ChangeGroupLeaderRoleReq.java index 7787ea9d..620638a1 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/ChangeGroupLeaderRoleReq.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/ChangeGroupLeaderRoleReq.java @@ -41,6 +41,5 @@ public class ChangeGroupLeaderRoleReq { /** * 权限名列表 */ - @NotEmpty private List roleIdList = Lists.newArrayList(); } From f16704bba5ee27b6fcd09b6951d403b10b9042ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=BE=99?= Date: Wed, 22 Jan 2025 16:52:59 +0800 Subject: [PATCH 5/9] =?UTF-8?q?feat:(feature/REQ-3342)=20=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E5=B9=BF=E6=92=AD=E6=A8=A1=E5=BC=8F=E4=B8=8B=E6=B6=88?= =?UTF-8?q?=E8=B4=B9=E6=B6=88=E6=81=AF=E5=BC=82=E5=B8=B8=E8=BF=9B=E5=85=A5?= =?UTF-8?q?=E5=BB=B6=E8=BF=9F=E9=98=9F=E5=88=97=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E7=8E=B0=E5=9C=A8=E7=9A=84=E5=9C=BA=E6=99=AF=E5=A6=82?= =?UTF-8?q?=E6=9E=9C=E6=B6=88=E8=B4=B9=E5=A4=B1=E8=B4=A5=EF=BC=8C=E5=86=8D?= =?UTF-8?q?=E6=AC=A1=E9=87=8D=E8=AF=95=E4=B9=9F=E6=98=AF=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=EF=BC=8C=E6=89=80=E4=BB=A5=E5=90=8E=E7=BB=AD=E6=9C=89=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E5=81=9A=E9=87=8D=E8=AF=95=E5=90=8E=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E5=88=B0=E6=9C=AC=E5=9C=B0=E9=87=8D=E8=AF=95=EF=BC=8C=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E8=BF=9B=E8=A1=8C=E5=91=8A=E8=AD=A6=EF=BC=8C=E5=81=9A?= =?UTF-8?q?=E6=89=8B=E5=8A=A8=E8=A7=A6=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/RocketMQEventConfiguration.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/config/RocketMQEventConfiguration.java b/tyr-server/src/main/java/cn/axzo/tyr/server/config/RocketMQEventConfiguration.java index c27f8860..153112ac 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/config/RocketMQEventConfiguration.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/config/RocketMQEventConfiguration.java @@ -80,7 +80,11 @@ public class RocketMQEventConfiguration { @Override public void onMessage(MessageExt message) { - super.onEvent(message, eventConsumer); + try { + super.onEvent(message, eventConsumer); + } catch (Exception ex) { + log.warn("consumer thrones message error,", ex); + } } } @@ -99,7 +103,11 @@ public class RocketMQEventConfiguration { @Override public void onMessage(MessageExt message) { - super.onEvent(message, eventConsumer); + try { + super.onEvent(message, eventConsumer); + } catch (Exception ex) { + log.warn("consumer tyr message error,", ex); + } } } @@ -118,7 +126,11 @@ public class RocketMQEventConfiguration { @Override public void onMessage(MessageExt message) { - super.onEvent(message, eventConsumer); + try { + super.onEvent(message, eventConsumer); + } catch (Exception ex) { + log.warn("consumer apisixPlat message error,", ex); + } } } From c1c75930d6b4ee1839c0c2556c49bc9f4588c09c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=BE=99?= Date: Wed, 22 Jan 2025 17:30:50 +0800 Subject: [PATCH 6/9] =?UTF-8?q?feat:(feature/REQ-3342)=20=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E6=B6=88=E8=B4=B9=E6=B6=88=E6=81=AF=E6=97=B6=E5=87=BA?= =?UTF-8?q?=E7=8E=B0=E5=BC=82=E5=B8=B8=EF=BC=8C=E5=AF=BC=E8=87=B4=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E8=BF=9B=E5=85=A5=E9=87=8D=E8=AF=95=E9=98=9F=E5=88=97?= =?UTF-8?q?=EF=BC=8C=E6=B6=88=E8=B4=B9=E9=87=8D=E8=AF=95=E9=98=9F=E5=88=97?= =?UTF-8?q?=EF=BC=8C=E5=A6=82=E6=9E=9C=E5=87=BA=E7=8E=B0=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=B0=B1=E6=89=93=E6=97=A5=E5=BF=97=EF=BC=8C=E5=9B=A0=E4=B8=BA?= =?UTF-8?q?=E5=86=8D=E6=AC=A1=E9=87=8D=E8=AF=95=E4=B9=9F=E5=9F=BA=E6=9C=AC?= =?UTF-8?q?=E6=98=AF=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/RocketMQEventConfiguration.java | 65 ++++++++++++++++++- 1 file changed, 63 insertions(+), 2 deletions(-) diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/config/RocketMQEventConfiguration.java b/tyr-server/src/main/java/cn/axzo/tyr/server/config/RocketMQEventConfiguration.java index 153112ac..64564de8 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/config/RocketMQEventConfiguration.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/config/RocketMQEventConfiguration.java @@ -78,12 +78,31 @@ public class RocketMQEventConfiguration { @Autowired private EventConsumer eventConsumer; + @Override + public void onMessage(MessageExt message) { + super.onEvent(message, eventConsumer); + } + } + + @Profile("!unittest") + @Slf4j + @Component + @RocketMQMessageListener(topic = "%RETRY%GID_topic_thrones_${spring.profiles.active}", + consumerGroup = "GID_topic_thrones_${spring.application.name}_${spring.profiles.active}", + messageModel = MessageModel.BROADCASTING, + nameServer = "${rocketmq.name-server}" + ) + public static class RetryThronesListener extends BaseListener implements RocketMQListener { + + @Autowired + private EventConsumer eventConsumer; + @Override public void onMessage(MessageExt message) { try { super.onEvent(message, eventConsumer); } catch (Exception ex) { - log.warn("consumer thrones message error,", ex); + log.warn("retry consumer thrones message error,", ex); } } } @@ -101,12 +120,31 @@ public class RocketMQEventConfiguration { @Autowired private EventConsumer eventConsumer; + @Override + public void onMessage(MessageExt message) { + super.onEvent(message, eventConsumer); + } + } + + @Profile("!unittest") + @Slf4j + @Component + @RocketMQMessageListener(topic = "%RETRY%GID_topic_tyr_${spring.profiles.active}", + consumerGroup = "GID_topic_tyr_${spring.application.name}_${spring.profiles.active}", + messageModel = MessageModel.BROADCASTING, + nameServer = "${rocketmq.name-server}" + ) + public static class RetryTyrListener extends BaseListener implements RocketMQListener { + + @Autowired + private EventConsumer eventConsumer; + @Override public void onMessage(MessageExt message) { try { super.onEvent(message, eventConsumer); } catch (Exception ex) { - log.warn("consumer tyr message error,", ex); + log.warn("retry consumer tyr message error,", ex); } } } @@ -134,6 +172,29 @@ public class RocketMQEventConfiguration { } } + @Profile("!unittest") + @Slf4j + @Component + @RocketMQMessageListener(topic = "%RETRY%GID_topic_apisix_plat_${spring.profiles.active}", + consumerGroup = "GID_topic_apisix_plat_${spring.application.name}_${spring.profiles.active}", + messageModel = MessageModel.BROADCASTING, + nameServer = "${rocketmq.name-server}" + ) + public static class RetryApiSixPlatListener extends BaseListener implements RocketMQListener { + + @Autowired + private EventConsumer eventConsumer; + + @Override + public void onMessage(MessageExt message) { + try { + super.onEvent(message, eventConsumer); + } catch (Exception ex) { + log.warn("retry consumer apisixPlat message error,", ex); + } + } + } + @Bean EventHandlerRepository eventHandlerRepository() { return new EventHandlerRepository((ex, logText) -> { From 758e20ef88d88818649111740aa2d72348d94985 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=BE=99?= Date: Wed, 22 Jan 2025 17:49:40 +0800 Subject: [PATCH 7/9] =?UTF-8?q?feat:(feature/REQ-3342)=20=E6=B6=88?= =?UTF-8?q?=E8=B4=B9=E6=B6=88=E6=81=AF=E6=94=B9=E6=88=90=E9=A1=BA=E5=BA=8F?= =?UTF-8?q?=E6=B6=88=E8=B4=B9=EF=BC=8C=E5=87=BA=E7=8E=B0=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=90=8E=E4=B8=8D=E8=BF=9B=E5=85=A5=E9=87=8D=E8=AF=95=E9=98=9F?= =?UTF-8?q?=E5=88=97=EF=BC=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/tyr/server/config/RocketMQEventConfiguration.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/config/RocketMQEventConfiguration.java b/tyr-server/src/main/java/cn/axzo/tyr/server/config/RocketMQEventConfiguration.java index 64564de8..d5fd9be0 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/config/RocketMQEventConfiguration.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/config/RocketMQEventConfiguration.java @@ -71,6 +71,7 @@ public class RocketMQEventConfiguration { @RocketMQMessageListener(topic = "topic_thrones_${spring.profiles.active}", consumerGroup = "GID_topic_thrones_${spring.application.name}_${spring.profiles.active}", messageModel = MessageModel.BROADCASTING, + consumeMode = ConsumeMode.ORDERLY, nameServer = "${rocketmq.name-server}" ) public static class ThronesListener extends BaseListener implements RocketMQListener { @@ -113,6 +114,7 @@ public class RocketMQEventConfiguration { @RocketMQMessageListener(topic = "topic_tyr_${spring.profiles.active}", consumerGroup = "GID_topic_tyr_${spring.application.name}_${spring.profiles.active}", messageModel = MessageModel.BROADCASTING, + consumeMode = ConsumeMode.ORDERLY, nameServer = "${rocketmq.name-server}" ) public static class TyrListener extends BaseListener implements RocketMQListener { @@ -155,6 +157,7 @@ public class RocketMQEventConfiguration { @RocketMQMessageListener(topic = "topic_apisix_plat_${spring.profiles.active}", consumerGroup = "GID_topic_apisix_plat_${spring.application.name}_${spring.profiles.active}", messageModel = MessageModel.BROADCASTING, + consumeMode = ConsumeMode.ORDERLY, nameServer = "${rocketmq.name-server}" ) public static class ApiSixPlatListener extends BaseListener implements RocketMQListener { From 0b22477ca405333f842da06e15fa5da689061297 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=BE=99?= Date: Wed, 22 Jan 2025 18:10:02 +0800 Subject: [PATCH 8/9] =?UTF-8?q?feat:(feature/REQ-3342)=20=E6=B6=88?= =?UTF-8?q?=E8=B4=B9=E6=B6=88=E6=81=AF=E6=94=B9=E6=88=90=E9=A1=BA=E5=BA=8F?= =?UTF-8?q?=E6=B6=88=E8=B4=B9=EF=BC=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/tyr/server/config/RocketMQEventConfiguration.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/config/RocketMQEventConfiguration.java b/tyr-server/src/main/java/cn/axzo/tyr/server/config/RocketMQEventConfiguration.java index d5fd9be0..64564de8 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/config/RocketMQEventConfiguration.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/config/RocketMQEventConfiguration.java @@ -71,7 +71,6 @@ public class RocketMQEventConfiguration { @RocketMQMessageListener(topic = "topic_thrones_${spring.profiles.active}", consumerGroup = "GID_topic_thrones_${spring.application.name}_${spring.profiles.active}", messageModel = MessageModel.BROADCASTING, - consumeMode = ConsumeMode.ORDERLY, nameServer = "${rocketmq.name-server}" ) public static class ThronesListener extends BaseListener implements RocketMQListener { @@ -114,7 +113,6 @@ public class RocketMQEventConfiguration { @RocketMQMessageListener(topic = "topic_tyr_${spring.profiles.active}", consumerGroup = "GID_topic_tyr_${spring.application.name}_${spring.profiles.active}", messageModel = MessageModel.BROADCASTING, - consumeMode = ConsumeMode.ORDERLY, nameServer = "${rocketmq.name-server}" ) public static class TyrListener extends BaseListener implements RocketMQListener { @@ -157,7 +155,6 @@ public class RocketMQEventConfiguration { @RocketMQMessageListener(topic = "topic_apisix_plat_${spring.profiles.active}", consumerGroup = "GID_topic_apisix_plat_${spring.application.name}_${spring.profiles.active}", messageModel = MessageModel.BROADCASTING, - consumeMode = ConsumeMode.ORDERLY, nameServer = "${rocketmq.name-server}" ) public static class ApiSixPlatListener extends BaseListener implements RocketMQListener { From 40bb16577f316812904216c6c4b1297aab93f995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=BE=99?= Date: Sat, 8 Feb 2025 09:38:52 +0800 Subject: [PATCH 9/9] =?UTF-8?q?feat:(feature/REQ-3342)=20=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E8=8F=9C=E5=8D=95=E7=BB=84=E4=BB=B6=E8=B7=9F=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E8=B5=84=E6=BA=90=E5=85=B3=E8=81=94=E5=85=B3=E7=B3=BB?= =?UTF-8?q?=E5=9C=A8=EF=BC=8C=E4=BD=86=E6=98=AF=E5=89=8D=E7=AB=AF=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E5=B7=B2=E7=BB=8F=E4=B8=8D=E5=AD=98=E5=9C=A8=E7=9A=84?= =?UTF-8?q?=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tyr/server/service/impl/SaasFeatureResourceServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureResourceServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureResourceServiceImpl.java index 274c187f..b8fb98c0 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureResourceServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureResourceServiceImpl.java @@ -408,6 +408,8 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl pageElementOptional = saasPageElementFeatureResourceRelationService.list(pageElementFeatureResourceRelationReq) .stream() .map(PageElementFeatureResourceRelationResp::getPageElement) + // 兼容菜单组件跟前端资源关联关系在,但是前端资源已经不存在的场景 + .filter(Objects::nonNull) .findFirst(); if (!pageElementOptional.isPresent()) {