From 8ebf78f9d9a2663f53f09346abdd14c5964fdfeb Mon Sep 17 00:00:00 2001 From: yj <Administrator@192> Date: 星期二, 03 三月 2020 19:11:00 +0800 Subject: [PATCH] 发圈修改 --- fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java | 274 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 241 insertions(+), 33 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 a00ead7..7ca7425 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 @@ -2,11 +2,9 @@ import java.awt.image.BufferedImage; import java.io.InputStream; -import java.io.PrintWriter; -import java.lang.reflect.Type; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Calendar; import java.util.Collections; import java.util.Comparator; import java.util.Date; @@ -25,22 +23,14 @@ import org.yeshi.utils.JsonUtil; import org.yeshi.utils.tencentcloud.COSManager; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonElement; -import com.google.gson.JsonPrimitive; -import com.google.gson.JsonSerializationContext; -import com.google.gson.JsonSerializer; import com.yeshi.fanli.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.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.DynamicInfo; import com.yeshi.fanli.entity.dynamic.GoodsEvaluate; import com.yeshi.fanli.entity.dynamic.GoodsEvaluate.EvaluateEnum; import com.yeshi.fanli.entity.dynamic.GoodsPicture; @@ -48,14 +38,19 @@ 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; @@ -63,11 +58,13 @@ 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; - -import net.sf.json.JSONObject; @Service public class GoodsEvaluateServiceImpl implements GoodsEvaluateService { @@ -92,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 { @@ -104,7 +112,7 @@ if (StringUtil.isNullOrEmpty(tilte)) { throw new GoodsEvaluateException(1, "鎺ㄨ崘璇笉鑳戒负绌�"); } - + try { ActivityUser activityUser = activityUserService.getActivityUserByNickName(record.getUser(), file); if (activityUser == null) @@ -205,17 +213,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()); } } } @@ -298,8 +307,28 @@ picNum = 1; } - GoodsDetailVO goodsDetailVO = getGoodsDetailVO(goodsId, goodsType); - ; + 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, "璇ュ晢鍝佷俊鎭笉瀛樺湪"); } @@ -371,6 +400,65 @@ 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 = true; + } else { + addComment = false; + } + continue; + } + commentsNew.add(commentInfo); + } + } + + 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("[鍙d护]", 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); // 鍒犻櫎鍥剧墖 @@ -602,7 +690,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, "璇蜂繚瀛樼涓�閮ㄥ垎淇℃伅"); } @@ -616,9 +704,9 @@ List<CommentInfo> oldComments = resultObj.getComments(); if (oldComments != null) { for (CommentInfo info : oldComments) { - if (CommentInfoEnum.goodsCoupon == info.getType()) { + if (CommentInfoEnum.goodsCoupon == info.getTypeEnum()) { goodsCoupon = info; - } else if (CommentInfoEnum.currencyCoupon == info.getType()) { + } else if (CommentInfoEnum.currencyCoupon == info.getTypeEnum()) { currencyCoupon = info; } } @@ -633,7 +721,8 @@ commentInfo.setId(UUID.randomUUID().toString().replace("-", "")); } commentInfo.setContent(content); - commentInfo.setType(CommentInfoEnum.goodsCoupon); + commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc()); + commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon); comments.add(commentInfo); } @@ -650,7 +739,39 @@ 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"); + } + } + + 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, "绗竴閮ㄥ垎淇℃伅缂哄け"); @@ -660,9 +781,9 @@ List<CommentInfo> oldComments = resultObj.getComments(); if (oldComments != null) { for (CommentInfo info : oldComments) { - if (CommentInfoEnum.goodsCoupon == info.getType()) { + if (CommentInfoEnum.goodsCoupon == info.getTypeEnum()) { goodsCoupon = info; - } else if (CommentInfoEnum.currencyCoupon == info.getType()) { + } else if (CommentInfoEnum.currencyCoupon == info.getTypeEnum()) { currencyCoupon = info; } } @@ -679,8 +800,16 @@ } 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<>(); String couponSource = commentInfo.getCouponSource(); @@ -1165,15 +1294,69 @@ @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<>(); + } + + for (GoodsEvaluate goodsEvaluate: list) { + List<CommentInfo> comments = goodsEvaluate.getComments(); + if (comments != null) { + Date now = new Date(); + 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("閫氱敤浼樻儬鍒�"); + } + + String coupon = commentInfo.getCoupon(); + String endTime = commentInfo.getEndTime(); + if (!StringUtil.isNullOrEmpty(coupon) && !StringUtil.isNullOrEmpty(endTime)) { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date endDay = sdf.parse(endTime); + if (endDay.getTime() <= now.getTime()) { + continue; + } + + int daysBetween = DateUtil.daysBetween(endDay, now); + if (daysBetween <= 0) { + continue; + } + + ClientTextStyleVO styleVO = new ClientTextStyleVO(); + styleVO.setColor("#E5005C"); + styleVO.setContent(daysBetween + "澶╁悗杩囨湡"); + styleVO.setContent(coupon); + + List<ClientTextStyleVO> tagList = commentInfo.getTagList(); + tagList.add(styleVO); + + commentInfo.setTagList(tagList); + } + } + } + } + return list; } @@ -1333,6 +1516,31 @@ } imgInfo.setGoods(simpleGoods); goodsEvaluate.setGoods(goodsVO); + + + TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(1L, goodsVO.getGoodsId(), null); + String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey()); + String commentText = template.replace("[鍙d护]", 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); } imgList.add(imgInfo); } -- Gitblit v1.8.0