From 24a8d17e007545f7426c48352109aa1a9c6587ee Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 06 五月 2020 12:02:09 +0800
Subject: [PATCH] IOS上线隐藏我的界面的banner与超级会员升级信息

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java | 1494 +++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 1,145 insertions(+), 349 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java
index c3252ff..adb054c 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java
@@ -1,6 +1,8 @@
 package com.yeshi.fanli.service.impl.dynamic;
 
 import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.FileInputStream;
 import java.io.InputStream;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
@@ -14,13 +16,15 @@
 import javax.annotation.Resource;
 import javax.imageio.ImageIO;
 
+import org.apache.commons.beanutils.PropertyUtils;
+import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.core.task.TaskExecutor;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartHttpServletRequest;
 import org.yeshi.utils.DateUtil;
-import org.yeshi.utils.JsonUtil;
+import org.yeshi.utils.ImageCropUtil;
 import org.yeshi.utils.tencentcloud.COSManager;
 
 import com.yeshi.fanli.dao.dynamic.GoodsEvaluateDao;
@@ -28,12 +32,11 @@
 import com.yeshi.fanli.dto.jd.JDCouponInfo;
 import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
 import com.yeshi.fanli.entity.bus.activity.ActivityUser;
+import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
 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;
-import com.yeshi.fanli.entity.dynamic.GoodsPicture;
 import com.yeshi.fanli.entity.dynamic.ImgInfo;
 import com.yeshi.fanli.entity.dynamic.ImgInfo.ImgEnum;
 import com.yeshi.fanli.entity.dynamic.SimpleGoods;
@@ -41,18 +44,24 @@
 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.entity.taobao.dataoke.DaTaoKeDetailV2;
 import com.yeshi.fanli.exception.dynamic.ActivityUserException;
 import com.yeshi.fanli.exception.dynamic.GoodsEvaluateException;
+import com.yeshi.fanli.exception.goods.ConvertLinkExceptionException;
 import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
 import com.yeshi.fanli.log.LogHelper;
 import com.yeshi.fanli.service.inter.activity.ActivityUserService;
 import com.yeshi.fanli.service.inter.config.ConfigService;
 import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService;
 import com.yeshi.fanli.service.inter.goods.ShareGoodsService;
+import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService;
 import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
+import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
 import com.yeshi.fanli.service.manger.goods.ConvertLinkManager;
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.FilePathEnum;
+import com.yeshi.fanli.util.FileUtil;
+import com.yeshi.fanli.util.MoneyBigDecimalUtil;
 import com.yeshi.fanli.util.RedisManager;
 import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.cache.JDGoodsCacheUtil;
@@ -61,6 +70,7 @@
 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.goods.CouponInfoVO;
 import com.yeshi.fanli.vo.goods.GoodsDetailVO;
@@ -80,6 +90,9 @@
 
 	@Resource
 	private HongBaoManageService hongBaoManageService;
+	
+	@Resource
+	private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService;
 
 	@Resource(name = "taskExecutor")
 	private TaskExecutor executor;
@@ -89,30 +102,54 @@
 
 	@Resource
 	private PinDuoDuoCacheUtil pinDuoDuoCacheUtil;
-	
+
 	@Resource
 	private ConfigService configService;
-	
+
 	@Resource
 	private ShareGoodsService shareGoodsService;
-	
+
 	@Resource
 	private ConvertLinkManager convertLinkManager;
-	
-	
 
+	@Resource
+	private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
+
+	
+	@Override
+	public void switchState(String id) throws GoodsEvaluateException {
+		if (id == null) {
+			throw new GoodsEvaluateException(1, "璇蜂紶閫掓纭弬鏁�");
+		}
+		
+		GoodsEvaluate resultObj = goodsEvaluateDao.getById(id);
+		if (resultObj == null) {
+			throw new GoodsEvaluateException(1, "姝ゅ唴瀹瑰凡涓嶅瓨鍦�");
+		}
+		
+		Integer state = resultObj.getState();
+		if (state == null || state == 0) {
+			state = 1;
+		} else {
+			state = 0;
+		}
+		goodsEvaluateDao.updateSatate(id, state);
+	}
+	
+	
 	@Override
 	public String saveHead(MultipartFile file, GoodsEvaluate record) throws GoodsEvaluateException {
 		Integer state = record.getState();
 		if (state == null) {
 			state = 0;
 		}
+		record.setState(state);
 
 		String tilte = record.getTitle();
 		if (StringUtil.isNullOrEmpty(tilte)) {
 			throw new GoodsEvaluateException(1, "鎺ㄨ崘璇笉鑳戒负绌�");
 		}
-		
+
 		try {
 			ActivityUser activityUser = activityUserService.getActivityUserByNickName(record.getUser(), file);
 			if (activityUser == null)
@@ -123,11 +160,14 @@
 		}
 
 		if (record.getEndTime() != null) {
-			if (record.getEndTime().getTime() <= java.lang.System.currentTimeMillis())
-				throw new GoodsEvaluateException(1, "鎴鏃堕棿蹇呴』澶т簬褰撳墠鏃堕棿");
-
 			if (record.getStartTime() != null && record.getEndTime().getTime() <= record.getStartTime().getTime())
 				throw new GoodsEvaluateException(1, "鎴鏃堕棿蹇呴』澶т簬寮�濮嬫椂闂�");
+		} else {
+			if (record.getStartTime() == null) {
+				record.setEndTime(DateUtil.plusDayDate(3, new Date()));
+			} else {
+				record.setEndTime(DateUtil.plusDayDate(3, record.getStartTime()));
+			}
 		}
 
 		Integer dynamicType = record.getDynamicType();
@@ -135,15 +175,16 @@
 			record.setDynamicType(1);
 		}
 
-		if (record.getShareNum() == null)
-			record.setShareNum(0);
+		if (record.getShareNum() == null || record.getShareNum() <= 0) {
+			record.setShareNum((int) (Math.random() * 5000) + 1000);
+		}
 
 		if (record.getWeight() == null)
 			record.setWeight(0.0);
 
 		if (record.getStartTime() == null)
 			record.setStartTime(new Date());
-		
+
 		record.setPublishTime(record.getStartTime());
 
 		String id = record.getId();
@@ -152,18 +193,21 @@
 			record.setId(id);
 			record.setShareNumReal(0);
 			record.setCreateTime(new Date());
+			record.setUpdateTime(new Date());
 			goodsEvaluateDao.save(record);
 		} else {
 			GoodsEvaluate resultObj = goodsEvaluateDao.getById(id);
 			if (resultObj == null)
 				throw new GoodsEvaluateException(1, "淇敼鍐呭宸蹭笉瀛樺湪");
 
+			resultObj.setState(record.getState());
 			resultObj.setUser(record.getUser());
 			resultObj.setShareNum(record.getShareNum());
 			resultObj.setWeight(record.getWeight());
 			resultObj.setStartTime(record.getStartTime());
 			resultObj.setEndTime(record.getEndTime());
 			resultObj.setTitle(tilte);
+			resultObj.setUpdateTime(new Date());
 			goodsEvaluateDao.save(resultObj);
 		}
 		return id;
@@ -185,6 +229,39 @@
 		return COSManager.getInstance().uploadFile(inputStream, filePath).getUrl();
 	}
 
