From c113fb5b3be1e872b84799c79e76607c40c2c4ba Mon Sep 17 00:00:00 2001
From: 喻健 <喻健@Admin>
Date: 星期二, 27 十一月 2018 17:49:05 +0800
Subject: [PATCH] 推送商品信息

---
 fanli/src/main/java/com/yeshi/fanli/controller/client/PushController.java |  201 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 200 insertions(+), 1 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/PushController.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/PushController.java
index 19004ba..32a7c31 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/PushController.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/PushController.java
@@ -1,24 +1,44 @@
 package com.yeshi.fanli.controller.client;
 
 import java.io.PrintWriter;
+import java.util.Date;
+import java.util.List;
 
 import javax.annotation.Resource;
 
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+import org.springframework.core.task.TaskExecutor;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.yeshi.utils.JsonUtil;
 
 import com.yeshi.fanli.entity.accept.AcceptData;
+import com.yeshi.fanli.entity.common.JumpDetailV2;
 import com.yeshi.fanli.entity.push.DeviceActive;
 import com.yeshi.fanli.entity.push.DeviceTokenIOS;
+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.System;
+import com.yeshi.fanli.exception.push.PushGoodsGroupException;
+import com.yeshi.fanli.goods.CommonGoods;
+import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
+import com.yeshi.fanli.service.inter.config.ConfigService;
 import com.yeshi.fanli.service.inter.config.SystemService;
 import com.yeshi.fanli.service.inter.push.DeviceActiveService;
 import com.yeshi.fanli.service.inter.push.DeviceTokenHWService;
 import com.yeshi.fanli.service.inter.push.IOSPushService;
+import com.yeshi.fanli.service.inter.push.PushGoodsGroupService;
+import com.yeshi.fanli.service.inter.push.PushGoodsRecordService;
+import com.yeshi.fanli.service.inter.push.PushGoodsService;
 import com.yeshi.fanli.service.inter.push.PushRecordService;
+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.factory.JumpDetailParamsFactory;
 
 @Controller
 @RequestMapping(value = "api/v1/push")
@@ -38,6 +58,27 @@
 
 	@Resource
 	private DeviceActiveService deviceActiveService;
+	
+	@Resource
+	private PushService pushService;
+	
+	@Resource
+	private PushGoodsService PushGoodsService;
+	
+	@Resource
+	private PushGoodsGroupService pushGoodsGroupService;
+	
+	@Resource
+	private PushGoodsRecordService pushGoodsRecordService;
+	
+	@Resource
+	private JumpDetailV2Service jumpDetailV2Service;
+	
+	@Resource
+	private ConfigService configService;
+	
+	@Resource(name = "taskExecutor")
+	private TaskExecutor executor;
 
 	@RequestMapping(value = "callback", method = RequestMethod.POST)
 	public void callback(AcceptData acceptData, String pushId, PrintWriter out) {
@@ -102,7 +143,7 @@
 			da.setVersionCode(Integer.parseInt(acceptData.getVersion()));
 			deviceActiveService.addDeviceActive(da);
 			// 娣诲姞token
-			DeviceTokenIOS deviceTokenIOS = iosPushService.getDeviceTokenByDeviceToken(acceptData.getDevice());
+			DeviceTokenIOS deviceTokenIOS = iosPushService.getDeviceTokenByDeviceToken(deviceToken);
 			if (deviceTokenIOS != null) {
 				deviceTokenIOS.setUid(uid);
 				deviceTokenIOS.setDevice(acceptData.getDevice());
@@ -161,5 +202,163 @@
 		deviceTokenHWService.unBindDeviceToken(acceptData.getDevice());
 		out.print(JsonUtil.loadTrueResult("鎴愬姛"));
 	}
+	
+	
+	/**
+	 * 瑙g粦鎺ㄩ��
+	 * 
+	 * @param acceptData
+	 * @param out
+	 */
+	@RequestMapping(value = "/gethistory", method = RequestMethod.POST)
+	public void getHistory(AcceptData acceptData, 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(createTime);
+
+			int pageSize = Constant.PAGE_SIZE;
+
+			list = PushGoodsService.listHistoryByPushTime((page - 1) * pageSize, pageSize, 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
+					Long auctionId = 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 commonGoods = pushGoodsGroup.getCommonGoods();
+									if (commonGoods != null) {
+										picture = commonGoods.getPicture();
+										auctionId = commonGoods.getGoodsId();
+									}
+								}
+							}
+						} catch (PushGoodsGroupException e) {
+							e.printStackTrace();
+						}
+					}
+
+					result.put("picture", picture);
+
+					String fontColor1 = "#888888";
+					String fontColor2 = "#F14242";
+					JSONArray array = new JSONArray();
+
+					JSONArray array1 = new JSONArray();
+					array1.add(fontColor1);
+					array1.add("鏈鎺ㄩ�佸叡");
+
+					JSONArray array2 = new JSONArray();
+					array2.add(fontColor2);
+					array2.add(totalgoods);
+
+					JSONArray array3 = new JSONArray();
+					array3.add(fontColor1);
+					array3.add("涓晢鍝�");
+
+					array.add(array1);
+					array.add(array2);
+					array.add(array3);
+
+					result.put("totalwords", array);
+
+					String params = "";
+
+					JumpDetailV2 jumpDetail = null;
+					if (totalgoods == 1) {
+
+						params = JumpDetailParamsFactory.createGoodsParams(auctionId);
+						// 鍗曚釜鍟嗗搧璺宠浆鍟嗗搧璇︽儏
+						jumpDetail = jumpDetailV2Service.getByTypeCache("goodsdetail");
+
+					} else {
+						String url = configService.get("push_goods_details");
+						if (url == null) {
+							url = "";
+						}
+						url = url + "?id=" + pushId;
+
+						params = JumpDetailParamsFactory.createWEBParams(url);
+
+						// 璺宠浆鎺ㄨ崘璇︽儏
+						jumpDetail = jumpDetailV2Service.getByTypeCache("web");
+					}
+					result.put("params", params);
+					result.put("jumpDetail", jumpDetail);
+
+					resultList.add(result);
+				}
+			}
+		}
+
+		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) {
+
+			final List<PushGoods> listPush = list;
+			// 璁板綍璁块棶淇℃伅
+			executor.execute(new Runnable() {
+				@Override
+				public void run() {
+					try {
+						Long deviceId = deviceActive.getId();
+
+						for (PushGoods pushGoods : listPush) {
+							List<PushGoodsRecord> listRecord = pushGoodsRecordService.listByPushIdAndDeviceId(
+									pushGoods.getId(), deviceId);
+							if (listRecord != null && listRecord.size() > 0) {
+								continue; // 宸茶璁板綍
+							}
+
+							PushGoodsRecord pushGoodsRecord = new PushGoodsRecord();
+
+							pushGoodsRecord.setCreateTime(new Date());
+							pushGoodsRecord.setPushGoods(pushGoods);
+							pushGoodsRecord.setDeviceActive(deviceActive);
+							pushGoodsRecordService.insert(pushGoodsRecord);
+						}
+
+					} catch (Exception e) {
+						e.printStackTrace();
+					}
+
+				}
+			});
+		}
+	}
+	
 }

--
Gitblit v1.8.0