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