+	private ImgInfo uploadVideoPicture(MultipartFile filevideo) {
+		try {
+			File tempFile = new File(FileUtil.getCacheDir() + "/" + filevideo.getOriginalFilename());
+			if (tempFile.exists())
+				tempFile.delete();
+			tempFile.createNewFile();
+			filevideo.transferTo(tempFile);
+			File destFile = new File(FileUtil.getCacheDir() + "/temp_" + filevideo.getOriginalFilename());
+			// 瑁佸壀瑙嗛灏侀潰锛屽楂樻瘮涓�2:1
+			ImageCropUtil.centerCrop(tempFile, destFile, 2.0f);
+			BufferedImage sourceImg = ImageIO.read(new FileInputStream(destFile));
+			ImgInfo info = new ImgInfo();
+			int width = sourceImg.getWidth();
+			int height = sourceImg.getHeight();
+			String picLink = uploadPicture(destFile, filevideo.getContentType());
+			info.setH(height);
+			info.setW(width);
+			info.setUrl(picLink);
+			return info;
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	private String uploadPicture(File file, String contentType) throws Exception {
+		InputStream inputStream = new FileInputStream(file);
+		String type = contentType.substring(contentType.indexOf("/") + 1);
+		String filePath = FilePathEnum.goodsEvaluate.getPath() + UUID.randomUUID().toString().replace("-", "") + "."
+				+ type;
+		return COSManager.getInstance().uploadFile(inputStream, filePath).getUrl();
+	}
+
 	/**
 	 * 鍒犻櫎鍥剧墖
 	 * 
@@ -198,7 +275,7 @@
 	}
 
 	@Override
-	public void saveSingleGoods(String pid, Long goodsId, Integer goodsType, String videoUrl, Integer picNum,
+	public String saveSingleGoods(String pid, Long goodsId, Integer goodsType, String videoUrl, Integer picNum,
 			String picUrls, MultipartHttpServletRequest fileRequest) throws GoodsEvaluateException, Exception {
 		if (StringUtil.isNullOrEmpty(pid)) {
 			throw new GoodsEvaluateException(1, "璇蜂繚瀛樼涓�閮ㄥ垎淇℃伅");
@@ -221,10 +298,10 @@
 				ImgEnum type = info.getType();
 				if (type == ImgEnum.video) {
 					imgVideo = info;
-				} else if (type == ImgEnum.goods ) {
+				} else if (type == ImgEnum.goods) {
 					listOld.add(info.getUrl());
 					oldGoodsVO = info.getGoodsVO();
-				} else if (type == ImgEnum.img){
+				} else if (type == ImgEnum.img) {
 					listOld.add(info.getUrl());
 				}
 			}
@@ -237,31 +314,28 @@
 				if (StringUtil.isNullOrEmpty(videoUrl)) {
 					throw new GoodsEvaluateException(1, "瑙嗛閾炬帴涓嶈兘涓虹┖");
 				}
-				InputStream inputStream = filevideo.getInputStream();
-				BufferedImage sourceImg = ImageIO.read(inputStream);
-				int width = sourceImg.getWidth();
-				int height = sourceImg.getHeight();
-
-				String picLink = uploadPicture(filevideo);
+				ImgInfo info = uploadVideoPicture(filevideo);
+				if (info == null)
+					throw new GoodsEvaluateException(2, "瑙嗛鍥剧墖涓婁紶澶辫触");
 				if (imgVideo != null) {
 					String url = imgVideo.getUrl();
 					if (!StringUtil.isNullOrEmpty(url)) {
 						listDel.add(url);
 					}
-					imgVideo.setUrl(picLink);
-					imgVideo.setUrlHD(picLink);
+					imgVideo.setUrl(info.getUrl());
+					imgVideo.setUrlHD(info.getUrl());
 				} else {
 					imgVideo = new ImgInfo();
 					imgVideo.setId(UUID.randomUUID().toString().replace("-", ""));
 					imgVideo.setLarge(true);
 					imgVideo.setPid(pid);
-					imgVideo.setUrl(picLink);
-					imgVideo.setUrlHD(picLink);
+					imgVideo.setUrl(info.getUrl());
+					imgVideo.setUrlHD(info.getUrl());
 					imgVideo.setVideoUrl(videoUrl);
 					imgVideo.setType(ImgEnum.video);
 				}
-				imgVideo.setW(width);
-				imgVideo.setH(height);
+				imgVideo.setW(info.getW());
+				imgVideo.setH(info.getH());
 			}
 		}
 
@@ -282,21 +356,28 @@
 		}
 
 		// 缂栬緫鍥剧墖
-		List<String> listpic = null;
+		List<String> listpic = new ArrayList<>();
 		if (!StringUtil.isNullOrEmpty(picUrls)) {
 			String[] pics = picUrls.split(",");
 			if (pics != null) {
-				listpic = new ArrayList<>();
 				for (int i = 0; i < pics.length; i++) {
 					String picLink = pics[i];
-					if (fileRequest != null) {
-						MultipartFile file = fileRequest.getFile("file" + i);
-						if (file != null) {
-							picLink = uploadPicture(file);
-						}
-
-					}
 					if (picLink.startsWith("http")) {
+						listpic.add(picLink);
+					}
+				}
+			}
+		}
+
+		// 涓婁紶鏂囦欢鏇挎崲
+		if (fileRequest != null) {
+			for (int i = 0; i < 9; i++) {
+				MultipartFile file = fileRequest.getFile("file" + i);
+				if (file != null) {
+					String picLink = uploadPicture(file);
+					if (i < listpic.size()) {
+						listpic.set(i, picLink);
+					} else {
 						listpic.add(picLink);
 					}
 				}
@@ -311,10 +392,8 @@
 		GoodsDetailVO goodsDetailVO = null;
 		JDGoods jdGoods = null;
 		PDDGoodsDetail pddGoods = null;
-		BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
-		BigDecimal shareRate = hongBaoManageService.getShareRate();
-		BigDecimal vipFanLiRate = hongBaoManageService.getVIPFanLiRate();
-		ConfigParamsDTO params = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE, vipFanLiRate);
+		ConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55");
+		params.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
 		if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
 			try {
 				TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(goodsId);
@@ -329,14 +408,15 @@
 			pddGoods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId);
 			goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(pddGoods, params);
 		}
-		
+
 		if (goodsDetailVO == null) {
 			throw new GoodsEvaluateException(1, "璇ュ晢鍝佷俊鎭笉瀛樺湪");
 		}
 
+		List<ImgInfo> tempList = new ArrayList<ImgInfo>();
 		int totalImg = 0;
 		if (listpic != null && listpic.size() > 0) {
-			for (int i = 0; i < listpic.size(); i++) {
+			for (int i = 0; i < listpic.size() && i < 9; i++) {
 				ImgInfo imgInfo0 = new ImgInfo();
 				imgInfo0.setId(UUID.randomUUID().toString().replace("-", ""));
 				imgInfo0.setW(1);
@@ -361,12 +441,17 @@
 					}
 					imgInfo0.setGoods(simpleGoods);
 					imgInfo0.setGoodsVO(goodsDetailVO);
+					listImg.add(imgInfo0);
 				} else {
 					imgInfo0.setType(ImgEnum.img);
+					tempList.add(imgInfo0);
 				}
-				listImg.add(imgInfo0);
 				totalImg++;
 			}
+		}
+
+		if (tempList.size() > 0) {
+			listImg.addAll(tempList);
 		}
 
 		if (listOld != null && listOld.size() > 0) {
@@ -388,7 +473,9 @@
 		if (totalImg > 0) {
 			if (totalImg == 1) {
 				lineNum = 1;
-			} else if (totalImg <= 4) {
+			} else if (totalImg == 3) {
+				lineNum = 3;
+			} else if (totalImg == 2 || totalImg == 4) {
 				lineNum = 2;
 			} else {
 				lineNum = 3;
@@ -399,32 +486,31 @@
 		resultObj.setGoods(goodsDetailVO);
 		resultObj.setMainPicNum(picNum);
 		resultObj.setImgList(listImg);
-		
+
 		boolean addComment = true;
 		List<CommentInfo> commentsNew = new ArrayList<>();
 		List<CommentInfo> comments = resultObj.getComments();
-		if (comments != null) {
-			for (CommentInfo commentInfo: comments) {
+		if (comments != null && comments.size() > 0) {
+			for (CommentInfo commentInfo : comments) {
 				if (commentInfo.getTypeEnum() == CommentInfoEnum.goodsCoupon) {
-					if (oldGoodsVO != null && oldGoodsVO.getGoodsId().longValue() == goodsId.longValue() 
+					if (oldGoodsVO != null && oldGoodsVO.getGoodsId().longValue() == goodsId.longValue()
 							&& oldGoodsVO.getGoodsType() == goodsType) {
 						addComment = false;
-					} 
+					}
 					continue;
-				} 
+				}
 				commentsNew.add(commentInfo);
 			}
-		} 
-		
-		
-		CouponInfoVO couponInfo1 = goodsDetailVO.getCouponInfo();
-		if (couponInfo1 == null) {
-			addComment = false;
 		}
-		
-		
+
+		/*
+		 * // 鏃犲埜涓嶈兘鑷姩 鐢熸垚璇勮 CouponInfoVO couponInfo1 =
+		 * goodsDetailVO.getCouponInfo(); if (couponInfo1 == null) { addComment
+		 * = false; }
+		 */
+
+		String commentText = "";
 		if (addComment) {
-			String commentText = "";
 			if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
 				TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(1L, goodsId, "0");
 				String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey());
@@ -436,33 +522,45 @@
 					couponUrl = couponInfo.getLink();
 				}
 				String materialId = "https://item.jd.com/" + goodsId + ".html";
-				String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "","1");
+				String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl,
+						JDApiUtil.POSITION_SHARE + "", "1");
 				String template = configService.get(ConfigKeyEnum.quickShareJDCommentText.getKey());
-				commentText = template.replace("[閾炬帴]", jumpLink);			
+				if (jumpLink == null) {
+					throw new GoodsEvaluateException(1, "璇ュ晢鍝佽浆閾惧け璐�");
+				}
+				commentText = template.replace("[閾炬帴]", jumpLink);
 			} else if (goodsType == Constant.SOURCE_TYPE_PDD) {
 				String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goodsId, PinDuoDuoApiUtil.PID_SHARE + "", "1");
+				if (jumpLink == null) {
+					throw new GoodsEvaluateException(1, "璇ュ晢鍝佽浆閾惧け璐�");
+				}
 				String template = configService.get(ConfigKeyEnum.quickSharePDDCommentText.getKey());
 				commentText = template.replace("[閾炬帴]", jumpLink);
 			}
-			
-			commentText = commentText.replace("[鍘熶环]", goodsDetailVO.getZkPrice().toString());
-			if (!goodsDetailVO.isHasCoupon()) {
-				commentText = commentText.replace("棰嗗埜鎶㈣喘", "鎶㈣喘");
-				commentText = commentText.replace("銆愬埜鍚庝环銆慬鍒稿悗浠穄鍏�", "");
-			} else {
-				commentText = commentText.replace("[鍒稿悗浠穄", goodsDetailVO.getCouponPrice().toString());
-			}
-			
-			commentText =commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
 
-			
+			// commentText = commentText.replace("[鍘熶环]",
+			// MoneyBigDecimalUtil.getWithNoZera(goodsDetailVO.getZkPrice())+"");
+			// if (!goodsDetailVO.isHasCoupon()) {
+			// commentText = commentText.replace("棰嗗埜鎶㈣喘", "鎶㈣喘");
+			// commentText = commentText.replace("銆愬埜鍚庝环銆慬鍒稿悗浠穄鍏�", "");
+			// } else {
+			// commentText = commentText.replace("[鍒稿悗浠穄",
+			// MoneyBigDecimalUtil.getWithNoZera(goodsDetailVO.getCouponPrice())+"");
+			// }
+			//
+			// commentText = commentText.replace("\r\n\r\n",
+			// "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n",
+			// "\r\n");
+
 			CommentInfo commentInfo = new CommentInfo();
 			commentInfo.setId(UUID.randomUUID().toString().replace("-", ""));
 			commentInfo.setContent(commentText);
 			commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon);
+			commentInfo.setNeedSpin(true);
 			commentsNew.add(commentInfo);
 			resultObj.setComments(commentsNew);
 		}
+		resultObj.setUpdateTime(new Date());
 		goodsEvaluateDao.save(resultObj);
 
 		// 鍒犻櫎鍥剧墖
@@ -473,17 +571,58 @@
 				}
 			}
 		}
