From 98b1a0affd69bbe63223c21fdd2c404e8bedfccb Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 20 五月 2020 17:25:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into 2.1.2

---
 fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java | 1164 ++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 921 insertions(+), 243 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 a4a67f0..78b09a1 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,22 +1,31 @@
 package com.yeshi.fanli.controller.client.v2;
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.io.PrintWriter;
 import java.lang.reflect.Type;
+import java.math.BigDecimal;
+import java.net.MalformedURLException;
 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 java.util.UUID;
 
 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;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.yeshi.utils.HttpUtil;
 import org.yeshi.utils.JsonUtil;
+import org.yeshi.utils.QRCodeUtil;
 import org.yeshi.utils.entity.FileUploadResult;
+import org.yeshi.utils.tencentcloud.COSManager;
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
@@ -27,6 +36,8 @@
 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.CommonShareInfo;
+import com.yeshi.fanli.entity.bus.homemodule.CommonShareInfo.CommonShareInfoEnum;
 import com.yeshi.fanli.entity.bus.homemodule.Special;
 import com.yeshi.fanli.entity.bus.homemodule.SpecialLabel;
 import com.yeshi.fanli.entity.bus.homemodule.SwiperPicture;
@@ -34,7 +45,6 @@
 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.CommentInfo.CommentInfoEnum;
 import com.yeshi.fanli.entity.dynamic.DynamicInfo;
 import com.yeshi.fanli.entity.dynamic.GoodsEvaluate;
 import com.yeshi.fanli.entity.dynamic.GoodsEvaluate.EvaluateEnum;
@@ -42,12 +52,19 @@
 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.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.count.DailyCountMomentsService;
 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.CommonShareInfoService;
 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;
@@ -56,19 +73,27 @@
 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.AESUtil;
 import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.FilePathEnum;
+import com.yeshi.fanli.util.ImageUtil;
+import com.yeshi.fanli.util.MoneyBigDecimalUtil;
 import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.TimeUtil;
 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.pinduoduo.PinDuoDuoUtil;
 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.homemodule.BannerVO;
+import com.yeshi.fanli.vo.homemodule.SpecialVO;
 import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
 
