From 58ee87fd64efdb75d16e396c3d952d3522c3a747 Mon Sep 17 00:00:00 2001 From: yj <Administrator@192> Date: 星期三, 04 三月 2020 17:54:53 +0800 Subject: [PATCH] Merge branch 'div' of ssh://193.112.35.168:29418/fanli-server into div --- fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java | 669 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 584 insertions(+), 85 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 ddd676b..921095f 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,7 +1,9 @@ package com.yeshi.fanli.service.impl.dynamic; +import java.awt.image.BufferedImage; import java.io.InputStream; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -10,36 +12,45 @@ 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.yeshi.fanli.dao.dynamic.GoodsEvaluateDao; import com.yeshi.fanli.dto.ConfigParamsDTO; +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.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; import com.yeshi.fanli.entity.jd.JDGoods; +import com.yeshi.fanli.entity.system.ConfigKeyEnum; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; +import com.yeshi.fanli.entity.taobao.TaoBaoLink; import com.yeshi.fanli.exception.dynamic.ActivityUserException; import com.yeshi.fanli.exception.dynamic.GoodsEvaluateException; 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.config.HongBaoManageService; +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.RedisManager; @@ -47,6 +58,10 @@ import com.yeshi.fanli.util.cache.JDGoodsCacheUtil; import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil; import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; +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.TaoBaoUtil; import com.yeshi.fanli.vo.goods.CouponInfoVO; import com.yeshi.fanli.vo.goods.GoodsDetailVO; import com.yeshi.fanli.vo.msg.ClientTextStyleVO; @@ -74,6 +89,17 @@ @Resource private PinDuoDuoCacheUtil pinDuoDuoCacheUtil; + + @Resource + private ConfigService configService; + + @Resource + private ShareGoodsService shareGoodsService; + + @Resource + private ConvertLinkManager convertLinkManager; + + @Override public String saveHead(MultipartFile file, GoodsEvaluate record) throws GoodsEvaluateException { @@ -86,7 +112,7 @@ if (StringUtil.isNullOrEmpty(tilte)) { throw new GoodsEvaluateException(1, "鎺ㄨ崘璇笉鑳戒负绌�"); } - + try { ActivityUser activityUser = activityUserService.getActivityUserByNickName(record.getUser(), file); if (activityUser == null) @@ -108,7 +134,7 @@ if (dynamicType == null) { record.setDynamicType(1); } - + if (record.getShareNum() == null) record.setShareNum(0); @@ -117,6 +143,7 @@ if (record.getStartTime() == null) record.setStartTime(new Date()); + record.setPublishTime(record.getStartTime()); String id = record.getId(); @@ -187,17 +214,18 @@ List<String> listOld = new ArrayList<String>(); // 澶勭悊鍥剧墖 + GoodsDetailVO oldGoodsVO = null; 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 || type == ImgEnum.img) { - String url = info.getUrl(); - if (!StringUtil.isNullOrEmpty(url)) { - listOld.add(url); - } + } else if (type == ImgEnum.goods ) { + listOld.add(info.getUrl()); + oldGoodsVO = info.getGoodsVO(); + } else if (type == ImgEnum.img){ + listOld.add(info.getUrl()); } } } @@ -209,6 +237,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) { @@ -221,8 +253,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); @@ -230,6 +260,8 @@ imgVideo.setVideoUrl(videoUrl); imgVideo.setType(ImgEnum.video); } + imgVideo.setW(width); + imgVideo.setH(height); } } @@ -262,7 +294,7 @@ if (file != null) { picLink = uploadPicture(file); } - + } if (picLink.startsWith("http")) { listpic.add(picLink); @@ -276,6 +308,33 @@ picNum = 1; } + 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); + if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { + try { + TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(goodsId); + goodsDetailVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, params); + } catch (TaobaoGoodsDownException e) { + throw new GoodsEvaluateException(1, "鍟嗗搧宸蹭笅鏋�"); + } + } else if (goodsType == Constant.SOURCE_TYPE_JD) { + jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsId); + goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(jdGoods, params); + } else if (goodsType == Constant.SOURCE_TYPE_PDD) { + pddGoods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); + goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(pddGoods, params); + } + + 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(); @@ -289,28 +348,24 @@ if (picNum - 1 == i) { imgInfo0.setType(ImgEnum.goods); - // 鍟嗗搧淇℃伅 - GoodsDetailVO goodsDetailVO = getGoodsDetailVO(goodsId, goodsType); - if (goodsDetailVO == null) { - throw new GoodsEvaluateException(1, "璇ュ晢鍝佷俊鎭笉瀛樺湪"); - } - SimpleGoods simpleGoods = new SimpleGoods(); + simpleGoods.setState(goodsDetailVO.getState()); simpleGoods.setGoodsId(goodsId); simpleGoods.setGoodsType(goodsType); - simpleGoods.setPrice(goodsDetailVO.getCouponPrice()); CouponInfoVO couponInfo = goodsDetailVO.getCouponInfo(); if (couponInfo == null) { - simpleGoods.setState(1); + simpleGoods.setPrice(goodsDetailVO.getZkPrice()); } 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++; } } @@ -318,20 +373,96 @@ for (int j = 0; j < listOld.size(); j++) { boolean del = true; String oldPic = listOld.get(j); - for (ImgInfo imgInfo: listImg) { + 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); + + boolean addComment = true; + List<CommentInfo> commentsNew = new ArrayList<>(); + List<CommentInfo> comments = resultObj.getComments(); + if (comments != null) { + for (CommentInfo commentInfo: comments) { + if (commentInfo.getTypeEnum() == CommentInfoEnum.goodsCoupon) { + 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; + } + + + if (addComment) { + String commentText = ""; + if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { + TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(1L, goodsId, "0"); + String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey()); + commentText = template.replace("[娣樺彛浠", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); + } else if (goodsType == Constant.SOURCE_TYPE_JD) { + String couponUrl = null; + JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(jdGoods); + if (couponInfo != null) { + couponUrl = couponInfo.getLink(); + } + String materialId = "https://item.jd.com/" + goodsId + ".html"; + String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "","1"); + String template = configService.get(ConfigKeyEnum.quickShareJDCommentText.getKey()); + commentText = template.replace("[閾炬帴]", jumpLink); + } else if (goodsType == Constant.SOURCE_TYPE_PDD) { + String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goodsId, 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()); + } + + 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); + commentsNew.add(commentInfo); + resultObj.setComments(commentsNew); + } goodsEvaluateDao.save(resultObj); // 鍒犻櫎鍥剧墖 @@ -404,6 +535,11 @@ 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(); @@ -415,8 +551,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); @@ -424,6 +558,8 @@ imgVideo.setVideoUrl(videoUrl); imgVideo.setType(ImgEnum.video); } + imgVideo.setW(width); + imgVideo.setH(height); } } @@ -443,10 +579,11 @@ } } + 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++) { + 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])); @@ -473,17 +610,21 @@ imgInfo0.setType(ImgEnum.goods); SimpleGoods simpleGoods = new SimpleGoods(); + simpleGoods.setState(goodsDetailVO.getState()); simpleGoods.setGoodsId(goodsDetailVO.getGoodsId()); simpleGoods.setGoodsType(goodsDetailVO.getGoodsType()); - simpleGoods.setPrice(goodsDetailVO.getCouponPrice()); CouponInfoVO couponInfo = goodsDetailVO.getCouponInfo(); if (couponInfo == null) { - simpleGoods.setState(1); + simpleGoods.setPrice(goodsDetailVO.getZkPrice()); } else { + simpleGoods.setPrice(goodsDetailVO.getCouponPrice()); simpleGoods.setAmount(couponInfo.getAmount()); - simpleGoods.setState(0); } imgInfo0.setGoods(simpleGoods); + imgInfo0.setGoodsVO(goodsDetailVO); + + listImg.add(imgInfo0); + totalImg++; } } } @@ -526,6 +667,19 @@ } } + 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); @@ -541,7 +695,7 @@ } @Override - public void saveGoodsCoupon(String pid, String tags, String content) throws GoodsEvaluateException, Exception { + public void saveGoodsCoupon(String pid, String content) throws GoodsEvaluateException, Exception { if (StringUtil.isNullOrEmpty(pid)) { throw new GoodsEvaluateException(1, "璇蜂繚瀛樼涓�閮ㄥ垎淇℃伅"); } @@ -554,15 +708,15 @@ CommentInfo currencyCoupon = null; List<CommentInfo> oldComments = resultObj.getComments(); if (oldComments != null) { - for (CommentInfo info: oldComments) { - if(CommentInfoEnum.goodsCoupon == info.getType()) { + for (CommentInfo info : oldComments) { + if (CommentInfoEnum.goodsCoupon == info.getTypeEnum()) { goodsCoupon = info; - } else if (CommentInfoEnum.currencyCoupon == info.getType()) { + } else if (CommentInfoEnum.currencyCoupon == info.getTypeEnum()) { currencyCoupon = info; } } } - + List<CommentInfo> comments = new ArrayList<>(); if (!StringUtil.isNullOrEmpty(content)) { CommentInfo commentInfo = new CommentInfo(); @@ -572,24 +726,60 @@ commentInfo.setId(UUID.randomUUID().toString().replace("-", "")); } commentInfo.setContent(content); - commentInfo.setType(CommentInfoEnum.goodsCoupon); - comments.add(currencyCoupon); + commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc()); + commentInfo.setTypeEnum(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)) { 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) ) { + throw new GoodsEvaluateException(1, "璇勮璇拰閾炬帴涓嶈兘鍚屾椂涓虹┖"); + } + String endTime = commentInfo.getEndTime(); + if (!StringUtil.isNullOrEmpty(endTime)) { + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + sdf.parse(endTime); + } catch (Exception e) { + throw new GoodsEvaluateException(1, "璇峰~鍐欐纭殑鏃堕棿鏍煎紡锛�2020-03-05"); + } + } else { + throw new GoodsEvaluateException(1, "璇峰~鍐欏埜鎴鏃堕棿"); + } + + if(!StringUtil.isNullOrEmpty(content)) { + try { + convertLinkManager.convertLinkFromText(content, 1L, true); + } catch (Exception e) { + throw new GoodsEvaluateException(1, "杞摼澶辫触"); + } + } + GoodsEvaluate resultObj = goodsEvaluateDao.getById(pid); if (resultObj == null) throw new GoodsEvaluateException(1, "绗竴閮ㄥ垎淇℃伅缂哄け"); @@ -598,27 +788,35 @@ CommentInfo currencyCoupon = null; List<CommentInfo> oldComments = resultObj.getComments(); if (oldComments != null) { - for (CommentInfo info: oldComments) { - if(CommentInfoEnum.goodsCoupon == info.getType()) { + for (CommentInfo info : oldComments) { + if (CommentInfoEnum.goodsCoupon == info.getTypeEnum()) { goodsCoupon = info; - } else if (CommentInfoEnum.currencyCoupon == info.getType()) { + } else if (CommentInfoEnum.currencyCoupon == info.getTypeEnum()) { 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); + // 鍒哥被鍨� + + String tags = commentInfo.getTags(); + if (StringUtil.isNullOrEmpty(tags)) { + commentInfo.setType(CommentInfoEnum.currencyCoupon.getDesc()); + } else { + commentInfo.setType(tags); + } + commentInfo.setTypeEnum(CommentInfoEnum.currencyCoupon); // 鏍囩淇℃伅 List<ClientTextStyleVO> tagList = new ArrayList<>(); @@ -637,10 +835,10 @@ tagList.add(styleVO); } commentInfo.setTagList(tagList); - + comments.add(commentInfo); } - + resultObj.setComments(comments); goodsEvaluateDao.save(resultObj); @@ -674,11 +872,20 @@ } } + 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; } @@ -686,6 +893,10 @@ 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; } @@ -699,14 +910,19 @@ } 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); imgVideo.setUrlHD(videoPic); imgVideo.setVideoUrl(imgInfo.getVideoUrl()); imgVideo.setType(ImgEnum.video); + } + if (width > 0) { + imgVideo.setW(width); + imgVideo.setH(height); + } else { + imgVideo.setW(imgVideo.getW()); + imgVideo.setH(imgVideo.getH()); } listImg.add(imgVideo); } @@ -719,8 +935,6 @@ } else { imgactivity = new ImgInfo(); imgactivity.setId(UUID.randomUUID().toString().replace("-", "")); - imgactivity.setW(1); - imgactivity.setH(1); imgactivity.setLarge(true); imgactivity.setPid(pid); imgactivity.setUrl(activityPic); @@ -728,15 +942,23 @@ 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 { + public void saveSuCai(String pid, String videoUrl, String picUrls, MultipartHttpServletRequest fileRequest) + throws GoodsEvaluateException, Exception { if (StringUtil.isNullOrEmpty(pid)) { throw new GoodsEvaluateException(1, "璇蜂繚瀛樼涓�閮ㄥ垎淇℃伅"); } @@ -747,9 +969,11 @@ // 鍘熷皝瑙嗛闈㈠浘 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) { @@ -758,14 +982,18 @@ 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"); @@ -773,6 +1001,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) { @@ -785,8 +1017,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); @@ -794,7 +1024,11 @@ imgVideo.setVideoUrl(videoUrl); imgVideo.setType(ImgEnum.video); } + imgVideo.setW(width); + imgVideo.setH(height); } + + activityFile = fileRequest.getFile("activityFile"); } List<ImgInfo> listImg = new ArrayList<ImgInfo>(); @@ -803,6 +1037,7 @@ if (imgVideo != null && StringUtil.isNullOrEmpty(imgVideo.getUrl())) { throw new GoodsEvaluateException(1, "瑙嗛灏侀潰鍥句笉鑳戒负绌�"); } + imgVideo.setVideoUrl(videoUrl); listImg.add(imgVideo); } else { @@ -813,40 +1048,66 @@ } } + 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); + } + // 缂栬緫鍥剧墖 - List<String> listpic = null; 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); + + 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")) { - listpic.add(picLink); + if (listOldImgInfo != null) { + for (ImgInfo imgInfo : listOldImgInfo) { + String url = imgInfo.getUrl(); + if (picLink.equals(url)) { + listImg.add(imgInfo); + break; + } + } + } } } - } - } - - 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)); - imgInfo0.setType(ImgEnum.img); - listImg.add(imgInfo0); } } @@ -854,17 +1115,17 @@ for (int j = 0; j < listOld.size(); j++) { boolean del = true; String oldPic = listOld.get(j); - for (ImgInfo imgInfo: listImg) { + 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); @@ -877,7 +1138,7 @@ } } } - + @Override public void deleteBatchByPrimaryKey(List<String> list) { if (list == null || list.size() == 0) { @@ -949,7 +1210,7 @@ goodsEvaluate.setComments(comments); goodsEvaluateDao.save(goodsEvaluate); } - + @Override public void release(String id) throws GoodsEvaluateException { GoodsEvaluate goodsEvaluate = goodsEvaluateDao.getById(id); @@ -959,7 +1220,6 @@ goodsEvaluate.setState(1); goodsEvaluateDao.save(goodsEvaluate); } - @Override public void deleteComment(String pid, List<String> list) throws GoodsEvaluateException { @@ -1039,18 +1299,104 @@ public long countValid() { return goodsEvaluateDao.countValid(1); } - + @Override @Cacheable(value = "dynamicCache", key = "'queryMaterialsCache-'+#start+'-'+#type") - public List<GoodsEvaluate> queryMaterialsCache(int start, int count, int type) { + public List<GoodsEvaluate> queryMaterialsCache(int start, int count, int type) throws Exception { List<GoodsEvaluate> list = goodsEvaluateDao.queryValid(start, count, type); + + List<GoodsEvaluate> listOBJ = list; // 鏇存柊鍟嗗搧淇℃伅 executor.execute(new Runnable() { @Override public void run() { - updateGoodInfo(list); + updateGoodInfo(listOBJ); } }); + + 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; } @@ -1072,6 +1418,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(); @@ -1091,9 +1439,36 @@ } } + EvaluateEnum type = goodsEvaluate.getType(); + if (type != null && type == EvaluateEnum.activity) { + List<CommentInfo> comments = goodsEvaluate.getComments(); + if (comments != null) { + for (CommentInfo commentInfo: comments) { + CommentInfoEnum commentInfoEnum = commentInfo.getTypeEnum(); + 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); // 娲诲姩杩囨湡 + } + } + } + + } + } + } + GoodsDetailVO goods = goodsEvaluate.getGoods(); if (goods != null) { GoodsDetailVO goodsNew = getGoodsNewInfo(goods.getGoodsId(), goods.getGoodsType(), paramsDTO); + if (goodsNew != null) { + goodsEvaluate.setGoods(goodsNew); + } else { + goodsEvaluate.setState(0); // 宸插晢鍝佷笅鏋� + goods.setState(1); + goodsEvaluate.setGoods(goods); + } } // 鏇存柊鍟嗗搧淇℃伅 List<ImgInfo> imgList = goodsEvaluate.getImgList(); @@ -1101,6 +1476,39 @@ 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()); + simpleGoods.setState(0); + CouponInfoVO couponInfo = goodsDetailVO.getCouponInfo(); + if (couponInfo == null) { + simpleGoods.setPrice(goodsDetailVO.getZkPrice()); + } else { + simpleGoods.setPrice(goodsDetailVO.getCouponPrice()); + simpleGoods.setAmount(couponInfo.getAmount()); + } + imgInfo.setGoods(simpleGoods); + imgInfo.setGoodsVO(goodsDetailVO); + } else { + simpleGoods.setState(1); + imgInfo.setGoods(simpleGoods); + GoodsDetailVO goodsVO = imgInfo.getGoodsVO(); + if (goodsVO != null) { + goodsVO.setState(1); + imgInfo.setGoodsVO(goodsVO); + } + } + } + + goodsEvaluate.setUpdateTime(new Date()); + goodsEvaluateDao.save(goodsEvaluate); } } catch (Exception e) { LogHelper.errorDetailInfo(e); @@ -1124,4 +1532,95 @@ 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.plusDayDate(3,new Date())); + + 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()); + simpleGoods.setState(goodsVO.getState()); + CouponInfoVO couponInfo = goodsVO.getCouponInfo(); + if (couponInfo == null) { + simpleGoods.setPrice(goodsVO.getZkPrice()); + } 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); + + } + imgList.add(imgInfo); + } + goodsEvaluate.setImgList(imgList); + goodsEvaluateDao.save(goodsEvaluate); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + } -- Gitblit v1.8.0