SmsService.java 4.7 KB
package com.skua.modules.system.service;

import com.skua.core.context.BaseContextHandler;
import com.skua.core.util.push.IPushService;
import com.skua.core.util.push.MessageEntity;
import com.skua.core.util.push.PushMessageFactory;
import com.skua.modules.system.entity.SysUser;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

/**
 * @auther kangwei
 * @create 2025-02-24-10:38
 */
@Service
public class SmsService {
    @Autowired
    private ISysUserService userService;

    public void pushMsgNoProcessByRoleId(String messageTitle ,String messageBody  ,String roleId,String forwardTag){
        if(StringUtils.isNotEmpty(roleId)){
            List<SysUser> sysUserList = userService.queryUserByRoleId(roleId);
            pushMessage(sysUserList,messageTitle , messageBody  , forwardTag);
        }
    }

    /***
     * 信息推送:包含手机,web推送
     * @param messageTitle
     * @param messageBody
     * @param userIds
     * @param forwardTag
     */
    public void pushMsgNoProcess(String messageTitle ,String messageBody  ,String userIds,String forwardTag){
        if(StringUtils.isNotEmpty(userIds)){
            List<SysUser> sysUserList = userService.getUserByUserIds(userIds);
            pushMessage(sysUserList,messageTitle , messageBody , forwardTag);
        }
    }
    private void pushMessage(List<SysUser> sysUserList,String messageTitle ,String messageBody  ,String forwardTag){
        List<String> userCidList = sysUserList.stream().map(SysUser::getCid).filter(v -> StringUtils.isNotBlank(v)).collect(Collectors.toList());
        List<String> userIdList = sysUserList.stream().map(SysUser::getId).collect(Collectors.toList());

        MessageEntity messageEntity = new MessageEntity();
        messageEntity.setMessageTitle(messageTitle);
        messageEntity.setMessageBody(messageBody);
        messageEntity.setReceiveUser(userIdList);
        messageEntity.setReceiveUserCid(userCidList);//移动端推送
        messageEntity.setSendUser(BaseContextHandler.getUserName());
        messageEntity.setForwardTag(forwardTag);//消息提醒类型 保持唯一

        IPushService appPushService = PushMessageFactory.getPushService("MOB");
        IPushService webPushService = PushMessageFactory.getPushService("WEB");
        appPushService.pushMessage(messageEntity);
        webPushService.pushMessage(messageEntity);
    }

    /***
     *  手机推送
     * @param messageTitle
     * @param messageBody
     * @param userIds
     * @param forwardTag
     */
    public void appPushMsgNoProcess(String messageTitle ,String messageBody  ,String userIds,String forwardTag){
        if(StringUtils.isNotEmpty(userIds)){
            List<SysUser> sysUserList = userService.getUserByUserIds(userIds);
            List<String> userCidList = sysUserList.stream().map(SysUser::getCid).filter(v -> StringUtils.isNotBlank(v)).collect(Collectors.toList());

            MessageEntity messageEntity = new MessageEntity();
            messageEntity.setMessageTitle(messageTitle);
            messageEntity.setMessageBody(messageBody);
            messageEntity.setReceiveUserCid(userCidList);//移动端推送
            messageEntity.setSendUser(BaseContextHandler.getUserName());
            messageEntity.setForwardTag(forwardTag);//消息提醒类型 保持唯一

            IPushService appPushService = PushMessageFactory.getPushService("MOB");
            appPushService.pushMessage(messageEntity);
        }
    }

    /***
     *  web推送
     * @param messageTitle
     * @param messageBody
     * @param userIds
     * @param forwardTag
     */
    public void webPushMsgNoProcess(String messageTitle ,String messageBody  ,String userIds,String forwardTag){
        if(StringUtils.isNotEmpty(userIds)){
            List<SysUser> sysUserList = userService.getUserByUserIds(userIds);
            List<String> userCidList = sysUserList.stream().map(SysUser::getCid).filter(v -> StringUtils.isNotBlank(v)).collect(Collectors.toList());
            List<String> userIdList = sysUserList.stream().map(SysUser::getId).collect(Collectors.toList());

            MessageEntity messageEntity = new MessageEntity();
            messageEntity.setMessageTitle(messageTitle);
            messageEntity.setMessageBody(messageBody);
            messageEntity.setReceiveUser(userIdList);
            messageEntity.setSendUser(BaseContextHandler.getUserName());
            messageEntity.setForwardTag(forwardTag);//消息提醒类型 保持唯一

            IPushService webPushService = PushMessageFactory.getPushService("WEB");
            webPushService.pushMessage(messageEntity);
        }
    }
}