+
+		return commentText;
+	}
+
+	private String createTokenAndLink(GoodsDetailVO goodsDetailVO) throws Exception {
+		String commentText = "";
+		if (goodsDetailVO.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
+			TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(1L, goodsDetailVO.getGoodsId(), "0");
+			String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey());
+			commentText = template.replace("[娣樺彛浠", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken()));
+		} else if (goodsDetailVO.getGoodsType() == Constant.SOURCE_TYPE_JD) {
+			String couponUrl = null;
+
+			JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsDetailVO.getGoodsId());
+			JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(jdGoods);
+			if (couponInfo != null) {
+				couponUrl = couponInfo.getLink();
+			}
+			String materialId = "https://item.jd.com/" + goodsDetailVO.getGoodsId() + ".html";
+			String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "",
+					"1");
+			String template = configService.get(ConfigKeyEnum.quickShareJDCommentText.getKey());
+			commentText = template.replace("[閾炬帴]", jumpLink);
+		} else if (goodsDetailVO.getGoodsType() == Constant.SOURCE_TYPE_PDD) {
+			String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goodsDetailVO.getGoodsId(),
+					PinDuoDuoApiUtil.PID_SHARE + "", "1");
+			String template = configService.get(ConfigKeyEnum.quickSharePDDCommentText.getKey());
+			commentText = template.replace("[閾炬帴]", jumpLink);
+		}
+
+		commentText = commentText.replace("[鍘熶环]", goodsDetailVO.getZkPrice().toString());
+		if (!goodsDetailVO.isHasCoupon()) {
+			commentText = commentText.replace("棰嗗埜鎶㈣喘", "鎶㈣喘");
+			commentText = commentText.replace("銆愬埜鍚庝环銆慬鍒稿悗浠穄鍏�", "");
+		} else {
+			commentText = commentText.replace("[鍒稿悗浠穄", goodsDetailVO.getCouponPrice().toString());
+		}
+
+		return commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
 	}
 
 	public GoodsDetailVO getGoodsDetailVO(Long goodsId, Integer goodsType) throws GoodsEvaluateException {
 		GoodsDetailVO goodsDetail = null;
-		BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
-		BigDecimal shareRate = hongBaoManageService.getShareRate();
-		BigDecimal vipFanLiRate = hongBaoManageService.getVIPFanLiRate();
-		ConfigParamsDTO params = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE, vipFanLiRate);
+		ConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55");
+		params.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
 		if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
 			try {
 				TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(goodsId);
+				String pictUrlWhite = goodsBrief.getPictUrlWhite();
+				if (!StringUtil.isNullOrEmpty(pictUrlWhite)) {
+					goodsBrief.setPictUrl(pictUrlWhite);
+				}
 				goodsDetail = GoodsDetailVOFactory.convertTaoBao(goodsBrief, params);
 			} catch (TaobaoGoodsDownException e) {
 				throw new GoodsEvaluateException(1, "鍟嗗搧宸蹭笅鏋�");
@@ -535,31 +674,29 @@
 					throw new GoodsEvaluateException(1, "瑙嗛閾炬帴涓嶈兘涓虹┖");
 				}
 
-				InputStream inputStream = filevideo.getInputStream();
-				BufferedImage sourceImg = ImageIO.read(inputStream);
-				int width = sourceImg.getWidth();
-				int height = sourceImg.getHeight();
+				ImgInfo info = uploadVideoPicture(filevideo);
+				if (info == null)
+					throw new GoodsEvaluateException(2, "瑙嗛鍥剧墖涓婁紶澶辫触");
 
-				String picLink = uploadPicture(filevideo);
 				if (imgVideo != null) {
 					String url = imgVideo.getUrl();
 					if (!StringUtil.isNullOrEmpty(url)) {
 						listDel.add(url);
 					}
-					imgVideo.setUrl(picLink);
-					imgVideo.setUrlHD(picLink);
+					imgVideo.setUrl(info.getUrl());
+					imgVideo.setUrlHD(info.getUrl());
 				} else {
 					imgVideo = new ImgInfo();
 					imgVideo.setId(UUID.randomUUID().toString().replace("-", ""));
 					imgVideo.setLarge(true);
 					imgVideo.setPid(pid);
-					imgVideo.setUrl(picLink);
-					imgVideo.setUrlHD(picLink);
+					imgVideo.setUrl(info.getUrl());
+					imgVideo.setUrlHD(info.getUrl());
 					imgVideo.setVideoUrl(videoUrl);
 					imgVideo.setType(ImgEnum.video);
 				}
-				imgVideo.setW(width);
-				imgVideo.setH(height);
+				imgVideo.setW(info.getW());
+				imgVideo.setH(info.getH());
 			}
 		}
 
@@ -622,7 +759,7 @@
 					}
 					imgInfo0.setGoods(simpleGoods);
 					imgInfo0.setGoodsVO(goodsDetailVO);
-					
+
 					listImg.add(imgInfo0);
 					totalImg++;
 				}
