package com.iplatform.base.config; import com.iplatform.base.PushCacheProvider; import com.iplatform.base.push.DefaultPushListener; import com.iplatform.base.push.DefaultPushManager; import com.iplatform.base.push.MockSmsPush; import com.iplatform.base.push.SystemPush; import com.iplatform.base.service.PushServiceImpl; import com.iplatform.base.util.NotificationUtils; import com.iplatform.core.PlatformConfiguration; import com.walker.push.PushManager; import com.walker.push.PushStatusListener; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import java.util.ArrayList; import java.util.List; @Configuration public class PushConfig extends PlatformConfiguration { /** * 推送参数配置 * @return */ @Bean public PushProperties pushProperties(){ return new PushProperties(); } /** * 配置推送管理器对象 * @return * @date 2023-04-21 */ @Bean public PushManager pushManager(ThreadPoolTaskExecutor threadPoolTaskExecutor , PushProperties pushProperties, PushStatusListener pushStatusListener){ DefaultPushManager pushManager = new DefaultPushManager(); pushManager.setSmsId(pushProperties.getSmsPushName()); pushManager.setSmsTemplateCode(pushProperties.getSmsTemplateCode()); Object[] data = NotificationUtils.acquireMessagePushRules(pushProperties.getMessageType()); pushManager.setMessageParallel((Boolean) data[0]); String[] indexList = (String[])data[1]; if(indexList == null || indexList.length == 0){ throw new IllegalStateException("推送(普通消息)配置规则不存在!"); } List channelNameList = new ArrayList<>(4); for(String index: indexList){ channelNameList.add(index); } pushManager.setMessageChannelNames(channelNameList); pushManager.setThreadPoolTaskExecutor(threadPoolTaskExecutor); pushManager.setAsyncListener(pushStatusListener); // pushManager.setMailFrom(pushProperties.getMailFrom()); return pushManager; } /* *//** * 配置默认短信推送实现(一个通道可以有多个实现) * @return * @date 2023-04-24 *//* @Bean public Pushable mailPush(PushManager pushManager, PushProperties pushProperties, UserCacheProvider userCacheProvider){ DefaultMailPush mailPush = new DefaultMailPush(); // mailPush.setMailServerHost("smtp.126.com"); // mailPush.setMailServerPort("25"); // mailPush.setFromAddress("hnzzzhsl@126.com"); // mailPush.setFromPassword("UWBUXNLFJEANRCXX"); mailPush.setMailServerHost(pushProperties.getMailServer()); mailPush.setMailServerPort("25"); mailPush.setFromAddress(pushProperties.getMailFrom()); mailPush.setFromPassword(pushProperties.getMailPassword()); mailPush.setUserCacheProvider(userCacheProvider); mailPush.startup(); pushManager.register(mailPush); return mailPush; }*/ /** * 配置推送监听器,仅异步推送者需要使用 * @return * @date 2023-04-24 */ @Bean public PushStatusListener pushStatusListener(PushCacheProvider pushCacheProvider, PushServiceImpl pushService){ DefaultPushListener pushListener = new DefaultPushListener(); pushListener.setPushService(pushService); pushListener.setPushCacheProvider(pushCacheProvider); return pushListener; } /** * 注册'模拟短信'推送者 * @param pushManager * @return * @date 2023-04-24 */ @Bean public MockSmsPush mockSmsPush(PushManager pushManager){ MockSmsPush mockSmsPush = new MockSmsPush(); mockSmsPush.startup(); pushManager.register(mockSmsPush); return mockSmsPush; } /** * 注册默认的'系统消息'推送者,其实并不推送。 * @param pushManager * @return * @date 2023-04-24 */ @Bean public SystemPush systemPush(PushManager pushManager){ SystemPush systemPush = new SystemPush(); systemPush.startup(); pushManager.register(systemPush); return systemPush; } }