diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/ClientConfiguration.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/ClientConfiguration.java deleted file mode 100644 index 662224c..0000000 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/ClientConfiguration.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.njcn.msgpush.module.push.client; - -import com.njcn.msgpush.module.push.client.factory.MessageProviderFactory; -import com.njcn.msgpush.module.push.client.factory.impl.AliyunProviderFactory; -import com.njcn.msgpush.module.push.client.factory.impl.TelecomProviderFactory; -import com.njcn.msgpush.module.push.client.factory.impl.UniPushProviderFactory; -import com.njcn.msgpush.module.push.dal.dataobject.channel.ChannelProviderConfigDO; -import com.njcn.msgpush.module.push.enums.ProviderTypeEnum; -import com.njcn.msgpush.module.push.service.channel.ChannelProviderConfigService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * @author caozehui - * @data 2026-02-10 - */ -@Configuration -public class ClientConfiguration { - - @Autowired - private ChannelProviderConfigService channelProviderConfigService; - - @Bean - public Map messageProviderFactoryMap() throws Exception { - List activeProviders = channelProviderConfigService.getActiveProviders(); - Map messageProviderFactoryMap = new HashMap<>(); - - for (ChannelProviderConfigDO config : activeProviders) { - switch (ProviderTypeEnum.getByCode(config.getProviderType())) { - case ALIYUN: { - MessageProviderFactory orDefault = messageProviderFactoryMap.getOrDefault(ProviderTypeEnum.ALIYUN.getCode(), new AliyunProviderFactory()); - messageProviderFactoryMap.put(ProviderTypeEnum.ALIYUN.getCode(), orDefault); - } - break; - case TELECOM: { - MessageProviderFactory orDefault = messageProviderFactoryMap.getOrDefault(ProviderTypeEnum.TELECOM.getCode(), new TelecomProviderFactory()); - messageProviderFactoryMap.put(ProviderTypeEnum.TELECOM.getCode(), orDefault); - } - break; - case UNIPUSH: { - MessageProviderFactory orDefault = messageProviderFactoryMap.getOrDefault(ProviderTypeEnum.UNIPUSH.getCode(), new UniPushProviderFactory()); - messageProviderFactoryMap.put(ProviderTypeEnum.UNIPUSH.getCode(), orDefault); - } - break; - default: - throw new IllegalArgumentException("该" + config.getProviderType() + "服务商暂不支持"); - } - } - - if (messageProviderFactoryMap.isEmpty()) { - throw new Exception("当前没有激活的渠道服务商!"); - } - return messageProviderFactoryMap; - } -} diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/factory/MessageProviderFactoryRegistry.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/factory/MessageProviderFactoryRegistry.java new file mode 100644 index 0000000..b51ebd4 --- /dev/null +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/factory/MessageProviderFactoryRegistry.java @@ -0,0 +1,29 @@ +package com.njcn.msgpush.module.push.client.factory; + +import com.njcn.msgpush.module.push.client.factory.impl.AliyunProviderFactory; +import com.njcn.msgpush.module.push.client.factory.impl.TelecomProviderFactory; +import com.njcn.msgpush.module.push.client.factory.impl.UniPushProviderFactory; +import com.njcn.msgpush.module.push.enums.ProviderTypeEnum; +import org.springframework.stereotype.Component; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +@Component +public class MessageProviderFactoryRegistry { + + private final Map factoryMap; + + public MessageProviderFactoryRegistry() { + Map factories = new HashMap<>(); + factories.put(ProviderTypeEnum.ALIYUN.getCode(), new AliyunProviderFactory()); + factories.put(ProviderTypeEnum.TELECOM.getCode(), new TelecomProviderFactory()); + factories.put(ProviderTypeEnum.UNIPUSH.getCode(), new UniPushProviderFactory()); + this.factoryMap = Collections.unmodifiableMap(factories); + } + + public MessageProviderFactory getFactory(String providerType) { + return factoryMap.get(providerType); + } +} diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/controller/admin/channel/ChannelProviderConfigController.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/controller/admin/channel/ChannelProviderConfigController.java index b251e7e..d912edc 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/controller/admin/channel/ChannelProviderConfigController.java +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/controller/admin/channel/ChannelProviderConfigController.java @@ -3,30 +3,27 @@ package com.njcn.msgpush.module.push.controller.admin.channel; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.msgpush.framework.common.pojo.CommonResult; -import com.njcn.msgpush.module.push.client.factory.MessageProviderFactory; -import com.njcn.msgpush.module.push.client.factory.impl.AliyunProviderFactory; -import com.njcn.msgpush.module.push.client.factory.impl.TelecomProviderFactory; -import com.njcn.msgpush.module.push.client.factory.impl.UniPushProviderFactory; import com.njcn.msgpush.module.push.controller.admin.channel.vo.ChannelProviderConfigReqVO; import com.njcn.msgpush.module.push.dal.dataobject.channel.ChannelProviderConfigDO; -import com.njcn.msgpush.module.push.enums.ProviderTypeEnum; import com.njcn.msgpush.module.push.service.channel.ChannelProviderConfigService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; import java.util.List; -import java.util.Map; import static com.njcn.msgpush.framework.common.pojo.CommonResult.success; - @Tag(name = "管理后台 - 渠道服务商") @Slf4j @Validated @@ -37,10 +34,6 @@ public class ChannelProviderConfigController { @Autowired private ChannelProviderConfigService channelProviderConfigService; - @Autowired - @Qualifier("messageProviderFactoryMap") - private Map messageProviderFactoryMap; - @PostMapping("/page") @Operation(summary = "分页查询渠道服务商列表") @PreAuthorize("@ss.hasPermission('push:channel:page')") @@ -67,9 +60,9 @@ public class ChannelProviderConfigController { @PostMapping("/delete") @Operation(summary = "删除渠道服务商") @PreAuthorize("@ss.hasPermission('push:channel:delete')") - @Parameter(name = "ids", description = "id列表", required = true) + @Parameter(name = "ids", description = "id 列表", required = true) public CommonResult delete(@RequestParam("ids") List ids) { - boolean res = channelProviderConfigService.removeBatchByIds(ids); + boolean res = channelProviderConfigService.deleteByIds(ids); return success(res); } @@ -78,46 +71,7 @@ public class ChannelProviderConfigController { @PreAuthorize("@ss.hasPermission('push:channel:toggle')") @Parameter(name = "id", description = "id", required = true) public CommonResult toggleEnableChannelProvider(@RequestParam("id") String id) { - ChannelProviderConfigDO channelProviderConfigDO = channelProviderConfigService.toggleEnableField(id); - - if (channelProviderConfigDO.getEnabled() == 1) { - registerProviderBean(channelProviderConfigDO.getProviderType()); - } else { - removeProviderBean(channelProviderConfigDO.getProviderType()); - } + channelProviderConfigService.toggleEnableField(id); return success(null); } - - /** - * 添加指定providerType服务商对应的bean - * - * @param providerType 服务商类型,例如:aliyun\telecom\UniPush - */ - public void registerProviderBean(String providerType) { - switch (ProviderTypeEnum.getByCode(providerType)) { - case ALIYUN: { - messageProviderFactoryMap.put(ProviderTypeEnum.ALIYUN.getCode(), new AliyunProviderFactory()); - } - break; - case TELECOM: { - messageProviderFactoryMap.put(ProviderTypeEnum.TELECOM.getCode(), new TelecomProviderFactory()); - } - break; - case UNIPUSH: { - messageProviderFactoryMap.put(ProviderTypeEnum.UNIPUSH.getCode(), new UniPushProviderFactory()); - } - break; - default: - throw new IllegalArgumentException("该" + providerType + "服务商暂不支持"); - } - } - - /** - * 移除指定providerType服务商对应的bean - * - * @param providerType 服务商类型,例如:aliyun\telecom\UniPush - */ - public void removeProviderBean(String providerType) { - messageProviderFactoryMap.remove(providerType); - } } diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/channel/ChannelProviderConfigMapper.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/channel/ChannelProviderConfigMapper.java index 056eeeb..88b6a03 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/channel/ChannelProviderConfigMapper.java +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/channel/ChannelProviderConfigMapper.java @@ -4,10 +4,6 @@ import com.njcn.msgpush.framework.mybatis.core.mapper.BaseMapperX; import com.njcn.msgpush.module.push.dal.dataobject.channel.ChannelProviderConfigDO; import org.apache.ibatis.annotations.Mapper; -import java.util.List; - @Mapper public interface ChannelProviderConfigMapper extends BaseMapperX { - - List getActiveProviders(); } diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/channel/mapping/ChannelProviderConfigMapper.xml b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/channel/mapping/ChannelProviderConfigMapper.xml deleted file mode 100644 index 3caab48..0000000 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/channel/mapping/ChannelProviderConfigMapper.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/retry/MessageRetryQueueMapper.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/retry/MessageRetryQueueMapper.java index 14edc0c..905d125 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/retry/MessageRetryQueueMapper.java +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/retry/MessageRetryQueueMapper.java @@ -18,6 +18,7 @@ public interface MessageRetryQueueMapper extends BaseMapperX selectNeedRetryMessages(@Param("currentTime") LocalDateTime currentTime, + List selectNeedRetryMessages(@Param("channel") String channel, + @Param("currentTime") LocalDateTime currentTime, @Param("limit") int limit); } diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/retry/mapping/MessageRetryQueueMapper.xml b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/retry/mapping/MessageRetryQueueMapper.xml index 1bdae88..061c71e 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/retry/mapping/MessageRetryQueueMapper.xml +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/retry/mapping/MessageRetryQueueMapper.xml @@ -5,7 +5,8 @@