admin
2020-11-28 dc5be7d38446f70e6ff86df311119c32b41fe7f8
fanli/src/main/java/com/yeshi/fanli/service/impl/push/OPPOPushServiceImpl.java
@@ -1,13 +1,12 @@
package com.yeshi.fanli.service.impl.push;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.*;
import javax.annotation.Resource;
import com.yeshi.fanli.dto.push.PushBaseContent;
import com.yeshi.fanli.entity.SystemEnum;
import com.yeshi.fanli.util.Constant;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@@ -37,10 +36,10 @@
   @Resource
   private UserCustomSettingsService userCustomSettingsService;
   private List<Integer> getVersionCodeList(List<Integer> versionCodeList) {
   private List<Integer> getVersionCodeList(List<Integer> versionCodeList,SystemEnum system) {
      List<Integer> versionList = new ArrayList<>();
      if (versionCodeList == null) {// 全推
         List<AppVersionInfo> appInfoList = appVersionService.listByPlatformAndMinVersionCode("android", 51);
         List<AppVersionInfo> appInfoList = appVersionService.listByPlatformAndMinVersionCode("android", 51,system);
         if (appInfoList != null)
            for (AppVersionInfo version : appInfoList) {
               versionList.add(version.getVersionCode());
@@ -58,50 +57,49 @@
   @Async("pushExecutor")
   @Override
   public void pushGoods(Long uid, Long auctionId, String title, String content, List<Integer> versionCodeList)
   public void pushGoods(Long uid, Long auctionId, PushBaseContent baseContent)
         throws PushException {
      push(PushTypeEnum.goodsdetail, uid, title, content, null, null, auctionId, versionCodeList);
      push(PushTypeEnum.goodsdetail, uid, null, null, auctionId, baseContent);
   }
   @Async("pushExecutor")
   @Override
   public void pushUrl(Long uid, String url, String title, String content, List<Integer> versionCodeList)
   public void pushUrl(Long uid, String url,  PushBaseContent baseContent)
         throws PushException {
      push(PushTypeEnum.url, uid, title, content, null, url, null, versionCodeList);
      push(PushTypeEnum.url, uid, null, url, null, baseContent);
   }
   @Async("pushExecutor")
   @Override
   public void pushZNX(Long uid, String title, String content, List<Integer> versionCodeList) throws PushException {
      push(PushTypeEnum.ZNX, uid, title, content, null, null, null, versionCodeList);
   public void pushZNX(Long uid,  PushBaseContent baseContent) throws PushException {
      push(PushTypeEnum.ZNX, uid,  null, null, null, baseContent);
   }
   @Async("pushExecutor")
   @Override
   public void pushWEEX(Long uid, String title, String content, String weexUrl, List<Integer> versionCodeList)
   public void pushWEEX(Long uid,String weexUrl, PushBaseContent baseContent)
         throws PushException {
      push(PushTypeEnum.weex, uid, title, content, weexUrl, null, null, versionCodeList);
      push(PushTypeEnum.weex, uid,  weexUrl, null, null, baseContent);
   }
   @Async("pushExecutor")
   @Override
   public void pushBaiChuanUrl(Long uid, String title, String content, String url, List<Integer> versionCodeList)
   public void pushBaiChuanUrl(Long uid,String url, PushBaseContent baseContent)
         throws PushException {
      push(PushTypeEnum.baichuan, uid, title, content, null, url, null, versionCodeList);
      push(PushTypeEnum.baichuan, uid, null, url, null, baseContent);
   }
   @Async("pushExecutor")
   @Override
   public void pushWelfareCenter(Long uid, String title, String content, List<Integer> versionCodeList)
   public void pushWelfareCenter(Long uid, PushBaseContent baseContent)
         throws PushException {
      push(PushTypeEnum.welfare, uid, title, content, null, null, null, versionCodeList);
      push(PushTypeEnum.welfare, uid, null, null, null, baseContent);
   }
   @Override
   public void pushUserSignInNotification(Long uid, String title, String content, List<Integer> versionCodeList)
   public void pushUserSignInNotification(Long uid, PushBaseContent baseContent)
         throws PushException {
      push(PushTypeEnum.signin, uid, title, content, null, null, null, versionCodeList);
      push(PushTypeEnum.signin, uid,  null, null, null, baseContent);
   }
   private List<DeviceTokenOPPO> filterDeviceToken(List<DeviceTokenOPPO> deviceList, int hour) {
@@ -140,16 +138,14 @@
    * 
    * @param type
    * @param uid
    * @param title
    * @param content
    * @param url
    * @param webUrl
    * @param versionCodeList
    */
   private void push(PushTypeEnum type, Long uid, String title, String content, String url, String webUrl,
         Long goodsId, List<Integer> versionCodeList) throws PushException {
   private void push(PushTypeEnum type, Long uid, String url, String webUrl,
                 Long goodsId,PushBaseContent content) throws PushException {
      int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
      List<Integer> newVersionList = getVersionCodeList(versionCodeList);
      List<Integer> newVersionList = getVersionCodeList(content.getVersionCodeList(),content.getSystem());
      // 1.6.5后开始推送
      for (int i = 0; i < newVersionList.size(); i++) {
         if (newVersionList.get(i) < 47)
@@ -157,11 +153,12 @@
      }
      if (uid == null || uid == 0) {
         Date minUpdatetime=new Date(System.currentTimeMillis()- Constant.PUSH_MIN_TIME);
         int pageSize = 200;
         long deviceCount = deviceTokenOPPOService.countDeviceToken(newVersionList);
         long deviceCount = deviceTokenOPPOService.countDeviceToken(newVersionList,minUpdatetime);
         int page = (int) (deviceCount % pageSize == 0 ? deviceCount / pageSize : deviceCount / pageSize + 1);
         for (int p = 1; p <= page; p++) {
            List<DeviceTokenOPPO> deviceList = deviceTokenOPPOService.listDeviceToken(p, pageSize, newVersionList);
            List<DeviceTokenOPPO> deviceList = deviceTokenOPPOService.listDeviceToken(p, pageSize, newVersionList,minUpdatetime);
            deviceList = filterDeviceToken(deviceList, hour);
            List<String> tokenList = new ArrayList<>();
@@ -171,25 +168,25 @@
               if (type == PushTypeEnum.goodsdetail) {// 商品详情
                  if (goodsId == null)
                     throw new PushException(2, "参数不完整");
                  OPPOPushUtil.pushGoods(tokenList, title, content, 1, goodsId);
                  OPPOPushUtil.pushGoods(tokenList, content.getTitle(), content.getContent(), 1, goodsId);
               } else if (type == PushTypeEnum.url) {// 链接
                  if (StringUtil.isNullOrEmpty(webUrl))
                     throw new PushException(2, "参数不完整");
                  OPPOPushUtil.pushUrl(tokenList, title, content, webUrl);
                  OPPOPushUtil.pushUrl(tokenList, content.getTitle(), content.getContent(), webUrl);
               } else if (type == PushTypeEnum.ZNX) {// 站内信
                  OPPOPushUtil.pushZNX(tokenList, title, content);
                  OPPOPushUtil.pushZNX(tokenList, content.getTitle(), content.getContent());
               } else if (type == PushTypeEnum.weex) {// weex
                  if (StringUtil.isNullOrEmpty(url))
                     throw new PushException(2, "参数不完整");
                  OPPOPushUtil.pushWEEX(tokenList, title, content, url);
                  OPPOPushUtil.pushWEEX(tokenList,content.getTitle(), content.getContent(), url);
               } else if (type == PushTypeEnum.baichuan) {// 百川链接
                  if (StringUtil.isNullOrEmpty(webUrl))
                     throw new PushException(2, "参数不完整");
                  OPPOPushUtil.pushBaiChuanUrl(tokenList, title, content, webUrl);
                  OPPOPushUtil.pushBaiChuanUrl(tokenList,content.getTitle(), content.getContent(), webUrl);
               } else if (type == PushTypeEnum.welfare) {// 福利中心
                  OPPOPushUtil.pushWelfareCenter(tokenList, title, content);
                  OPPOPushUtil.pushWelfareCenter(tokenList,content.getTitle(), content.getContent());
               } else if (type == PushTypeEnum.signin) {// 签到
                  OPPOPushUtil.pushUserSignInNotification(tokenList, title, content);
                  OPPOPushUtil.pushUserSignInNotification(tokenList, content.getTitle(), content.getContent());
               }
            } catch (Exception e) {
               PushLogHelper.hwError(e);
@@ -212,25 +209,25 @@
            if (type == PushTypeEnum.goodsdetail) {// 商品详情
               if (goodsId == null)
                  throw new PushException(2, "参数不完整");
               OPPOPushUtil.pushGoods(tokenList, title, content, 1, goodsId);
               OPPOPushUtil.pushGoods(tokenList, content.getTitle(), content.getContent(), 1, goodsId);
            } else if (type == PushTypeEnum.url) {// 链接
               if (StringUtil.isNullOrEmpty(webUrl))
                  throw new PushException(2, "参数不完整");
               OPPOPushUtil.pushUrl(tokenList, title, content, webUrl);
               OPPOPushUtil.pushUrl(tokenList, content.getTitle(), content.getContent(), webUrl);
            } else if (type == PushTypeEnum.ZNX) {// 站内信
               OPPOPushUtil.pushZNX(tokenList, title, content);
               OPPOPushUtil.pushZNX(tokenList, content.getTitle(), content.getContent());
            } else if (type == PushTypeEnum.weex) {// weex
               if (StringUtil.isNullOrEmpty(url))
                  throw new PushException(2, "参数不完整");
               OPPOPushUtil.pushWEEX(tokenList, title, content, url);
               OPPOPushUtil.pushWEEX(tokenList, content.getTitle(), content.getContent(), url);
            } else if (type == PushTypeEnum.baichuan) {// 百川链接
               if (StringUtil.isNullOrEmpty(webUrl))
                  throw new PushException(2, "参数不完整");
               OPPOPushUtil.pushBaiChuanUrl(tokenList, title, content, webUrl);
               OPPOPushUtil.pushBaiChuanUrl(tokenList, content.getTitle(), content.getContent(), webUrl);
            } else if (type == PushTypeEnum.welfare) {// 福利中心
               OPPOPushUtil.pushWelfareCenter(tokenList, title, content);
               OPPOPushUtil.pushWelfareCenter(tokenList, content.getTitle(), content.getContent());
            } else if (type == PushTypeEnum.signin) {// 签到
               OPPOPushUtil.pushUserSignInNotification(tokenList, title, content);
               OPPOPushUtil.pushUserSignInNotification(tokenList, content.getTitle(), content.getContent());
            }
         } catch (Exception e) {
            PushLogHelper.oppoError(e);