From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 25 二月 2025 16:41:22 +0800
Subject: [PATCH] 淘宝转链接口更新

---
 fanli/src/main/java/com/yeshi/fanli/controller/client/v1/PushController.java |  900 ++++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 541 insertions(+), 359 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 c5bc5b2..2a13229 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,359 +1,541 @@
-package com.yeshi.fanli.controller.client.v1;
-
-import java.io.PrintWriter;
-import java.util.Date;
-import java.util.List;
-
-import javax.annotation.Resource;
-
-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 org.yeshi.utils.taobao.TbImgUtil;
-
-import com.yeshi.fanli.entity.accept.AcceptData;
-import com.yeshi.fanli.entity.common.JumpDetailV2;
-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.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.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.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.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.annotation.RequestSerializableByKey;
-import com.yeshi.fanli.util.factory.JumpDetailParamsFactory;
-
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
-
-@Controller
-@RequestMapping(value = "api/v1/push")
-public class PushController {
-	@Resource
-	private BusinessSystemService businessSystemService;
-
-	@Resource
-	private PushRecordService pushRecordService;
-
-	@Resource
-	private IOSPushService iosPushService;
-
-	@Resource
-	private DeviceTokenHWService deviceTokenHWService;
-
-	@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;
-	
-	@Resource
-	private DeviceTokenOPPOService deviceTokenOPPOService;
-
-	@RequestMapping(value = "callback", method = RequestMethod.POST)
-	public void callback(AcceptData acceptData, String pushId, PrintWriter out) {
-		BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
-				acceptData.getPackages());
-		if (system == null) {
-			out.print(JsonUtil.loadFalseResult("涓嶅瓨鍦ㄨ绯荤粺"));
-			return;
-		}
-		int platform = system.getPlatform();
-		if (platform == 1) {
-			pushRecordService.increaseByAndroid(pushId);
-		} else {
-			pushRecordService.increaseByIOS(pushId);
-		}
-		out.print(JsonUtil.loadTrueResult("鍥炶皟鎴愬姛"));
-	}
-
-	/**
-	 * 
-	 * 鎻掑叆鑻规灉鎺ㄩ�佺殑deviceToken
-	 * 
-	 * @author mawurui createTime 2018骞�5鏈�8鏃� 涓嬪崍4:15:44
-	 * @param deviceToken
-	 */
-	@RequestMapping(value = "/insertDeviceToken", method = RequestMethod.POST)
-	public void insertIOSDeviceToken(AcceptData acceptData, String deviceToken, PrintWriter out) {
-		if (!StringUtil.isNullOrEmpty(acceptData.getDevice()) && !StringUtil.isNullOrEmpty(deviceToken)) {
-			// 娣诲姞璁惧娲昏穬璁板綍
-			iosPushService.addDeviceToken(null, Integer.parseInt(acceptData.getVersion()), deviceToken,
-					acceptData.getDevice());
-			out.print(JsonUtil.loadTrue(0, null, "鎴愬姛"));
-		}
-	}
-
-	/**
-	 * IOS鎺ㄩ�� 鏂规硶璇存槑: 灏嗙敤鎴穒d鍜宒eviceToken缁戝畾
-	 * 
-	 * @author mawurui createTime 2018骞�5鏈�8鏃� 涓嬪崍4:29:45
-	 * @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)) {
-			// 娣诲姞token
-			iosPushService.addDeviceToken(uid, Integer.parseInt(acceptData.getVersion()), deviceToken,
-					acceptData.getDevice());
-		}
-	}
-
-	/**
-	 * IOS鎺ㄩ�� 鏂规硶璇存槑: 瑙g粦
-	 * 
-	 * @author mawurui createTime 2018骞�5鏈�9鏃� 涓婂崍9:49:58
-	 * @param deviceToken
-	 */
-	@RequestMapping(value = "/unBind", method = RequestMethod.POST)
-	public void unBind(AcceptData acceptData, String deviceToken, PrintWriter out) {
-		if (!StringUtil.isNullOrEmpty(acceptData.getDevice())) {
-			iosPushService.unBindUidAndDevice(acceptData.getDevice());
-			out.print(JsonUtil.loadTrue(0, null, "瑙g粦鎴愬姛"));
-		}
-	}
-
-	/**
-	 * 缁戝畾鍗庝负鎺ㄩ��
-	 * 
-	 * @param acceptData
-	 * @param token
-	 *            -鍗庝负token
-	 * @param uid
-	 *            -鐢ㄦ埛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,
-				Integer.parseInt(acceptData.getVersion()));
-		out.print(JsonUtil.loadTrueResult("鎴愬姛"));
-	}
-
-	/**
-	 * 瑙g粦鎺ㄩ��
-	 * 
-	 * @param acceptData
-	 * @param out
-	 */
-	@RequestMapping(value = "/unBindHWPush", method = RequestMethod.POST)
-	public void unBindHWDeviceToken(AcceptData acceptData, PrintWriter out) {
-		deviceTokenHWService.unBindDeviceToken(acceptData.getDevice());
-		out.print(JsonUtil.loadTrueResult("鎴愬姛"));
-	}
-
-	/**
-	 * 鍟嗗搧鎺ㄩ�佽褰�
-	 * 
-	 * @param acceptData
-	 * @param out
-	 */
-	@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);
-				}
-			}
-		}
-
-		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();
-					}
-
-				}
-			});
-		}
-	}
-
-	
-
-	@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(""));
-	}
-
-}
+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 com.ks.push.pojo.DO.BPushDeviceToken;
+import com.ks.push.pojo.DO.PushPlatform;
+import com.ks.push.service.BDeviceTokenService;
+import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.dubbo.config.annotation.Reference;
+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 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;
+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 org.yeshi.utils.TimeUtil;
+import com.yeshi.fanli.util.annotation.RequestSerializableByKey;
+import com.yeshi.fanli.util.factory.JumpDetailParamsFactory;
+import com.yeshi.common.vo.ClientTextStyleVO;
+import com.yeshi.fanli.vo.push.PushRecommendVO;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+@Controller
+@RequestMapping(value = "api/v1/push")
+public class PushController {
+	@Resource
+	private BusinessSystemService businessSystemService;
+
+	@Resource
+	private PushRecordService pushRecordService;
+
+	@Resource
+	private IOSPushService iosPushService;
+
+	@Resource
+	private DeviceTokenHWService deviceTokenHWService;
+
+	@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;
+
+	@Resource
+	private DeviceTokenOPPOService deviceTokenOPPOService;
+
+	@Resource
+	private DeviceTokenVIVOService deviceTokenVIVOService;
+
+	@Resource
+	private DeviceTokenXMService deviceTokenXMService;
+	
+	@Resource
+	private GoodsEvaluateService goodsEvaluateService;
+
+	@Reference(version = "1.0", check = false)
+	private BDeviceTokenService bDeviceTokenService;
+
+	/**
+	 * 搴楅摵鍒楄〃
+	 *
+	 * @param acceptData
+	 * @param out
+	 */
+	@RequestMapping(value = "bindToken", method = RequestMethod.POST)
+	public void bindToken(AcceptData acceptData, Long uid, String type, String token, PrintWriter out) {
+		BPushDeviceToken deviceToken = new BPushDeviceToken();
+		deviceToken.setAppCode(acceptData.getSystem().name());
+		deviceToken.setDeviceId(StringUtil.isNullOrEmpty(acceptData.getUtdid()) ? acceptData.getDevice() : acceptData.getUtdid());
+		deviceToken.setBuildModel(acceptData.getDeviceType());
+		deviceToken.setBuildVersion(acceptData.getOsVersion());
+		deviceToken.setToken(token);
+		switch (type) {
+			case "huawei":
+				type = "hw";
+				break;
+			case "xiaomi":
+				type = "xm";
+				break;
+			case "meizu":
+				type = "mz";
+				break;
+		}
+		deviceToken.setType(PushPlatform.valueOf(type));
+		deviceToken.setUid(uid + "");
+		deviceToken.setVersionCode(Integer.parseInt(acceptData.getVersion()));
+		try {
+			bDeviceTokenService.save(deviceToken);
+			out.print(JsonUtil.loadTrueResult(""));
+		} catch (Exception e) {
+			out.print(JsonUtil.loadFalseResult("缁戝畾鍑洪敊锛�" + e.getMessage()));
+			e.printStackTrace();
+		}
+	}
+
+
+
+	@RequestMapping(value = "callback", method = RequestMethod.POST)
+	public void callback(AcceptData acceptData, String pushId, PrintWriter out) {
+		BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
+				acceptData.getPackages(),acceptData.getSystem());
+		if (system == null) {
+			out.print(JsonUtil.loadFalseResult("涓嶅瓨鍦ㄨ绯荤粺"));
+			return;
+		}
+		int platform = system.getPlatform();
+		if (platform == 1) {
+			pushRecordService.increaseByAndroid(pushId);
+		} else {
+			pushRecordService.increaseByIOS(pushId);
+		}
+		out.print(JsonUtil.loadTrueResult("鍥炶皟鎴愬姛"));
+	}
+
+	/**
+	 * 
+	 * 鎻掑叆鑻规灉鎺ㄩ�佺殑deviceToken
+	 * 
+	 * @author mawurui createTime 2018骞�5鏈�8鏃� 涓嬪崍4:15:44
+	 * @param deviceToken
+	 */
+	@RequestMapping(value = "/insertDeviceToken", method = RequestMethod.POST)
+	public void insertIOSDeviceToken(AcceptData acceptData, String deviceToken, PrintWriter out) {
+		if (!StringUtil.isNullOrEmpty(acceptData.getDevice()) && !StringUtil.isNullOrEmpty(deviceToken)) {
+			// 娣诲姞璁惧娲昏穬璁板綍
+			iosPushService.addDeviceToken(null, Integer.parseInt(acceptData.getVersion()), deviceToken,
+					acceptData.getDevice());
+			out.print(JsonUtil.loadTrue(0, null, "鎴愬姛"));
+		}
+	}
+
+	/**
+	 * IOS鎺ㄩ�� 鏂规硶璇存槑: 灏嗙敤鎴穒d鍜宒eviceToken缁戝畾
+	 * 
+	 * @author mawurui createTime 2018骞�5鏈�8鏃� 涓嬪崍4:29:45
+	 * @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)) {
+			// 娣诲姞token
+			iosPushService.addDeviceToken(uid, Integer.parseInt(acceptData.getVersion()), deviceToken,
+					acceptData.getDevice());
+		}
+	}
+
+	/**
+	 * IOS鎺ㄩ�� 鏂规硶璇存槑: 瑙g粦
+	 * 
+	 * @author mawurui createTime 2018骞�5鏈�9鏃� 涓婂崍9:49:58
+	 * @param deviceToken
+	 */
+	@RequestMapping(value = "/unBind", method = RequestMethod.POST)
+	public void unBind(AcceptData acceptData, String deviceToken, PrintWriter out) {
+		if (!StringUtil.isNullOrEmpty(acceptData.getDevice())) {
+			iosPushService.unBindUidAndDevice(acceptData.getDevice());
+			out.print(JsonUtil.loadTrue(0, null, "瑙g粦鎴愬姛"));
+		}
+	}
+
+	/**
+	 * 缁戝畾鍗庝负鎺ㄩ��
+	 * 
+	 * @param acceptData
+	 * @param token
+	 *            -鍗庝负token
+	 * @param uid
+	 *            -鐢ㄦ埛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,
+				Integer.parseInt(acceptData.getVersion()));
+		out.print(JsonUtil.loadTrueResult("鎴愬姛"));
+	}
+
+	/**
+	 * 瑙g粦鎺ㄩ��
+	 * 
+	 * @param acceptData
+	 * @param out
+	 */
+	@RequestMapping(value = "/unBindHWPush", method = RequestMethod.POST)
+	public void unBindHWDeviceToken(AcceptData acceptData, PrintWriter out) {
+		deviceTokenHWService.unBindDeviceToken(acceptData.getDevice());
+		out.print(JsonUtil.loadTrueResult("鎴愬姛"));
+	}
+
+	/**
+	 * 鍟嗗搧鎺ㄩ�佽褰�
+	 * 
+	 * @param acceptData
+	 * @param out
+	 */
+	@RequestMapping(value = "/gethistory", method = RequestMethod.POST)
+	public void getHistory(AcceptData acceptData, Long uid, String deviceToken, int page, PrintWriter out) {
+		long count = 0;
+		JSONArray resultList = new JSONArray();
+		DeviceActive deviceActive = deviceActiveService.getDeviceByDeviceAndPlatform(acceptData.getDevice(),
+				deviceToken, acceptData.getPlatform());
+
+		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,acceptData.getSystem());
+
+		int pageSize = Constant.PAGE_SIZE;
+		List<PushGoods> list = pushGoodsService.listHistoryByPushTime((page - 1) * pageSize, pageSize, uid, createTime,acceptData.getSystem());
+		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()),acceptData.getSystem());
+				} else {
+					String url = configService.getValue(ConfigKeyEnum.pushGoodsDetails.getKey(),acceptData.getSystem());
+					if (url == null) {
+						url = "";
+					}
+					url = url + "?id=" + id;
+
+					params = JumpDetailParamsFactory.createWEBParams(url);
+					jumpDetail = jumpDetailV2Service.getByTypeCache("web",Constant.getPlatformCode(acceptData.getPlatform()),
+							Integer.parseInt(acceptData.getVersion()),acceptData.getSystem());
+				}
+
+				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.getValue(ConfigKeyEnum.pushActivityLink.getKey(),acceptData.getSystem());
+				if (url == null) {
+					url = "";
+				}
+				url = url + "?id=" + id;
+				params = JumpDetailParamsFactory.createWEBParams(url);
+				jumpDetail = jumpDetailV2Service.getByTypeCache("web",
+						Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion()),acceptData.getSystem());
+			} 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) {
+			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();
+					}
+				}
+			});
+		}
+	}
+
+	@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.getValue(ConfigKeyEnum.activityDetailLink.getKey(),acceptData.getSystem()) + "?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