From ccc87b5ac3d6271f95bb8bd89d2f38d765365702 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期四, 21 五月 2020 11:08:29 +0800
Subject: [PATCH] 团队订单搜索 + 粉丝搜索
---
fanli/src/main/java/com/yeshi/fanli/service/impl/push/HWPushServiceImpl.java | 408 +++++++++++++++++++++++++++++----------------------------
1 files changed, 207 insertions(+), 201 deletions(-)
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/push/HWPushServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/push/HWPushServiceImpl.java
index 84b72c3..95b548a 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/push/HWPushServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/push/HWPushServiceImpl.java
@@ -1,28 +1,29 @@
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 javax.annotation.Resource;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
-import com.yeshi.fanli.controller.admin.PushController;
-import com.yeshi.fanli.entity.bus.user.AccountMessage;
+import com.yeshi.fanli.dto.push.PushTypeEnum;
+import com.yeshi.fanli.entity.AppVersionInfo;
+import com.yeshi.fanli.entity.bus.user.UserCustomSettings;
+import com.yeshi.fanli.entity.bus.user.UserCustomSettings.UserSettingTypeEnum;
import com.yeshi.fanli.entity.push.DeviceTokenHW;
-import com.yeshi.fanli.entity.system.SystemZnx;
-import com.yeshi.fanli.entity.xinge.MessageInfo;
-import com.yeshi.fanli.entity.xinge.PushRecord;
-import com.yeshi.fanli.exception.PushException;
+import com.yeshi.fanli.exception.push.PushException;
import com.yeshi.fanli.log.PushLogHelper;
+import com.yeshi.fanli.service.inter.config.AppVersionService;
import com.yeshi.fanli.service.inter.push.DeviceTokenHWService;
import com.yeshi.fanli.service.inter.push.HWPushService;
-import com.yeshi.fanli.util.Constant;
-import com.yeshi.fanli.util.ThreadUtil;
+import com.yeshi.fanli.service.inter.user.UserCustomSettingsService;
+import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.push.HWPushUtil;
-
-import net.sf.json.JSONObject;
@Service
public class HWPushServiceImpl implements HWPushService {
@@ -30,204 +31,209 @@
@Resource
private DeviceTokenHWService deviceTokenHWService;
+ @Resource
+ private AppVersionService appVersionService;
+
+ @Resource
+ private UserCustomSettingsService userCustomSettingsService;
+
+ private List<Integer> getVersionCodeList(List<Integer> versionCodeList) {
+ List<Integer> versionList = new ArrayList<>();
+ if (versionCodeList == null) {// 鍏ㄦ帹
+ List<AppVersionInfo> appInfoList = appVersionService.listByPlatformAndMinVersionCode("android", 46);
+ if (appInfoList != null)
+ for (AppVersionInfo version : appInfoList) {
+ versionList.add(version.getVersionCode());
+ }
+
+ } else {// 鎸夌増鏈帹閫�
+ for (Integer versionCode : versionCodeList) {
+ if (versionCode.intValue() >= 46) {
+ versionList.add(versionCode);
+ }
+ }
+ }
+ return versionList;
+ }
+
@Async("pushExecutor")
@Override
- public void pushGoods(Long uid, Long auctionId, String title, String content, String versions) throws PushException {
- String gid = auctionId + "";
- JSONObject json = new JSONObject();
- json.put("url", "");
- json.put("id", gid);
- json.put("type", "goodsdetail");
- json.put("miPushUrl", String.format("%s.ui.recommend.GoodsBrowserActivity",
- Constant.systemCommonConfig.getAndroidBaseactivityName()));
- if (uid == null || uid == 0) {
- // 鍗庝负鍏ㄦ帹閫� --鏆傛椂璁剧疆鎺ㄩ��100000鐢ㄦ埛
- List<DeviceTokenHW> hwDeviceList = deviceTokenHWService.getDeviceTokenList(1, 100000);
- ThreadUtil.run(new Runnable() {
- @Override
- public void run() {
- while (hwDeviceList != null && hwDeviceList.size() > 0) {
- List<String> deviceTokens = new ArrayList<>();
- if (hwDeviceList.size() > 10000) {
- List<DeviceTokenHW> pushList = hwDeviceList.subList(0, 1000);
- for (DeviceTokenHW DeviceTokenHW : pushList) {
- deviceTokens.add(DeviceTokenHW.getDeviceToken());
- hwDeviceList.remove(DeviceTokenHW);
- }
- } else {
- for (DeviceTokenHW DeviceTokenHW : hwDeviceList) {
- deviceTokens.add(DeviceTokenHW.getDeviceToken());
- hwDeviceList.remove(DeviceTokenHW);
- }
- }
- try {
- HWPushUtil.pushGoods(deviceTokens, title, content, 1, Long.parseLong(gid));
- } catch (Exception e) {
- PushLogHelper.hwError(e);
- }
+ public void pushGoods(Long uid, Long auctionId, String title, String content, List<Integer> versionCodeList)
+ throws PushException {
+ push(PushTypeEnum.goodsdetail, uid, title, content, null, null, auctionId, versionCodeList);
+ }
+
+ @Async("pushExecutor")
+ @Override
+ public void pushUrl(Long uid, String url, String title, String content, List<Integer> versionCodeList)
+ throws PushException {
+ push(PushTypeEnum.url, uid, title, content, null, url, null, versionCodeList);
+ }
+
+ @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);
+ }
+
+ @Async("pushExecutor")
+ @Override
+ public void pushWEEX(Long uid, String title, String content, String weexUrl, List<Integer> versionCodeList)
+ throws PushException {
+ push(PushTypeEnum.weex, uid, title, content, weexUrl, null, null, versionCodeList);
+ }
+
+ @Async("pushExecutor")
+ @Override
+ public void pushBaiChuanUrl(Long uid, String title, String content, String url, List<Integer> versionCodeList)
+ throws PushException {
+
+ push(PushTypeEnum.baichuan, uid, title, content, null, url, null, versionCodeList);
+ }
+
+ @Async("pushExecutor")
+ @Override
+ public void pushWelfareCenter(Long uid, String title, String content, List<Integer> versionCodeList)
+ throws PushException {
+ push(PushTypeEnum.welfare, uid, title, content, null, null, null, versionCodeList);
+ }
+
+ @Override
+ public void pushUserSignInNotification(Long uid, String title, String content, List<Integer> versionCodeList)
+ throws PushException {
+ push(PushTypeEnum.signin, uid, title, content, null, null, null, versionCodeList);
+ }
+
+ private List<DeviceTokenHW> filterDeviceToken(List<DeviceTokenHW> hwDeviceList, int hour) {
+ // TODO 鏆傛椂涓嶅鐞嗘秷鎭厤鎵撴壈
+ if (1 > 0)
+ return hwDeviceList;
+ // 澶勭悊娑堟伅鍏嶆墦鎵�
+ if (hour >= 20 || hour < 8) {
+ Set<Long> uidSets = new HashSet<>();
+ for (DeviceTokenHW dt : hwDeviceList)
+ if (dt.getUser() != null)
+ uidSets.add(dt.getUser().getId());
+ List<Long> uidList = new ArrayList<>();
+ uidList.addAll(uidSets);
+ List<UserCustomSettings> settingList = userCustomSettingsService.listByUidListAndTypeAndState(uidList,
+ UserSettingTypeEnum.cancelNotice.name(), UserCustomSettings.STATE_VALID);
+ uidSets.clear();
+ if (settingList != null) {
+ for (UserCustomSettings seeting : settingList)
+ uidSets.add(seeting.getUserInfo().getId());
+ }
+ if (uidSets.size() > 0)
+ for (int i = 0; i < hwDeviceList.size(); i++) {
+ if (hwDeviceList.get(i).getUser() != null
+ && uidSets.contains(hwDeviceList.get(i).getUser().getId())) {
+ hwDeviceList.remove(i--);
}
}
- });
+ }
+ return hwDeviceList;
+ }
+
+ /**
+ * 鎺ㄩ��
+ *
+ * @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 {
+ int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
+ List<Integer> newVersionList = getVersionCodeList(versionCodeList);
+ // 1.6.5鍚庡紑濮嬫帹閫�
+ for (int i = 0; i < newVersionList.size(); i++) {
+ if (newVersionList.get(i) < 47)
+ newVersionList.remove(i--);
+ }
+
+ if (uid == null || uid == 0) {
+ long deviceCount = deviceTokenHWService.countDeviceToken(newVersionList);
+ int page = (int) (deviceCount % 100 == 0 ? deviceCount / 100 : deviceCount / 100 + 1);
+ for (int p = 1; p <= page; p++) {
+ List<DeviceTokenHW> hwDeviceList = deviceTokenHWService.getDeviceTokenList(p, 100, newVersionList);
+ hwDeviceList = filterDeviceToken(hwDeviceList, hour);
+
+ List<String> tokenList = new ArrayList<>();
+ for (DeviceTokenHW token : hwDeviceList)
+ tokenList.add(token.getDeviceToken());
+ try {
+ if (type == PushTypeEnum.goodsdetail) {// 鍟嗗搧璇︽儏
+ if (goodsId == null)
+ throw new PushException(2, "鍙傛暟涓嶅畬鏁�");
+ HWPushUtil.pushGoods(tokenList, title, content, 1, goodsId);
+ } else if (type == PushTypeEnum.url) {// 閾炬帴
+ if (StringUtil.isNullOrEmpty(webUrl))
+ throw new PushException(2, "鍙傛暟涓嶅畬鏁�");
+ HWPushUtil.pushUrl(tokenList, title, content, webUrl);
+ } else if (type == PushTypeEnum.ZNX) {// 绔欏唴淇�
+ HWPushUtil.pushZNX(tokenList, title, content);
+ } else if (type == PushTypeEnum.weex) {// weex
+ if (StringUtil.isNullOrEmpty(url))
+ throw new PushException(2, "鍙傛暟涓嶅畬鏁�");
+ HWPushUtil.pushWEEX(tokenList, title, content, url);
+ } else if (type == PushTypeEnum.baichuan) {// 鐧惧窛閾炬帴
+ if (StringUtil.isNullOrEmpty(webUrl))
+ throw new PushException(2, "鍙傛暟涓嶅畬鏁�");
+ HWPushUtil.pushBaiChuanUrl(tokenList, title, content, webUrl);
+ } else if (type == PushTypeEnum.welfare) {// 绂忓埄涓績
+ HWPushUtil.pushWelfareCenter(tokenList, title, content);
+ } else if (type == PushTypeEnum.signin) {// 绛惧埌
+ HWPushUtil.pushUserSignInNotification(tokenList, title, content);
+ }
+ } catch (Exception e) {
+ PushLogHelper.hwError(e);
+ }
+
+ }
} else {
// 鍗庝负鍗曟帹
- List<DeviceTokenHW> hwDeviceList = deviceTokenHWService.getDeviceTokenByUid(uid);
- if (hwDeviceList != null && hwDeviceList.size() > 0) {
- List<String> deviceList = new ArrayList<>();
- for (DeviceTokenHW dt : hwDeviceList)
- deviceList.add(dt.getDeviceToken());
- try {
- HWPushUtil.pushGoods(deviceList, title, content, 1, Long.parseLong(gid));
- } catch (Exception e) {
- PushLogHelper.hwError(e);
- }
+ List<DeviceTokenHW> hwDeviceList = deviceTokenHWService.getDeviceTokenByUid(uid, newVersionList);
+ List<String> tokenList = new ArrayList<>();
+ if (hwDeviceList != null) {
+ hwDeviceList = filterDeviceToken(hwDeviceList, hour);
+ for (DeviceTokenHW token : hwDeviceList)
+ tokenList.add(token.getDeviceToken());
}
+ if (tokenList.size() == 0)
+ return;
+
+ try {
+ if (type == PushTypeEnum.goodsdetail) {// 鍟嗗搧璇︽儏
+ if (goodsId == null)
+ throw new PushException(2, "鍙傛暟涓嶅畬鏁�");
+ HWPushUtil.pushGoods(tokenList, title, content, 1, goodsId);
+ } else if (type == PushTypeEnum.url) {// 閾炬帴
+ if (StringUtil.isNullOrEmpty(webUrl))
+ throw new PushException(2, "鍙傛暟涓嶅畬鏁�");
+ HWPushUtil.pushUrl(tokenList, title, content, webUrl);
+ } else if (type == PushTypeEnum.ZNX) {// 绔欏唴淇�
+ HWPushUtil.pushZNX(tokenList, title, content);
+ } else if (type == PushTypeEnum.weex) {// weex
+ if (StringUtil.isNullOrEmpty(url))
+ throw new PushException(2, "鍙傛暟涓嶅畬鏁�");
+ HWPushUtil.pushWEEX(tokenList, title, content, url);
+ } else if (type == PushTypeEnum.baichuan) {// 鐧惧窛閾炬帴
+ if (StringUtil.isNullOrEmpty(webUrl))
+ throw new PushException(2, "鍙傛暟涓嶅畬鏁�");
+ HWPushUtil.pushBaiChuanUrl(tokenList, title, content, webUrl);
+ } else if (type == PushTypeEnum.welfare) {// 绂忓埄涓績
+ HWPushUtil.pushWelfareCenter(tokenList, title, content);
+ } else if (type == PushTypeEnum.signin) {// 绛惧埌
+ HWPushUtil.pushUserSignInNotification(tokenList, title, content);
+ }
+ } catch (Exception e) {
+ PushLogHelper.hwError(e);
+ }
+
}
}
-
-
- @Async("pushExecutor")
- @Override
- public void pushUrl(Long uid, String url, String title, String content, String versions) throws PushException {
- JSONObject json = new JSONObject();
- json.put("url", url);
- json.put("type", "url");
- json.put("webUrl", url);
- json.put("miPushUrl",
- String.format("%s.ui.BrowserActivity", Constant.systemCommonConfig.getAndroidBaseactivityName()));
-
- MessageInfo info = new MessageInfo();
- info.setTitle(title);
- info.setContent(content);
- info.setDescription(content);
- // 灏忕背鎺ㄩ�佺綉椤�
- info.setPackageName(Constant.systemCommonConfig.getAndroidPackageName());
- info.setActivty(
- String.format("%s.ui.BrowserActivity", Constant.systemCommonConfig.getAndroidBaseactivityName()));
-
- PushRecord pushRecord = new PushRecord();
- pushRecord.setState(1);
- pushRecord.setType(PushController.URL);
- pushRecord.setUrl(url);
- pushRecord.setTitle(title);
- pushRecord.setAppName(Constant.systemCommonConfig.getProjectChineseName());
-
- // 鍗庝负鍏ㄦ帹閫� --鏆傛椂璁剧疆鎺ㄩ��100000鐢ㄦ埛
- if (uid == null || uid == 0) {
- List<DeviceTokenHW> hwDeviceList = deviceTokenHWService.getDeviceTokenList(1, 100000);
- ThreadUtil.run(new Runnable() {
- @Override
- public void run() {
- while (hwDeviceList != null && hwDeviceList.size() > 0) {
- List<String> deviceTokens = new ArrayList<>();
- if (hwDeviceList.size() > 1000) {
- List<DeviceTokenHW> pushList = hwDeviceList.subList(0, 1000);
- for (DeviceTokenHW DeviceTokenHW : pushList) {
- deviceTokens.add(DeviceTokenHW.getDeviceToken());
- hwDeviceList.remove(DeviceTokenHW);
- }
- } else {
- for (DeviceTokenHW DeviceTokenHW : hwDeviceList) {
- deviceTokens.add(DeviceTokenHW.getDeviceToken());
- hwDeviceList.remove(DeviceTokenHW);
- }
- }
- try {
- HWPushUtil.pushWeb(deviceTokens, title, content, url);
- } catch (Exception e) {
- PushLogHelper.hwError(e);
- }
- }
- }
- });
- } else {
- // 鍗庝负鍗曟帹
- List<DeviceTokenHW> hwDeviceList = deviceTokenHWService.getDeviceTokenByUid(uid);
- if (hwDeviceList != null && hwDeviceList.size() > 0) {
- List<String> deviceList = new ArrayList<>();
- for (DeviceTokenHW dt : hwDeviceList)
- deviceList.add(dt.getDeviceToken());
- try {
- HWPushUtil.pushWeb(deviceList, title, content, url);
- } catch (Exception e) {
- PushLogHelper.hwError(e);
- }
- }
- }
- }
-
-
- @Async("pushExecutor")
- @Override
- public void pushZNX(Long uid, AccountMessage msg, SystemZnx systemZNX, String versions) throws PushException {
-
- JSONObject contentJson = new JSONObject();
- contentJson.put("isOpen", 0);
- contentJson.put("createTime", java.lang.System.currentTimeMillis());
-
- if (systemZNX != null) {
- // 鍗庝负鍏ㄦ帹閫� --鏆傛椂璁剧疆鎺ㄩ��10000鐢ㄦ埛
- List<DeviceTokenHW> hwDeviceList = deviceTokenHWService.getDeviceTokenList(1, 10000);
- ThreadUtil.run(new Runnable() {
- @Override
- public void run() {
- while (hwDeviceList != null && hwDeviceList.size() > 0) {
- List<String> deviceTokens = new ArrayList<>();
- if (hwDeviceList.size() > 1000) {
- List<DeviceTokenHW> pushList = hwDeviceList.subList(0, 1000);
- for (DeviceTokenHW DeviceTokenHW : pushList) {
- deviceTokens.add(DeviceTokenHW.getDeviceToken());
- hwDeviceList.remove(DeviceTokenHW);
- }
- } else {
- for (DeviceTokenHW DeviceTokenHW : hwDeviceList) {
- deviceTokens.add(DeviceTokenHW.getDeviceToken());
- hwDeviceList.remove(DeviceTokenHW);
- }
- }
- try {
- HWPushUtil.pushZNX(deviceTokens, systemZNX.getTitle(), systemZNX.getContent());
- } catch (Exception e) {
- PushLogHelper.hwError(e);
- }
- }
- }
- });
-
- } else if (msg != null) {
- // 鍗庝负鍗曟帹
- List<DeviceTokenHW> hwDeviceList = deviceTokenHWService.getDeviceTokenByUid(uid);
- if (hwDeviceList != null && hwDeviceList.size() > 0) {
- List<String> deviceList = new ArrayList<>();
- for (DeviceTokenHW dt : hwDeviceList)
- deviceList.add(dt.getDeviceToken());
- try {
- HWPushUtil.pushZNX(deviceList, msg.getTitle(), msg.getContent());
- } catch (Exception e) {
- PushLogHelper.hwError(e);
- }
- }
- }
- }
-
- @Async("pushExecutor")
- @Override
- public void pushWEEX(Long uid, String title, String content, String weexUrl, String versions) throws PushException {
- // TODO 鎺ㄩ�亀eex椤甸潰
-
- }
-
- @Async("pushExecutor")
- @Override
- public void pushBaiChuanUrl(Long uid, String title, String content, String url, String versions) throws PushException {
- // TODO 鎺ㄩ�佹窐瀹㈢櫨宸濋摼鎺�
-
- }
-
- @Async("pushExecutor")
- @Override
- public void pushWelfareCenter(Long uid, String title, String content, String versions) throws PushException {
- // TODO Auto-generated method stub
-
- }
-
}
--
Gitblit v1.8.0