From 207dc8655711cddac2653e18b51e58a88dba2084 Mon Sep 17 00:00:00 2001
From: yj <Administrator@192>
Date: 星期五, 06 三月 2020 18:14:36 +0800
Subject: [PATCH] 发圈处理

---
 fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java | 1331 +++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 995 insertions(+), 336 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java
index fbd2c38..a426347 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java
@@ -1,336 +1,995 @@
-package com.yeshi.fanli.controller.client.v2;
-
-import java.io.PrintWriter;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-
-import javax.annotation.Resource;
-
-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.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonPrimitive;
-import com.google.gson.JsonSerializationContext;
-import com.google.gson.JsonSerializer;
-import com.yeshi.fanli.entity.accept.AcceptData;
-import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
-import com.yeshi.fanli.entity.bus.homemodule.Special;
-import com.yeshi.fanli.entity.bus.homemodule.SpecialLabel;
-import com.yeshi.fanli.entity.dynamic.DynamicInfo;
-import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
-import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService;
-import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
-import com.yeshi.fanli.service.inter.homemodule.SpecialService;
-import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
-import com.yeshi.fanli.util.Constant;
-import com.yeshi.fanli.util.VersionUtil;
-import com.yeshi.fanli.util.taobao.DaTaoKeUtil;
-import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
-
-import net.sf.json.JSONObject;
-
-/**
- * 鍔ㄦ��
- * 
- * @author Administrator
- *
- */
-@Controller
-@RequestMapping("api/v2/dynamic")
-public class DynamicControllerV2 {
-
-	@Resource
-	private HongBaoManageService hongBaoManageService;
-
-	@Resource
-	private TaoBaoGoodsBriefService taoBaoGoodsBriefService;
-
-	@Resource
-	private JumpDetailV2Service jumpDetailV2Service;
-
-	@Resource
-	private DynamicInfoService dynamicInfoService;
-
-	@Resource
-	private SpecialService specialService;
-	
-	
-
-	/**
-	 * 鍔ㄦ�佸晢鍝佸垪琛�
-	 * @param acceptData
-	 * @param page
-	 * @param cid
-	 * @param subId
-	 * @param out
-	 */
-	@RequestMapping(value = "getList", method = RequestMethod.POST)
-	public void getList(AcceptData acceptData, Integer page, Long cid, Long subId, PrintWriter out) {
-		if (cid == null) {
-			out.print(JsonUtil.loadFalseResult("涓诲垎绫籭d涓嶈兘涓虹┖"));
-			return;
-		}
-
-		if (cid != null && cid == 5) {
-			// 娲诲姩涓婚
-			getSpecialList(acceptData, page, subId, out);
-			return;
-		}
-		
-		
-		long count = 0;
-		
-		int platform = 1;
-		if ("ios".equalsIgnoreCase(acceptData.getPlatform())) {
-			platform = 2;
-		}
-		
-		int version = Integer.parseInt(acceptData.getVersion());
-		List<DynamicInfo> list = dynamicInfoService.queryV2(platform, version, (page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, cid,
-				subId);
-		if (list == null) {
-			list = new ArrayList<DynamicInfo>();
-		} else {
-			count = dynamicInfoService.count(cid, subId);
-		}
-
-		JSONObject data = new JSONObject();
-		data.put("count", count);
-		data.put("list", getGson().toJson(list));
-		out.print(JsonUtil.loadTrueResult(data));
-	}
-	
-	
-	/**
-	 *  娲诲姩鍒楄〃
-	 * @param acceptData
-	 * @param out
-	 */
-	private void getSpecialList(AcceptData acceptData, Integer page, Long subId, PrintWriter out) {
-		if (subId == null) {
-			out.print(JsonUtil.loadFalseResult("鍒嗙被id涓嶈兘涓虹┖"));
-			return;
-		}
-		
-		// 骞冲彴鍖哄垎
-		int platformCode = Constant.getPlatformCode(acceptData.getPlatform());
-		List<String> listKey = new ArrayList<String>();
-		
-		if (subId == 1) { // 娣樺疂
-			listKey.add("special_channel_tb");
-		} else if (subId == 2) { // 浜笢
-			listKey.add("special_channel_jd");
-		} else if (subId == 3) { // 鎷煎澶�
-			listKey.add("special_channel_pdd");
-		} else { // 鍏ㄩ儴
-			listKey.add("special_channel_tb");
-			listKey.add("special_channel_jd");
-			listKey.add("special_channel_pdd");
-		}
-		
-		List<Special> list = specialService.listByPlaceKeyHasLabel((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, listKey, platformCode,
-				Integer.parseInt(acceptData.getVersion()));
-		
-		long time = System.currentTimeMillis();
-		
-		// 鍒犻櫎灏氭湭鍚敤鐨勮繃鏈熺殑
-		for (int i = 0; i < list.size(); i++) {
-			Special special = list.get(i);
-			if (special.getState() == 1L) {
-				list.remove(i--);
-			} else {
-				if (special.getStartTime() != null && special.getEndTime() != null)
-					special.setTimeTask(true);
-				else
-					special.setTimeTask(false);
-				
-				if (special.isTimeTask()) {
-					if (time < special.getStartTime().getTime() || time > special.getEndTime().getTime()) {
-						list.remove(i--);
-					} else// 璁剧疆鍊掕鏃�
-					{
-						special.setCountDownTime((special.getEndTime().getTime() - time) / 1000);
-					}
-				}
-				
-				List<SpecialLabel> listLabels = special.getListLabels();
-				if (listLabels != null && !listLabels.isEmpty()) {
-					List<ClientTextStyleVO> labels = new ArrayList<>();
-					for (SpecialLabel specialLabel: listLabels) {
-						 labels.add(new ClientTextStyleVO(specialLabel.getName(), specialLabel.getBgColor()));
-					}
-					special.setLabels(labels);
-				}
-			}
-		}
-		
-		long count = specialService.countByPlaceKeyList( listKey, platformCode,	Integer.parseInt(acceptData.getVersion()));
-
-		GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
-		Gson gson = gsonBuilder.create();
-		JSONObject data = new JSONObject();
-		data.put("count", count);
-		data.put("list", gson.toJson(list));
-		out.print(JsonUtil.loadTrueResult(data));
-	}
-
-	
-	
-	
-	/**
-	 * 鏌ヨ椤堕儴鍒嗙被
-	 * 
-	 * @param acceptData
-	 * @param page
-	 * @param cid
-	 * @param out
-	 */
-	@RequestMapping(value = "getClass", method = RequestMethod.POST)
-	public void getClass(AcceptData acceptData, Integer cid, PrintWriter out) {
-		// ios 鍙繑鍥炲瓙闆嗗垎绫�
-		if (cid != null) {
-			List<GoodsClass> list = new ArrayList<GoodsClass>();
-
-			switch (cid) {
-			case 1:
-				list.add(new GoodsClass(0L, "浠婃棩鍗曞搧"));
-				list.addAll(DaTaoKeUtil.goodsClasses);
-				break;
-			case 2:
-				break;
-			case 3:
-				break;
-			case 4:
-				break;
-			case 5:
-				list.add(new GoodsClass(0L, "鍏ㄩ儴"));
-				list.add(new GoodsClass(1L, "娣樺疂"));
-				list.add(new GoodsClass(2L, "浜笢"));
-				list.add(new GoodsClass(3L, "鎷煎澶�"));
-				break;
-			default:
-				break;
-			}
-			JSONObject data = new JSONObject();
-			data.put("list", JsonUtil.getApiCommonGson().toJson(list));
-			out.print(JsonUtil.loadTrueResult(data));
-			return;
-		}
-
-		// Android 杩斿洖鍒嗙被浠ュ強椤堕儴鏁版嵁
-		List<GoodsClass> listSub = new ArrayList<GoodsClass>();
-		listSub.add(new GoodsClass(0L, "浠婃棩鍗曞搧"));
-		listSub.addAll(DaTaoKeUtil.goodsClasses);
-		
-		GoodsClass menu1 = new GoodsClass(1L, "鐑攢");
-		menu1.setListSub(listSub);
-		
-		GoodsClass menu2 = new GoodsClass(2L, "鎺ㄨ崘");
-		menu2.setListSub(new ArrayList<GoodsClass>());
-		
-		GoodsClass menu3 = new GoodsClass(3L, "濂藉簵");
-		menu3.setListSub(new ArrayList<GoodsClass>());
-		
-		GoodsClass menu4 = new GoodsClass(4L, "閭�璇�");
-		menu4.setListSub(new ArrayList<GoodsClass>());
-		
-		GoodsClass menu5 = new GoodsClass(5L, "娲诲姩");
-		List<GoodsClass> sub5 = new ArrayList<GoodsClass>();
-		sub5.add(new GoodsClass(0L, "鍏ㄩ儴"));
-		sub5.add(new GoodsClass(1L, "娣樺疂"));
-		sub5.add(new GoodsClass(2L, "浜笢"));
-		sub5.add(new GoodsClass(3L, "鎷煎澶�"));
-		menu5.setListSub(sub5);
-		
-		List<GoodsClass> list = new ArrayList<GoodsClass>();
-		list.add(menu1);
-		list.add(menu5);
-		list.add(menu2);
-		// 2.0.5鐗堟湰闅愯棌 濂藉簵鏍忕洰
-		if (!VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
-			list.add(menu3);
-		}
-		
-		list.add(menu4);
-		
-		JSONObject data = new JSONObject();
-		data.put("list", JsonUtil.getApiCommonGson().toJson(list));
-		out.print(JsonUtil.loadTrueResult(data));
-	}
-
-
-
-	
-	/**
-	 * 鏃堕棿澶勭悊
-	 * @return
-	 */
-	private Gson getGson() {
-		GsonBuilder gb = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder());
-		gb.excludeFieldsWithoutExposeAnnotation();
-		gb.registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
-			@Override
-			public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) {
-				String desc = "";
-				if (value != null) {
-					// 鍒ゆ柇鏄惁鏄悓涓�澶�
-					
-					Calendar calendar = Calendar.getInstance();
-					calendar.setTime(value);
-					int y1 = calendar.get(Calendar.YEAR);//鑾峰彇骞翠唤
-					int d1 = calendar.get(Calendar.DAY_OF_YEAR);//鑾峰彇骞翠腑绗嚑澶�
-
-					Date nowDate = new Date();
-					Calendar calendar2 = Calendar.getInstance();
-					calendar2.setTime(nowDate);
-					int y2 = calendar2.get(Calendar.YEAR);//鑾峰彇骞翠唤
-					int d2 = calendar2.get(Calendar.DAY_OF_YEAR);//鑾峰彇骞翠腑绗嚑澶�
-					
-					long old = value.getTime();
-					long now = nowDate.getTime();
-					if (y1 == y2) {
-						if (d1 == d2) {
-							long cha = now - old;
-							if (cha < 1000 * 60 * 2L) {
-								desc = "鍒氬垰";
-							}else if (cha < 1000 * 60 * 60L) {
-								desc = (cha / (1000 * 60)) + "鍒嗛挓鍓�";
-							}else {
-								desc = (cha / (1000 * 60 * 60)) + "灏忔椂鍓�";
-							}
-						} else if (d2 - d1 == 1) {
-							desc = "鏄ㄥぉ";
-						} else {
-							desc = (d2 - d1) + "澶╁墠";
-						}
-					} else {
-						int timeDistance = 0;
-						for (int i = y1; i < y2; i++) {
-							if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
-								timeDistance += 366; // 闂板勾
-							} else {
-								timeDistance += 365; // 涓嶆槸闂板勾
-							}
-						}
-						desc = timeDistance + (d2 - d1) + "澶╁墠";
-					}
-
-					return new JsonPrimitive(desc);
-				}
-
-				return new JsonPrimitive("");
-			}
-		});
-
-		Gson gson = gb.create();
-		return gson;
-	}
-}
+package com.yeshi.fanli.controller.client.v2;
+
+import java.io.PrintWriter;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+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.entity.FileUploadResult;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonPrimitive;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
+import com.yeshi.fanli.dto.jd.JDCouponInfo;
+import com.yeshi.fanli.entity.accept.AcceptData;
+import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
+import com.yeshi.fanli.entity.bus.homemodule.Special;
+import com.yeshi.fanli.entity.bus.homemodule.SpecialLabel;
+import com.yeshi.fanli.entity.bus.homemodule.SwiperPicture;
+import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
+import com.yeshi.fanli.entity.bus.user.UserInfo;
+import com.yeshi.fanli.entity.common.JumpDetailV2;
+import com.yeshi.fanli.entity.dynamic.CommentInfo;
+import com.yeshi.fanli.entity.dynamic.DynamicInfo;
+import com.yeshi.fanli.entity.dynamic.GoodsEvaluate;
+import com.yeshi.fanli.entity.dynamic.GoodsEvaluate.EvaluateEnum;
+import com.yeshi.fanli.entity.dynamic.ImgInfo;
+import com.yeshi.fanli.entity.dynamic.ImgInfo.ImgEnum;
+import com.yeshi.fanli.entity.jd.JDGoods;
+import com.yeshi.fanli.entity.system.ConfigKeyEnum;
+import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
+import com.yeshi.fanli.entity.taobao.TaoBaoLink;
+import com.yeshi.fanli.exception.goods.ConvertLinkExceptionException;
+import com.yeshi.fanli.exception.share.ShareGoodsException;
+import com.yeshi.fanli.log.LogHelper;
+import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
+import com.yeshi.fanli.service.inter.config.ConfigService;
+import com.yeshi.fanli.service.inter.dynamic.ArticleOfficialService;
+import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService;
+import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService;
+import com.yeshi.fanli.service.inter.goods.ShareGoodsService;
+import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
+import com.yeshi.fanli.service.inter.homemodule.SpecialService;
+import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService;
+import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
+import com.yeshi.fanli.service.inter.user.QrCodeService;
+import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
+import com.yeshi.fanli.service.inter.user.UserInfoService;
+import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService;
+import com.yeshi.fanli.service.manger.goods.ConvertLinkManager;
+import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.VersionUtil;
+import com.yeshi.fanli.util.cache.JDGoodsCacheUtil;
+import com.yeshi.fanli.util.jd.JDApiUtil;
+import com.yeshi.fanli.util.jd.JDUtil;
+import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
+import com.yeshi.fanli.util.taobao.DaTaoKeUtil;
+import com.yeshi.fanli.util.taobao.TaoBaoUtil;
+import com.yeshi.fanli.vo.dynamic.ArticleVO;
+import com.yeshi.fanli.vo.goods.GoodsDetailVO;
+import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+/**
+ * 鍔ㄦ��
+ * 
+ * @author Administrator
+ *
+ */
+@Controller
+@RequestMapping("api/v2/dynamic")
+public class DynamicControllerV2 {
+
+	@Resource
+	private HongBaoManageService hongBaoManageService;
+
+	@Resource
+	private TaoBaoGoodsBriefService taoBaoGoodsBriefService;
+
+	@Resource
+	private JumpDetailV2Service jumpDetailV2Service;
+
+	@Resource
+	private DynamicInfoService dynamicInfoService;
+
+	@Resource
+	private SpecialService specialService;
+
+	@Resource
+	private ArticleOfficialService articleOfficialService;
+
+	@Resource
+	private SwiperPictureService swiperPictureService;
+
+	@Resource
+	private ConfigService configService;
+
+	@Resource
+	private GoodsEvaluateService goodsEvaluateService;
+
+	@Resource
+	private UserInfoService userInfoService;
+	@Resource
+	private UserInfoExtraService userInfoExtraService;
+
+	@Resource
+	private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
+
+	@Resource
+	private JDGoodsCacheUtil jdGoodsCacheUtil;
+
+	@Resource
+	private QrCodeService qrCodeService;
+
+	@Resource
+	private ConvertLinkManager convertLinkManager;
+
+	@Resource
+	private ShareGoodsService shareGoodsService;
+
+	private final static long TYPE_REXIAO = 1;// 鐑攢
+	private final static long TYPE_TUIJIAN = 2;// 鎺ㄨ崘
+	private final static long TYPE_HAODIAN = 3;// 濂藉簵
+	private final static long TYPE_YAOQING = 4;// 閭�璇�
+	private final static long TYPE_HUODONG = 5;// 娲诲姩
+	private final static long TYPE_XUEYUAN = 6;// 瀛﹂櫌
+	private final static long TYPE_FAQUAN = 7;// 鍙戝湀
+	private final static long TYPE_SUCAI = 8;// 绱犳潗
+
+	private static Map<Long, GoodsClass> classMap = null;
+
+	private Map<Long, GoodsClass> getAllDynamicClass() {
+		if (classMap != null && classMap.size() > 0)
+			return classMap;
+		classMap = new HashMap<Long, GoodsClass>();
+		List<GoodsClass> listSub = new ArrayList<GoodsClass>();
+		listSub.add(new GoodsClass(0L, "浠婃棩鍗曞搧"));
+		listSub.addAll(DaTaoKeUtil.goodsClasses);
+
+		GoodsClass menu = new GoodsClass(TYPE_REXIAO, "鐑攢");
+		menu.setListSub(listSub);
+		classMap.put(TYPE_REXIAO, menu);
+
+		menu = new GoodsClass(TYPE_TUIJIAN, "鎺ㄨ崘");
+		menu.setListSub(new ArrayList<GoodsClass>());
+		classMap.put(TYPE_TUIJIAN, menu);
+
+		menu = new GoodsClass(TYPE_HAODIAN, "濂藉簵");
+		menu.setListSub(new ArrayList<GoodsClass>());
+		classMap.put(TYPE_HAODIAN, menu);
+
+		menu = new GoodsClass(TYPE_YAOQING, "閭�璇�");
+		menu.setListSub(new ArrayList<GoodsClass>());
+		classMap.put(TYPE_YAOQING, menu);
+
+		menu = new GoodsClass(TYPE_HUODONG, "娲诲姩");
+		List<GoodsClass> sub5 = new ArrayList<GoodsClass>();
+		sub5.add(new GoodsClass(0L, "鍏ㄩ儴"));
+		sub5.add(new GoodsClass(1L, "娣樺疂"));
+		sub5.add(new GoodsClass(2L, "浜笢"));
+		sub5.add(new GoodsClass(3L, "鎷煎澶�"));
+		menu.setListSub(sub5);
+		classMap.put(TYPE_HUODONG, menu);
+
+		menu = new GoodsClass(TYPE_XUEYUAN, "瀛﹂櫌");
+		menu.setListSub(new ArrayList<GoodsClass>());
+		classMap.put(TYPE_XUEYUAN, menu);
+
+		menu = new GoodsClass(TYPE_FAQUAN, "鍙戝湀");
+		menu.setListSub(new ArrayList<GoodsClass>());
+		classMap.put(TYPE_FAQUAN, menu);
+
+		menu = new GoodsClass(TYPE_SUCAI, "绱犳潗");
+		menu.setListSub(new ArrayList<GoodsClass>());
+		classMap.put(TYPE_SUCAI, menu);
+		return classMap;
+	}
+
+	/**
+	 * 鏌ヨ椤堕儴鍒嗙被
+	 * 
+	 * @param acceptData
+	 * @param page
+	 * @param cid
+	 * @param out
+	 */
+	@RequestMapping(value = "getClass", method = RequestMethod.POST)
+	public void getClass(AcceptData acceptData, Long cid, PrintWriter out) {
+		// ios 鍙繑鍥炲瓙闆嗗垎绫�
+		if (cid != null) {
+			Map<Long, GoodsClass> map = getAllDynamicClass();
+			JSONObject data = new JSONObject();
+			data.put("list", JsonUtil.getApiCommonGson().toJson(map.get(cid).getListSub()));
+			out.print(JsonUtil.loadTrueResult(data));
+			return;
+		}
+
+		// Android 杩斿洖鍒嗙被浠ュ強椤堕儴鏁版嵁
+		List<GoodsClass> listSub = new ArrayList<GoodsClass>();
+		listSub.add(new GoodsClass(0L, "浠婃棩鍗曞搧"));
+		listSub.addAll(DaTaoKeUtil.goodsClasses);
+
+		GoodsClass menu1 = new GoodsClass(1L, "鐑攢");
+		menu1.setListSub(listSub);
+
+		GoodsClass menu2 = new GoodsClass(2L, "鎺ㄨ崘");
+		menu2.setListSub(new ArrayList<GoodsClass>());
+
+		GoodsClass menu3 = new GoodsClass(3L, "濂藉簵");
+		menu3.setListSub(new ArrayList<GoodsClass>());
+
+		GoodsClass menu4 = new GoodsClass(4L, "閭�璇�");
+		menu4.setListSub(new ArrayList<GoodsClass>());
+
+		GoodsClass menu5 = new GoodsClass(5L, "娲诲姩");
+		List<GoodsClass> sub5 = new ArrayList<GoodsClass>();
+		sub5.add(new GoodsClass(0L, "鍏ㄩ儴"));
+		sub5.add(new GoodsClass(1L, "娣樺疂"));
+		sub5.add(new GoodsClass(2L, "浜笢"));
+		sub5.add(new GoodsClass(3L, "鎷煎澶�"));
+		menu5.setListSub(sub5);
+
+		GoodsClass menu6 = new GoodsClass(6L, "瀛﹂櫌");
+		menu6.setListSub(new ArrayList<GoodsClass>());
+
+		List<GoodsClass> list = new ArrayList<GoodsClass>();
+
+		Map<Long, GoodsClass> map = getAllDynamicClass();
+
+		if (VersionUtil.greaterThan_2_0_7(acceptData.getPlatform(), acceptData.getVersion())) {
+			// 2.0.7杩斿洖鍙戝湀+娲诲姩+瀛﹂櫌+绱犳潗
+			list.add(map.get(TYPE_FAQUAN));
+			list.add(map.get(TYPE_HUODONG));
+			// list.add(map.get(TYPE_XUEYUAN));
+			list.add(map.get(TYPE_SUCAI));
+
+		} else if (VersionUtil.greaterThan_2_0_6(acceptData.getPlatform(), acceptData.getVersion())) {
+			// 2.0.6杩斿洖鐑攢+娲诲姩+鎺ㄨ崘+瀛﹂櫌+閭�璇�
+			list.add(map.get(TYPE_REXIAO));
+			list.add(map.get(TYPE_HUODONG));
+			list.add(map.get(TYPE_TUIJIAN));
+			// list.add(map.get(TYPE_XUEYUAN));
+			list.add(map.get(TYPE_YAOQING));
+		} else if (VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion())) {
+			// 2.0.5杩斿洖鐑攢+娲诲姩+鎺ㄨ崘+閭�璇�
+			list.add(map.get(TYPE_REXIAO));
+			list.add(map.get(TYPE_HUODONG));
+			list.add(map.get(TYPE_TUIJIAN));
+			list.add(map.get(TYPE_YAOQING));
+		} else {
+			// 2.0.5浠ュ墠鐨勭増鏈繑鍥炵儹閿�+娲诲姩+鎺ㄨ崘+濂藉簵+閭�璇�
+			list.add(map.get(TYPE_REXIAO));
+			list.add(map.get(TYPE_HUODONG));
+			list.add(map.get(TYPE_TUIJIAN));
+			list.add(map.get(TYPE_HAODIAN));
+			list.add(map.get(TYPE_YAOQING));
+		}
+
+		JSONObject data = new JSONObject();
+		data.put("list", JsonUtil.getApiCommonGson().toJson(list));
+		out.print(JsonUtil.loadTrueResult(data));
+	}
+
+	/**
+	 * 鍔ㄦ�佸晢鍝佸垪琛�
+	 * 
+	 * @param acceptData
+	 * @param page
+	 * @param cid
+	 * @param subId
+	 * @param out
+	 */
+	@RequestMapping(value = "getList", method = RequestMethod.POST)
+	public void getList(AcceptData acceptData, Integer page, Long cid, Long subId, PrintWriter out) {
+		if (cid == null) {
+			out.print(JsonUtil.loadFalseResult("涓诲垎绫籭d涓嶈兘涓虹┖"));
+			return;
+		}
+
+		if (cid != null) {
+			if (cid == 5) { // 娲诲姩涓婚
+				getSpecialList(acceptData, page, subId, out);
+				return;
+			} else if (cid == 6) { // 瀛﹂櫌
+				getArticleList(acceptData, page, null, false, out);
+				return;
+			}
+		}
+
+		long count = 0;
+
+		int platform = 1;
+		if ("ios".equalsIgnoreCase(acceptData.getPlatform())) {
+			platform = 2;
+		}
+
+		int version = Integer.parseInt(acceptData.getVersion());
+		List<DynamicInfo> list = dynamicInfoService.queryV2(platform, version, (page - 1) * Constant.PAGE_SIZE,
+				Constant.PAGE_SIZE, cid, subId);
+		if (list == null) {
+			list = new ArrayList<DynamicInfo>();
+		} else {
+			count = dynamicInfoService.count(cid, subId);
+		}
+
+		JSONObject data = new JSONObject();
+		data.put("count", count);
+		data.put("list", getGson().toJson(list));
+		out.print(JsonUtil.loadTrueResult(data));
+	}
+
+	/**
+	 * 娲诲姩鍒楄〃
+	 * 
+	 * @param acceptData
+	 * @param out
+	 */
+	private void getSpecialList(AcceptData acceptData, Integer page, Long subId, PrintWriter out) {
+		if (subId == null) {
+			out.print(JsonUtil.loadFalseResult("鍒嗙被id涓嶈兘涓虹┖"));
+			return;
+		}
+
+		// 骞冲彴鍖哄垎
+		int platformCode = Constant.getPlatformCode(acceptData.getPlatform());
+		List<String> listKey = new ArrayList<String>();
+
+		if (subId == 1) { // 娣樺疂
+			listKey.add("special_channel_tb");
+		} else if (subId == 2) { // 浜笢
+			listKey.add("special_channel_jd");
+		} else if (subId == 3) { // 鎷煎澶�
+			listKey.add("special_channel_pdd");
+		} else { // 鍏ㄩ儴
+			listKey.add("special_channel_tb");
+			listKey.add("special_channel_jd");
+			listKey.add("special_channel_pdd");
+		}
+
+		List<Special> list = specialService.listByPlaceKeyHasLabel((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE,
+				listKey, platformCode, Integer.parseInt(acceptData.getVersion()));
+
+		long time = System.currentTimeMillis();
+
+		// 鍒犻櫎灏氭湭鍚敤鐨勮繃鏈熺殑
+		for (int i = 0; i < list.size(); i++) {
+			Special special = list.get(i);
+			if (special.getState() == 1L) {
+				list.remove(i--);
+			} else {
+				if (special.getStartTime() != null && special.getEndTime() != null)
+					special.setTimeTask(true);
+				else
+					special.setTimeTask(false);
+
+				if (special.isTimeTask()) {
+					if (time < special.getStartTime().getTime() || time > special.getEndTime().getTime()) {
+						list.remove(i--);
+					} else// 璁剧疆鍊掕鏃�
+					{
+						special.setCountDownTime((special.getEndTime().getTime() - time) / 1000);
+					}
+				}
+
+				List<SpecialLabel> listLabels = special.getListLabels();
+				if (listLabels != null && !listLabels.isEmpty()) {
+					List<ClientTextStyleVO> labels = new ArrayList<>();
+					for (SpecialLabel specialLabel : listLabels) {
+						labels.add(new ClientTextStyleVO(specialLabel.getName(), specialLabel.getBgColor()));
+					}
+					special.setLabels(labels);
+				}
+			}
+		}
+
+		long count = specialService.countByPlaceKeyList(listKey, platformCode,
+				Integer.parseInt(acceptData.getVersion()));
+
+		GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
+		Gson gson = gsonBuilder.create();
+		JSONObject data = new JSONObject();
+		data.put("count", count);
+		data.put("list", gson.toJson(list));
+		out.print(JsonUtil.loadTrueResult(data));
+	}
+
+	/**
+	 * 鏃堕棿澶勭悊
+	 * 
+	 * @return
+	 */
+	private Gson getGson() {
+		GsonBuilder gb = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder());
+		gb.excludeFieldsWithoutExposeAnnotation();
+		gb.registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
+			@Override
+			public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) {
+				String desc = "";
+				if (value != null) {
+					// 鍒ゆ柇鏄惁鏄悓涓�澶�
+
+					Calendar calendar = Calendar.getInstance();
+					calendar.setTime(value);
+					int y1 = calendar.get(Calendar.YEAR);// 鑾峰彇骞翠唤
+					int d1 = calendar.get(Calendar.DAY_OF_YEAR);// 鑾峰彇骞翠腑绗嚑澶�
+
+					Date nowDate = new Date();
+					Calendar calendar2 = Calendar.getInstance();
+					calendar2.setTime(nowDate);
+					int y2 = calendar2.get(Calendar.YEAR);// 鑾峰彇骞翠唤
+					int d2 = calendar2.get(Calendar.DAY_OF_YEAR);// 鑾峰彇骞翠腑绗嚑澶�
+
+					long old = value.getTime();
+					long now = nowDate.getTime();
+					if (y1 == y2) {
+						if (d1 == d2) {
+							long cha = now - old;
+							if (cha < 1000 * 60 * 2L) {
+								desc = "鍒氬垰";
+							} else if (cha < 1000 * 60 * 60L) {
+								desc = (cha / (1000 * 60)) + "鍒嗛挓鍓�";
+							} else {
+								desc = (cha / (1000 * 60 * 60)) + "灏忔椂鍓�";
+							}
+						} else if (d2 - d1 == 1) {
+							desc = "鏄ㄥぉ";
+						} else {
+							desc = (d2 - d1) + "澶╁墠";
+						}
+					} else {
+						int timeDistance = 0;
+						for (int i = y1; i < y2; i++) {
+							if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
+								timeDistance += 366; // 闂板勾
+							} else {
+								timeDistance += 365; // 涓嶆槸闂板勾
+							}
+						}
+						desc = timeDistance + (d2 - d1) + "澶╁墠";
+					}
+
+					return new JsonPrimitive(desc);
+				}
+
+				return new JsonPrimitive("");
+			}
+		});
+
+		Gson gson = gb.create();
+		return gson;
+	}
+
+	/**
+	 * 娲诲姩鍒楄〃
+	 * 
+	 * @param acceptData
+	 * @param out
+	 */
+	private void getArticleList(AcceptData acceptData, Integer page, String key, boolean search, PrintWriter out) {
+		List<ArticleVO> list = articleOfficialService.queryValid((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE,
+				key);
+		if (list != null) {
+			for (ArticleVO article : list) {
+				String tags = article.getTags();
+				if (StringUtil.isNullOrEmpty(tags)) {
+					continue;
+				}
+
+				String[] arrayTags = tags.split("\\s+");
+				if (arrayTags == null || arrayTags.length == 0) {
+					continue;
+				}
+
+				String[] arrayTagsColour = null;
+				String tagsColour = article.getTagsColour();
+				if (!StringUtil.isNullOrEmpty(tagsColour)) {
+					arrayTagsColour = tagsColour.split("\\s+");
+				}
+
+				String color = "#FE0014";
+				List<ClientTextStyleVO> labels = new ArrayList<ClientTextStyleVO>();
+				for (int i = 0; i < arrayTags.length; i++) {
+					String tag = arrayTags[i];
+					if (arrayTagsColour != null && arrayTagsColour.length == arrayTags.length) {
+						color = arrayTagsColour[i];
+					}
+					ClientTextStyleVO styleVO = new ClientTextStyleVO();
+					styleVO.setColor(color);
+					styleVO.setContent(tag);
+					labels.add(styleVO);
+				}
+				article.setLabels(labels);
+			}
+		}
+
+		GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
+		Gson gson = gsonBuilder.create();
+
+		JSONObject data = new JSONObject();
+		if (page == 1 && !search) {
+			List<SwiperPicture> banners = swiperPictureService.getByBannerCardAndVersion("article_banners",
+					acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()));
+			if (banners == null)
+				banners = new ArrayList<>();
+			data.put("banners", gson.toJson(banners));
+
+			List<Special> listSpecial = specialService.listByVersion(0, Integer.MAX_VALUE, "article_specials",
+					acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()));
+			if (listSpecial == null)
+				listSpecial = new ArrayList<>();
+
+			for (Special special : listSpecial) {
+				boolean needLogin = special.isJumpLogin();
+				JumpDetailV2 jumpDetail = special.getJumpDetail();
+				if (jumpDetail != null) {
+					jumpDetail.setNeedLogin(needLogin);
+					special.setJumpDetail(jumpDetail);
+				}
+			}
+			data.put("specials", gson.toJson(listSpecial));
+		}
+		data.put("count", articleOfficialService.countValid(key));
+		data.put("list", gson.toJson(list));
+		out.print(JsonUtil.loadTrueResult(data));
+	}
+
+	/**
+	 * 鏂囩珷鎼滅储
+	 * 
+	 * @param acceptData
+	 * @param page
+	 * @param key
+	 * @param out
+	 */
+	@RequestMapping(value = "readArticle", method = RequestMethod.POST)
+	public void readArticle(AcceptData acceptData, String id, PrintWriter out) {
+		if (StringUtil.isNullOrEmpty(id)) {
+			out.print(JsonUtil.loadFalseResult("id涓嶈兘涓虹┖"));
+			return;
+		}
+		articleOfficialService.updateReadNum(id);
+		out.print(JsonUtil.loadTrueResult("鎿嶄綔鎴愬姛"));
+	}
+
+	/**
+	 * 鏂囩珷鎼滅储
+	 * 
+	 * @param acceptData
+	 * @param page
+	 * @param key
+	 * @param out
+	 */
+	@RequestMapping(value = "searchArticle", method = RequestMethod.POST)
+	public void searchArticle(AcceptData acceptData, Integer page, String key, PrintWriter out) {
+		getArticleList(acceptData, page, key, true, out);
+	}
+
+	/**
+	 * 鏂囩珷鎼滅储
+	 * 
+	 * @param acceptData
+	 * @param page
+	 * @param key
+	 * @param out
+	 */
+	@RequestMapping(value = "getArticleHot", method = RequestMethod.POST)
+	public void getArticleHot(AcceptData acceptData, PrintWriter out) {
+		JSONObject data = new JSONObject();
+		data.put("words", configService.get(ConfigKeyEnum.articleHotWords.getKey()));
+		out.print(JsonUtil.loadTrueResult(data));
+	}
+
+	/**
+	 * 2.0.7鐗堟湰鍚庤皟鐢� 鍔ㄦ�佸垪琛紙閫傜敤浜庡彂鍦堜笌绱犳潗锛�
+	 * 
+	 * @param acceptData
+	 * @param page
+	 * @param cid
+	 * @param subId
+	 * @param out
+	 */
+	@RequestMapping(value = "getDynamicList", method = RequestMethod.POST)
+	public void getDynamicListNew(AcceptData acceptData, Integer page, Long cid, String subId, PrintWriter out) {
+
+		try {
+			int type = 1;
+			if (cid == TYPE_FAQUAN) {
+				type = 1;
+			} else if (cid == TYPE_SUCAI) {
+				type = 2;
+			}
+
+			List<GoodsEvaluate> list = goodsEvaluateService.queryMaterialsCache((page - 1) * Constant.PAGE_SIZE,
+					Constant.PAGE_SIZE, type);
+			if (list == null) {
+				list = new ArrayList<>();
+			}
+
+			GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
+			gsonBuilder.registerTypeAdapter(ImgEnum.class, new JsonSerializer<ImgEnum>() {
+				@Override
+				public JsonElement serialize(ImgEnum value, Type theType, JsonSerializationContext context) {
+					if (value == null) {
+						return new JsonPrimitive("");
+					} else {
+						return new JsonPrimitive(value.getVlaue());
+					}
+				}
+			}).registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
+				@Override
+				public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) {
+					String desc = "";
+					if (value != null) {
+						// 鍒ゆ柇鏄惁鏄悓涓�澶�
+
+						Calendar calendar = Calendar.getInstance();
+						calendar.setTime(value);
+						int y1 = calendar.get(Calendar.YEAR);// 鑾峰彇骞翠唤
+						int d1 = calendar.get(Calendar.DAY_OF_YEAR);// 鑾峰彇骞翠腑绗嚑澶�
+
+						Date nowDate = new Date();
+						Calendar calendar2 = Calendar.getInstance();
+						calendar2.setTime(nowDate);
+						int y2 = calendar2.get(Calendar.YEAR);// 鑾峰彇骞翠唤
+						int d2 = calendar2.get(Calendar.DAY_OF_YEAR);// 鑾峰彇骞翠腑绗嚑澶�
+
+						long old = value.getTime();
+						long now = nowDate.getTime();
+						if (y1 == y2) {
+							if (d1 == d2) {
+								long cha = now - old;
+								if (cha < 1000 * 60 * 2L) {
+									desc = "鍒氬垰";
+								} else if (cha < 1000 * 60 * 60L) {
+									desc = (cha / (1000 * 60)) + "鍒嗛挓鍓�";
+								} else {
+									desc = (cha / (1000 * 60 * 60)) + "灏忔椂鍓�";
+								}
+							} else if (d2 - d1 == 1) {
+								desc = "鏄ㄥぉ";
+							} else {
+								desc = (d2 - d1) + "澶╁墠";
+							}
+						} else {
+							int timeDistance = 0;
+							for (int i = y1; i < y2; i++) {
+								if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
+									timeDistance += 366; // 闂板勾
+								} else {
+									timeDistance += 365; // 涓嶆槸闂板勾
+								}
+							}
+							desc = timeDistance + (d2 - d1) + "澶╁墠";
+						}
+
+						return new JsonPrimitive(desc);
+					}
+
+					return new JsonPrimitive("");
+				}
+			});
+			Gson gson = gsonBuilder.create();
+			long count = goodsEvaluateService.countValidMaterials(type);
+
+			JSONArray jsonArray = new JSONArray();
+
+			String listStr = gson.toJson(list);
+			JSONArray array = JSONArray.fromObject(listStr);
+			for (int i = 0; i < array.size(); i++) {
+				Object object = array.get(i);
+				JSONObject json = JSONObject.fromObject(object);
+				Object shareNum = json.get("shareNum");
+				if (shareNum != null) {
+					int num = Integer.parseInt(shareNum.toString());
+
+					if (num >= 100000000) {
+						double sales = num;
+						String salesCountMidea = String.format("%.1f", sales / 100000000);
+						json.put("shareNum", salesCountMidea + "浜�");
+					} else if (num >= 10000) {
+						double sales = num;
+						String salesCountMidea = String.format("%.1f", sales / 10000);
+						json.put("shareNum", salesCountMidea + "涓�");
+					}
+				}
+				jsonArray.add(json);
+			}
+
+			JSONObject data = new JSONObject();
+			data.put("count", count);
+			data.put("list", jsonArray);
+			out.print(JsonUtil.loadTrueResult(data));
+		} catch (Exception e) {
+			e.printStackTrace();
+			out.print(JsonUtil.loadFalseResult(1, "鏌ヨ淇℃伅澶辫触"));
+			LogHelper.errorDetailInfo(e);
+		}
+
+	}
+
+	/**
+	 * 
+	 * @param acceptData
+	 * @param uid
+	 * @param id
+	 * @param type
+	 *            1-鏀惧ぇ 2-淇濆瓨 3-鍒嗕韩
+	 * @param goodsId
+	 * @param goodsType
+	 * @param out
+	 */
+	@RequestMapping(value = "evaluateShare", method = RequestMethod.POST)
+	public void evaluateShare(AcceptData acceptData, Long uid, String id, Integer type, Long goodsId, Integer goodsType,
+			PrintWriter out) {
+		try {
+			if (uid == null) {
+				out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
+				return;
+			}
+
+			if (StringUtil.isNullOrEmpty(id) || type == null) {
+				out.print(JsonUtil.loadFalseResult("浼犻�掑弬鏁颁笉鑳戒负绌�"));
+				return;
+			}
+
+			if (type == 1 && (goodsId == null || goodsType == null)) {
+				out.print(JsonUtil.loadFalseResult("鍟嗗搧鍙傛暟涓嶈兘涓虹┖"));
+				return;
+			}
+
+			GoodsEvaluate goodsEvaluate = goodsEvaluateService.getById(id);
+			if (goodsEvaluate == null) {
+				out.print(JsonUtil.loadFalseResult("璇ュ唴瀹瑰凡涓嶅瓨鍦�"));
+				return;
+			}
+
+			UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
+			if (user == null) {
+				out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
+				return;
+			}
+
+			if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
+				out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC));
+				return;
+			}
+
+			UserExtraTaoBaoInfo taoBaoInfo = userExtraTaoBaoInfoService.getByUid(uid);
+			String relationId = null;
+			if (taoBaoInfo != null && taoBaoInfo.getRelationId() != null && taoBaoInfo.getRelationValid() != null
+					&& taoBaoInfo.getRelationValid() == true)
+				relationId = taoBaoInfo.getRelationId();
+
+			if (StringUtil.isNullOrEmpty(relationId)) {
+				out.print(JsonUtil.loadFalseResult(2, "娣樺疂鏈巿鏉冿紝璇峰墠寰�\"鎴戠殑\"缁戝畾娣樺疂璐﹀彿"));
+				return;
+			}
+
+			String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
+			if (StringUtil.isNullOrEmpty(inviteCode)) {
+				out.print(JsonUtil.loadFalseResult(1, "閭�璇风爜鏈縺娲�"));
+				return;
+			}
+
+			List<ImgInfo> imgs = goodsEvaluate.getImgList();
+			if (imgs == null) {
+				out.print(JsonUtil.loadFalseResult("璇ュ浘鐗囧唴瀹瑰凡涓嶅瓨鍦�"));
+				return;
+			}
+
+			List<String> list = new ArrayList<>();
+			Integer dynamicType = goodsEvaluate.getDynamicType();
+			if (dynamicType == null || dynamicType.intValue() == 2) {
+				for (ImgInfo imgInfo : imgs) {
+					if (imgInfo.getType() == ImgEnum.goods || imgInfo.getType() == ImgEnum.video)
+						continue;
+					if (imgInfo.getType() == ImgEnum.img)
+						list.add(StringUtil.isNullOrEmpty(imgInfo.getUrlHD()) ? imgInfo.getUrl() : imgInfo.getUrlHD());
+					else if (imgInfo.getType() == ImgEnum.activity)
+						if (!StringUtil.isNullOrEmpty(imgInfo.getActivityPic())) {
+							list.add(imgInfo.getActivityPic());
+						}
+				}
+			} else {
+				// 鍗曞搧
+				if (goodsEvaluate.getType() == EvaluateEnum.single) {
+					for (ImgInfo imgInfo : imgs) {
+						if (imgInfo.getType() == ImgEnum.video)
+							continue;
+
+						GoodsDetailVO goodsVO = imgInfo.getGoodsVO();
+						if (goodsVO == null) {
+							list.add(StringUtil.isNullOrEmpty(imgInfo.getUrlHD()) ? imgInfo.getUrl()
+									: imgInfo.getUrlHD());
+							continue;
+						}
+
+						String jumpLink = getJumpLink(goodsVO, user, relationId, inviteCode);
+						if (!StringUtil.isNullOrEmpty(jumpLink)) {
+							list.add(jumpLink);
+						}
+					}
+
+				} else if (goodsEvaluate.getType() == EvaluateEnum.multiple) {
+					if (type == 1) {
+						for (ImgInfo imgInfo : imgs) {
+							if (imgInfo.getGoodsVO() != null)
+								if (imgInfo.getGoodsVO().getGoodsId().longValue() == goodsId.longValue()
+										&& imgInfo.getGoodsVO().getGoodsType() == goodsType.intValue()) {
+									String jumpLink = getJumpLink(imgInfo.getGoodsVO(), user, relationId, inviteCode);
+									if (!StringUtil.isNullOrEmpty(jumpLink)) {
+										list.add(jumpLink);
+									}
+									break;
+								}
+						}
+					} else if (type == 2 || type == 3) {
+						for (ImgInfo imgInfo : imgs) {
+							if (imgInfo.getGoodsVO() != null) {
+								String jumpLink = getJumpLink(imgInfo.getGoodsVO(), user, relationId, inviteCode);
+								if (!StringUtil.isNullOrEmpty(jumpLink)) {
+									list.add(jumpLink);
+								}
+							}
+						}
+					}
+
+				} else if (goodsEvaluate.getType() == EvaluateEnum.activity) {
+					for (ImgInfo imgInfo : imgs) {
+						if (imgInfo.getType() == ImgEnum.goods || imgInfo.getType() == ImgEnum.video)
+							continue;
+						if (imgInfo.getType() == ImgEnum.img)
+							list.add(StringUtil.isNullOrEmpty(imgInfo.getUrlHD()) ? imgInfo.getUrl()
+									: imgInfo.getUrlHD());
+						else if (imgInfo.getType() == ImgEnum.activity)
+							if (!StringUtil.isNullOrEmpty(imgInfo.getActivityPic())) {
+								list.add(imgInfo.getActivityPic());
+							}
+					}
+				}
+			}
+
+			Integer shareCount = goodsEvaluate.getShareNum();
+			if (shareCount == null) {
+				shareCount = 0;
+			}
+
+			if (type == 3) {
+				shareCount++;
+				goodsEvaluateService.addShareNum(id);
+			}
+
+			if (list.size() == 0) {
+				out.print(JsonUtil.loadFalseResult("璇ヤ俊鎭凡涓嬫灦"));
+				return;
+			}
+
+			JSONObject data = new JSONObject();
+			data.put("count", shareCount);
+			data.put("list", list);
+			out.print(JsonUtil.loadTrueResult(data));
+		} catch (Exception e) {
+			out.print(JsonUtil.loadFalseResult("鍒嗕韩鍥剧敓鎴愬け璐�"));
+			return;
+		}
+	}
+
+	private String getJumpLink(GoodsDetailVO goodsVO, UserInfo user, String relationId, String inviteCode) {
+		String jumpLink = null;
+		if (goodsVO.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
+			TaoBaoLink taoBaoLink = null;
+			try {
+				taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(user.getId(), goodsVO.getGoodsId(), relationId);
+			} catch (ShareGoodsException e) {
+				e.printStackTrace();
+			}
+			jumpLink = ShareControllerV2.getERCodeContentNew(
+					configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey()), taoBaoLink.getGoods(),
+					TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken()));
+		} else if (goodsVO.getGoodsType() == Constant.SOURCE_TYPE_JD) {
+			JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsVO.getGoodsId());
+			if (jdGoods == null) {
+				return null;
+			}
+
+			String couponUrl = null;
+			JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(jdGoods);
+			if (couponInfo != null) {
+				couponUrl = couponInfo.getLink();
+			}
+			String materialId = "https://item.jd.com/" + goodsVO.getGoodsId() + ".html";
+			jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "",
+					user.getId() + "");
+		} else if (goodsVO.getGoodsType() == Constant.SOURCE_TYPE_PDD) {
+			jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goodsVO.getGoodsId(), PinDuoDuoApiUtil.PID_SHARE + "",
+					user.getId() + "");
+		}
+
+		FileUploadResult uploadResult = qrCodeService.drawDynamicGoodsPoster(jumpLink, user.getPortrait(), inviteCode,
+				goodsVO);
+		if (uploadResult != null) {
+			return uploadResult.getUrl();
+		}
+		return null;
+	}
+
+	/**
+	 * 璇勮澶嶅埗
+	 * 
+	 * @param acceptData
+	 * @param id
+	 * @param cid
+	 *            璇勮id
+	 * @param out
+	 */
+	@RequestMapping(value = "evaluateComment", method = RequestMethod.POST)
+	public void evaluateComment(AcceptData acceptData, Long uid, String id, String cid, PrintWriter out) {
+		if (StringUtil.isNullOrEmpty(id)) {
+			out.print(JsonUtil.loadFalseResult("id涓嶈兘涓虹┖"));
+			return;
+		}
+
+		GoodsEvaluate goodsEvaluate = goodsEvaluateService.getById(id);
+		if (goodsEvaluate == null) {
+			out.print(JsonUtil.loadFalseResult("璇ュ唴瀹瑰凡涓嶅瓨鍦�"));
+			return;
+		}
+
+		UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
+		if (user == null) {
+			out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
+			return;
+		}
+
+		if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
+			out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC));
+			return;
+		}
+
+		UserExtraTaoBaoInfo taoBaoInfo = userExtraTaoBaoInfoService.getByUid(uid);
+		String relationId = null;
+		if (taoBaoInfo != null && taoBaoInfo.getRelationId() != null && taoBaoInfo.getRelationValid() != null
+				&& taoBaoInfo.getRelationValid() == true)
+			relationId = taoBaoInfo.getRelationId();
+
+		if (StringUtil.isNullOrEmpty(relationId)) {
+			out.print(JsonUtil.loadFalseResult(2, "娣樺疂鏈巿鏉冿紝璇峰墠寰�\"鎴戠殑\"缁戝畾娣樺疂璐﹀彿"));
+			return;
+		}
+
+		String text = "";
+		List<CommentInfo> comments = goodsEvaluate.getComments();
+		if (comments != null) {
+			for (CommentInfo commentInfo : comments) {
+				if (cid.equals(commentInfo.getId())) {
+					text = commentInfo.getContent();
+				}
+			}
+		}
+
+		String newText =  text;
+		try {
+			newText = convertLinkManager.convertLinkFromText(text, uid, true);
+		} catch (ConvertLinkExceptionException e) {
+			if (e.getCode() != ConvertLinkExceptionException.CODE_NONE) {
+				out.print(JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触"));
+				return;
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+			out.print(JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触"));
+			return;
+		}
+
+		JSONObject data = new JSONObject();
+		data.put("text", newText);
+		out.print(JsonUtil.loadTrueResult(data));
+	}
+
+}

--
Gitblit v1.8.0