+import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 
 /**
@@ -121,9 +146,21 @@
 
 	@Resource
 	private QrCodeService qrCodeService;
-	
+
 	@Resource
 	private ConvertLinkManager convertLinkManager;
+
+	@Resource
+	private ShareGoodsService shareGoodsService;
+
+	@Resource
+	private DailyCountMomentsService dailyCountMomentsService;
+
+	@Resource
+	private CommonShareInfoService commonShareInfoService;
+
+	@Resource(name = "taskExecutor")
+	private TaskExecutor executor;
 
 	private final static long TYPE_REXIAO = 1;// 鐑攢
 	private final static long TYPE_TUIJIAN = 2;// 鎺ㄨ崘
@@ -240,7 +277,6 @@
 			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));
@@ -344,8 +380,8 @@
 			listKey.add("special_channel_pdd");
 		}
 
-		List<Special> list = specialService.listByPlaceKeyHasLabel((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE,
-				listKey, platformCode, Integer.parseInt(acceptData.getVersion()));
+		List<SpecialVO> list = specialService.listByPlaceKeyHasLabel((page - 1) * Constant.PAGE_SIZE,
+				Constant.PAGE_SIZE, listKey, platformCode, Integer.parseInt(acceptData.getVersion()));
 
 		long time = System.currentTimeMillis();
 
@@ -353,31 +389,29 @@
 		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)
+				continue;
+			}
+
+			// 鏄惁娲诲姩宸茶繃鏈�
+			if (special.getStartTime() != null && special.getEndTime() != null) {
+				if (time < special.getStartTime().getTime() || time > special.getEndTime().getTime()) {
+					continue;
+				} else {
 					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);
+					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,
@@ -505,18 +539,18 @@
 
 		JSONObject data = new JSONObject();
 		if (page == 1 && !search) {
-			List<SwiperPicture> banners = swiperPictureService.getByBannerCardAndVersion("article_banners",
+			List<BannerVO> 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",
+			List<SpecialVO> 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) {
+			for (SpecialVO special : listSpecial) {
 				boolean needLogin = special.isJumpLogin();
 				JumpDetailV2 jumpDetail = special.getJumpDetail();
 				if (jumpDetail != null) {
@@ -588,97 +622,183 @@
 	 */
 	@RequestMapping(value = "getDynamicList", method = RequestMethod.POST)
 	public void getDynamicListNew(AcceptData acceptData, Integer page, Long cid, String subId, PrintWriter out) {
-		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(CommentInfoEnum.class, new JsonSerializer<CommentInfoEnum>() {
-			@Override
-			public JsonElement serialize(CommentInfoEnum value, Type theType, JsonSerializationContext context) {
-				if (value == null) {
-					return new JsonPrimitive(1);
-				} else {
-					return new JsonPrimitive(value.getDesc());
-				}
+		try {
+			int type = 1;
+			if (cid == TYPE_FAQUAN) {
+				type = 1;
+			} else if (cid == TYPE_SUCAI) {
+				type = 2;
 			}
-		}).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) {
-					// 鍒ゆ柇鏄惁鏄悓涓�澶�
+			List<GoodsEvaluate> listNew = new ArrayList<GoodsEvaluate>();
 
-					Calendar calendar = Calendar.getInstance();
-					calendar.setTime(value);
-					int y1 = calendar.get(Calendar.YEAR);// 鑾峰彇骞翠唤
-					int d1 = calendar.get(Calendar.DAY_OF_YEAR);// 鑾峰彇骞翠腑绗嚑澶�
+			List<GoodsEvaluate> list = goodsEvaluateService.queryMaterialsCache((page - 1) * Constant.PAGE_SIZE,
+					Constant.PAGE_SIZE, type);
 
-					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) + "澶╁墠";
+			if (!VersionUtil.greaterThan_2_1_1(acceptData.getPlatform(), acceptData.getVersion())) {
+				listNew.addAll(list);
+			} else if (list.size() > 0) { // 娲诲姩鍥剧墖涓嶅厑璁歌烦杞�
+				for (GoodsEvaluate goodsEvaluate : list) {
+					if (goodsEvaluate.getType() != EvaluateEnum.activity) {
+						listNew.add(goodsEvaluate);
+						continue;
 					}
 
-					return new JsonPrimitive(desc);
+					GoodsEvaluate evaluateNew = new GoodsEvaluate();
+					try {
+						PropertyUtils.copyProperties(evaluateNew, goodsEvaluate);
+					} catch (Exception e) {
+						e.printStackTrace();
+						continue;
+					}
+					// 璺宠浆杩囨浮椤�
+					// String jumpLink =
+					// configService.get(ConfigKeyEnum.activityDetailLink.getKey())
+					// + "?type=%s&id=%s";
+					// jumpLink = String.format(jumpLink, "circle",
+					// evaluateNew.getId());
+					// evaluateNew.setJumpLink(jumpLink);
+
+					// 鍥剧墖鏁伴噺
+					if (evaluateNew.getImgList() != null && evaluateNew.getImgList().size() > 0) {
+						int size = evaluateNew.getImgList().size();
+						List<ImgInfo> listInfoNew = new ArrayList<ImgInfo>();
+
+						for (ImgInfo imgInfo : goodsEvaluate.getImgList()) {
+							if (imgInfo.getType() != ImgEnum.activity) {
+								listInfoNew.add(imgInfo);
+								continue;
+							}
+							ImgInfo infoNew = new ImgInfo();
+							try {
+								PropertyUtils.copyProperties(infoNew, imgInfo);
+							} catch (Exception e) {
+								e.printStackTrace();
+								continue;
+							}
+							infoNew.setType(ImgEnum.img);
+							// 鍥剧墖澶т簬涓�寮犳椂 鏄剧ず涔濆鏍煎浘
+							if (size > 1) {
+								infoNew.setW(1);
+								infoNew.setH(1);
+							}
+							listInfoNew.add(infoNew);
+						}
+						evaluateNew.setImgList(listInfoNew);
+					}
+					listNew.add(evaluateNew);
 				}
-
-				return new JsonPrimitive("");
 			}
-		});
-		Gson gson = gsonBuilder.create();
-		long count = goodsEvaluateService.countValidMaterials(type);
 
