From 09417e97672be66c5e312b10f23a9e30da3acb97 Mon Sep 17 00:00:00 2001
From: Administrator <Administrator@MS-20170306HGUF>
Date: 星期一, 24 二月 2020 15:23:08 +0800
Subject: [PATCH] 热销转换发圈

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java |  901 ++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 776 insertions(+), 125 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 aeed4eb..a00ead7 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,8 +1,12 @@
 package com.yeshi.fanli.service.impl.dynamic;
 
+import java.awt.image.BufferedImage;
 import java.io.InputStream;
+import java.io.PrintWriter;
+import java.lang.reflect.Type;
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.Date;
@@ -10,22 +14,36 @@
 import java.util.UUID;
 
 import javax.annotation.Resource;
+import javax.imageio.ImageIO;
 
 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.tencentcloud.COSManager;
 
 import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonPrimitive;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
 import com.yeshi.fanli.dao.dynamic.GoodsEvaluateDao;
 import com.yeshi.fanli.dto.ConfigParamsDTO;
 import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
+import com.yeshi.fanli.entity.accept.AcceptData;
 import com.yeshi.fanli.entity.bus.activity.ActivityUser;
+import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
+import com.yeshi.fanli.entity.bus.user.UserInfo;
 import com.yeshi.fanli.entity.dynamic.CommentInfo;
+import com.yeshi.fanli.entity.dynamic.DynamicInfo;
+import com.yeshi.fanli.entity.dynamic.CommentInfo.CommentInfoEnum;
 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;
@@ -48,6 +66,8 @@
 import com.yeshi.fanli.vo.goods.CouponInfoVO;
 import com.yeshi.fanli.vo.goods.GoodsDetailVO;
 import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