@@ -671,7 +808,9 @@
 		if (totalImg > 0) {
 			if (totalImg == 1) {
 				lineNum = 1;
-			} else if (totalImg <= 4) {
+			} else if (totalImg == 3) {
+				lineNum = 3;
+			} else if (totalImg == 2 || totalImg == 4) {
 				lineNum = 2;
 			} else {
 				lineNum = 3;
@@ -695,68 +834,88 @@
 	}
 
 	@Override
-	public void saveGoodsCoupon(String pid, String content) throws GoodsEvaluateException, Exception {
-		if (StringUtil.isNullOrEmpty(pid)) {
-			throw new GoodsEvaluateException(1, "璇蜂繚瀛樼涓�閮ㄥ垎淇℃伅");
+	public void saveGoodsComment(String id, int kind, List<CommentInfo> comments)
+			throws GoodsEvaluateException, Exception {
+		if (comments == null || comments.size() == 0) {
+			throw new GoodsEvaluateException(1, "鍐呭涓嶈兘涓虹┖");
 		}
 
-		GoodsEvaluate resultObj = goodsEvaluateDao.getById(pid);
+		GoodsEvaluate resultObj = goodsEvaluateDao.getById(id);
 		if (resultObj == null)
 			throw new GoodsEvaluateException(1, "绗竴閮ㄥ垎淇℃伅缂哄け");
 
-		CommentInfo goodsCoupon = null;
+		GoodsDetailVO goods = resultObj.getGoods();
+		if (kind == 1 && goods == null) {
+			throw new GoodsEvaluateException(1, "璇峰厛褰曞叆鍟嗗搧淇℃伅");
+		}
+
 		CommentInfo currencyCoupon = null;
 		List<CommentInfo> oldComments = resultObj.getComments();
 		if (oldComments != null) {
-			for (CommentInfo info : oldComments) {
-				if (CommentInfoEnum.goodsCoupon == info.getTypeEnum()) {
-					goodsCoupon = info;
-				} else if (CommentInfoEnum.currencyCoupon == info.getTypeEnum()) {
+			for (int i = 0; i < oldComments.size(); i++) {
+				CommentInfo info = oldComments.get(i);
+				if (CommentInfoEnum.currencyCoupon == info.getTypeEnum()) {
 					currencyCoupon = info;
+					continue;
 				}
 			}
 		}
 
-		List<CommentInfo> comments = new ArrayList<>();
-		if (!StringUtil.isNullOrEmpty(content)) {
-			CommentInfo commentInfo = new CommentInfo();
-			if (goodsCoupon != null) {
-				commentInfo.setId(goodsCoupon.getId());
-			} else {
+		List<CommentInfo> newList = new ArrayList<>();
+		for (int i = 0; i < comments.size(); i++) {
+			CommentInfo commentInfo = comments.get(i);
+			String content = commentInfo.getContent();
+			if (StringUtil.isNullOrEmpty(content)) {
+				if (i == 0 && kind == 1) {
+					content = createTokenAndLink(goods);
+				} else {
+					continue;
+				}
+			} else if (i == 0 && kind == 1) {
+				try {
+					convertLinkManager.convertLinkFromText(content, Constant.LINK_TOKEN_VERIFY_UID, true);
+				} catch (Exception e) {
+					throw new GoodsEvaluateException(1, "涓嶅寘鍚彲杞摼鐨勫彛浠や笌閾炬帴");
+				}
+			}
+
+			if (StringUtil.isNullOrEmpty(commentInfo.getId())) {
 				commentInfo.setId(UUID.randomUUID().toString().replace("-", ""));
 			}
-			commentInfo.setContent(content);
-			commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc());
+			
+			commentInfo.setNeedSpin(true);
+			commentInfo.setType(commentInfo.getTags());
 			commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon);
-			comments.add(commentInfo);
+			newList.add(commentInfo);
 		}
-
 		if (currencyCoupon != null) {
 			comments.add(currencyCoupon);
 		}
 
 		resultObj.setComments(comments);
+		resultObj.setUpdateTime(new Date());
 		goodsEvaluateDao.save(resultObj);
 	}
 
+	 
 	@Override
-	public void saveSingleGoodsCoupon(String pid, CommentInfo commentInfo) throws GoodsEvaluateException, Exception {
+	public void saveCurrencyCoupon(String pid, int kind, CommentInfo commentInfo)
+			throws GoodsEvaluateException, Exception {
 		if (StringUtil.isNullOrEmpty(pid)) {
 			throw new GoodsEvaluateException(1, "璇蜂繚瀛樼涓�閮ㄥ垎淇℃伅");
 		}
-		
+
 		if (StringUtil.isNullOrEmpty(commentInfo.getCoupon())) {
 			throw new GoodsEvaluateException(1, "鍒搁潰棰濅笉鑳戒负绌�");
 		}
-		
+
 		if (StringUtil.isNullOrEmpty(commentInfo.getTagDesc())) {
 			throw new GoodsEvaluateException(1, "鎻忚堪璇笉鑳戒负绌�");
 		}
-		
-		
+
 		String tagUrl = commentInfo.getTagUrl();
 		String content = commentInfo.getContent();
-		if (StringUtil.isNullOrEmpty(tagUrl) && StringUtil.isNullOrEmpty(content) ) {
+		if (StringUtil.isNullOrEmpty(tagUrl) && StringUtil.isNullOrEmpty(content)) {
 			throw new GoodsEvaluateException(1, "璇勮璇拰閾炬帴涓嶈兘鍚屾椂涓虹┖");
 		}
 
@@ -771,35 +930,38 @@
 		} else {
 			throw new GoodsEvaluateException(1, "璇峰~鍐欏埜鎴鏃堕棿");
 		}
-		
-		if(!StringUtil.isNullOrEmpty(content)) {
-			try {
-				convertLinkManager.convertLinkFromText(content, 1L, true);
-			} catch (Exception e) {
-				throw new GoodsEvaluateException(1, "杞摼澶辫触");
-			}
+
+		if (commentInfo.getNeedSpin() == null) {
+			commentInfo.setNeedSpin(false);
 		}
 		
+		if (!StringUtil.isNullOrEmpty(content) && commentInfo.getNeedSpin()) {
+			try {
+				convertLinkManager.convertLinkFromText(content, Constant.LINK_TOKEN_VERIFY_UID, true);
+			} catch (ConvertLinkExceptionException e) {
+				if (ConvertLinkExceptionException.CODE_NONE != e.getCode()) {
+					throw new GoodsEvaluateException(1, "鍖呭惈涓嶅彲杞摼鐨勫彛浠や笌閾炬帴");
+				}
+			} catch (Exception e) {
+				throw new GoodsEvaluateException(1, "鍖呭惈涓嶅彲杞摼鐨勫彛浠や笌閾炬帴");
+			}
+		}
+
 		GoodsEvaluate resultObj = goodsEvaluateDao.getById(pid);
 		if (resultObj == null)
 			throw new GoodsEvaluateException(1, "绗竴閮ㄥ垎淇℃伅缂哄け");
 
-		CommentInfo goodsCoupon = null;
+		List<CommentInfo> comments = new ArrayList<>();
 		CommentInfo currencyCoupon = null;
 		List<CommentInfo> oldComments = resultObj.getComments();
 		if (oldComments != null) {
 			for (CommentInfo info : oldComments) {
 				if (CommentInfoEnum.goodsCoupon == info.getTypeEnum()) {
-					goodsCoupon = info;
+					comments.add(info);
 				} else if (CommentInfoEnum.currencyCoupon == info.getTypeEnum()) {
 					currencyCoupon = info;
 				}
 			}
-		}
-
-		List<CommentInfo> comments = new ArrayList<>();
-		if (goodsCoupon != null) {
-			comments.add(goodsCoupon);
 		}
 
 		if (commentInfo != null) {
@@ -809,15 +971,10 @@
 				commentInfo.setId(UUID.randomUUID().toString().replace("-", ""));
 			}
 			// 鍒哥被鍨�
-			
-			String tags = commentInfo.getTags();
-			if (StringUtil.isNullOrEmpty(tags)) {
-				commentInfo.setType(CommentInfoEnum.currencyCoupon.getDesc());
-			} else {
-				commentInfo.setType(tags);
-			}
+
+			commentInfo.setType(commentInfo.getTags());
 			commentInfo.setTypeEnum(CommentInfoEnum.currencyCoupon);
-			
+
 			// 鏍囩淇℃伅
 			List<ClientTextStyleVO> tagList = new ArrayList<>();
 			String couponSource = commentInfo.getCouponSource();
@@ -840,7 +997,6 @@
 		}
 
 		resultObj.setComments(comments);
-
 		goodsEvaluateDao.save(resultObj);
 	}
 
@@ -882,12 +1038,12 @@
 			if (filevideo != null) {
 				removePicture(videoPic);
 
-				InputStream inputStream = filevideo.getInputStream();
-				BufferedImage sourceImg = ImageIO.read(inputStream);
-				width = sourceImg.getWidth();
-				height = sourceImg.getHeight();
-				String picLink = uploadPicture(filevideo);
-				videoPic = picLink;
+				ImgInfo info = uploadVideoPicture(filevideo);
+				if (info == null)
+					throw new GoodsEvaluateException(2, "瑙嗛鍥剧墖涓婁紶澶辫触");
+				videoPic = info.getUrl();
+				width = info.getW();
+				height = info.getH();
 			}
 
 			MultipartFile activityfile = fileRequest.getFile("activityfile");
@@ -927,6 +1083,7 @@
 			listImg.add(imgVideo);
 		}
 
+		int totalImg = 0;
 		if (!StringUtil.isNullOrEmpty(activityPic) || !StringUtil.isNullOrEmpty(imgInfo.getActivityUrl())) {
 			if (imgactivity != null) {
 				imgactivity.setUrl(activityPic);
@@ -950,8 +1107,23 @@
 				imgactivity.setH(imgactivity.getH());
 			}
 			listImg.add(imgactivity);
+			totalImg++;
 		}
-		resultObj.setLineNum(1);
+
+		int lineNum = 0;
+		if (totalImg > 0) {
+			if (totalImg == 1) {
+				lineNum = 1;
+			} else if (totalImg == 3) {
+				lineNum = 3;
+			} else if (totalImg == 2 || totalImg == 4) {
+				lineNum = 2;
+			} else {
+				lineNum = 3;
+			}
+		}
+
+		resultObj.setLineNum(lineNum);
 		resultObj.setImgList(listImg);
 		goodsEvaluateDao.save(resultObj);
 	}
@@ -1001,31 +1173,28 @@
 				if (StringUtil.isNullOrEmpty(videoUrl)) {
 					throw new GoodsEvaluateException(1, "瑙嗛閾炬帴涓嶈兘涓虹┖");
 				}
-				InputStream inputStream = filevideo.getInputStream();
-				BufferedImage sourceImg = ImageIO.read(inputStream);
-				int width = sourceImg.getWidth();
-				int height = sourceImg.getHeight();
-
-				String picLink = uploadPicture(filevideo);
+				ImgInfo info = uploadVideoPicture(filevideo);
+				if (info == null)
+					throw new GoodsEvaluateException(2, "瑙嗛鍥剧墖涓婁紶澶辫触");
 				if (imgVideo != null) {
 					String url = imgVideo.getUrl();
 					if (!StringUtil.isNullOrEmpty(url)) {
 						listDel.add(url);
 					}
-					imgVideo.setUrl(picLink);
-					imgVideo.setUrlHD(picLink);
+					imgVideo.setUrl(info.getUrl());
+					imgVideo.setUrlHD(info.getUrl());
 				} else {
 					imgVideo = new ImgInfo();
 					imgVideo.setId(UUID.randomUUID().toString().replace("-", ""));
 					imgVideo.setLarge(true);
 					imgVideo.setPid(pid);
-					imgVideo.setUrl(picLink);
-					imgVideo.setUrlHD(picLink);
+					imgVideo.setUrl(info.getUrl());
+					imgVideo.setUrlHD(info.getUrl());
 					imgVideo.setVideoUrl(videoUrl);
 					imgVideo.setType(ImgEnum.video);
 				}
-				imgVideo.setW(width);
-				imgVideo.setH(height);
+				imgVideo.setW(info.getW());
+				imgVideo.setH(info.getH());
 			}
 
 			activityFile = fileRequest.getFile("activityFile");
@@ -1072,45 +1241,50 @@
 		}
 
 		// 缂栬緫鍥剧墖
+		List<String> listpic = new ArrayList<>();
 		if (!StringUtil.isNullOrEmpty(picUrls)) {
 			String[] pics = picUrls.split(",");
 			if (pics != null) {
 				for (int i = 0; i < pics.length; i++) {
 					String picLink = pics[i];
-					if (fileRequest != null) {
-						MultipartFile file = fileRequest.getFile("file" + i);
-						if (file != null) {
-							picLink = uploadPicture(file);
-
-							ImgInfo imgInfo0 = new ImgInfo();
-							imgInfo0.setId(UUID.randomUUID().toString().replace("-", ""));
-							imgInfo0.setLarge(true);
-							imgInfo0.setPid(pid);
-							imgInfo0.setUrl(picLink);
-							imgInfo0.setUrlHD(picLink);
-							imgInfo0.setType(ImgEnum.img);
-							imgVideo.setW(1);
-							imgVideo.setH(1);
-							listImg.add(imgInfo0);
-							continue;
-						}
-					}
-
 					if (picLink.startsWith("http")) {
-						if (listOldImgInfo != null) {
-							for (ImgInfo imgInfo : listOldImgInfo) {
-								String url = imgInfo.getUrl();
-								if (picLink.equals(url)) {
-									listImg.add(imgInfo);
-									break;
-								}
-							}
-						}
+						listpic.add(picLink);
 					}
 				}
 			}
 		}
 
+		// 涓婁紶鏂囦欢鏇挎崲
+		if (fileRequest != null) {
+			for (int i = 0; i < 9; i++) {
+				MultipartFile file = fileRequest.getFile("file" + i);
+				if (file != null) {
+					String picLink = uploadPicture(file);
+					if (i < listpic.size()) {
+						listpic.set(i, picLink);
+					} else {
+						listpic.add(picLink);
+					}
+				}
+			}
+		}
+
+		int totalImg = 0;
+		for (String pic : listpic) {
+			ImgInfo imgInfo0 = new ImgInfo();
+			imgInfo0.setId(UUID.randomUUID().toString().replace("-", ""));
+			imgInfo0.setLarge(false);
+			imgInfo0.setPid(pid);
+			imgInfo0.setUrl(pic);
+			imgInfo0.setUrlHD(pic);
+			imgInfo0.setType(ImgEnum.img);
+			imgInfo0.setW(1);
+			imgInfo0.setH(1);
+			listImg.add(imgInfo0);
+			totalImg++;
+		}
+
+		// 娓呯悊鑰佸浘鐗�
 		if (listOld != null && listOld.size() > 0) {
 			for (int j = 0; j < listOld.size(); j++) {
 				boolean del = true;
@@ -1125,7 +1299,21 @@
 					listDel.add(listOld.get(j));
 			}
 		}
-		resultObj.setLineNum(1);
+
+		int lineNum = 0;
+		if (totalImg > 0) {
+			if (totalImg == 1) {
+				lineNum = 1;
+			} else if (totalImg == 3) {
+				lineNum = 3;
+			} else if (totalImg == 2 || totalImg == 4) {
+				lineNum = 2;
+			} else {
+				lineNum = 3;
+			}
+		}
+
+		resultObj.setLineNum(lineNum);
 		resultObj.setImgList(listImg);
 		goodsEvaluateDao.save(resultObj);
 
@@ -1280,6 +1468,43 @@
 	}
 
 	@Override
+	public void addRanDomShareCount() {
+		// 鍙戝湀
+		try {
+			List<GoodsEvaluate> list = goodsEvaluateDao.queryValid(0, Integer.MAX_VALUE, 1);
+			if (list != null) {
+				for (GoodsEvaluate goodsEvaluate : list) {
+					Integer shareNum = goodsEvaluate.getShareNum();
+					if (shareNum == null) {
+						shareNum = 0;
+					}
+					goodsEvaluate.setShareNum(shareNum + (int) (Math.random() * 100) + 10);
+					goodsEvaluateDao.save(goodsEvaluate);
+				}
+			}
+		} catch (Exception e) {
+			LogHelper.errorDetailInfo(e);
+		}
+
+		// 绱犳潗
+		try {
+			List<GoodsEvaluate> list = goodsEvaluateDao.queryValid(0, Integer.MAX_VALUE, 2);
+			if (list != null) {
+				for (GoodsEvaluate goodsEvaluate : list) {
+					Integer shareNum = goodsEvaluate.getShareNum();
+					if (shareNum == null) {
+						shareNum = 0;
+					}
+					goodsEvaluate.setShareNum(shareNum + (int) (Math.random() * 100) + 10);
+					goodsEvaluateDao.save(goodsEvaluate);
+				}
+			}
+		} catch (Exception e) {
+			LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@Override
 	@Cacheable(value = "dynamicCache", key = "'queryValidEvaluateCache-'+#start")
 	public List<GoodsEvaluate> queryValidEvaluateCache(int start, int count) {
 		List<GoodsEvaluate> list = goodsEvaluateDao.queryValid(start, count, 1);
@@ -1288,7 +1513,13 @@
 		executor.execute(new Runnable() {
 			@Override
 			public void run() {
+				// 鏇存柊淇℃伅
 				updateGoodInfo(list);
+
+				// 鍒犻櫎宸茶繃鏈�
+				removeOverdue();
+				
+				removeDownGoods();
 			}
 		});
 
@@ -1301,103 +1532,167 @@
 	}
 
 	@Override
-//	@Cacheable(value = "dynamicCache", key = "'queryMaterialsCache-'+#start+'-'+#type")
+	@Cacheable(value = "dynamicCache", key = "'queryMaterialsCache-'+#start+'-'+#type")
 	public List<GoodsEvaluate> queryMaterialsCache(int start, int count, int type) throws Exception {
 		List<GoodsEvaluate> list = goodsEvaluateDao.queryValid(start, count, type);
-		
+		if (list == null) {
+			list = new ArrayList<>();
+		}
+		Date now = new Date();
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+		List<GoodsEvaluate> listNew = new ArrayList<>();
+		for (GoodsEvaluate goodsEvaluate : list) {
+			GoodsEvaluate evaluateNew = new GoodsEvaluate();
+			try {
+				PropertyUtils.copyProperties(evaluateNew, goodsEvaluate);
+			} catch (Exception e) {
+				e.printStackTrace();
+				continue;
+			}
+
+			// 鎸夌収鍙戝竷鏄剧ず鏃堕棿娈佃捣濮嬫椂闂翠负鍑嗐��
+			goodsEvaluate.setPublishTime(goodsEvaluate.getStartTime());
+
+			List<CommentInfo> comments = evaluateNew.getComments();
+			if (comments != null && comments.size() > 0) {
+				EvaluateEnum typeEnum = evaluateNew.getType();
+				List<CommentInfo> commentNew = new ArrayList<>();
+
+				boolean singleCoupn = true;
+				boolean currencyCoupon = true;
+				for (CommentInfo commentInfo : comments) {
+					if (StringUtil.isNullOrEmpty(commentInfo.getContent())
+							&& StringUtil.isNullOrEmpty(commentInfo.getCoupon())) {
+						continue;
+					}
+
+					CommentInfo commentInfoNew = new CommentInfo();
+					try {
+						PropertyUtils.copyProperties(commentInfoNew, commentInfo);
+					} catch (Exception e) {
+						e.printStackTrace();
+						continue;
+					}
+
+					if (typeEnum != null && typeEnum == EvaluateEnum.single) {
+						GoodsDetailVO goods = evaluateNew.getGoods();
+						if (goods != null) {
+							String content = commentInfoNew.getContent();
+							if (!StringUtil.isNullOrEmpty(content)) {
+								content = content.replace("[鍘熶环]",
+										MoneyBigDecimalUtil.getWithNoZera(goods.getZkPrice()) + "");
+								if (goods.isHasCoupon()) {
+									content = content.replace("[鍒稿悗浠穄",
+											MoneyBigDecimalUtil.getWithNoZera(goods.getCouponPrice()) + "");
+								} else {
+									singleCoupn = false;
+									content = content.replace("棰嗗埜鎶㈣喘", "鎶㈣喘");
+									content = content.replace("銆愬埜鍚庝环銆慬鍒稿悗浠穄鍏�", "");
+								}
+								content = content.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
+								// 鏇挎崲娣樺疂瀹樻柟娲诲姩
+								List<String> activityIdList = convertLinkManager.getTaoBaoOfficialActivityId(content);
+								for (String st : activityIdList)
+									content = content.replace(st, "");
+
+								commentInfoNew.setContent(content);
+							}
+						}
+					}
+					if (typeEnum != null && typeEnum == EvaluateEnum.activity) {
+						// 鏇挎崲娣樺疂瀹樻柟娲诲姩
+						String content = commentInfoNew.getContent();
+						List<String> activityIdList = convertLinkManager.getTaoBaoOfficialActivityId(content);
+						for (String st : activityIdList)
+							content = content.replace(st, "");
+						commentInfoNew.setContent(content);
+					}
+
+					CommentInfoEnum typeComment = commentInfoNew.getTypeEnum();
+					if (typeComment != null && typeComment == CommentInfoEnum.goodsCoupon) {
+						GoodsDetailVO goods = evaluateNew.getGoods();
+						if (goods != null && goods.isHasCoupon()) {
+							commentNew.add(commentInfoNew);
+							continue;
+						}
+					}
+
+					String coupon = commentInfoNew.getCoupon();
+					String endTime = commentInfoNew.getEndTime();
+					if (!StringUtil.isNullOrEmpty(coupon) && !StringUtil.isNullOrEmpty(endTime)) {
+						Date endDay = sdf.parse(endTime);
+						if (endDay.getTime() > now.getTime()) {
+							String daysBetween = DateUtil.dateDiff5(now, endDay);
+							if (!StringUtil.isNullOrEmpty(daysBetween)) {
+								List<ClientTextStyleVO> tagListNew = new ArrayList<>();
+								List<ClientTextStyleVO> tagList = commentInfoNew.getTagList();
+								if (tagList != null) {
+									tagListNew.addAll(tagList);
+								}
+
+								ClientTextStyleVO styleVO = new ClientTextStyleVO();
+								styleVO.setColor("#E5005C");
+								styleVO.setContent(daysBetween + "鍚庤繃鏈�");
+								tagListNew.add(styleVO);
+								commentInfoNew.setTagList(tagListNew);
+								commentNew.add(commentInfoNew);
+								continue;
+							} else {
+								currencyCoupon = false;
+								continue;
+							}
+						} else {
+							currencyCoupon = false;
+							continue;
+						}
+					}
+
+					commentNew.add(commentInfoNew);
+				}
+				evaluateNew.setComments(commentNew);
+
+				if (typeEnum != null && typeEnum == EvaluateEnum.single) {
+					if (!currencyCoupon && !singleCoupn) { // 鎵�鏈夊埜璇勮涓嬫灦
+						GoodsDetailVO goods = evaluateNew.getGoods();
+						if (goods != null) {
+							goods.setState(1); // 璇勮涓嶅瓨鍦� 涓嬫灦
+							evaluateNew.setRemarks("璇勮楠岃瘉涓嬫灦");
+						}
+
+						List<ImgInfo> imgList = evaluateNew.getImgList();
+						if (imgList != null) {
+							for (ImgInfo imgInfo : imgList) {
+								SimpleGoods simpleGoods = imgInfo.getGoods();
+								if (simpleGoods != null) {
+									simpleGoods.setState(1);
+									simpleGoods.setRemarks("璇勮楠岃瘉涓嬫灦");
+								}
+							}
+
+						}
+					}
+				}
+			}
+
+			listNew.add(evaluateNew);
+		}
+
 		List<GoodsEvaluate> listOBJ = list;
 		// 鏇存柊鍟嗗搧淇℃伅
 		executor.execute(new Runnable() {
 			@Override
 			public void run() {
 				updateGoodInfo(listOBJ);
+
+				// 鍒犻櫎宸茶繃鏈�
+				removeOverdue();
+				
+				removeDownGoods();
 			}
 		});
 
-		if (list == null) {
-			list = new ArrayList<>();
-		}
-		Date now = new Date();
-		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-		for (GoodsEvaluate goodsEvaluate: list) {
-			List<CommentInfo> comments = goodsEvaluate.getComments();
-			if (comments != null) {
-				EvaluateEnum typeEnum = goodsEvaluate.getType();
-				List<CommentInfo> commentNew = new ArrayList<>();
-				
-				for (CommentInfo commentInfo: comments) {
-					String typeCoupon = commentInfo.getType();
-					if (StringUtil.isNullOrEmpty(typeCoupon)) {
-						if (commentInfo.getTypeEnum() == null) {
-							commentInfo.setType("");
-						} else {
-							commentInfo.setType(commentInfo.getTypeEnum().getDesc());
-						}
-					} else if (typeCoupon.equals(CommentInfoEnum.goodsCoupon.name())) {
-						commentInfo.setType("鍟嗗搧浼樻儬鍒�");
-					} else if (typeCoupon.equals(CommentInfoEnum.currencyCoupon.name())) {
-						commentInfo.setType("閫氱敤浼樻儬鍒�");
-					}
-					
-					CommentInfoEnum typeComment = commentInfo.getTypeEnum();
-					if (typeComment != null && typeComment ==CommentInfoEnum.goodsCoupon) {
-						GoodsDetailVO goods = goodsEvaluate.getGoods();
-						if (goods.isHasCoupon()) {
-							commentNew.add(commentInfo);
-							continue;
-						}
-					}
-					
-					String coupon = commentInfo.getCoupon();
-					String endTime = commentInfo.getEndTime();
-					if (!StringUtil.isNullOrEmpty(coupon) && !StringUtil.isNullOrEmpty(endTime)) {
-						Date endDay = sdf.parse(endTime);
-						if (endDay.getTime() > now.getTime()) {
-							int daysBetween = DateUtil.daysBetween(endDay, now);
-							if (daysBetween > 0) {
-								ClientTextStyleVO styleVO = new ClientTextStyleVO();
-								styleVO.setColor("#E5005C");
-								styleVO.setContent(daysBetween + "澶╁悗杩囨湡");
-								styleVO.setContent(coupon);
-								
-								List<ClientTextStyleVO> tagList = commentInfo.getTagList();
-								tagList.add(styleVO);
-								
-								commentInfo.setTagList(tagList);
-								
-								if (typeEnum != null && typeEnum == EvaluateEnum.single) {
-									//鏂板
-									commentNew.add(commentInfo);
-								}
-							}
-						}
-					}
-				}
-				goodsEvaluate.setComments(commentNew);
-				
-				if (typeEnum != null && typeEnum == EvaluateEnum.single) {
-					 if (commentNew.size() == 0) {
-						 GoodsDetailVO goods = goodsEvaluate.getGoods();
-						 if (goods != null) {
-							 goods.setState(1); // 璇勮涓嶅瓨鍦� 涓嬫灦
-						 }
-						 
-						 List<ImgInfo> imgList = goodsEvaluate.getImgList();
-						 if (imgList != null) {
-							for (ImgInfo imgInfo: imgList) {
-								SimpleGoods simpleGoods = imgInfo.getGoods();
-								if (simpleGoods != null) {
-									simpleGoods.setState(1);
-								}
-							}
-							
-						 }
-					 }
-				}
-			}
-		}
-		
-		return list;
+		return listNew;
 	}
 
 	@Override
@@ -1420,11 +1715,8 @@
 		try {
 			Date now = new Date();
 			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-			BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
-			BigDecimal shareRate = hongBaoManageService.getShareRate();
-			BigDecimal vipFanLiRate = hongBaoManageService.getVIPFanLiRate();
-			ConfigParamsDTO paramsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE,
-					vipFanLiRate);
+			ConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55");
+			params.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
 			for (GoodsEvaluate goodsEvaluate : list) {
 				// 鏄惁2涓皬鏃朵箣鍐呭凡鏇存柊
 				Date updateTime = goodsEvaluate.getUpdateTime();
@@ -1440,31 +1732,32 @@
 				}
 
 				EvaluateEnum type = goodsEvaluate.getType();
-				if (type != null &&  type == EvaluateEnum.activity) {
+				if (type != null && type == EvaluateEnum.activity) {
 					List<CommentInfo> comments = goodsEvaluate.getComments();
 					if (comments != null) {
-						for (CommentInfo commentInfo: comments) {
+						for (CommentInfo commentInfo : comments) {
 							CommentInfoEnum commentInfoEnum = commentInfo.getTypeEnum();
-							if (commentInfoEnum != null && commentInfoEnum== CommentInfoEnum.currencyCoupon) {
+							if (commentInfoEnum != null && commentInfoEnum == CommentInfoEnum.currencyCoupon) {
 								String endTime = commentInfo.getEndTime();
 								if (!StringUtil.isNullOrEmpty(endTime)) {
 									Date endDay = sdf.parse(endTime);
 									if (endDay.getTime() < now.getTime()) {
-										goodsEvaluate.setState(1); // 娲诲姩杩囨湡
+										goodsEvaluate.setState(0); // 娲诲姩杩囨湡
 									}
 								}
 							}
-							
+
 						}
 					}
 				}
-				
+
 				GoodsDetailVO goods = goodsEvaluate.getGoods();
 				if (goods != null) {
-					GoodsDetailVO goodsNew = getGoodsNewInfo(goods.getGoodsId(), goods.getGoodsType(), paramsDTO);
+					GoodsDetailVO goodsNew = getGoodsNewInfo(goods.getGoodsId(), goods.getGoodsType(), params);
 					if (goodsNew != null) {
 						goodsEvaluate.setGoods(goodsNew);
 					} else {
+						goodsEvaluate.setRemarks("鏇存柊-浣嶇疆鎵惧埌鍟嗗搧淇℃伅");
 						goodsEvaluate.setState(0); // 宸插晢鍝佷笅鏋�
 						goods.setState(1);
 						goodsEvaluate.setGoods(goods);
@@ -1483,9 +1776,10 @@
 					}
 
 					GoodsDetailVO goodsDetailVO = getGoodsNewInfo(simpleGoods.getGoodsId(), simpleGoods.getGoodsType(),
-							paramsDTO);
+							params);
 					if (goodsDetailVO != null) {
 						simpleGoods.setPrice(goodsDetailVO.getCouponPrice());
+						simpleGoods.setState(0);
 						CouponInfoVO couponInfo = goodsDetailVO.getCouponInfo();
 						if (couponInfo == null) {
 							simpleGoods.setPrice(goodsDetailVO.getZkPrice());
@@ -1496,6 +1790,7 @@
 						imgInfo.setGoods(simpleGoods);
 						imgInfo.setGoodsVO(goodsDetailVO);
 					} else {
+						simpleGoods.setRemarks("鏇存柊-浣嶇疆鎵惧埌鍟嗗搧淇℃伅");
 						simpleGoods.setState(1);
 						imgInfo.setGoods(simpleGoods);
 						GoodsDetailVO goodsVO = imgInfo.getGoodsVO();
@@ -1505,7 +1800,7 @@
 						}
 					}
 				}
-
+				goodsEvaluate.setImgList(imgList);
 				goodsEvaluate.setUpdateTime(new Date());
 				goodsEvaluateDao.save(goodsEvaluate);
 			}
@@ -1517,6 +1812,15 @@
 	private GoodsDetailVO getGoodsNewInfo(Long goodsId, int goodsType, ConfigParamsDTO paramsDTO) {
 		GoodsDetailVO vo = null;
 		if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
+			TaoBaoGoodsBrief goods;
+			try {
+				goods = redisManager.getTaoBaoGoodsBrief(goodsId);
+				if (goods != null) {
+					vo = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO);
+				}
+			} catch (TaobaoGoodsDownException e) {
+				e.printStackTrace();
+			}
 
 		} else if (goodsType == Constant.SOURCE_TYPE_JD) {
 			JDGoods goodsInfo = jdGoodsCacheUtil.getGoodsInfo(goodsId);
@@ -1532,45 +1836,55 @@
 	}
 
 	@Override
-	public void addGoodsEvaluateByDynamicInfo(DynamicInfo info) {
+	public void addGoodsEvaluate(Long goodsId, List<ImgInfo> imgList, ActivityUser user, String title, String comment,
+			Date startTime) throws GoodsEvaluateException {
+		if (goodsId == null || user == null || StringUtil.isNullOrEmpty(title)) {
+			throw new GoodsEvaluateException(1, "鐩稿叧鍙傛暟涓嶈兘涓虹┖");
+		}
+
+		List<GoodsEvaluate> evaluateList = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_TAOBAO, goodsId);
+		if (evaluateList != null && evaluateList.size() > 0)
+			return;
+
+		TaoBaoGoodsBrief goodsBrief = null;
 		try {
-			GoodsEvaluate goodsEvaluate = new GoodsEvaluate();
-			goodsEvaluate.setId(UUID.randomUUID().toString().replace("-", ""));
-			ActivityUser user = info.getUser();
-			goodsEvaluate.setUser(user);
-			goodsEvaluate.setState(1);
-			goodsEvaluate.setDynamicType(1);
-			goodsEvaluate.setType(EvaluateEnum.single);
-			goodsEvaluate.setLineNum(2);
-			goodsEvaluate.setShareNum(info.getShareCount());
-			goodsEvaluate.setShareNumReal(0);
-			goodsEvaluate.setPublishTime(info.getCreateTime());
-			goodsEvaluate.setCreateTime(new Date());
-			goodsEvaluate.setUpdateTime(new Date());
-			goodsEvaluate.setWeight(0.0);
-			goodsEvaluate.setStartTime(new Date());
-			goodsEvaluate.setEndTime(DateUtil.plusDayDate(3,new Date()));
+			goodsBrief = redisManager.getTaoBaoGoodsBrief(goodsId);
+		} catch (TaobaoGoodsDownException e) {
+			throw new GoodsEvaluateException(1, "鍟嗗搧宸蹭笅鏋�");
+		}
 
-			List<ClientTextStyleVO> titles = info.getTitle();
-			if (titles != null) {
-				goodsEvaluate.setTitle(info.getTitle().get(0).getContent());
-			} else {
-				goodsEvaluate.setTitle("");
-			}
+		if (goodsBrief == null) {
+			throw new GoodsEvaluateException(1, "鏈壘鍒板晢鍝佷俊鎭�");
+		}
 
-			List<ImgInfo> imgList = new ArrayList<>();
+		BigDecimal couponAmount = goodsBrief.getCouponAmount();
+		if (couponAmount == null || couponAmount.compareTo(new BigDecimal(0)) < 1) {
+			throw new GoodsEvaluateException(1, "璇ュ晢鍝佹棤鍒�");
+		}
 
-			List<GoodsPicture> imgs = info.getImgs();
-			for (GoodsPicture goodsPicture : imgs) {
+		// 鐧藉簳鍥�
+		List<String> imgs = new ArrayList<>();
+		if (!StringUtil.isNullOrEmpty(goodsBrief.getPictUrlWhite())) {
+			imgs.add(goodsBrief.getPictUrlWhite());
+		}
+		imgs.addAll(goodsBrief.getImgList());
+
+		// 鍟嗗搧VO
+		ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55");
+		paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
+		GoodsDetailVO goodsVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, paramsDTO);
+
+		// 鍟嗗搧鍥剧墖淇℃伅
+		int i = 0;
+		if (imgList == null || imgList.size() == 0)
+			for (String img : imgs) {
 				ImgInfo imgInfo = new ImgInfo();
 				imgInfo.setH(1);
 				imgInfo.setW(1);
 				imgInfo.setLarge(false);
-				imgInfo.setUrl(goodsPicture.getUrl());
-				imgInfo.setUrlHD(goodsPicture.getUrl());
-
-				GoodsDetailVO goodsVO = goodsPicture.getGoodsVO();
-				if (goodsVO == null) {
+				imgInfo.setUrl(img);
+				imgInfo.setUrlHD(img);
+				if (i != 0) {
 					imgInfo.setType(ImgEnum.img);
 				} else {
 					imgInfo.setType(ImgEnum.goods);
@@ -1584,42 +1898,524 @@
 					} else {
 						simpleGoods.setPrice(goodsVO.getCouponPrice());
 						simpleGoods.setAmount(couponInfo.getAmount());
-						
-						TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(1L, goodsVO.getGoodsId(), null);
-						String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey());
-						String commentText = template.replace("[娣樺彛浠", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken()));
-					
-						commentText = commentText.replace("[鍘熶环]", goodsVO.getZkPrice().toString());
-						if (!goodsVO.isHasCoupon()) {
-							commentText = commentText.replace("棰嗗埜鎶㈣喘", "鎶㈣喘");
-							commentText = commentText.replace("銆愬埜鍚庝环銆慬鍒稿悗浠穄鍏�", "");
-						} else {
-							commentText = commentText.replace("[鍒稿悗浠穄", goodsVO.getCouponPrice().toString());
-						}
-						commentText =commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
-
-						
-						CommentInfo commentInfo = new CommentInfo();
-						commentInfo.setId(UUID.randomUUID().toString().replace("-", ""));
-						commentInfo.setContent(commentText);
-						commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon);
-						commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc());
-						
-						List<CommentInfo> commentsNew = new ArrayList<>();
-						commentsNew.add(commentInfo);
-						goodsEvaluate.setComments(commentsNew);
 					}
 					imgInfo.setGoods(simpleGoods);
-					goodsEvaluate.setGoods(goodsVO);
-					
+					imgInfo.setGoodsVO(goodsVO);
 				}
 				imgList.add(imgInfo);
+				i++;
 			}
