yj
2020-03-05 2e9aa4267b4e6df56ab3166d72ab9edf87322ef7
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java
@@ -43,6 +43,7 @@
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.goods.ConvertLinkExceptionException;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.activity.ActivityUserService;
@@ -482,6 +483,42 @@
      }
   }
   private String createTokenAndLink(GoodsDetailVO goodsDetailVO) throws Exception {
      String commentText = "";
      if (goodsDetailVO.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
         TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(1L, goodsDetailVO.getGoodsId(), "0");
         String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey());
         commentText = template.replace("[淘口令]", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken()));
      } else if (goodsDetailVO.getGoodsType()  == Constant.SOURCE_TYPE_JD) {
         String couponUrl = null;
         JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsDetailVO.getGoodsId());
         JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(jdGoods);
         if (couponInfo != null) {
            couponUrl = couponInfo.getLink();
         }
         String materialId = "https://item.jd.com/" + goodsDetailVO.getGoodsId() + ".html";
         String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "","1");
         String template = configService.get(ConfigKeyEnum.quickShareJDCommentText.getKey());
         commentText = template.replace("[链接]", jumpLink);
      } else if (goodsDetailVO.getGoodsType()  == Constant.SOURCE_TYPE_PDD) {
         String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goodsDetailVO.getGoodsId(), PinDuoDuoApiUtil.PID_SHARE + "", "1");
         String template = configService.get(ConfigKeyEnum.quickSharePDDCommentText.getKey());
         commentText = template.replace("[链接]", jumpLink);
      }
      commentText = commentText.replace("[原价]", goodsDetailVO.getZkPrice().toString());
      if (!goodsDetailVO.isHasCoupon()) {
         commentText = commentText.replace("领券抢购", "抢购");
         commentText = commentText.replace("【券后价】[券后价]元", "");
      } else {
         commentText = commentText.replace("[券后价]", goodsDetailVO.getCouponPrice().toString());
      }
      return commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
   }
   public GoodsDetailVO getGoodsDetailVO(Long goodsId, Integer goodsType) throws GoodsEvaluateException {
      GoodsDetailVO goodsDetail = null;
      BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
@@ -706,6 +743,68 @@
      }
   }
   @Override
   public void saveGoodsComment(String id, int kind, List<CommentInfo> comments) throws GoodsEvaluateException, Exception {
      if (comments == null || comments.size() == 0 ) {
         throw new GoodsEvaluateException(1, "内容不能为空");
      }
      GoodsEvaluate resultObj = goodsEvaluateDao.getById(id);
      if (resultObj == null)
         throw new GoodsEvaluateException(1, "第一部分信息缺失");
      GoodsDetailVO goods = resultObj.getGoods();
      if(kind == 1 && goods == null) {
         throw new GoodsEvaluateException(1, "请先录入商品信息");
      }
      CommentInfo currencyCoupon = null;
      List<CommentInfo> oldComments = resultObj.getComments();
      if (oldComments != null) {
         for (int i =0;i < oldComments.size(); i ++) {
            CommentInfo info = oldComments.get(i);
            if (CommentInfoEnum.currencyCoupon == info.getTypeEnum()) {
               currencyCoupon = info;
               continue;
            }
         }
      }
      List<CommentInfo> newList = new ArrayList<>();
      for (int i =0;i < comments.size(); i ++) {
         CommentInfo commentInfo =  comments.get(i);
         String content = commentInfo.getContent();
         if (StringUtil.isNullOrEmpty(content)) {
            if (i == 0 && kind == 1) {
               content = createTokenAndLink(goods);
            } else {
               continue;
            }
         } else if (i == 0 && kind == 1) {
            try {
               convertLinkManager.convertLinkFromText(content, Constant.LINK_TOKEN_VERIFY_UID, true);
            } catch (Exception e) {
               throw new GoodsEvaluateException(1, "不包含可转链的口令与链接");
            }
         }
         if (StringUtil.isNullOrEmpty(commentInfo.getId())) {
            commentInfo.setId(UUID.randomUUID().toString().replace("-", ""));
         }
         commentInfo.setType(commentInfo.getTags());
         commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon);
         newList.add(commentInfo);
      }
      if (currencyCoupon != null) {
         comments.add(currencyCoupon);
      }
      resultObj.setComments(comments);
      goodsEvaluateDao.save(resultObj);
   }
   @Override
   public void saveGoodsCoupon(String pid, String content) throws GoodsEvaluateException, Exception {
      if (StringUtil.isNullOrEmpty(pid)) {
@@ -747,7 +846,7 @@
            commentInfo.setId(UUID.randomUUID().toString().replace("-", ""));
         }
         commentInfo.setContent(content);
         commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc());
         commentInfo.setType(commentInfo.getTags());
         commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon);
         comments.add(commentInfo);
      }