+
+import net.sf.json.JSONObject;
 
 @Service
 public class GoodsEvaluateServiceImpl implements GoodsEvaluateService {
@@ -74,7 +94,7 @@
 	private PinDuoDuoCacheUtil pinDuoDuoCacheUtil;
 
 	@Override
-	public void saveHead(MultipartFile file, GoodsEvaluate record) throws GoodsEvaluateException {
+	public String saveHead(MultipartFile file, GoodsEvaluate record) throws GoodsEvaluateException {
 		Integer state = record.getState();
 		if (state == null) {
 			state = 0;
@@ -102,6 +122,11 @@
 				throw new GoodsEvaluateException(1, "鎴鏃堕棿蹇呴』澶т簬寮�濮嬫椂闂�");
 		}
 
+		Integer dynamicType = record.getDynamicType();
+		if (dynamicType == null) {
+			record.setDynamicType(1);
+		}
+
 		if (record.getShareNum() == null)
 			record.setShareNum(0);
 
@@ -112,13 +137,15 @@
 			record.setStartTime(new Date());
 		record.setPublishTime(record.getStartTime());
 
-		if (StringUtil.isNullOrEmpty(record.getId())) {
-			record.setId(UUID.randomUUID().toString().replace("-", ""));
+		String id = record.getId();
+		if (StringUtil.isNullOrEmpty(id)) {
+			id = UUID.randomUUID().toString().replace("-", "");
+			record.setId(id);
 			record.setShareNumReal(0);
 			record.setCreateTime(new Date());
 			goodsEvaluateDao.save(record);
 		} else {
-			GoodsEvaluate resultObj = goodsEvaluateDao.getById(record.getId());
+			GoodsEvaluate resultObj = goodsEvaluateDao.getById(id);
 			if (resultObj == null)
 				throw new GoodsEvaluateException(1, "淇敼鍐呭宸蹭笉瀛樺湪");
 
@@ -130,6 +157,7 @@
 			resultObj.setTitle(tilte);
 			goodsEvaluateDao.save(resultObj);
 		}
+		return id;
 	}
 
 	/**
@@ -199,6 +227,10 @@
 				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);
 				if (imgVideo != null) {
@@ -211,8 +243,6 @@
 				} else {
 					imgVideo = new ImgInfo();
 					imgVideo.setId(UUID.randomUUID().toString().replace("-", ""));
-					imgVideo.setW(1);
-					imgVideo.setH(1);
 					imgVideo.setLarge(true);
 					imgVideo.setPid(pid);
 					imgVideo.setUrl(picLink);
@@ -220,6 +250,8 @@
 					imgVideo.setVideoUrl(videoUrl);
 					imgVideo.setType(ImgEnum.video);
 				}
+				imgVideo.setW(width);
+				imgVideo.setH(height);
 			}
 		}
 
@@ -245,95 +277,102 @@
 			String[] pics = picUrls.split(",");
 			if (pics != null) {
 				listpic = new ArrayList<>();
-				for (int i = 0; i < pics.length; i++ ) {
-					if(pics[i].startsWith("http")){
-						listpic.add(pics[i]);
-					}
-				}
-			}
-		}
-
-		if (fileRequest != null) {
-			for (int i = 0; i < 9; i++) {
-				MultipartFile file = fileRequest.getFile("file" + i);
-				if (file == null) {
-					continue;
-				}
-				// 涓婁紶鏂囦欢
-				String picLink = uploadPicture(file);
-				if (listpic != null && listpic.size() > i) {
-					// 闇�瑕佸垹闄ょ殑list
-					String delUrl = listpic.get(i);
-					listDel.add(delUrl);
-					listpic.set(i, picLink);
-					continue;
-				}
-				listpic.add(picLink);
-			}
-
-			// 鎸囧畾涓诲浘
-			if (picNum == null || picNum > 9 || picNum < 1) {
-				picNum = 1;
-			}
-
-			if (listpic != null && listpic.size() > 0) {
-				// 瀵规瘮鍥剧墖
-				for (int j = 0; j < listOld.size(); j++) {
-					boolean del = true;
-					for (int i = 0; i < listpic.size(); i++) {
-						if (listpic.get(i).equals(listOld.get(j))) {
-							del = false;
-							break;
+				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 (del)
-						listDel.add(listOld.get(j));
-				}
-				
-				for (int i = 0; i < listpic.size(); i++) {
-					ImgInfo imgInfo0 = new ImgInfo();
-					imgInfo0.setId(UUID.randomUUID().toString().replace("-", ""));
-					imgInfo0.setW(1);
-					imgInfo0.setH(1);
-					imgInfo0.setLarge(false);
-					imgInfo0.setPid(pid);
-					imgInfo0.setUrl(listpic.get(i));
-					imgInfo0.setUrlHD(listpic.get(i));
 
-					if (picNum - 1 == i) {
-						imgInfo0.setType(ImgEnum.goods);
-						// 鍟嗗搧淇℃伅
-						GoodsDetailVO goodsDetailVO = null; // TODO
-//								getGoodsDetailVO(goodsId, goodsType);
-//						if (goodsDetailVO == null) {
-//							throw new GoodsEvaluateException(1, "璇ュ晢鍝佷俊鎭笉瀛樺湪");
-//						}
-
-						SimpleGoods simpleGoods = new SimpleGoods();
-						simpleGoods.setGoodsId(goodsId);
-						simpleGoods.setGoodsType(goodsType);
-//						simpleGoods.setPrice(goodsDetailVO.getCouponPrice());
-//						CouponInfoVO couponInfo = goodsDetailVO.getCouponInfo();
-//						if (couponInfo == null) {
-//							simpleGoods.setState(1);
-//						} else {
-//							simpleGoods.setAmount(couponInfo.getAmount());
-//							simpleGoods.setState(0);
-//						}
-						imgInfo0.setGoods(simpleGoods);
-					} else {
-						imgInfo0.setType(ImgEnum.img);
 					}
-					listImg.add(imgInfo0);
+					if (picLink.startsWith("http")) {
+						listpic.add(picLink);
+					}
 				}
 			}
 		}
-		
-		// 淇濆瓨鍥剧墖淇℃伅
+
+		// 鎸囧畾涓诲浘
+		if (picNum == null || picNum > 9 || picNum < 1) {
+			picNum = 1;
+		}
+
+		GoodsDetailVO goodsDetailVO = getGoodsDetailVO(goodsId, goodsType);
+		;
+		if (goodsDetailVO == null) {
+			throw new GoodsEvaluateException(1, "璇ュ晢鍝佷俊鎭笉瀛樺湪");
+		}
+
+		int totalImg = 0;
+		if (listpic != null && listpic.size() > 0) {
+			for (int i = 0; i < listpic.size(); i++) {
+				ImgInfo imgInfo0 = new ImgInfo();
+				imgInfo0.setId(UUID.randomUUID().toString().replace("-", ""));
+				imgInfo0.setW(1);
+				imgInfo0.setH(1);
+				imgInfo0.setLarge(false);
+				imgInfo0.setPid(pid);
+				imgInfo0.setUrl(listpic.get(i));
+				imgInfo0.setUrlHD(listpic.get(i));
+
+				if (picNum - 1 == i) {
+					imgInfo0.setType(ImgEnum.goods);
+					SimpleGoods simpleGoods = new SimpleGoods();
+					simpleGoods.setGoodsId(goodsId);
+					simpleGoods.setGoodsType(goodsType);
+					simpleGoods.setPrice(goodsDetailVO.getCouponPrice());
+					CouponInfoVO couponInfo = goodsDetailVO.getCouponInfo();
+					if (couponInfo == null) {
+						simpleGoods.setPrice(goodsDetailVO.getZkPrice());
+						simpleGoods.setState(1);
+					} else {
+						simpleGoods.setPrice(goodsDetailVO.getCouponPrice());
+						simpleGoods.setAmount(couponInfo.getAmount());
+						simpleGoods.setState(0);
+					}
+					imgInfo0.setGoods(simpleGoods);
+					imgInfo0.setGoodsVO(goodsDetailVO);
+				} else {
+					imgInfo0.setType(ImgEnum.img);
+				}
+				listImg.add(imgInfo0);
+				totalImg++;
+			}
+		}
+
+		if (listOld != null && listOld.size() > 0) {
+			for (int j = 0; j < listOld.size(); j++) {
+				boolean del = true;
+				String oldPic = listOld.get(j);
+				for (ImgInfo imgInfo : listImg) {
+					String url = imgInfo.getUrl();
+					if (url.equals(oldPic)) {
+						del = false;
+					}
+				}
+				if (del)
+					listDel.add(listOld.get(j));
+			}
+		}
+
+		int lineNum = 0;
+		if (totalImg > 0) {
+			if (totalImg == 1) {
+				lineNum = 1;
+			} else if (totalImg <= 4) {
+				lineNum = 2;
+			} else {
+				lineNum = 3;
+			}
+		}
+
+		resultObj.setLineNum(lineNum);
+		resultObj.setGoods(goodsDetailVO);
 		resultObj.setMainPicNum(picNum);
 		resultObj.setImgList(listImg);
 		goodsEvaluateDao.save(resultObj);
-		
+
 		// 鍒犻櫎鍥剧墖
 		if (listDel.size() > 0) {
 			for (String url : listDel) {
@@ -366,7 +405,246 @@
 		}
 		return goodsDetail;
 	}
-	
+
+	@Override
+	public void saveMultipleGoods(String pid, String videoUrl, String goodsList,
+			MultipartHttpServletRequest fileRequest) throws GoodsEvaluateException, Exception {
+		if (StringUtil.isNullOrEmpty(pid)) {
+			throw new GoodsEvaluateException(1, "璇蜂繚瀛樼涓�閮ㄥ垎淇℃伅");
+		}
+
+		GoodsEvaluate resultObj = goodsEvaluateDao.getById(pid);
+		if (resultObj == null)
+			throw new GoodsEvaluateException(1, "绗竴閮ㄥ垎淇℃伅缂哄け");
+
+		// 鍘熷皝瑙嗛闈㈠浘
+		ImgInfo imgVideo = null;
+		List<String> listDel = new ArrayList<String>();
+		List<ImgInfo> oldGoodsList = new ArrayList<ImgInfo>();
+
+		// 澶勭悊鍥剧墖
+		List<ImgInfo> resultList = resultObj.getImgList();
+		if (resultList != null && resultList.size() > 0) {
+			for (ImgInfo info : resultList) {
+				ImgEnum type = info.getType();
+				if (type == ImgEnum.video) {
+					imgVideo = info;
+				} else if (type == ImgEnum.goods) {
+					oldGoodsList.add(info);
+				}
+			}
+		}
+
+		// 瑙嗛閮ㄥ垎
+		if (fileRequest != null) {
+			MultipartFile filevideo = fileRequest.getFile("filevideo");
+			if (filevideo != null) {
+				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);
+				if (imgVideo != null) {
+					String url = imgVideo.getUrl();
+					if (!StringUtil.isNullOrEmpty(url)) {
+						listDel.add(url);
+					}
+					imgVideo.setUrl(picLink);
+					imgVideo.setUrlHD(picLink);
+				} else {
+					imgVideo = new ImgInfo();
+					imgVideo.setId(UUID.randomUUID().toString().replace("-", ""));
+					imgVideo.setLarge(true);
+					imgVideo.setPid(pid);
+					imgVideo.setUrl(picLink);
+					imgVideo.setUrlHD(picLink);
+					imgVideo.setVideoUrl(videoUrl);
+					imgVideo.setType(ImgEnum.video);
+				}
+				imgVideo.setW(width);
+				imgVideo.setH(height);
+			}
+		}
+
+		List<ImgInfo> listImg = new ArrayList<ImgInfo>();
+		if (imgVideo != null) {
+			if (!StringUtil.isNullOrEmpty(videoUrl)) {
+				if (imgVideo != null && StringUtil.isNullOrEmpty(imgVideo.getUrl())) {
+					throw new GoodsEvaluateException(1, "瑙嗛灏侀潰鍥句笉鑳戒负绌�");
+				}
+				imgVideo.setVideoUrl(videoUrl);
+				listImg.add(imgVideo);
+			} else {
+				String url = imgVideo.getUrl();
+				if (!StringUtil.isNullOrEmpty(url)) {
+					listDel.add(url);
+				}
+			}
+		}
+
+		int totalImg = 0;
+		if (!StringUtil.isNullOrEmpty(goodsList)) {
+			String[] goodsArray = goodsList.split(",");
+			if (goodsArray != null && goodsArray.length > 0) {
+				for (int i = 0; i < goodsArray.length && i < 9; i++) {
+					String goodsids = goodsArray[i];
+					String[] g = goodsids.split("-");
+					GoodsDetailVO goodsDetailVO = getGoodsDetailVO(Long.parseLong(g[0]), Integer.parseInt(g[1]));
+					if (goodsDetailVO == null) {
+						continue;
+					}
+
+					String picUrl = goodsDetailVO.getPicUrl();
+					if (fileRequest != null) {
+						MultipartFile file = fileRequest.getFile("file" + i);
+						if (file != null) {
+							picUrl = uploadPicture(file);
+						}
+					}
+
+					ImgInfo imgInfo0 = new ImgInfo();
+					imgInfo0.setId(UUID.randomUUID().toString().replace("-", ""));
+					imgInfo0.setW(1);
+					imgInfo0.setH(1);
+					imgInfo0.setLarge(false);
+					imgInfo0.setPid(pid);
+					imgInfo0.setUrl(picUrl);
+					imgInfo0.setUrlHD(picUrl);
+					imgInfo0.setType(ImgEnum.goods);
+
+					SimpleGoods simpleGoods = new SimpleGoods();
+					simpleGoods.setGoodsId(goodsDetailVO.getGoodsId());
+					simpleGoods.setGoodsType(goodsDetailVO.getGoodsType());
+					simpleGoods.setPrice(goodsDetailVO.getCouponPrice());
+					CouponInfoVO couponInfo = goodsDetailVO.getCouponInfo();
+					if (couponInfo == null) {
+						simpleGoods.setState(1);
+					} else {
+						simpleGoods.setAmount(couponInfo.getAmount());
+						simpleGoods.setState(0);
+					}
+					imgInfo0.setGoods(simpleGoods);
+					imgInfo0.setGoodsVO(goodsDetailVO);
+					listImg.add(imgInfo0);
+					totalImg++;
+				}
+			}
+		}
+
+		// 鏁版嵁瀵规瘮 鍒犻櫎鍥剧墖
+		if (oldGoodsList != null && oldGoodsList.size() > 0) {
+			for (ImgInfo old : oldGoodsList) {
+				ImgEnum type = old.getType();
+				if (type != ImgEnum.goods) {
+					continue;
+				}
+
+				boolean del = false;
+				long oldGoodsId = old.getGoods().getGoodsId().longValue();
+				int oldGoodsType = old.getGoods().getGoodsType().intValue();
+				for (ImgInfo newInfo : listImg) {
+					ImgEnum type2 = old.getType();
+					if (type2 != ImgEnum.goods) {
+						continue;
+					}
+
+					if (oldGoodsId == newInfo.getGoods().getGoodsId().longValue()
+							&& oldGoodsType == newInfo.getGoods().getGoodsType().intValue()) {
+						String url = newInfo.getUrl();
+						if (url.equals(old.getUrl())) {
+
+						} else if (url.contains(FilePathEnum.goodsEvaluate.getPath())) {
+							del = true;
+						} else {
+							newInfo.setUrl(old.getUrl());
+							newInfo.setUrlHD(old.getUrlHD());
+						}
+						break;
+					}
+				}
+
+				if (del) {
+					listDel.add(old.getUrl());
+				}
+			}
+		}
+
+		int lineNum = 0;
+		if (totalImg > 0) {
+			if (totalImg == 1) {
+				lineNum = 1;
+			} else if (totalImg <= 4) {
+				lineNum = 2;
+			} else {
+				lineNum = 3;
+			}
+		}
+
+		resultObj.setLineNum(lineNum);
+
+		// 淇濆瓨鍥剧墖淇℃伅
+		resultObj.setImgList(listImg);
+		goodsEvaluateDao.save(resultObj);
+
+		// 鍒犻櫎鍥剧墖
+		if (listDel.size() > 0) {
+			for (String url : listDel) {
+				if (url.contains(FilePathEnum.goodsEvaluate.getPath())) {
+					removePicture(url);
+				}
+			}
+		}
+	}
+
+	@Override
+	public void saveGoodsCoupon(String pid, String tags, String content) throws GoodsEvaluateException, Exception {
+		if (StringUtil.isNullOrEmpty(pid)) {
+			throw new GoodsEvaluateException(1, "璇蜂繚瀛樼涓�閮ㄥ垎淇℃伅");
+		}
+
+		GoodsEvaluate resultObj = goodsEvaluateDao.getById(pid);
+		if (resultObj == null)
+			throw new GoodsEvaluateException(1, "绗竴閮ㄥ垎淇℃伅缂哄け");
+
+		CommentInfo goodsCoupon = null;
+		CommentInfo currencyCoupon = null;
+		List<CommentInfo> oldComments = resultObj.getComments();
+		if (oldComments != null) {
+			for (CommentInfo info : oldComments) {
+				if (CommentInfoEnum.goodsCoupon == info.getType()) {
+					goodsCoupon = info;
+				} else if (CommentInfoEnum.currencyCoupon == info.getType()) {
+					currencyCoupon = info;
+				}
+			}
+		}
+
+		List<CommentInfo> comments = new ArrayList<>();
+		if (!StringUtil.isNullOrEmpty(content)) {
+			CommentInfo commentInfo = new CommentInfo();
+			if (goodsCoupon != null) {
+				commentInfo.setId(goodsCoupon.getId());
+			} else {
+				commentInfo.setId(UUID.randomUUID().toString().replace("-", ""));
+			}
+			commentInfo.setContent(content);
+			commentInfo.setType(CommentInfoEnum.goodsCoupon);
+			comments.add(commentInfo);
+		}
+
+		if (currencyCoupon != null) {
+			comments.add(currencyCoupon);
+		}
+
+		resultObj.setComments(comments);
+		goodsEvaluateDao.save(resultObj);
+	}
+
 	@Override
 	public void saveSingleGoodsCoupon(String pid, CommentInfo commentInfo) throws GoodsEvaluateException, Exception {
 		if (StringUtil.isNullOrEmpty(pid)) {
@@ -377,18 +655,61 @@
 		if (resultObj == null)
 			throw new GoodsEvaluateException(1, "绗竴閮ㄥ垎淇℃伅缂哄け");
 
+		CommentInfo goodsCoupon = null;
+		CommentInfo currencyCoupon = null;
+		List<CommentInfo> oldComments = resultObj.getComments();
+		if (oldComments != null) {
+			for (CommentInfo info : oldComments) {
+				if (CommentInfoEnum.goodsCoupon == info.getType()) {
+					goodsCoupon = info;
+				} else if (CommentInfoEnum.currencyCoupon == info.getType()) {
+					currencyCoupon = info;
+				}
+			}
+		}
+
 		List<CommentInfo> comments = new ArrayList<>();
+		if (goodsCoupon != null) {
+			comments.add(goodsCoupon);
+		}
+
 		if (commentInfo != null) {
+			if (currencyCoupon != null) {
+				commentInfo.setId(currencyCoupon.getId());
+			} else {
+				commentInfo.setId(UUID.randomUUID().toString().replace("-", ""));
+			}
+			commentInfo.setType(CommentInfoEnum.currencyCoupon);
+
+			// 鏍囩淇℃伅
+			List<ClientTextStyleVO> tagList = new ArrayList<>();
+			String couponSource = commentInfo.getCouponSource();
+			if (!StringUtil.isNullOrEmpty(couponSource)) {
+				ClientTextStyleVO styleVO = new ClientTextStyleVO();
+				styleVO.setColor("#16C253");
+				styleVO.setContent(couponSource);
+				tagList.add(styleVO);
+			}
+			String coupon = commentInfo.getCoupon();
+			if (!StringUtil.isNullOrEmpty(coupon)) {
+				ClientTextStyleVO styleVO = new ClientTextStyleVO();
+				styleVO.setColor("#E5005C");
+				styleVO.setContent(coupon);
+				tagList.add(styleVO);
+			}
+			commentInfo.setTagList(tagList);
+
 			comments.add(commentInfo);
 		}
+
 		resultObj.setComments(comments);
-		
+
 		goodsEvaluateDao.save(resultObj);
 	}
 
-
 	@Override
-	public void saveActivityPic(String pid, ImgInfo imgInfo, MultipartHttpServletRequest fileRequest) throws GoodsEvaluateException, Exception {
+	public void saveActivityPic(String pid, ImgInfo imgInfo, MultipartHttpServletRequest fileRequest)
+			throws GoodsEvaluateException, Exception {
 		if (StringUtil.isNullOrEmpty(pid)) {
 			throw new GoodsEvaluateException(1, "璇蜂繚瀛樼涓�閮ㄥ垎淇℃伅");
 		}
@@ -403,45 +724,55 @@
 		ImgInfo imgactivity = null;
 		List<ImgInfo> resultList = resultObj.getImgList();
 		if (resultList != null && resultList.size() > 0) {
-			for(ImgInfo info: resultList) {
+			for (ImgInfo info : resultList) {
 				if (info.getType() == ImgEnum.activity) {
 					activityPic = info.getActivityPic();
-					imgVideo = info;
+					imgactivity = info;
 				} else {
 					imgVideo = info;
 					videoPic = info.getUrl();
 				}
 			}
 		}
-		
-		
+
+		int width = 0;
+		int height = 0;
+		int width2 = 0;
+		int height2 = 0;
 		List<ImgInfo> listImg = new ArrayList<ImgInfo>();
 		if (fileRequest != null) {
 			MultipartFile filevideo = fileRequest.getFile("filevideo");
 			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;
 			}
-			
+
 			MultipartFile activityfile = fileRequest.getFile("activityfile");
 			if (activityfile != null) {
 				removePicture(activityPic);
+				InputStream inputStream = activityfile.getInputStream();
+				BufferedImage sourceImg = ImageIO.read(inputStream);
+				width2 = sourceImg.getWidth();
+				height2 = sourceImg.getHeight();
 				String picLink = uploadPicture(activityfile);
 				activityPic = picLink;
 			}
 		}
-		
+
 		if (!StringUtil.isNullOrEmpty(videoPic) || !StringUtil.isNullOrEmpty(imgInfo.getVideoUrl())) {
-			if (imgVideo != null){
+			if (imgVideo != null) {
 				imgVideo.setUrl(videoPic);
 				imgVideo.setUrlHD(videoPic);
 				imgVideo.setVideoUrl(imgInfo.getVideoUrl());
 			} else {
 				imgVideo = new ImgInfo();
 				imgVideo.setId(UUID.randomUUID().toString().replace("-", ""));
-				imgVideo.setW(1);
-				imgVideo.setH(1);
 				imgVideo.setLarge(true);
 				imgVideo.setPid(pid);
 				imgVideo.setUrl(videoPic);
@@ -449,33 +780,228 @@
 				imgVideo.setVideoUrl(imgInfo.getVideoUrl());
 				imgVideo.setType(ImgEnum.video);
 			}
-			listImg.add(imgVideo);
-		}
-		
-		if (!StringUtil.isNullOrEmpty(activityPic) || !StringUtil.isNullOrEmpty(imgInfo.getActivityUrl())) {
-			if (imgVideo != null){
-				imgVideo.setUrl(activityPic);
-				imgVideo.setUrlHD(activityPic);
-				imgVideo.setVideoUrl(imgInfo.getVideoUrl());
+			if (width > 0) {
+				imgVideo.setW(width);
+				imgVideo.setH(height);
 			} else {
-				imgVideo = new ImgInfo();
-				imgVideo.setId(UUID.randomUUID().toString().replace("-", ""));
-				imgVideo.setW(1);
-				imgVideo.setH(1);
-				imgVideo.setLarge(true);
-				imgVideo.setPid(pid);
-				imgVideo.setUrl(activityPic);
-				imgVideo.setUrlHD(activityPic);
-				imgVideo.setActivityUrl(imgInfo.getActivityUrl());
-				imgVideo.setType(ImgEnum.activity);
+				imgVideo.setW(imgVideo.getW());
+				imgVideo.setH(imgVideo.getH());
 			}
 			listImg.add(imgVideo);
 		}
+
+		if (!StringUtil.isNullOrEmpty(activityPic) || !StringUtil.isNullOrEmpty(imgInfo.getActivityUrl())) {
+			if (imgactivity != null) {
+				imgactivity.setUrl(activityPic);
+				imgactivity.setUrlHD(activityPic);
+				imgactivity.setActivityUrl(imgInfo.getActivityUrl());
+			} else {
+				imgactivity = new ImgInfo();
+				imgactivity.setId(UUID.randomUUID().toString().replace("-", ""));
+				imgactivity.setLarge(true);
+				imgactivity.setPid(pid);
+				imgactivity.setUrl(activityPic);
+				imgactivity.setUrlHD(activityPic);
+				imgactivity.setActivityUrl(imgInfo.getActivityUrl());
+				imgactivity.setType(ImgEnum.activity);
+			}
+			if (width2 > 0) {
+				imgactivity.setW(width2);
+				imgactivity.setH(height2);
+			} else {
+				imgactivity.setW(imgactivity.getW());
+				imgactivity.setH(imgactivity.getH());
+			}
+			listImg.add(imgactivity);
+		}
+		resultObj.setLineNum(1);
 		resultObj.setImgList(listImg);
 		goodsEvaluateDao.save(resultObj);
 	}
 
-	
+	@Override
+	public void saveSuCai(String pid, String videoUrl, String picUrls, MultipartHttpServletRequest fileRequest)
+			throws GoodsEvaluateException, Exception {
+		if (StringUtil.isNullOrEmpty(pid)) {
+			throw new GoodsEvaluateException(1, "璇蜂繚瀛樼涓�閮ㄥ垎淇℃伅");
+		}
+
+		GoodsEvaluate resultObj = goodsEvaluateDao.getById(pid);
+		if (resultObj == null)
+			throw new GoodsEvaluateException(1, "绗竴閮ㄥ垎淇℃伅缂哄け");
+
+		// 鍘熷皝瑙嗛闈㈠浘
+		ImgInfo imgVideo = null;
+		ImgInfo imgActivity = null;
+		List<String> listDel = new ArrayList<String>();
+		List<String> listOld = new ArrayList<String>();
+
+		List<ImgInfo> listOldImgInfo = new ArrayList<ImgInfo>();
+		// 澶勭悊鍥剧墖
+		List<ImgInfo> resultList = resultObj.getImgList();
+		if (resultList != null && resultList.size() > 0) {
+			for (ImgInfo info : resultList) {
+				ImgEnum type = info.getType();
+				if (type == ImgEnum.video) {
+					imgVideo = info;
+				} else if (type == ImgEnum.img) {
+					listOldImgInfo.add(info);
+					String url = info.getUrl();
+					if (!StringUtil.isNullOrEmpty(url)) {
+						listOld.add(url);
+					}
+				} else if (type == ImgEnum.activity) {
+					imgActivity = info;
+				}
+			}
+		}
+
+		MultipartFile activityFile = null;
+		// 瑙嗛閮ㄥ垎
+		if (fileRequest != null) {
+			MultipartFile filevideo = fileRequest.getFile("filevideo");
+			if (filevideo != null) {
+				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);
+				if (imgVideo != null) {
+					String url = imgVideo.getUrl();
+					if (!StringUtil.isNullOrEmpty(url)) {
+						listDel.add(url);
+					}
+					imgVideo.setUrl(picLink);
+					imgVideo.setUrlHD(picLink);
+				} else {
+					imgVideo = new ImgInfo();
+					imgVideo.setId(UUID.randomUUID().toString().replace("-", ""));
+					imgVideo.setLarge(true);
+					imgVideo.setPid(pid);
+					imgVideo.setUrl(picLink);
+					imgVideo.setUrlHD(picLink);
+					imgVideo.setVideoUrl(videoUrl);
+					imgVideo.setType(ImgEnum.video);
+				}
+				imgVideo.setW(width);
+				imgVideo.setH(height);
+			}
+
+			activityFile = fileRequest.getFile("activityFile");
+		}
+
+		List<ImgInfo> listImg = new ArrayList<ImgInfo>();
+		if (imgVideo != null) {
+			if (!StringUtil.isNullOrEmpty(videoUrl)) {
+				if (imgVideo != null && StringUtil.isNullOrEmpty(imgVideo.getUrl())) {
+					throw new GoodsEvaluateException(1, "瑙嗛灏侀潰鍥句笉鑳戒负绌�");
+				}
+
+				imgVideo.setVideoUrl(videoUrl);
+				listImg.add(imgVideo);
+			} else {
+				String url = imgVideo.getUrl();
+				if (!StringUtil.isNullOrEmpty(url)) {
+					listDel.add(url);
+				}
+			}
+		}
+
+		if (activityFile != null) {
+			InputStream inputStream = activityFile.getInputStream();
+			BufferedImage sourceImg = ImageIO.read(inputStream);
+			int width = sourceImg.getWidth();
+			int height = sourceImg.getHeight();
+
+			String picLink = uploadPicture(activityFile);
+
+			ImgInfo activity = new ImgInfo();
+			activity.setId(UUID.randomUUID().toString().replace("-", ""));
+			activity.setLarge(true);
+			activity.setPid(pid);
+			activity.setUrl(picLink);
+			activity.setUrlHD(picLink);
+			activity.setActivityPic(picLink);
+			activity.setW(width);
+			activity.setH(height);
+			activity.setType(ImgEnum.activity);
+			listImg.add(activity);
+		} else if (imgActivity != null) {
+			listImg.add(imgActivity);
+		}
+
+		// 缂栬緫鍥剧墖
+		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;
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+
+		if (listOld != null && listOld.size() > 0) {
+			for (int j = 0; j < listOld.size(); j++) {
+				boolean del = true;
+				String oldPic = listOld.get(j);
+				for (ImgInfo imgInfo : listImg) {
+					String url = imgInfo.getUrl();
+					if (url.equals(oldPic)) {
+						del = false;
+					}
+				}
+				if (del)
+					listDel.add(listOld.get(j));
+			}
+		}
+		resultObj.setLineNum(1);
+		resultObj.setImgList(listImg);
+		goodsEvaluateDao.save(resultObj);
+
+		// 鍒犻櫎鍥剧墖
+		if (listDel.size() > 0) {
+			for (String url : listDel) {
+				if (url.contains(FilePathEnum.goodsEvaluate.getPath())) {
+					removePicture(url);
+				}
+			}
+		}
+	}
+
 	@Override
 	public void deleteBatchByPrimaryKey(List<String> list) {
 		if (list == null || list.size() == 0) {
@@ -549,6 +1075,16 @@
 	}
 
 	@Override
+	public void release(String id) throws GoodsEvaluateException {
+		GoodsEvaluate goodsEvaluate = goodsEvaluateDao.getById(id);
+		if (goodsEvaluate == null) {
+			throw new GoodsEvaluateException(1, "鍔ㄦ�佸凡涓嶅瓨鍦�");
+		}
+		goodsEvaluate.setState(1);
+		goodsEvaluateDao.save(goodsEvaluate);
+	}
+
+	@Override
 	public void deleteComment(String pid, List<String> list) throws GoodsEvaluateException {
 		if (list == null || list.size() == 0) {
 			return;
@@ -597,19 +1133,19 @@
 	}
 
 	@Override
-	public List<GoodsEvaluate> query(int start, int count, String key, Integer state) {
-		return goodsEvaluateDao.query(start, count, key, state);
+	public List<GoodsEvaluate> query(int start, int count, String key, Integer state, int dynamicType) {
+		return goodsEvaluateDao.query(start, count, key, state, dynamicType);
 	}
 
 	@Override
-	public long count(String key, Integer state) {
-		return goodsEvaluateDao.count(key, state);
+	public long count(String key, Integer state, int dynamicType) {
+		return goodsEvaluateDao.count(key, state, dynamicType);
 	}
 
 	@Override
 	@Cacheable(value = "dynamicCache", key = "'queryValidEvaluateCache-'+#start")
 	public List<GoodsEvaluate> queryValidEvaluateCache(int start, int count) {
-		List<GoodsEvaluate> list = goodsEvaluateDao.queryValid(start, count);
+		List<GoodsEvaluate> list = goodsEvaluateDao.queryValid(start, count, 1);
 
 		// 鏇存柊鍟嗗搧淇℃伅
 		executor.execute(new Runnable() {
@@ -624,7 +1160,26 @@
 
 	@Override
 	public long countValid() {
-		return goodsEvaluateDao.countValid();
+		return goodsEvaluateDao.countValid(1);
+	}
+
+	@Override
+	@Cacheable(value = "dynamicCache", key = "'queryMaterialsCache-'+#start+'-'+#type")
+	public List<GoodsEvaluate> queryMaterialsCache(int start, int count, int type) {
+		List<GoodsEvaluate> list = goodsEvaluateDao.queryValid(start, count, type);
+		// 鏇存柊鍟嗗搧淇℃伅
+		executor.execute(new Runnable() {
+			@Override
+			public void run() {
+				updateGoodInfo(list);
+			}
+		});
+		return list;
+	}
+
+	@Override
+	public long countValidMaterials(int type) {
+		return goodsEvaluateDao.countValid(type);
 	}
 
 	/**
@@ -662,6 +1217,8 @@
 				GoodsDetailVO goods = goodsEvaluate.getGoods();
 				if (goods != null) {
 					GoodsDetailVO goodsNew = getGoodsNewInfo(goods.getGoodsId(), goods.getGoodsType(), paramsDTO);
+					if (goodsNew != null)
+						goodsEvaluate.setGoods(goodsNew);
 				}
 				// 鏇存柊鍟嗗搧淇℃伅
 				List<ImgInfo> imgList = goodsEvaluate.getImgList();
@@ -669,6 +1226,32 @@
 					continue;
 				}
 
+				for (ImgInfo imgInfo : imgList) {
+					SimpleGoods simpleGoods = imgInfo.getGoods();
+					if (simpleGoods == null) {
+						continue;
+					}
+
+					GoodsDetailVO goodsDetailVO = getGoodsNewInfo(simpleGoods.getGoodsId(), simpleGoods.getGoodsType(),
+							paramsDTO);
+					if (goodsDetailVO != null) {
+						simpleGoods.setPrice(goodsDetailVO.getCouponPrice());
+						CouponInfoVO couponInfo = goodsDetailVO.getCouponInfo();
+						if (couponInfo == null) {
+							simpleGoods.setPrice(goodsDetailVO.getZkPrice());
+							simpleGoods.setState(1);
+						} else {
+							simpleGoods.setPrice(goodsDetailVO.getCouponPrice());
+							simpleGoods.setAmount(couponInfo.getAmount());
+							simpleGoods.setState(0);
+						}
+						imgInfo.setGoods(simpleGoods);
+						imgInfo.setGoodsVO(goodsDetailVO);
+					}
+				}
+
+				goodsEvaluate.setUpdateTime(new Date());
+				goodsEvaluateDao.save(goodsEvaluate);
 			}
 		} catch (Exception e) {
 			LogHelper.errorDetailInfo(e);
@@ -692,4 +1275,72 @@
 		return vo;
 	}
 
+	@Override
+	public void addGoodsEvaluateByDynamicInfo(DynamicInfo info) {
+		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.plusYears(new Date(), 100));
+
+			List<ClientTextStyleVO> titles = info.getTitle();
+			if (titles != null) {
+				goodsEvaluate.setTitle(info.getTitle().get(0).getContent());
+			} else {
+				goodsEvaluate.setTitle("");
+			}
+
+			List<ImgInfo> imgList = new ArrayList<>();
+
+			List<GoodsPicture> imgs = info.getImgs();
+			for (GoodsPicture goodsPicture : 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.setType(ImgEnum.img);
+				} else {
+					imgInfo.setType(ImgEnum.goods);
+					SimpleGoods simpleGoods = new SimpleGoods();
+					simpleGoods.setGoodsId(goodsVO.getGoodsId());
+					simpleGoods.setGoodsType(goodsVO.getGoodsType());
+
+					CouponInfoVO couponInfo = goodsVO.getCouponInfo();
+					if (couponInfo == null) {
+						simpleGoods.setState(0);
+						simpleGoods.setPrice(goodsVO.getZkPrice());
+					} else {
+						simpleGoods.setState(goodsVO.getState());
+						simpleGoods.setPrice(goodsVO.getCouponPrice());
+						simpleGoods.setAmount(couponInfo.getAmount());
+					}
+					imgInfo.setGoods(simpleGoods);
+					goodsEvaluate.setGoods(goodsVO);
+				}
+				imgList.add(imgInfo);
+			}
+			goodsEvaluate.setImgList(imgList);
+			goodsEvaluateDao.save(goodsEvaluate);
+		} catch (Exception e) {
+			LogHelper.errorDetailInfo(e);
+		}
+	}
+
 }

--
Gitblit v1.8.0