yujian
2020-07-01 ca0e816fe57482b8f43f22f7a0b6fe7c57a53f42
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java
@@ -7,6 +7,7 @@
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
@@ -51,6 +52,7 @@
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.share.ShareGoodsException;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.activity.ActivityUserService;
@@ -67,6 +69,7 @@
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.cache.JDGoodsCacheUtil;
import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil;
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
@@ -1433,6 +1436,13 @@
   
   
   @Override
   public List<GoodsEvaluate> queryValidZeroPoint(int start, int count) {
      return goodsEvaluateDao.queryValidZeroPoint(start, count);
   }
   @Override
   public void saveComment(String pid, CommentInfo commentInfo) throws GoodsEvaluateException {
      GoodsEvaluate goodsEvaluate = goodsEvaluateDao.getById(pid);
      if (goodsEvaluate == null) {
@@ -2009,6 +2019,7 @@
         commentInfo.setContent(comment);
         commentInfo.setType("");
      } else {
         goodsBrief.setCouponLink(null);
         String token = shareGoodsService.createTaoBaoToken(Constant.LINK_TOKEN_VERIFY_UID, goodsBrief);
         String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey());
         String commentText = template.replace("[淘口令]", TaoBaoUtil.filterTaoToken(token));
@@ -2063,34 +2074,19 @@
      goodsEvaluateDao.save(goodsEvaluate);
   }
   
   @Override
   public void addGoodsEvaluate2(String goodsId, List<String> imgs, ActivityUser user, String title, String comment) throws GoodsEvaluateException {
      if (goodsId == null || user == null || StringUtil.isNullOrEmpty(title)) {
   public int addGoodsEvaluate(TaoBaoGoodsBrief goodsBrief, List<String> imgs, ActivityUser user, String title) throws GoodsEvaluateException {
      if (goodsBrief == null || user == null || StringUtil.isNullOrEmpty(title)) {
         throw new GoodsEvaluateException(1, "相关参数不能为空");
      }
      Date limitDate = DateUtil.reduceDay(new Date(), 7);
      
      List<GoodsEvaluate> evaluateList = goodsEvaluateDao.queryExistLimitTime(Constant.SOURCE_TYPE_TAOBAO, goodsId, limitDate);
      Long goodsId = goodsBrief.getAuctionId();
      List<GoodsEvaluate> evaluateList = goodsEvaluateDao.queryExistLimitTime(Constant.SOURCE_TYPE_TAOBAO, goodsId + "", limitDate);
      if (evaluateList != null && evaluateList.size() > 0)
         throw new GoodsEvaluateException(1, "该商品已存在");
      TaoBaoGoodsBrief goodsBrief = null;
      try {
         goodsBrief = redisManager.getTaoBaoGoodsBrief(Long.parseLong(goodsId));
      } catch (TaobaoGoodsDownException e) {
         throw new GoodsEvaluateException(1, "商品已下架");
      }
      if (goodsBrief == null) {
         throw new GoodsEvaluateException(1, "未找到商品信息");
      }
      BigDecimal couponAmount = goodsBrief.getCouponAmount();
      if (couponAmount == null || couponAmount.compareTo(new BigDecimal(0)) < 1) {
         throw new GoodsEvaluateException(1, "该商品无券");
      }
      if (imgs == null) {
         imgs = new ArrayList<>();
@@ -2137,27 +2133,33 @@
         i++;
      }
      // 生成口令
      String token = null;
      try {
         TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(Constant.LINK_TOKEN_VERIFY_UID, goodsBrief.getAuctionId(), "1");
         token = taoBaoLink.getTaoToken();
      } catch (ShareGoodsException e) {
         e.printStackTrace();
         throw new GoodsEvaluateException(1, "转链失败");
      }
      String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey());
      String commentText = template.replace("[淘口令]", TaoBaoUtil.filterTaoToken(token));
      if (!goodsVO.isHasCoupon()) {
         commentText = commentText.replace("领券抢购", "抢购");
         commentText = commentText.replace("【券后价】[券后价]元", "");
         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.setNeedSpin(true);
      commentInfo.setId(UUID.randomUUID().toString().replace("-", ""));
      commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon);
      if (!StringUtil.isNullOrEmpty(comment)) {
         commentInfo.setContent(comment);
         commentInfo.setType("");
      } else {
         String token = shareGoodsService.createTaoBaoToken(Constant.LINK_TOKEN_VERIFY_UID, goodsBrief);
         String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey());
         String commentText = template.replace("[淘口令]", TaoBaoUtil.filterTaoToken(token));
         if (!goodsVO.isHasCoupon()) {
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】[券后价]元", "");
            commentText = commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n",
                  "\r\n");
         }
         commentInfo.setContent(commentText);
         commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc());
      }
      commentInfo.setContent(commentText);
      commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc());
      List<CommentInfo> commentsNew = new ArrayList<>();
      commentsNew.add(commentInfo);
@@ -2175,19 +2177,48 @@
            lineNum = 3;
         }
      }
      int result = 0;
      int zeroPoint = 0;
      // ★深夜大福利:先抢券,0点准时下单★
      // 含这种文本的定于每晚10点在动态-发圈 集中发,每晚10点在群发单中只发一条。
      Date startTime = new Date();
      if (!StringUtil.isNullOrEmpty(title)) {
         String value = configService.get(ConfigKeyEnum.evaluateZeroKey.getKey());
         if (!StringUtil.isNullOrEmpty(value)) {
            List<String> asList = Arrays.asList(value.split(","));
            if (asList != null && asList.size() > 0) {
               boolean zero = false;
               for (String zerokey: asList) {
                  if(title.contains(zerokey)) {
                     zero = true;
                     break;
                  }
               }
               if (zero) {
                  result = 1;
                  zeroPoint = 1;
                  startTime = TimeUtil.parseYYYYMMDD_HHMM(TimeUtil.getGernalTime(startTime) + " 22:00");
               }
            }
         }
      }
      GoodsEvaluate goodsEvaluate = new GoodsEvaluate();
      goodsEvaluate.setId(UUID.randomUUID().toString().replace("-", ""));
      goodsEvaluate.setUser(user);
      goodsEvaluate.setTitle(getDescNew(title));
      goodsEvaluate.setState(1);
      goodsEvaluate.setZeroPoint(zeroPoint);
      goodsEvaluate.setDynamicType(1);
      goodsEvaluate.setType(EvaluateEnum.single);
      goodsEvaluate.setShareNum((int) (Math.random() * 5000) + 1000);
      goodsEvaluate.setShareNumReal(0);
      goodsEvaluate.setWeight(0.0);
      goodsEvaluate.setStartTime(new Date());
      goodsEvaluate.setEndTime(DateUtil.plusDayDate(3, new Date()));
      goodsEvaluate.setStartTime(startTime);
      goodsEvaluate.setEndTime(DateUtil.plusDayDate(3, startTime));
      goodsEvaluate.setPublishTime(new Date());
      goodsEvaluate.setCreateTime(new Date());
      goodsEvaluate.setUpdateTime(new Date());
@@ -2196,6 +2227,10 @@
      goodsEvaluate.setImgList(imgList);
      goodsEvaluate.setComments(commentsNew);
      goodsEvaluateDao.save(goodsEvaluate);
      return result;
   }
   
   @Override