diff --git a/msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/InfraServerApplication.java b/msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/InfraServerApplication.java index 40eb362..1c17d0b 100644 --- a/msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/InfraServerApplication.java +++ b/msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/InfraServerApplication.java @@ -2,6 +2,7 @@ package com.njcn.msgpush.module.infra; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; /** * 项目的启动类 @@ -9,6 +10,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * * @author hongawen */ +@EnableFeignClients @SpringBootApplication public class InfraServerApplication { diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/dataobject/retry/MessageRetryHistoryDO.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/dataobject/retry/MessageRetryHistoryDO.java new file mode 100644 index 0000000..1eb1075 --- /dev/null +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/dataobject/retry/MessageRetryHistoryDO.java @@ -0,0 +1,64 @@ +package com.njcn.msgpush.module.push.dal.dataobject.retry; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.njcn.msgpush.framework.mybatis.core.dataobject.BaseDO; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; + +/** + * @author caozehui + * @data 2026-03-04 + */ +@Data +@TableName("push_message_retry_queue") +@EqualsAndHashCode(callSuper = true) +public class MessageRetryHistoryDO extends BaseDO { + private Integer id; + + /** + * 关联 message_record 的 message_id + */ + private String messageId; + + /** + * 重试序号:0=首次发送,1=第1次重试,2=第2次重试 + */ + private Integer retrySequence; + + /** + * 使用的服务商类型 + */ + private String providerType; + + /** + * 发送时间 + */ + private LocalDateTime sendTime; + + /** + * 耗时(毫秒) + */ + private Integer costTime; + + /** + * 状态:success/failed + */ + private String status; + + /** + * 错误码 + */ + private String errorCode; + + /** + * 错误信息 + */ + private String errorMsg; + + /** + * 第三方消息ID + */ + private String thirdPartyId; +} diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/retry/MessageRetryHistoryMapper.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/retry/MessageRetryHistoryMapper.java new file mode 100644 index 0000000..bc3cf4f --- /dev/null +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/retry/MessageRetryHistoryMapper.java @@ -0,0 +1,13 @@ +package com.njcn.msgpush.module.push.dal.mysql.retry; + +import com.njcn.msgpush.framework.mybatis.core.mapper.BaseMapperX; +import com.njcn.msgpush.module.push.dal.dataobject.retry.MessageRetryHistoryDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author caozehui + * @data 2026-03-04 + */ +@Mapper +public interface MessageRetryHistoryMapper extends BaseMapperX { +} diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/message/MessageRecordServiceImpl.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/message/MessageRecordServiceImpl.java index 9992cc1..b948835 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/message/MessageRecordServiceImpl.java +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/message/MessageRecordServiceImpl.java @@ -14,8 +14,10 @@ import com.njcn.msgpush.module.push.constant.MsgPushConstant; import com.njcn.msgpush.module.push.controller.admin.message.vo.MessageRecordReqVO; import com.njcn.msgpush.module.push.dal.dataobject.channel.ChannelProviderConfigDO; import com.njcn.msgpush.module.push.dal.dataobject.message.MessageRecordDO; +import com.njcn.msgpush.module.push.dal.dataobject.retry.MessageRetryHistoryDO; import com.njcn.msgpush.module.push.dal.mysql.message.MessageRecordMapper; import com.njcn.msgpush.module.push.service.channel.ChannelProviderConfigService; +import com.njcn.msgpush.module.push.service.retry.MessageRetryHistoryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; @@ -33,6 +35,9 @@ public class MessageRecordServiceImpl extends ServiceImpl implements MessageRetryHistoryService { + @Override + public boolean add(MessageRetryHistoryDO messageRetryHistoryDO) { + return this.add(messageRetryHistoryDO); + } + + public Integer getMaxRetrySequence(String messageId) { + MessageRetryHistoryDO one = this.lambdaQuery().eq(MessageRetryHistoryDO::getMessageId, messageId) + .orderByDesc(MessageRetryHistoryDO::getRetrySequence) + .last("limit 1") + .one(); + return ObjectUtil.isNull(one) ? 0 : one.getRetrySequence() + 1; + } +} diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/resources/application-local.yaml b/msgpush-module-push/msgpush-module-push-server/src/main/resources/application-local.yaml index 772c066..d5d4d0b 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/resources/application-local.yaml +++ b/msgpush-module-push/msgpush-module-push-server/src/main/resources/application-local.yaml @@ -1,26 +1,26 @@ --- #################### 注册中心 + 配置中心相关配置 #################### -#spring: -# cloud: -# nacos: -# server-addr: 192.168.1.103:18848 # Nacos 服务器地址 -# username: # Nacos 账号 -# password: # Nacos 密码 -# discovery: # 【配置中心】配置项 -# namespace: msgCenter # 命名空间。这里使用 dev 开发环境 -# group: DEV # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP -# metadata: -# version: 1.0.0 # 服务实例的版本号,可用于灰度发布 -# config: # 【注册中心】配置项 -# namespace: msgCenter # 命名空间。这里使用 dev 开发环境 -# group: DEV # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP spring: cloud: nacos: - discovery: - enabled: false - config: - enabled: false + server-addr: 192.168.1.103:18848 # Nacos 服务器地址 + username: # Nacos 账号 + password: # Nacos 密码 + discovery: # 【配置中心】配置项 + namespace: dev # 命名空间。这里使用 dev 开发环境 + group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP + metadata: + version: 1.0.0 # 服务实例的版本号,可用于灰度发布 + config: # 【注册中心】配置项 + namespace: dev # 命名空间。这里使用 dev 开发环境 + group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP +#spring: +# cloud: +# nacos: +# discovery: +# enabled: false +# config: +# enabled: false --- #################### 数据库相关配置 #################### diff --git a/msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/SystemServerApplication.java b/msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/SystemServerApplication.java index f3390be..34c72a0 100644 --- a/msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/SystemServerApplication.java +++ b/msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/SystemServerApplication.java @@ -2,6 +2,7 @@ package com.njcn.msgpush.module.system; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; /** * 项目的启动类