-			goodsEvaluate.setImgList(imgList);
-			goodsEvaluateDao.save(goodsEvaluate);
-		} catch (Exception e) {
-			LogHelper.errorDetailInfo(e);
+
+		// 璇勮鍐呭
+		CommentInfo commentInfo = new CommentInfo();
+		commentInfo.setNeedSpin(true);
+		commentInfo.setId(UUID.randomUUID().toString().replace("-", ""));
+		commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon);
+		if (!StringUtil.isNullOrEmpty(comment)) {
+			commentInfo.setContent(comment);
+			commentInfo.setType("");
+		} else {
+			String token = shareGoodsService.createTaoBaoToken(Constant.LINK_TOKEN_VERIFY_UID, goodsBrief);
+			String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey());
+			String commentText = template.replace("[娣樺彛浠", TaoBaoUtil.filterTaoToken(token));
+			if (!goodsVO.isHasCoupon()) {
+				commentText = commentText.replace("棰嗗埜鎶㈣喘", "鎶㈣喘");
+				commentText = commentText.replace("銆愬埜鍚庝环銆慬鍒稿悗浠穄鍏�", "");
+				commentText = commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n","\r\n");
+			} 
+			commentInfo.setContent(commentText);
+			commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc());
+		}
+
+		List<CommentInfo> commentsNew = new ArrayList<>();
+		commentsNew.add(commentInfo);
+
+		// 涓�琛屾樉绀哄灏戜釜鍥剧墖
+		int lineNum = 0;
+		if (imgList.size() > 0) {
+			if (imgList.size() == 1) {
+				lineNum = 1;
+			} else if (imgList.size() == 3) {
+				lineNum = 3;
+			} else if (imgList.size() == 2 || imgList.size() == 4) {
+				lineNum = 2;
+			} else {
+				lineNum = 3;
+			}
+		}
+
+		GoodsEvaluate goodsEvaluate = new GoodsEvaluate();
+		goodsEvaluate.setId(UUID.randomUUID().toString().replace("-", ""));
+		goodsEvaluate.setUser(user);
+		goodsEvaluate.setTitle(getDescNew(title));
+		goodsEvaluate.setState(1);
+		goodsEvaluate.setDynamicType(1);
+		goodsEvaluate.setType(EvaluateEnum.single);
+		goodsEvaluate.setShareNum((int) (Math.random() * 5000) + 1000);
+		goodsEvaluate.setShareNumReal(0);
+		goodsEvaluate.setWeight(0.0);
+		if (startTime == null)
+			startTime = new Date();
+		goodsEvaluate.setStartTime(startTime);
+		goodsEvaluate.setEndTime(DateUtil.plusDayDate(3, new Date()));
+		goodsEvaluate.setPublishTime(new Date());
+		goodsEvaluate.setCreateTime(new Date());
+		goodsEvaluate.setUpdateTime(new Date());
+		goodsEvaluate.setGoods(goodsVO);
+		goodsEvaluate.setLineNum(lineNum);
+		goodsEvaluate.setImgList(imgList);
+		goodsEvaluate.setComments(commentsNew);
+		goodsEvaluateDao.save(goodsEvaluate);
+	}
+
+	@Override
+	public void addGoodsEvaluateByDaTaoKe() {
+		List<Long> listId = null;
+		List<GoodsEvaluate> listExist = goodsEvaluateDao.querySingleExist();
+		if (listExist != null && listExist.size() > 0) {
+			listId = new ArrayList<Long>();
+			for (GoodsEvaluate goodsEvaluate : listExist) {
+				GoodsDetailVO goods = goodsEvaluate.getGoods();
+				if (goods != null && goods.getGoodsType() == 1) {
+					listId.add(goods.getGoodsId());
+				}
+			}
+		}
+		// 鐑攢鍗曞搧鐨勫垎绫�
+		List<GoodsClass> listClass = DaTaoKeUtil.goodsClasses;
+		int ci = (int) (Math.random() * listClass.size());
+		Long subId = listClass.get(ci).getId();
+
+		List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Service.getGoodsNotInList(subId, listId, 1);
+		if (list == null || list.size() == 0) {
+			return;
+		}
+
+		for (int i = 0; i < list.size(); i++) {
+			boolean cerateGoods = cerateGoods(list.get(i));
+			if (cerateGoods) {
+				break;
+			}
 		}
 	}
 
