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)); } }