guoshilong
2023-07-17 8b48146e45d092a3aba442d9889418a561e3aff5
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);
   }
}