guoshilong
2023-07-17 8b48146e45d092a3aba442d9889418a561e3aff5
push
7 files modified
131 ■■■■■ changed files
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/message/feign/IMessageClient.java 9 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/message/feign/IMessageClientFallback.java 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java 7 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/controller/PushController.java 20 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/IPushService.java 29 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java 52 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/message/feign/MessageClient.java 9 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/message/feign/IMessageClient.java
@@ -23,6 +23,7 @@
    String API_PREFIX = "/client";
    String SAVE_MESSAGE_RECORD = API_PREFIX + "/saveMessageRecord";
    String GET_NOT_READ_NUMBER = API_PREFIX + "/getNotReadNumber";
    String GET_NOT_READ_LIST = API_PREFIX + "/getNotReadList";
    /**
     * 保存站内信记录信息
@@ -40,4 +41,12 @@
     */
    @GetMapping(GET_NOT_READ_NUMBER)
    Integer getNotReadNumber(@RequestParam("phone") String phone);
    /**
     * 查询用户未读消息列表
     * @param userId
     * @return
     */
    @GetMapping(GET_NOT_READ_LIST)
    List<MessageRecord> getNotReadList(@RequestParam("userId")String userId);
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/message/feign/IMessageClientFallback.java
@@ -22,4 +22,9 @@
    public Integer getNotReadNumber(String phone) {
        return null;
    }
    @Override
    public List<MessageRecord> getNotReadList(String userId) {
        return null;
    }
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java
@@ -9,6 +9,7 @@
import cn.gistack.alerts.notice.constant.ZtConfigConstant;
import cn.gistack.alerts.notice.enums.PersonEnum;
import cn.gistack.alerts.notice.util.FormatUtil;
import cn.gistack.alerts.push.service.IPushService;
import cn.gistack.alerts.sms.entity.SmsTemplate;
import cn.gistack.alerts.sms.service.ISmsTemplateService;
import cn.gistack.alerts.sms.vo.SmsRequestTemplate;
@@ -63,6 +64,9 @@
    @Autowired
    private IUserClient userClient;
    @Autowired
    private IPushService pushService;
@@ -536,6 +540,9 @@
            R<List<User>> listR = userClient.userInfoByPhone("000000", messageRecord.getRecipient());
            messageRecord.setRecipient(listR.getData().get(0).getId().toString());
        }
        //给app推送消息
        pushService.pushMessageList(messageRecordList);
        // 保存记录
        messageClient.saveMessageRecord(messageRecordList);
        // 发起通知
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/controller/PushController.java
@@ -36,4 +36,24 @@
        return R.data(pushService.pushMessage(pushVO));
    }
    /**
     * 清空redis中的缓存
     * @param userId
     * @return
     */
    @PostMapping("/clearCId")
    public R clearCId(String userId){
        return R.data(pushService.clearCId(userId));
    }
    /**
     * 应用唤醒推送消息
     * @param userId
     * @return
     */
    @PostMapping("/pushMessageOnLaunch")
    public R pushMessageOnLaunch(String userId){
        return R.data(pushService.pushMessageOnLaunch(userId));
    }
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/IPushService.java
@@ -2,6 +2,9 @@
import cn.gistack.alerts.push.vo.PushVO;
import cn.gistack.alerts.push.vo.UniCloudReturnRes;
import cn.gistack.sm.message.entity.MessageRecord;
import java.util.List;
public interface IPushService {
@@ -12,5 +15,31 @@
     */
    Boolean saveCId(String userId,String cId);
    /**
     * 推送消息
     * @param pushVO
     * @return
     */
    UniCloudReturnRes pushMessage(PushVO pushVO);
    /**
     * 推送消息
     * @param messageRecordList
     * @return
     */
    Boolean pushMessageList(List<MessageRecord> messageRecordList);
    /**
     * 清空redis
     * @param userId
     * @return
     */
    Boolean clearCId(String userId);
    /**
     * 用户唤醒应用后推送消息
     * @param userId
     * @return
     */
    Boolean pushMessageOnLaunch(String userId);
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java
@@ -3,12 +3,15 @@
import cn.gistack.alerts.push.service.IPushService;
import cn.gistack.alerts.push.vo.PushVO;
import cn.gistack.alerts.push.vo.UniCloudReturnRes;
import cn.gistack.sm.message.entity.MessageRecord;
import cn.gistack.sm.message.feign.IMessageClient;
import lombok.AllArgsConstructor;
import org.springblade.core.redis.cache.BladeRedis;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@Service
@@ -18,6 +21,7 @@
    private static final String UNI_CLOUD_PUSH_URL = "https://fc-mp-ad1ed7e3-700e-4fca-abae-0d097cc222b5.next.bspapp.com/push";
    private BladeRedis bladeRedis;
    private IMessageClient messageClient;
    @Override
    public Boolean saveCId(String userId,String cId) {
@@ -32,10 +36,56 @@
        Map<String, Object> params = new LinkedHashMap<>();
        Object o = bladeRedis.get(PUSH_CLIENT_ID + pushVO.getUserId());
        params.put("push_clientid",bladeRedis.get(PUSH_CLIENT_ID + pushVO.getUserId()));
        params.put("push_clientid",pushVO.getCIds());
        params.put("title",pushVO.getTitle());
        params.put("content",pushVO.getContent());
        UniCloudReturnRes uniCloudReturnRes = template.postForObject(UNI_CLOUD_PUSH_URL, params, UniCloudReturnRes.class);
        return uniCloudReturnRes;
    }
    @Override
    public Boolean pushMessageList(List<MessageRecord> messageRecordList) {
        PushVO pushVO = new PushVO();
        messageRecordList.forEach(messageRecord -> {
            String clientId = getClientIdByUserId(messageRecord.getRecipient());
            pushVO.getCIds().add(clientId);
            pushVO.setTitle(messageRecord.getTheme());
            pushVO.setContent(messageRecord.getContent());
        });
        UniCloudReturnRes uniCloudReturnRes = pushMessage(pushVO);
        return uniCloudReturnRes.getErrCode().equals(0)?true:false;
    }
    @Override
    public Boolean clearCId(String userId) {
        Boolean del = bladeRedis.del(PUSH_CLIENT_ID + userId);
        return del;
    }
    @Override
    public Boolean pushMessageOnLaunch(String userId) {
        //获取未读的消息列表
        List<MessageRecord> notReadList = messageClient.getNotReadList(userId);
        PushVO pushVO = new PushVO();
        //设置cId
        pushVO.getCIds().add(getClientIdByUserId(userId));
        //设置标题和内容
        notReadList.forEach(messageRecord -> {
            pushVO.setTitle(messageRecord.getTheme());
            pushVO.setContent(messageRecord.getContent());
            //推送消息
            pushMessage(pushVO);
        });
        return true;
    }
    public String getClientIdByUserId(String userId){
        return bladeRedis.get(PUSH_CLIENT_ID+userId);
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/message/feign/MessageClient.java
@@ -10,6 +10,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tenant.annotation.NonDS;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -58,4 +59,12 @@
    public Integer getNotReadNumber(String phone) {
        return messageRecordService.getNotReadNumber(phone);
    }
    @Override
    public List<MessageRecord> getNotReadList(String userId) {
        MessageRecord messageRecord = new MessageRecord();
        messageRecord.setRecipient(userId);
        messageRecord.setStatus(0);
        return messageRecordService.list(Condition.getQueryWrapper(messageRecord));
    }
}