yj
2020-03-04 58ee87fd64efdb75d16e396c3d952d3522c3a747
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java
@@ -20,6 +20,7 @@
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.yeshi.fanli.dao.dynamic.GoodsEvaluateDao;
@@ -49,6 +50,7 @@
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;
@@ -94,6 +96,9 @@
   @Resource
   private ShareGoodsService shareGoodsService;
   
   @Resource
   private ConvertLinkManager convertLinkManager;
   
   @Override
@@ -107,7 +112,7 @@
      if (StringUtil.isNullOrEmpty(tilte)) {
         throw new GoodsEvaluateException(1, "推荐语不能为空");
      }
      try {
         ActivityUser activityUser = activityUserService.getActivityUserByNickName(record.getUser(), file);
         if (activityUser == null)
@@ -138,6 +143,7 @@
      if (record.getStartTime() == null)
         record.setStartTime(new Date());
      record.setPublishTime(record.getStartTime());
      String id = record.getId();
@@ -343,17 +349,15 @@
            if (picNum - 1 == i) {
               imgInfo0.setType(ImgEnum.goods);
               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.setPrice(goodsDetailVO.getZkPrice());
                  simpleGoods.setState(1);
               } else {
                  simpleGoods.setPrice(goodsDetailVO.getCouponPrice());
                  simpleGoods.setAmount(couponInfo.getAmount());
                  simpleGoods.setState(0);
               }
               imgInfo0.setGoods(simpleGoods);
               imgInfo0.setGoodsVO(goodsDetailVO);
@@ -404,22 +408,27 @@
            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);
         }
      }
      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()));
            commentText = template.replace("[淘口令]", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken()));
         } else if (goodsType == Constant.SOURCE_TYPE_JD) {
            String couponUrl = null;
            JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(jdGoods);
@@ -601,18 +610,19 @@
               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++;
            }
@@ -734,7 +744,42 @@
      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, "第一部分信息缺失");
@@ -1272,11 +1317,14 @@
      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) {
            Date now = new Date();
            EvaluateEnum typeEnum = goodsEvaluate.getType();
            List<CommentInfo> commentNew = new ArrayList<>();
            for (CommentInfo commentInfo: comments) {
               String typeCoupon = commentInfo.getType();
               if (StringUtil.isNullOrEmpty(typeCoupon)) {
@@ -1291,31 +1339,60 @@
                  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)) {
                  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                  Date endDay = sdf.parse(endTime);
                  if (endDay.getTime() <= now.getTime()) {
                     continue;
                  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);
                        }
                     }
                  }
                  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);
               }
            }
            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);
                        }
                     }
                   }
                }
            }
         }
      }
@@ -1341,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();
@@ -1360,11 +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)
               if (goodsNew != null) {
                  goodsEvaluate.setGoods(goodsNew);
               } else {
                  goodsEvaluate.setState(0); // 已商品下架
                  goods.setState(1);
                  goodsEvaluate.setGoods(goods);
               }
            }
            // 更新商品信息
            List<ImgInfo> imgList = goodsEvaluate.getImgList();
@@ -1382,17 +1486,24 @@
                     paramsDTO);
               if (goodsDetailVO != null) {
                  simpleGoods.setPrice(goodsDetailVO.getCouponPrice());
                  simpleGoods.setState(0);
                  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);
               } else {
                  simpleGoods.setState(1);
                  imgInfo.setGoods(simpleGoods);
                  GoodsDetailVO goodsVO = imgInfo.getGoodsVO();
                  if (goodsVO != null) {
                     goodsVO.setState(1);
                     imgInfo.setGoodsVO(goodsVO);
                  }
               }
            }
@@ -1439,7 +1550,7 @@
         goodsEvaluate.setUpdateTime(new Date());
         goodsEvaluate.setWeight(0.0);
         goodsEvaluate.setStartTime(new Date());
         goodsEvaluate.setEndTime(DateUtil.plusYears(new Date(), 100));
         goodsEvaluate.setEndTime(DateUtil.plusDayDate(3,new Date()));
         List<ClientTextStyleVO> titles = info.getTitle();
         if (titles != null) {
@@ -1467,43 +1578,41 @@
               SimpleGoods simpleGoods = new SimpleGoods();
               simpleGoods.setGoodsId(goodsVO.getGoodsId());
               simpleGoods.setGoodsType(goodsVO.getGoodsType());
               simpleGoods.setState(goodsVO.getState());
               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());
                  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);
               
               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);
            }
            imgList.add(imgInfo);
         }