-		JSONObject data = new JSONObject();
-		data.put("count", count);
-		data.put("list", gson.toJson(list));
-		out.print(JsonUtil.loadTrueResult(data));
+			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(BigDecimal.class, new JsonSerializer<BigDecimal>() {
+				@Override
+				public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) {
+					if (value == null) {
+						return new JsonPrimitive("");
+					} else {
+						// 淇濈暀2浣嶅皬鏁�
+						return new JsonPrimitive(MoneyBigDecimalUtil.getWithNoZera(value) + "");
+					}
+				}
+			}).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(listNew);
+			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);
+		}
+
 	}
 
 	/**
@@ -695,146 +815,183 @@
 	@RequestMapping(value = "evaluateShare", method = RequestMethod.POST)
 	public void evaluateShare(AcceptData acceptData, Long uid, String id, Integer type, Long goodsId, Integer goodsType,
 			PrintWriter out) {
-		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<>();
-		// 鍗曞搧
-		if (goodsEvaluate.getType() == EvaluateEnum.single) {
-			for (ImgInfo imgInfo : imgs) {
-				GoodsDetailVO goodsVO = imgInfo.getGoodsVO();
-				if (goodsVO == null) {
-					list.add(StringUtil.isNullOrEmpty(imgInfo.getUrlHD()) ? imgInfo.getUrl() : imgInfo.getUrlHD());
-					continue;
-				}
-
-				String jumpLink = getJumpLink(goodsVO, user, inviteCode);
-				if (!StringUtil.isNullOrEmpty(jumpLink)) {
-					list.add(jumpLink);
-				}
+		try {
+			if (uid == null) {
+				out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
+				return;
 			}
 
-		} else if (goodsEvaluate.getType() == EvaluateEnum.multiple) {
-			if (type == 1) {
+			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.getGoodsVO() != null)
-						if (imgInfo.getGoodsVO().getGoodsId().longValue() == goodsId.longValue()
-								&& imgInfo.getGoodsVO().getGoodsType() == goodsType.intValue()) {
-							String jumpLink = getJumpLink(imgInfo.getGoodsVO(), user, inviteCode);
-							if (!StringUtil.isNullOrEmpty(jumpLink)) {
-								list.add(jumpLink);
-							}
-							break;
+					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 (type == 2 || type == 3) {
-				for (ImgInfo imgInfo : imgs) {
-					if (imgInfo.getGoodsVO() != null) {
-						String jumpLink = getJumpLink(imgInfo.getGoodsVO(), user, inviteCode);
+			} 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, imgInfo.getUrl());
 						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,
+											imgInfo.getUrl());
+									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,
+										imgInfo.getUrl());
+								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());
+							} else if (!StringUtil.isNullOrEmpty(imgInfo.getUrl())) {
+								list.add(imgInfo.getUrl());
+							}
+					}
 				}
 			}
 
-		} 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;
 			}
-		}
 
-		Integer shareCount = goodsEvaluate.getShareNum();
-		if (shareCount == null) {
-			shareCount = 0;
-		}
+			if (type == 3) {
+				shareCount++;
+				goodsEvaluateService.addShareNum(id);
 
-		if (type == 3) {
-			shareCount++;
-			goodsEvaluateService.addShareNum(id);
-		}
+				executor.execute(new Runnable() {
+					@Override
+					public void run() { // 娣诲姞姣忔棩缁熻
+						dailyCountMomentsService.addShareClick();
+					}
+				});
+			}
 
-		if (list.size() == 0) {
-			out.print(JsonUtil.loadFalseResult("璇ヤ俊鎭凡涓嬫灦"));
+			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;
 		}
-
-		JSONObject data = new JSONObject();
-		data.put("count", shareCount);
-		data.put("list", list);
-		out.print(JsonUtil.loadTrueResult(data));
 	}
 
-	private String getJumpLink(GoodsDetailVO goodsVO, UserInfo user, String inviteCode) {
+	private String getJumpLink(GoodsDetailVO goodsVO, UserInfo user, String relationId, String inviteCode,
+			String mainPic) {
 		String jumpLink = null;
 		if (goodsVO.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
-			String url = String.format("http://%s%s?uid=%s&id=%s&appType=flq", configService.getH5Host(),
-					Constant.systemCommonConfig.getShareGoodsPagePath(),
-					AESUtil.encrypt(user.getId() + "", Constant.UIDAESKEY), goodsVO.getGoodsId() + "");
-			String shortLink = HttpUtil.getShortLink(url);
-			if (!StringUtil.isNullOrEmpty(shortLink)) {
-				url = shortLink;
+			TaoBaoLink taoBaoLink = null;
+			try {
+				taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(user.getId(), goodsVO.getGoodsId(), relationId);
+			} catch (ShareGoodsException e) {
+				e.printStackTrace();
 			}
-			jumpLink = url;
+			jumpLink = ShareControllerV2.getERCodeContentNew(
+					configService.get(ConfigKeyEnum.taobaoShareQrcodeText.getKey()), taoBaoLink.getGoods(),
+					TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken()));
 		} else if (goodsVO.getGoodsType() == Constant.SOURCE_TYPE_JD) {
 			JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsVO.getGoodsId());
 			if (jdGoods == null) {
@@ -855,7 +1012,7 @@
 		}
 
 		FileUploadResult uploadResult = qrCodeService.drawDynamicGoodsPoster(jumpLink, user.getPortrait(), inviteCode,
-				goodsVO);
+				mainPic, goodsVO);
 		if (uploadResult != null) {
 			return uploadResult.getUrl();
 		}
@@ -863,7 +1020,7 @@
 	}
 
 	/**
-	 * 璇勮澶嶅埗
+	 * 璇勮澶嶅埗-H5
 	 * 
 	 * @param acceptData
 	 * @param id
@@ -907,27 +1064,548 @@
 		}
 
 		String text = "";
+		CommentInfo comment = null;
 		List<CommentInfo> comments = goodsEvaluate.getComments();
 		if (comments != null) {
 			for (CommentInfo commentInfo : comments) {
 				if (cid.equals(commentInfo.getId())) {
 					text = commentInfo.getContent();
+					comment = commentInfo;
+					break;
 				}
 			}
 		}
-		
-		try {
-			text=convertLinkManager.convertLinkFromText(text, uid, true);
-		} catch (Exception e) {
-			e.printStackTrace();
-			out.print(JsonUtil.loadFalseResult("杞摼澶辫触"));
-			return;
+
+		String newText = text; // 闈為�氱敤鍒搁渶瑕侀獙璇�
+		if (comment != null && (comment.getNeedSpin() == null || comment.getNeedSpin())) {
+			try {
+				newText = convertLinkManager.convertLinkFromText(text, uid, true);
+			} catch (ConvertLinkExceptionException e) {
+				if (e.getCode() != ConvertLinkExceptionException.CODE_NONE) {
+					out.print(JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触"));
+					return;
+				}
+			} catch (Exception e) {
+				LogHelper.errorDetailInfo(e);
+				out.print(JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触"));
+				return;
+			}
+		}
+
+		// 鏇挎崲浠锋牸
+		if (goodsEvaluate.getType() == EvaluateEnum.single) {
+			GoodsDetailVO goods = goodsEvaluate.getGoods();
+			newText = newText.replace("[鍘熶环]", MoneyBigDecimalUtil.getWithNoZera(goods.getZkPrice()) + "");
+			if (!goods.isHasCoupon()) {
+				newText = newText.replace("棰嗗埜鎶㈣喘", "鎶㈣喘");
+				newText = newText.replace("銆愬埜鍚庝环銆慬鍒稿悗浠穄鍏�", "");
+			} else {
+				newText = newText.replace("[鍒稿悗浠穄", MoneyBigDecimalUtil.getWithNoZera(goods.getCouponPrice()) + "");
+			}
+			newText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
 		}
 
 		JSONObject data = new JSONObject();
-		data.put("text", text);
+		data.put("text", newText);
+		out.print(JsonUtil.loadTrueResult(data));
+
+		executor.execute(new Runnable() {
+			@Override
+			public void run() { // 娣诲姞姣忔棩缁熻
+				dailyCountMomentsService.addCopyComment();
+			}
+		});
+	}
+
+	/**
+	 * 璇勮澶嶅埗-涓撻
+	 * 
+	 * @param acceptData
+	 * @param id
+	 * @param out
+	 */
+	@RequestMapping(value = "copySpecialComment", method = RequestMethod.POST)
+	public void copySpecialComment(AcceptData acceptData, Long uid, Long id, PrintWriter out) {
+		if (uid == null || id == null) {
+			out.print(JsonUtil.loadFalseResult("鍙傛暟涓嶈兘涓虹┖"));
+			return;
+		}
+
+		CommonShareInfo shareInfo = commonShareInfoService.getByPidAndType(id, CommonShareInfoEnum.special.name());
+		if (shareInfo == null || StringUtil.isNullOrEmpty(shareInfo.getComment())) {
+			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 = shareInfo.getComment();
+		String newText = text;
+		if (shareInfo.getNeedSpin() != null && shareInfo.getNeedSpin()) {
+			try {
+				newText = convertLinkManager.convertLinkFromText(text, uid, true);
+			} catch (ConvertLinkExceptionException e) {
+				if (e.getCode() != ConvertLinkExceptionException.CODE_NONE) {
+					out.print(JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触"));
+					return;
+				}
+			} catch (Exception e) {
+				LogHelper.errorDetailInfo(e);
+				out.print(JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触"));
+				return;
+			}
+		}
+
+		JSONObject data = new JSONObject();
+		data.put("text", newText);
 		out.print(JsonUtil.loadTrueResult(data));
 	}
-	
-}
 
+	@RequestMapping(value = "getActivityDetail")
+	public void getActivityDetail(String callback, AcceptData acceptData, Long uid, String type, String id,
+			PrintWriter out) {
+		if (uid == null || StringUtil.isNullOrEmpty(id) || StringUtil.isNullOrEmpty(type)) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鍙傛暟涓嶈兘涓虹┖"));
+			return;
+		}
+
+		String title = "";
+		String comment = "";
+		String params = "";
+		String desc = "";
+		Date startTime = null;
+		Date endTime = null;
+		JumpDetailV2 jumpDetail = null;
+		List<String> imgs = new ArrayList<>();
+		if ("circle".equalsIgnoreCase(type)) { // 鍙戝湀娲诲姩
+			GoodsEvaluate evaluate = goodsEvaluateService.getById(id);
+			if (evaluate == null) {
+				JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇ユ椿鍔ㄥ凡涓嬫灦"));
+				return;
+			}
+
+			title = evaluate.getTitle();
+			List<CommentInfo> comments = evaluate.getComments();
+			if (comments != null && comments.size() > 0) {
+				comment = comments.get(0).getContent();
+			}
+
+			String jumpLink = null;
+			if (!StringUtil.isNullOrEmpty(evaluate.getJumpLink())) {
+				jumpLink = evaluate.getJumpLink();
+			}
+
+			List<ImgInfo> imgList = evaluate.getImgList();
+			if (imgList != null && imgList.size() > 0) {
+				for (ImgInfo imgInfo : imgList) {
+					if (!StringUtil.isNullOrEmpty(imgInfo.getUrl())
+							&& (imgInfo.getType() == ImgEnum.img || imgInfo.getType() == ImgEnum.activity)) {
+						imgs.add(imgInfo.getUrl());
+					}
+
+					if (imgInfo.getType() == ImgEnum.img || imgInfo.getType() == ImgEnum.activity) {
+						if (StringUtil.isNullOrEmpty(jumpLink) && !StringUtil.isNullOrEmpty(imgInfo.getActivityUrl())) {
+							jumpLink = imgInfo.getActivityUrl();
+						}
+					}
+				}
+			}
+
+			int platformCode = Constant.getPlatformCode(acceptData.getPlatform());
+			jumpDetail = jumpDetailV2Service.getByTypeCache("web", platformCode,
+					Integer.parseInt(acceptData.getVersion()));
+			JSONObject inner = new JSONObject();
+			inner.put("url", jumpLink);
+			params = inner.toString();
+		} else {
+			long pid = Long.parseLong(id);
+			if (CommonShareInfoEnum.special.name().equalsIgnoreCase(type)) {
+				Special special = specialService.selectByPrimaryKey(pid);
+				if (special == null) {
+					JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇ユ椿鍔ㄥ凡涓嬫灦"));
+					return;
+				}
+
+				params = special.getParams();
+				jumpDetail = special.getJumpDetail();
+				if (!StringUtil.isNullOrEmpty(special.getPicture())) {
+					imgs.add(special.getPicture());
+				}
+				title=special.getName();
+				desc = special.getRemark();
+				startTime = special.getStartTime();
+				endTime = special.getEndTime();
+			} else if (CommonShareInfoEnum.banner.name().equalsIgnoreCase(type)) {
+				SwiperPicture swiper = swiperPictureService.selectByPrimaryKey(pid);
+				if (swiper == null) {
+					JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇ユ椿鍔ㄥ凡涓嬫灦"));
+					return;
+				}
+				params = swiper.getParams();
+				jumpDetail = swiper.getJumpDetail();
+				if (!StringUtil.isNullOrEmpty(swiper.getSrc())) {
+					imgs.add(swiper.getSrc());
+				}
+				title=swiper.getTitle();
+				desc = swiper.getRemark();
+				startTime = swiper.getStartTime();
+				endTime = swiper.getEndTime();
+			}
+			CommonShareInfo shareInfo = commonShareInfoService.getByPidAndType(pid, type);
+			if (shareInfo != null && !StringUtil.isNullOrEmpty(shareInfo.getComment())) {
+				comment = shareInfo.getComment();
+			}
+		}
+
+		if (!StringUtil.isNullOrEmpty(comment)) { // 鏇挎崲娣樺疂瀹樻柟娲诲姩
+			List<String> activityIdList = convertLinkManager.getTaoBaoOfficialActivityId(comment);
+			for (String st : activityIdList)
+				comment = comment.replace(st, "");
+		}
+
+		JSONObject data = new JSONObject();
+		data.put("title", title);
+		data.put("desc", desc);
+		data.put("comment", comment);
+		data.put("params", params);
+		data.put("jumpDetail", jumpDetail);
+		data.put("imgs", imgs);
+		if (startTime != null) {
+			data.put("startTime", TimeUtil.getGernalTime(startTime.getTime(), "yyyy.MM.dd"));
+		}
+
+		if (endTime != null) {
+			data.put("endTime", TimeUtil.getGernalTime(endTime.getTime(), "yyyy.MM.dd"));
+		}
+
+		JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
+	}
+
+	/**
+	 * 璇勮澶嶅埗-涓撻
+	 * 
+	 * @param acceptData
+	 * @param id
+	 * @param out
+	 */
+	@RequestMapping(value = "copyShareComment")
+	public void copyShareComment(String callback, AcceptData acceptData, Long uid, String id, String type,
+			PrintWriter out) {
+		if (uid == null || StringUtil.isNullOrEmpty(id) || StringUtil.isNullOrEmpty(type)) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鍙傛暟涓嶈兘涓虹┖"));
+			return;
+		}
+
+		if ("circle".equalsIgnoreCase(type)) { // 鍙戝湀娲诲姩
+			copyActivityComment(callback, acceptData, uid, id, out);
+			return;
+		}
+
+		long pid = Long.parseLong(id);
+		CommonShareInfo shareInfo = commonShareInfoService.getByPidAndType(pid, type);
+		if (shareInfo == null || StringUtil.isNullOrEmpty(shareInfo.getComment())) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇ュ唴瀹瑰凡涓嶅瓨鍦�"));
+			return;
+		}
+
+		UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
+		if (user == null) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
+			return;
+		}
+
+		if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
+			JsonUtil.printMode(out, callback,
+					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)) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "娣樺疂鏈巿鏉冿紝璇峰墠寰�\"鎴戠殑\"缁戝畾娣樺疂璐﹀彿"));
+			return;
+		}
+
+		String text = shareInfo.getComment();
+		String newText = text;
+		if (shareInfo.getNeedSpin() != null && shareInfo.getNeedSpin()) {
+			try {
+				newText = convertLinkManager.convertLinkFromText(text, uid, true);
+			} catch (ConvertLinkExceptionException e) {
+				if (e.getCode() != ConvertLinkExceptionException.CODE_NONE) {
+					JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触"));
+					return;
+				}
+			} catch (Exception e) {
+				LogHelper.errorDetailInfo(e);
+				JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触"));
+				return;
+			}
+		}
+
+		JSONObject data = new JSONObject();
+		data.put("text", newText);
+		JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
+	}
+
+	/**
+	 * 娲诲姩鍒嗕韩缁樺浘
+	 * @Title: createActivityShareImg
+	 * @Description: 
+	 * @param title
+	 * @param desc
+	 * @param imgUrl
+	 * @param erCodeContent
+	 * @return 
+	 * String 杩斿洖绫诲瀷
+	 * @throws
+	 */
+	private String createActivityShareImg(String type, String id, String erCodeContent) {
+
+		String title = "";
+		String desc = "";
+		String img = "";
+		if ("circle".equalsIgnoreCase(type)) {
+
+		} else if ("banner".equalsIgnoreCase(type)) {
+			SwiperPicture picture = swiperPictureService.selectByPrimaryKey(Long.parseLong(id));
+			title = picture.getTitle();
+			desc = picture.getDesc();
+			img = picture.getSrc();
+		} else if ("special".equalsIgnoreCase(type)) {
+			Special special = specialService.selectByPrimaryKey(Long.parseLong(id));
+			title = special.getName();
+			desc = special.getRemark();
+			img = special.getPicture();
+		}
+
+		try {
+			InputStream erCodeInputStream = null;
+			erCodeInputStream = QRCodeUtil.getInstance(250).encode(erCodeContent);
+			int[] size = new int[2];
+			try {
+				size = ImageUtil.getImgWidthAndHeight(img);
+			} catch (MalformedURLException e) {
+				e.printStackTrace();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+			InputStream resultInputStream = ImageUtil.drawActivityShareImg(HttpUtil.getAsInputStream(img),
+					(float) size[0] / size[1], title, desc, erCodeInputStream);
+			if (resultInputStream != null) {
+				String filePath = FilePathEnum.activityShare.getPath() + UUID.randomUUID().toString().replace("-", "")
+						+ ".png";
+				FileUploadResult result = COSManager.getInstance().uploadFile(resultInputStream, filePath);
+				if (result != null)
+					return result.getUrl();
+			}
+		} catch (Exception e1) {
+			e1.printStackTrace();
+		}
+
+		return null;
+	}
+
+	/**
+	 * 璇勮澶嶅埗-涓撻
+	 * 
+	 * @param acceptData
+	 * @param id
+	 * @param out
+	 */
+	@RequestMapping(value = "getActivityShareImg")
+	public void getActivityShareImg(String callback, AcceptData acceptData, Long uid, String id, String type,
+			PrintWriter out) {
+		if (uid == null || StringUtil.isNullOrEmpty(id) || StringUtil.isNullOrEmpty(type)) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鍙傛暟涓嶈兘涓虹┖"));
+			return;
+		}
+
+		if ("circle".equalsIgnoreCase(type)) { // 鍙戝湀娲诲姩
+			// copyActivityComment(callback, acceptData, uid, id, out);
+			// TODO 鍒嗕韩鍙戝湀鐨勫浘
+			return;
+		}
+
+		long pid = Long.parseLong(id);
+		CommonShareInfo shareInfo = commonShareInfoService.getByPidAndType(pid, type);
+		if (shareInfo == null || StringUtil.isNullOrEmpty(shareInfo.getComment())) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇ュ唴瀹瑰凡涓嶅瓨鍦�"));
+			return;
+		}
+
+		UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
+		if (user == null) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
+			return;
+		}
+
+		if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
+			JsonUtil.printMode(out, callback,
+					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)) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "娣樺疂鏈巿鏉冿紝璇峰墠寰�\"鎴戠殑\"缁戝畾娣樺疂璐﹀彿"));
+			return;
+		}
+
+		String text = shareInfo.getComment();
+		String newText = text;
+		String imgUrl = null;
+		if (shareInfo.getNeedSpin() != null && shareInfo.getNeedSpin()) {
+			try {
+				String erCodeContent = "";
+				newText = convertLinkManager.convertLinkFromText(text, uid, true);
+				// 鑾峰彇鍙d护
+				List<String> tokenList = TaoBaoUtil.getTokenListFromTextWithKuoHao(newText);
+				if (tokenList != null && tokenList.size() > 0) {
+					// 鏋勯�犲垎浜摼鎺�
+					erCodeContent = ShareControllerV2.getTaoBaoActiivtyERCodeContentNew(
+							configService.get(ConfigKeyEnum.taobaoShareQrcodeText.getKey()), tokenList.get(0));
+				} else {
+					// 鑾峰彇閾炬帴
+					List<String> urlList = JDUtil.getJDShortLinksFromText(newText);
+					if (urlList != null && urlList.size() > 0) {
+						erCodeContent = urlList.get(0);
+					} else {
+						urlList = PinDuoDuoUtil.getPDDShortLinksFromText(newText);
+						if (urlList != null && urlList.size() > 0) {
+							erCodeContent = urlList.get(0);
+						}
+					}
+				}
+
+				imgUrl = createActivityShareImg(type, id, erCodeContent);
+			} catch (ConvertLinkExceptionException e) {
+				if (e.getCode() != ConvertLinkExceptionException.CODE_NONE) {
+					JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触"));
+					return;
+				}
+			} catch (Exception e) {
+				LogHelper.errorDetailInfo(e);
+				JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触"));
+				return;
+			}
+		}
+
+		if (StringUtil.isNullOrEmpty(imgUrl)) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鍒嗕韩鍥剧敓鎴愬け璐�"));
+		} else {
+			JSONObject data = new JSONObject();
+			data.put("text", newText);
+			data.put("img", imgUrl);
+			JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
+		}
+	}
+
+	/**
+	 * 璇勮澶嶅埗
+	 * 
+	 * @param acceptData
+	 * @param id
+	 * @param out
+	 */
+	private void copyActivityComment(String callback, AcceptData acceptData, Long uid, String id, PrintWriter out) {
+		if (StringUtil.isNullOrEmpty(id)) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("id涓嶈兘涓虹┖"));
+			return;
+		}
+
+		GoodsEvaluate goodsEvaluate = goodsEvaluateService.getById(id);
+		if (goodsEvaluate == null) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇ュ唴瀹瑰凡涓嶅瓨鍦�"));
+			return;
+		}
+
+		UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
+		if (user == null) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
+			return;
+		}
+
+		if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
+			JsonUtil.printMode(out, callback,
+					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)) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "娣樺疂鏈巿鏉冿紝璇峰墠寰�\"鎴戠殑\"缁戝畾娣樺疂璐﹀彿"));
+			return;
+		}
+
+		String text = "";
+		CommentInfo comment = null;
+		List<CommentInfo> comments = goodsEvaluate.getComments();
+		if (comments != null && comments.size() > 0) {
+			CommentInfo info = comments.get(0);
+			text = info.getContent();
+			comment = info;
+		}
+
+		String newText = text; // 闈為�氱敤鍒搁渶瑕侀獙璇�
+		if (comment != null && (comment.getNeedSpin() == null || comment.getNeedSpin())) {
+			try {
+				newText = convertLinkManager.convertLinkFromText(text, uid, true);
+			} catch (ConvertLinkExceptionException e) {
+				if (e.getCode() != ConvertLinkExceptionException.CODE_NONE) {
+					JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触"));
+					return;
+				}
+			} catch (Exception e) {
+				LogHelper.errorDetailInfo(e);
+				JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触"));
+				return;
+			}
+		}
+		JSONObject data = new JSONObject();
+		data.put("text", newText);
+		JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
+
+		executor.execute(new Runnable() {
+			@Override
+			public void run() { // 娣诲姞姣忔棩缁熻
+				dailyCountMomentsService.addCopyComment();
+			}
+		});
+	}
+}

--
Gitblit v1.8.0