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