guoshilong
2023-07-18 6aa1ef804ab91c4d9d6b069fb22f8f0ca81e13c7
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java
@@ -6,10 +6,13 @@
import cn.gistack.sm.message.entity.MessageRecord;
import cn.gistack.sm.message.feign.IMessageClient;
import lombok.AllArgsConstructor;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.tool.utils.Func;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -30,31 +33,20 @@
   }
   @Override
   public UniCloudReturnRes pushMessage(PushVO pushVO) {
      RestTemplate template = new RestTemplate();
      Map<String, Object> params = new LinkedHashMap<>();
      params.put("push_clientid",pushVO.getCIds());
      params.put("title",pushVO.getTitle());
      params.put("content",pushVO.getContent());
      UniCloudReturnRes uniCloudReturnRes = template.getForObject(UNI_CLOUD_PUSH_URL,UniCloudReturnRes.class,params);
      return uniCloudReturnRes;
   }
   @Override
   public Boolean pushMessageList(List<MessageRecord> messageRecordList) {
      PushVO pushVO = new PushVO();
      List<String> cIdList = new ArrayList<>();
      //相同的消息推送给多用户
      messageRecordList.forEach(messageRecord -> {
         //获取用户cId
         String clientId = getClientIdByUserId(messageRecord.getRecipient());
         pushVO.getCIds().add(clientId);
         pushVO.setTitle(messageRecord.getTheme());
         pushVO.setContent(messageRecord.getContent());
         cIdList.add(clientId);
      });
      UniCloudReturnRes uniCloudReturnRes = pushMessage(pushVO);
      return uniCloudReturnRes.getErrCode().equals(0)?true:false;
      pushVO.setCIds(cIdList);
      pushVO.setTitle(messageRecordList.get(0).getTheme());
      pushVO.setContent(messageRecordList.get(0).getContent());
      return pushMessage(pushVO);
   }
   @Override
@@ -69,10 +61,11 @@
      List<MessageRecord> notReadList = messageClient.getNotReadList(userId);
      PushVO pushVO = new PushVO();
      List<String> cIdList = new ArrayList<>();
      //设置cId
      pushVO.getCIds().add(getClientIdByUserId(userId));
      cIdList.add(getClientIdByUserId(userId));
      pushVO.setCIds(cIdList);
      //设置标题和内容
      notReadList.forEach(messageRecord -> {
         pushVO.setTitle(messageRecord.getTheme());
@@ -84,6 +77,21 @@
      return true;
   }
   @Override
   public Boolean pushMessageByUserId(PushVO pushVO) {
      if (Func.isEmpty(pushVO.getUserId())){
         throw new ServiceException("请填写用户id!");
      }
      String clientIdByUserId = getClientIdByUserId(pushVO.getUserId());
      List<String> cIdList = new ArrayList<>();
      cIdList.add(clientIdByUserId);
      pushVO.setCIds(cIdList);
      return pushMessage(pushVO);
   }
   /**
    * 根据用户id从redis中获取cid
    * @param userId
@@ -92,4 +100,25 @@
   public String getClientIdByUserId(String userId){
      return bladeRedis.get(PUSH_CLIENT_ID+userId);
   }
   /**
    * 消息推送
    * @param pushVO
    * @return
    */
   public Boolean pushMessage(PushVO pushVO){
      RestTemplate template = new RestTemplate();
      Map<String, Object> params = new LinkedHashMap<>();
      //用户cId,可数组,可字符串
      params.put("push_clientid",pushVO.getCIds());
      //标题
      params.put("title",pushVO.getTitle());
      //内容
      params.put("content",pushVO.getContent());
//      UniCloudReturnRes uniCloudReturnRes = template.getForObject(UNI_CLOUD_PUSH_URL,UniCloudReturnRes.class,params);
      UniCloudReturnRes uniCloudReturnRes = template.postForObject(UNI_CLOUD_PUSH_URL,params,UniCloudReturnRes.class);
      return uniCloudReturnRes.getErrCode().equals(0)?true:false;
   }
}