admin
2020-06-30 e40d1c22c7202aac843c66f9ee9cc000744f9e10
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) {
@@ -1957,6 +1967,7 @@
      // 白底图
      List<String> imgs = new ArrayList<>();
      imgs.addAll(goodsBrief.getImgList());
      // 商品VO
@@ -2008,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));
@@ -2062,6 +2074,165 @@
      goodsEvaluateDao.save(goodsEvaluate);
   }
   @Override
   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);
      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, "该商品已存在");
      if (imgs == null) {
         imgs = new ArrayList<>();
      }
      if (imgs.size() == 0) {
         imgs.addAll(goodsBrief.getImgList());
      }
      // 商品VO
      ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55");
      paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
      GoodsDetailVO goodsVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, paramsDTO);
      // 商品图片信息
      int i = 0;
      List<ImgInfo> imgList = new ArrayList<ImgInfo>();
      for (String img : imgs) {
         ImgInfo imgInfo = new ImgInfo();
         imgInfo.setH(1);
         imgInfo.setW(1);
         imgInfo.setLarge(false);
         imgInfo.setUrl(img);
         imgInfo.setUrlHD(img);
         if (i != 0) {
            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());
            }
            imgInfo.setGoods(simpleGoods);
            imgInfo.setGoodsVO(goodsVO);
         }
         imgList.add(imgInfo);
         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);
      commentInfo.setContent(commentText);
      commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc());
      List<CommentInfo> commentsNew = new ArrayList<>();
      commentsNew.add(commentInfo);
      // 一行显示多少个图片
      int lineNum = 0;
      if (imgList.size() > 0) {
         if (imgList.size() == 1) {
            lineNum = 1;
         } else if (imgList.size() == 3) {
            lineNum = 3;
         } else if (imgList.size() == 2 || imgList.size() == 4) {
            lineNum = 2;
         } else {
            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(startTime);
      goodsEvaluate.setEndTime(DateUtil.plusDayDate(3, startTime));
      goodsEvaluate.setPublishTime(new Date());
      goodsEvaluate.setCreateTime(new Date());
      goodsEvaluate.setUpdateTime(new Date());
      goodsEvaluate.setGoods(goodsVO);
      goodsEvaluate.setLineNum(lineNum);
      goodsEvaluate.setImgList(imgList);
      goodsEvaluate.setComments(commentsNew);
      goodsEvaluateDao.save(goodsEvaluate);
      return result;
   }
   @Override
   public void addGoodsEvaluateByDaTaoKe() {
      List<Long> listId = null;