+	private boolean cerateGoods(DaTaoKeDetailV2 daTaoKe) {
+		try {
+			TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(daTaoKe.getGoodsId());
+			if (goodsBrief == null) {
+				return false;
+			}
+
+			BigDecimal couponAmount = goodsBrief.getCouponAmount();
+			if (couponAmount == null || couponAmount.compareTo(new BigDecimal(0)) < 1) {
+				return false;
+			}
+
+			ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55");
+			paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
+			GoodsDetailVO goodsVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, paramsDTO);
+			// 鍙戝竷鐢ㄦ埛
+			ActivityUser user = activityUserService.getRandomByDaTaoKeCid(daTaoKe.getCid());
+
+			String desc = daTaoKe.getDesc().replace(",", "锛�");
+			String[] split = desc.split("锛�");
+			int max = 1;
+			if (Math.random() > 0.5) {
+				max = 2;
+			}
+			int e = 0;
+			String emojis = "";
+			String descNew = "";
+			if (split.length > 0) {
+				for (int i = 0; i < split.length; i++) {
+					if (Math.random() > 0.5 && e < max) {
+						for (int j = 0; j < 10; j++) {
+							String emojisTemp = DaTaoKeUtil.getEvaluateEmojis();
+							if (!emojis.equals(emojisTemp)) {
+								emojis = emojisTemp;
+								break;
+							}
+						}
+						e++;
+						descNew += split[i] + emojis;
+					} else {
+						descNew += split[i] + "锛�";
+					}
+				}
+			} else {
+				descNew = desc;
+			}
+
+			if (descNew.endsWith("锛�")) {
+				descNew = descNew.substring(0, descNew.length() - 1);
+			}
+
+			GoodsEvaluate goodsEvaluate = new GoodsEvaluate();
+			goodsEvaluate.setId(UUID.randomUUID().toString().replace("-", ""));
+			goodsEvaluate.setUser(user);
+			goodsEvaluate.setTitle(descNew);
+			goodsEvaluate.setState(1);
+			goodsEvaluate.setDynamicType(1);
+			goodsEvaluate.setType(EvaluateEnum.single);
+
+			goodsEvaluate.setShareNum((int) (Math.random() * 5000) + 1000);
+			goodsEvaluate.setShareNumReal(0);
+			goodsEvaluate.setWeight(0.0);
+			goodsEvaluate.setStartTime(new Date());
+			goodsEvaluate.setEndTime(DateUtil.plusDayDate(3, new Date()));
+			goodsEvaluate.setPublishTime(new Date());
+			goodsEvaluate.setCreateTime(new Date());
+			goodsEvaluate.setUpdateTime(new Date());
+
+			List<String> goodsimgs = goodsBrief.getImgList();
+
+			List<String> imgs = new ArrayList<>();
+			if (!StringUtil.isNullOrEmpty(goodsBrief.getPictUrlWhite())) {
+				imgs.add(goodsBrief.getPictUrlWhite());
+			}
+			imgs.addAll(goodsimgs);
+
+
+			int i = 0;
+			List<ImgInfo> imgList = new ArrayList<>();
+			for (String img : imgs) {
+				ImgInfo imgInfo = new ImgInfo();
+				imgInfo.setH(1);
+				imgInfo.setW(1);
+				imgInfo.setLarge(false);
+				imgInfo.setUrl(img);
+				imgInfo.setUrlHD(img);
+				if (i != 0) {
+					imgInfo.setType(ImgEnum.img);
+				} else {
+					imgInfo.setType(ImgEnum.goods);
+					SimpleGoods simpleGoods = new SimpleGoods();
+					simpleGoods.setGoodsId(goodsVO.getGoodsId());
+					simpleGoods.setGoodsType(goodsVO.getGoodsType());
+					simpleGoods.setState(goodsVO.getState());
+					CouponInfoVO couponInfo = goodsVO.getCouponInfo();
+					if (couponInfo == null) {
+						simpleGoods.setPrice(goodsVO.getZkPrice());
+					} else {
+						simpleGoods.setPrice(goodsVO.getCouponPrice());
+						simpleGoods.setAmount(couponInfo.getAmount());
+					}
+					imgInfo.setGoods(simpleGoods);
+					imgInfo.setGoodsVO(goodsVO);
+
+					// TaoBaoLink taoBaoLink =
+					// shareGoodsService.getTaoBaoLinkForShare(Constant.LINK_TOKEN_VERIFY_UID,
+					// goodsVO.getGoodsId(), null);
+
+					String token = shareGoodsService.createTaoBaoToken(Constant.LINK_TOKEN_VERIFY_UID, goodsBrief);
+
+					String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey());
+					String commentText = template.replace("[娣樺彛浠", TaoBaoUtil.filterTaoToken(token));
+					if (!goodsVO.isHasCoupon()) {
+						commentText = commentText.replace("棰嗗埜鎶㈣喘", "鎶㈣喘");
+						commentText = commentText.replace("銆愬埜鍚庝环銆慬鍒稿悗浠穄鍏�", "");
+						commentText = commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
+					} 
+
+					CommentInfo commentInfo = new CommentInfo();
+					commentInfo.setNeedSpin(true);
+					commentInfo.setId(UUID.randomUUID().toString().replace("-", ""));
+					commentInfo.setContent(commentText);
+					commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon);
+					commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc());
+
+					String text2 = "";
+					String evaluateEmojis = configService.get(ConfigKeyEnum.evaluateEmojis.getKey());
+					if (!StringUtil.isNullOrEmpty(evaluateEmojis)) {
+						text2 = evaluateEmojis + "\n";
+					}
+
+					String evaluateText = configService.get(ConfigKeyEnum.evaluateText.getKey());
+					if (!StringUtil.isNullOrEmpty(evaluateText)) {
+						text2 += evaluateText;
+					}
+
+					String dtitle = daTaoKe.getDtitle();
+					if (!StringUtil.isNullOrEmpty(dtitle)) {
+						text2 = text2 + dtitle + "\n";
+					} else if (!StringUtil.isNullOrEmpty(evaluateText)) {
+						text2 += "\n";
+					}
+					text2 += "鍏堥銆�" + couponAmount + "鍏冧紭鎯犲埜銆戜笅鍗�";
+
+					CommentInfo commentInfo2 = new CommentInfo();
+					commentInfo2.setId(UUID.randomUUID().toString().replace("-", ""));
+					commentInfo2.setContent(text2);
+					commentInfo2.setTypeEnum(CommentInfoEnum.goodsCoupon);
+					commentInfo2.setType("");
+					commentInfo2.setNeedSpin(true);
+
+					List<CommentInfo> commentsNew = new ArrayList<>();
+					commentsNew.add(commentInfo);
+					commentsNew.add(commentInfo2);
+					goodsEvaluate.setComments(commentsNew);
+				}
+				imgList.add(imgInfo);
+				i++;
+			}
+			
+			int lineNum = 0;
+			if (imgList.size() > 0) {
+				if (imgList.size() == 1) {
+					lineNum = 1;
+				} else if (imgList.size() == 3) {
+					lineNum = 3;
+				} else if (imgList.size() == 2 || imgList.size() == 4) {
+					lineNum = 2;
+				} else {
+					lineNum = 3;
+				}
+			}
+			goodsEvaluate.setLineNum(lineNum);
+
+			goodsEvaluate.setGoods(goodsVO);
+			goodsEvaluate.setImgList(imgList);
+			goodsEvaluateDao.save(goodsEvaluate);
+		} catch (Exception e) {
+			e.printStackTrace();
+			LogHelper.errorDetailInfo(e);
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * 鍙戝湀鏍囬 鍔犲叆琛ㄦ儏
+	 * @param desc
+	 * @return
+	 */
+	private String getDescNew(String desc) {
+		String[] split = desc.split("锛�");
+		int max = 1;
+		if (Math.random() > 0.5) {
+			max = 2;
+		}
+		int e = 0;
+		String emojis = "";
+		String descNew = "";
+		if (split.length > 0) {
+			for (int i = 0; i < split.length; i++) {
+				if (Math.random() > 0.5 && e < max) {
+					for (int j = 0; j < 10; j++) {
+						String emojisTemp = DaTaoKeUtil.getEvaluateEmojis();
+						if (!emojis.equals(emojisTemp)) {
+							emojis = emojisTemp;
+							break;
+						}
+					}
+					e++;
+					descNew += split[i] + emojis;
+				} else {
+					descNew += split[i] + "锛�";
+				}
+			}
+		} else {
+			descNew = desc;
+		}
+
+		if (descNew.endsWith("锛�")) {
+			descNew = descNew.substring(0, descNew.length() - 1);
+		}
+		return descNew;
+	}
+
+	@Override
+	public void updateTaoBaoGoods(TaoBaoGoodsBrief goods) {
+		try {
+			if (goods == null) {
+				return;
+			}
+			List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_TAOBAO,
+					goods.getAuctionId());
+			if (queryExist == null || queryExist.size() == 0) {
+				return;
+			}
+
+			ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55");
+			paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
+			GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO);
+			updateGoods(queryExist, goodsNew);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	@Override
+	public void updateJDGoods(JDGoods jdGoods) {
+		if (jdGoods == null) {
+			return;
+		}
+		List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_JD, jdGoods.getSkuId());
+		if (queryExist == null || queryExist.size() == 0) {
+			return;
+		}
+
+		ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55");
+		paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
+		GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertJDGoods(jdGoods, paramsDTO);
+
+		updateGoods(queryExist, goodsNew);
+	}
+
+	@Override
+	public void updatePDDGoods(PDDGoodsDetail pddGoods) {
+		if (pddGoods == null) {
+			return;
+		}
+		List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_PDD, pddGoods.getGoodsId());
+		if (queryExist == null || queryExist.size() == 0) {
+			return;
+		}
+
+		ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55");
+		paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
+		GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertPDDGoods(pddGoods, paramsDTO);
+		updateGoods(queryExist, goodsNew);
+	}
+
+	private void updateGoods(List<GoodsEvaluate> listExist, GoodsDetailVO goodsNew) {
+		long goodsId = goodsNew.getGoodsId();
+		int goodsType = goodsNew.getGoodsType();
+		for (GoodsEvaluate goodsEvaluate : listExist) {
+			GoodsDetailVO goodsDetailVO = goodsEvaluate.getGoods();
+			if (goodsDetailVO != null && goodsDetailVO.getGoodsId() != null && goodsDetailVO.getGoodsId() == goodsId
+					&& goodsDetailVO.getGoodsType() == goodsType) {
+				goodsEvaluate.setGoods(goodsNew);
+			}
+
+			// 鏇存柊鍟嗗搧淇℃伅
+			List<ImgInfo> imgList = goodsEvaluate.getImgList();
+			if (imgList == null || imgList.size() == 0) {
+				continue;
+			}
+
+			for (ImgInfo imgInfo : imgList) {
+				SimpleGoods simpleGoods = imgInfo.getGoods();
+				if (simpleGoods == null || simpleGoods.getGoodsId() != goodsId
+						|| goodsType != simpleGoods.getGoodsType()) {
+					continue;
+				}
+
+				simpleGoods.setState(0);
+				simpleGoods.setPrice(goodsNew.getCouponPrice());
+				CouponInfoVO couponInfo = goodsNew.getCouponInfo();
+				if (couponInfo == null) {
+					simpleGoods.setPrice(goodsNew.getZkPrice());
+				} else {
+					simpleGoods.setPrice(goodsNew.getCouponPrice());
+					simpleGoods.setAmount(couponInfo.getAmount());
+				}
+
+				imgInfo.setGoods(simpleGoods);
+				imgInfo.setGoodsVO(goodsNew);
+			}
+
+			goodsEvaluate.setImgList(imgList);
+			goodsEvaluate.setUpdateTime(new Date());
+			goodsEvaluateDao.save(goodsEvaluate);
+		}
+	}
+	
+	
+	@Override
+	public void offlineTaoBaoGoods(Long goodsId) {
+		try {
+			if (goodsId == null) {
+				return;
+			}
+			List<GoodsEvaluate> list = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_TAOBAO, goodsId);
+			if (list == null || list.size() == 0) {
+				return;
+			}
+			
+			// 涓嬫灦鍟嗗搧
+			offlineGoods(list, Constant.SOURCE_TYPE_TAOBAO, goodsId);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	@CacheEvict(value = "dynamicCache", allEntries = true)
+	private void offlineGoods(List<GoodsEvaluate> list, int goodsType, Long goodsId) {
+		
+		for (GoodsEvaluate goodsEvaluate : list) {
+			// 鍟嗗搧涓嬫灦
+			GoodsDetailVO goodsDetailVO = goodsEvaluate.getGoods();
+			goodsDetailVO.setState(1);
+		 
+			List<ImgInfo> imgList = goodsEvaluate.getImgList();
+			if (imgList == null || imgList.size() == 0) {
+				goodsEvaluate.setUpdateTime(new Date());
+				goodsEvaluateDao.save(goodsEvaluate);
+				continue;
+			}
+
+			for (ImgInfo imgInfo : imgList) {
+				SimpleGoods simpleGoods = imgInfo.getGoods();
+				if (simpleGoods == null || simpleGoods.getGoodsId() != goodsId
+						|| goodsType != simpleGoods.getGoodsType()) {
+					continue;
+				}
+				simpleGoods.setState(1);
+				GoodsDetailVO goodsVO = imgInfo.getGoodsVO();
+				goodsVO.setState(1);
+				
+				imgInfo.setGoods(simpleGoods);
+				imgInfo.setGoodsVO(goodsVO);
+			}
+
+			goodsEvaluate.setImgList(imgList);
+			goodsEvaluate.setUpdateTime(new Date());
+			goodsEvaluateDao.save(goodsEvaluate);
+		}
+	}
+	
+
+	/**
+	 * 鍒犻櫎宸茶繃鏈熸椂闂�
+	 */
+	private void removeOverdue() {
+		List<GoodsEvaluate> list = goodsEvaluateDao.queryOverdue();
+		if (list == null || list.size() == 0) {
+			return;
+		}
+		long nm = 1000 * 60;// 涓�鍒嗛挓鐨勬绉掓暟
+		long nh = 1000 * 60 * 60;// 涓�灏忔椂鐨勬绉掓暟
+		long nd = 1000 * 24 * 60 * 60;// 涓�澶╃殑姣鏁�
+
+		long time = java.lang.System.currentTimeMillis();
+		for (GoodsEvaluate goodsEvaluate : list) {
+			long diff = time - goodsEvaluate.getEndTime().getTime();
+			long min = diff % nd % nh / nm;
+
+			// 杩囨湡瓒呰繃10鍒嗛挓灏卞垹闄�
+			if (min > 10) {
+				goodsEvaluateDao.remove(goodsEvaluate);
+			}
+		}
+	}
+
+	/**
+	 * 鍒犻櫎鍟嗗搧宸蹭笅鏋�-鍗曞搧
+	 */
+	private void removeDownGoods() {
+		try {
+			List<GoodsEvaluate> list = goodsEvaluateDao.removeDownGoods();
+			if (list == null || list.size() == 0) {
+				return;
+			}
+
+			for (GoodsEvaluate goodsEvaluate : list) {
+				goodsEvaluateDao.remove(goodsEvaluate);
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
 }

--
Gitblit v1.8.0