@@ -761,7 +860,7 @@
   }
   @Override
   public void saveSingleGoodsCoupon(String pid, CommentInfo commentInfo) throws GoodsEvaluateException, Exception {
   public void saveCurrencyCoupon(String pid, int kind, CommentInfo commentInfo) throws GoodsEvaluateException, Exception {
      if (StringUtil.isNullOrEmpty(pid)) {
         throw new GoodsEvaluateException(1, "请保存第一部分信息");
      }
@@ -773,7 +872,6 @@
      if (StringUtil.isNullOrEmpty(commentInfo.getTagDesc())) {
         throw new GoodsEvaluateException(1, "描述语不能为空");
      }
      
      String tagUrl = commentInfo.getTagUrl();
      String content = commentInfo.getContent();
@@ -793,11 +891,15 @@
         throw new GoodsEvaluateException(1, "请填写券截止时间");
      }
      
      if(!StringUtil.isNullOrEmpty(content)) {
      if(!StringUtil.isNullOrEmpty(content) && kind != 3) { // 活动不验证
         try {
            convertLinkManager.convertLinkFromText(content, 1L, true);
            convertLinkManager.convertLinkFromText(content, Constant.LINK_TOKEN_VERIFY_UID, true);
         } catch (ConvertLinkExceptionException e) {
            if (ConvertLinkExceptionException.CODE_NONE != e.getCode()) {
               throw new GoodsEvaluateException(1, "包含不可转链的口令与链接");
            }
         } catch (Exception e) {
            throw new GoodsEvaluateException(1, "不包含可转链的口令与链接");
            throw new GoodsEvaluateException(1, "包含不可转链的口令与链接");
         }
      }
      
@@ -805,22 +907,17 @@
      if (resultObj == null)
         throw new GoodsEvaluateException(1, "第一部分信息缺失");
      CommentInfo goodsCoupon = null;
      List<CommentInfo> comments = new ArrayList<>();
      CommentInfo currencyCoupon = null;
      List<CommentInfo> oldComments = resultObj.getComments();
      if (oldComments != null) {
         for (CommentInfo info : oldComments) {
            if (CommentInfoEnum.goodsCoupon == info.getTypeEnum()) {
               goodsCoupon = info;
               comments.add(info);
            } else if (CommentInfoEnum.currencyCoupon == info.getTypeEnum()) {
               currencyCoupon = info;
            }
         }
      }
      List<CommentInfo> comments = new ArrayList<>();
      if (goodsCoupon != null) {
         comments.add(goodsCoupon);
      }
      if (commentInfo != null) {
@@ -831,12 +928,7 @@
         }
         // 券类型
         
         String tags = commentInfo.getTags();
         if (StringUtil.isNullOrEmpty(tags)) {
            commentInfo.setType(CommentInfoEnum.currencyCoupon.getDesc());
         } else {
            commentInfo.setType(tags);
         }
         commentInfo.setType(commentInfo.getTags());
         commentInfo.setTypeEnum(CommentInfoEnum.currencyCoupon);
         
         // 标签信息
@@ -861,7 +953,6 @@
      }
      resultObj.setComments(comments);
      goodsEvaluateDao.save(resultObj);
   }
@@ -1350,18 +1441,6 @@
            
            for (CommentInfo commentInfo: comments) {
               comment ++;
               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) {
@@ -1372,27 +1451,28 @@
                  }
               }
               
               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);
                     int daysBetween = DateUtil.daysBetween(now, endDay);
                     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);
                        
                        commentNew.add(commentInfo);
                        continue;
                     }
                  }
               }
               commentNew.add(commentInfo);
            }
            goodsEvaluate.setComments(commentNew);
            
@@ -1566,6 +1646,14 @@
   @Override
   public void addGoodsEvaluateByDynamicInfo(DynamicInfo info) {
      if (1 > 0) {
         return; // 暂不启用自动生成
      }
      if (info == null) {
         return;
      }
      try {
         GoodsEvaluate goodsEvaluate = new GoodsEvaluate();
         goodsEvaluate.setId(UUID.randomUUID().toString().replace("-", ""));