From a34d378f8529d3e7ebe96d656349da26fdc0dbbb Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期一, 08 六月 2020 17:42:11 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div
---
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/PushController.java | 384 ++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 271 insertions(+), 113 deletions(-)
diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/PushController.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/PushController.java
index e3309c3..e6ef213 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/PushController.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/PushController.java
@@ -1,11 +1,13 @@
package com.yeshi.fanli.controller.client.v1;
import java.io.PrintWriter;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
+import org.apache.commons.beanutils.PropertyUtils;
import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -13,20 +15,33 @@
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.taobao.TbImgUtil;
+import com.google.gson.GsonBuilder;
import com.yeshi.fanli.entity.accept.AcceptData;
+import com.yeshi.fanli.entity.bus.activity.ActivityUser;
import com.yeshi.fanli.entity.common.JumpDetailV2;
+import com.yeshi.fanli.entity.dynamic.GoodsEvaluate;
+import com.yeshi.fanli.entity.dynamic.ImgInfo;
+import com.yeshi.fanli.entity.dynamic.ImgInfo.ImgEnum;
import com.yeshi.fanli.entity.goods.CommonGoods;
import com.yeshi.fanli.entity.push.DeviceActive;
+import com.yeshi.fanli.entity.push.DeviceTokenOPPO;
+import com.yeshi.fanli.entity.push.DeviceTokenVIVO;
+import com.yeshi.fanli.entity.push.DeviceTokenXM;
import com.yeshi.fanli.entity.push.PushGoods;
import com.yeshi.fanli.entity.push.PushGoodsGroup;
import com.yeshi.fanli.entity.push.PushGoodsRecord;
import com.yeshi.fanli.entity.system.BusinessSystem;
+import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.exception.push.PushGoodsGroupException;
import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
import com.yeshi.fanli.service.inter.config.BusinessSystemService;
import com.yeshi.fanli.service.inter.config.ConfigService;
+import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService;
import com.yeshi.fanli.service.inter.push.DeviceActiveService;
import com.yeshi.fanli.service.inter.push.DeviceTokenHWService;
+import com.yeshi.fanli.service.inter.push.DeviceTokenOPPOService;
+import com.yeshi.fanli.service.inter.push.DeviceTokenVIVOService;
+import com.yeshi.fanli.service.inter.push.DeviceTokenXMService;
import com.yeshi.fanli.service.inter.push.IOSPushService;
import com.yeshi.fanli.service.inter.push.PushGoodsGroupService;
import com.yeshi.fanli.service.inter.push.PushGoodsRecordService;
@@ -35,7 +50,11 @@
import com.yeshi.fanli.service.inter.push.PushService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.TimeUtil;
+import com.yeshi.fanli.util.annotation.RequestSerializableByKey;
import com.yeshi.fanli.util.factory.JumpDetailParamsFactory;
+import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
+import com.yeshi.fanli.vo.push.PushRecommendVO;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@@ -43,7 +62,6 @@
@Controller
@RequestMapping(value = "api/v1/push")
public class PushController {
-
@Resource
private BusinessSystemService businessSystemService;
@@ -79,6 +97,19 @@
@Resource(name = "taskExecutor")
private TaskExecutor executor;
+
+ @Resource
+ private DeviceTokenOPPOService deviceTokenOPPOService;
+
+ @Resource
+ private DeviceTokenVIVOService deviceTokenVIVOService;
+
+ @Resource
+ private DeviceTokenXMService deviceTokenXMService;
+
+ @Resource
+ private GoodsEvaluateService goodsEvaluateService;
+
@RequestMapping(value = "callback", method = RequestMethod.POST)
public void callback(AcceptData acceptData, String pushId, PrintWriter out) {
@@ -121,7 +152,7 @@
* @param uid
* @param deviceToken
*/
-
+ @RequestSerializableByKey(key = "#acceptData.device")
@RequestMapping(value = "/uidBindDeviceToken", method = RequestMethod.POST)
public void uidBindIOSDeviceToken(AcceptData acceptData, Long uid, String deviceToken, PrintWriter out) {
if (uid != null && uid != 0 && !StringUtil.isNullOrEmpty(deviceToken)) {
@@ -155,6 +186,7 @@
* -鐢ㄦ埛ID
* @param out
*/
+ @RequestSerializableByKey(key = "#acceptData.device")
@RequestMapping(value = "/bindHWPush", method = RequestMethod.POST)
public void bindHWDeviceToken(AcceptData acceptData, String token, Long uid, PrintWriter out) {
deviceTokenHWService.addDeviceToken(token, acceptData.getDevice(), uid,
@@ -182,127 +214,138 @@
*/
@RequestMapping(value = "/gethistory", method = RequestMethod.POST)
public void getHistory(AcceptData acceptData, Long uid, String deviceToken, int page, PrintWriter out) {
-
long count = 0;
- List<PushGoods> list = null;
JSONArray resultList = new JSONArray();
-
DeviceActive deviceActive = deviceActiveService.getDeviceByDeviceAndPlatform(acceptData.getDevice(),
deviceToken, acceptData.getPlatform());
- if (deviceActive != null) {
-
- // 璁惧娉ㄥ唽鏃堕棿
- Date createTime = deviceActive.getCreateTime();
- count = pushGoodsService.countHistoryByPushTime(uid, createTime);
-
- int pageSize = Constant.PAGE_SIZE;
-
- list = pushGoodsService.listHistoryByPushTime((page - 1) * pageSize, pageSize, uid, createTime);
- if (list != null && list.size() > 0) {
- for (PushGoods pushGoods : list) {
- JSONObject result = new JSONObject();
-
- Long pushId = pushGoods.getId();
- String picture = pushGoods.getPicture();
- String alertContent = pushGoods.getAlertContent();
- Date pushTime = pushGoods.getPushTime();
-
- result.put("content", alertContent);
- result.put("pushtime", pushTime.getTime());
-
- // 缁熻鍟嗗搧鏁伴噺
- long totalgoods = 0;
- // 鍟嗗搧id
- CommonGoods commonGoods = null;
-
- if (StringUtil.isNullOrEmpty(picture)) {
- try {
- List<PushGoodsGroup> listGroup = pushGoodsGroupService.getAllInfoByPushId(pushId);
-
- if (listGroup != null && listGroup.size() > 0) {
-
- totalgoods = listGroup.size();
-
- PushGoodsGroup pushGoodsGroup = listGroup.get(0);
- if (pushGoodsGroup != null) {
- commonGoods = pushGoodsGroup.getCommonGoods();
- if (commonGoods != null) {
- picture = commonGoods.getPicture();
- }
- }
- }
- } catch (PushGoodsGroupException e) {
- e.printStackTrace();
- }
- }
-
- result.put("picture", TbImgUtil.getTBSize320Img(picture));
-
- String fontColor1 = "#666666";
- String fontColor2 = "#E5005C";
- JSONArray array = new JSONArray();
-
- JSONObject contentJson1 = new JSONObject();
- contentJson1.put("color", fontColor1);
- contentJson1.put("content", "鏈鎺ㄨ崘鍏�");
-
- JSONObject contentJson2 = new JSONObject();
- contentJson2.put("color", fontColor2);
- contentJson2.put("content", totalgoods);
-
- JSONObject contentJson3 = new JSONObject();
- contentJson3.put("color", fontColor1);
- contentJson3.put("content", "涓晢鍝�");
-
- array.add(contentJson1);
- array.add(contentJson2);
- array.add(contentJson3);
-
- result.put("totalwords", array);
-
- String params = "";
-
- JumpDetailV2 jumpDetail = null;
- if (totalgoods == 1) {
- params = JumpDetailParamsFactory.createGoodsParams(commonGoods.getGoodsId(),
- commonGoods.getGoodsType());
- // 鍗曚釜鍟嗗搧璺宠浆鍟嗗搧璇︽儏
- jumpDetail = jumpDetailV2Service.getByTypeCache("goodsdetail",
- Constant.getPlatformCode(acceptData.getPlatform()),
- Integer.parseInt(acceptData.getVersion()));
-
- } else {
- String url = configService.get("push_goods_details");
- if (url == null) {
- url = "";
- }
- url = url + "?id=" + pushId;
-
- params = JumpDetailParamsFactory.createWEBParams(url);
-
- // 璺宠浆鎺ㄨ崘璇︽儏
- jumpDetail = jumpDetailV2Service.getByTypeCache("web",
- Constant.getPlatformCode(acceptData.getPlatform()),
- Integer.parseInt(acceptData.getVersion()));
- }
- result.put("params", params);
- result.put("jumpDetail", jumpDetail);
-
- resultList.add(result);
- }
- }
+ if (deviceActive == null) {
+ JSONObject resultJson = new JSONObject();
+ resultJson.put("count", count);
+ resultJson.put("result_list", resultList);
+ out.print(JsonUtil.loadTrueResult(resultJson));
+ return;
}
+ // 璁惧娉ㄥ唽鏃堕棿
+ Date createTime = deviceActive.getCreateTime();
+ count = pushGoodsService.countHistoryByPushTime(uid, createTime);
+
+ int pageSize = Constant.PAGE_SIZE;
+ List<PushGoods> list = pushGoodsService.listHistoryByPushTime((page - 1) * pageSize, pageSize, uid, createTime);
+ if (list == null)
+ list = new ArrayList<>();
+
+ for (PushGoods pushGoods : list) {
+ Long id = pushGoods.getId();
+
+ PushRecommendVO vo = new PushRecommendVO();
+ vo.setTitle(pushGoods.getTitle());
+ vo.setContent(pushGoods.getContent());
+ vo.setPicture(pushGoods.getPicture());
+ vo.setPushtime(pushGoods.getPushTime().getTime());
+
+ Integer scanNum = pushGoods.getScanNum();
+ if (scanNum == null) {
+// vo.setScanNum("0");
+ } else if (scanNum >= 10000) {
+ double num = scanNum;
+ String numMidea = String.format("%.1f", num / 10000);
+ vo.setScanNum(numMidea + "涓�");
+ } else {
+ vo.setScanNum(scanNum +"");
+ }
+
+
+ String params = "";
+ String nickName = "";
+ JumpDetailV2 jumpDetail = null;
+ List<ClientTextStyleVO> totalwords = new ArrayList<ClientTextStyleVO>();
+
+ Integer type = pushGoods.getType();
+ if (type == null || type == PushGoods.TYPE_GOODS) {
+ long totalgoods = 0;
+ CommonGoods goods = null;
+ try {
+ List<PushGoodsGroup> listGroup = pushGoodsGroupService.getAllInfoByPushId(id);
+ if (listGroup != null && listGroup.size() > 0) {
+ totalgoods = listGroup.size();
+ PushGoodsGroup pushGoodsGroup = listGroup.get(0);
+ if (pushGoodsGroup != null) {
+ goods = pushGoodsGroup.getCommonGoods();
+ }
+ }
+ } catch (PushGoodsGroupException e) {
+ e.printStackTrace();
+ }
+
+ if (goods != null && StringUtil.isNullOrEmpty(vo.getPicture())) {
+ vo.setPicture(TbImgUtil.getTBSize320Img(goods.getPicture()));
+ }
+
+ if (totalgoods == 1) {
+ params = JumpDetailParamsFactory.createGoodsParams(goods.getGoodsId(), goods.getGoodsType());
+ jumpDetail = jumpDetailV2Service.getByTypeCache("goodsdetail",Constant.getPlatformCode(acceptData.getPlatform()),
+ Integer.parseInt(acceptData.getVersion()));
+ } else {
+ String url = configService.get(ConfigKeyEnum.pushGoodsDetails.getKey());
+ if (url == null) {
+ url = "";
+ }
+ url = url + "?id=" + id;
+
+ params = JumpDetailParamsFactory.createWEBParams(url);
+ jumpDetail = jumpDetailV2Service.getByTypeCache("web",Constant.getPlatformCode(acceptData.getPlatform()),
+ Integer.parseInt(acceptData.getVersion()));
+ }
+
+ totalwords.add(new ClientTextStyleVO("鏈鎺ㄨ崘鍏�", "#666666"));
+ totalwords.add(new ClientTextStyleVO(totalgoods + "", "#E5005C"));
+ totalwords.add(new ClientTextStyleVO("涓晢鍝�", "#666666"));
+ } else if (type == PushGoods.TYPE_ACTIVITY) {
+ GoodsEvaluate goodsEvaluate = goodsEvaluateService.getById(pushGoods.getOtherId());
+ if (goodsEvaluate == null) {
+ continue;
+ }
+ ActivityUser user = goodsEvaluate.getUser();
+ if (user != null) {
+ nickName = user.getNickName();
+ }
+
+ if (StringUtil.isNullOrEmpty(vo.getPicture()) && goodsEvaluate.getImgList() != null &&
+ goodsEvaluate.getImgList().size() > 0) {
+ for (ImgInfo tmgInfo: goodsEvaluate.getImgList()) {
+ if (tmgInfo.getType() == ImgEnum.img || tmgInfo.getType() == ImgEnum.activity) {
+ vo.setPicture(tmgInfo.getUrl());
+ }
+ }
+ }
+
+ String url = configService.get(ConfigKeyEnum.pushActivityLink.getKey());
+ if (url == null) {
+ url = "";
+ }
+ url = url + "?id=" + id;
+ params = JumpDetailParamsFactory.createWEBParams(url);
+ jumpDetail = jumpDetailV2Service.getByTypeCache("web",
+ Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion()));
+ } else {
+ continue;
+ }
+ vo.setNickName(nickName);
+ vo.setParams(params);
+ vo.setJumpDetail(jumpDetail);
+ vo.setTotalwords(totalwords);
+ resultList.add(vo);
+ }
+
JSONObject resultJson = new JSONObject();
resultJson.put("count", count);
resultJson.put("result_list", resultList);
-
out.print(JsonUtil.loadTrueResult(resultJson));
- // 鍒楄〃鍙傛暟銆佽澶囧弬鏁颁俊鎭笉涓虹┖
- if (list != null && list.size() > 0 && deviceActive != null) {
+ if (list != null && list.size() > 0 && deviceActive != null) {
final List<PushGoods> listPush = list;
// 璁板綍璁块棶淇℃伅
executor.execute(new Runnable() {
@@ -310,7 +353,6 @@
public void run() {
try {
Long deviceId = deviceActive.getId();
-
for (PushGoods pushGoods : listPush) {
List<PushGoodsRecord> listRecord = pushGoodsRecordService
.listByPushIdAndDeviceId(pushGoods.getId(), deviceId);
@@ -325,14 +367,130 @@
pushGoodsRecord.setDeviceActive(deviceActive);
pushGoodsRecordService.insert(pushGoodsRecord);
}
-
} catch (Exception e) {
e.printStackTrace();
}
-
}
});
}
}
+ @RequestMapping("registerOppo")
+ public void registerOppo(AcceptData acceptData, String registerId, Long uid, PrintWriter out) {
+ DeviceActive deviceActive = deviceActiveService.getFirstActiveInfo(acceptData.getDevice());
+ if (deviceActive != null) {
+ DeviceTokenOPPO oppo = new DeviceTokenOPPO();
+ oppo.setDeviceActiveId(deviceActive.getId());
+ oppo.setRegisterId(registerId);
+ oppo.setUid(uid);
+ deviceTokenOPPOService.addDeviceTokenOPPO(oppo);
+ }
+ out.print(JsonUtil.loadTrueResult(""));
+ }
+
+ @RequestMapping("registerVivo")
+ public void registerVivo(AcceptData acceptData, String regId, Long uid, PrintWriter out) {
+ DeviceActive deviceActive = deviceActiveService.getFirstActiveInfo(acceptData.getDevice());
+ if (deviceActive != null) {
+ DeviceTokenVIVO vivo = new DeviceTokenVIVO();
+ vivo.setDeviceActiveId(deviceActive.getId());
+ vivo.setRegisterId(regId);
+ vivo.setUid(uid);
+ deviceTokenVIVOService.addDeviceTokenVIVO(vivo);
+ }
+ out.print(JsonUtil.loadTrueResult(""));
+ }
+
+ @RequestMapping("registerXM")
+ public void registerXM(AcceptData acceptData, String regId, Long uid, PrintWriter out) {
+ DeviceActive deviceActive = deviceActiveService.getFirstActiveInfo(acceptData.getDevice());
+ if (deviceActive != null) {
+ DeviceTokenXM xm = new DeviceTokenXM();
+ xm.setDeviceActiveId(deviceActive.getId());
+ xm.setRegisterId(regId);
+ xm.setUid(uid);
+ deviceTokenXMService.addDeviceToken(xm);
+ }
+ out.print(JsonUtil.loadTrueResult(""));
+ }
+
+ /**
+ * 鑾峰彇鎺ㄩ�佹椿鍔ㄨ鎯�
+ * @param callback
+ * @param acceptData
+ * @param uid
+ * @param id
+ * @param out
+ */
+ @RequestMapping("getPushDetail")
+ public void getPushDetail(String callback, AcceptData acceptData, Long uid, Long id, PrintWriter out) {
+ if (uid == null || id == null) {
+ JsonUtil.printMode(out, callback,JsonUtil.loadFalseResult("鍙傛暟涓嶅畬鏁�"));
+ return;
+ }
+
+ PushGoods pushGoods = pushGoodsService.selectByPrimaryKey(id);
+ if (pushGoods == null || StringUtil.isNullOrEmpty(pushGoods.getOtherId())) {
+ JsonUtil.printMode(out, callback,JsonUtil.loadFalseResult("璇ユ椿鍔ㄥ凡涓嬫灦"));
+ return;
+ }
+
+ GoodsEvaluate goodsEvaluate = goodsEvaluateService.getById(pushGoods.getOtherId());
+ if (goodsEvaluate == null) {
+ JsonUtil.printMode(out, callback,JsonUtil.loadFalseResult("璇ユ椿鍔ㄥ凡涓嬫灦"));
+ return;
+ }
+
+ String scanResult = null;
+ Integer scanNum = pushGoods.getScanNum();
+ if (scanNum == null) {
+ } else if (scanNum >= 10000) {
+ double num = scanNum;
+ String numMidea = String.format("%.1f", num / 10000);
+ scanResult = numMidea + "涓�";
+ } else {
+ scanResult = scanNum +"";
+ }
+
+ String jumpLink = configService.get(ConfigKeyEnum.activityDetailLink.getKey()) + "?type=%s&id=%s";
+ jumpLink = String.format(jumpLink, "circle", goodsEvaluate.getId());
+ if (!StringUtil.isNullOrEmpty(goodsEvaluate.getJumpLink())) {
+ goodsEvaluate.setJumpLink(jumpLink);
+ }
+
+ List<ImgInfo> imgListNew = new ArrayList<>();
+ List<ImgInfo> imgList = goodsEvaluate.getImgList();
+ if (imgList != null && imgList.size() > 0) {
+ for (ImgInfo imgInfo: imgList) {
+ if (imgInfo.getType() != ImgEnum.img || imgInfo.getType() == ImgEnum.activity) {
+ ImgInfo imgInfoNew = new ImgInfo();
+ try {
+ PropertyUtils.copyProperties(imgInfoNew, imgInfo);
+ } catch (Exception e) {
+ e.printStackTrace();
+ continue;
+ }
+
+ if (!StringUtil.isNullOrEmpty(imgInfoNew.getActivityUrl())) {
+ imgInfoNew.setActivityUrl(jumpLink);
+ }
+
+ imgListNew.add(imgInfoNew);
+ continue;
+ }
+ imgListNew.add(imgInfo);
+ }
+ }
+ goodsEvaluate.setImgList(imgListNew);
+
+ GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
+
+ JSONObject json = new JSONObject();
+ json.put("title", pushGoods.getTitle());
+ json.put("content", pushGoods.getContent());
+ json.put("pushTime", TimeUtil.formatDate(pushGoods.getPushTime()));
+ json.put("scanNum", scanResult);
+ json.put("detailInfo", gsonBuilder.create().toJson(goodsEvaluate));
+ JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(json));
+ }
}
--
Gitblit v1.8.0