yj
2020-03-13 2f2860b50f24e5e3598d223db03d43df61d95c97
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java
@@ -31,6 +31,7 @@
import com.yeshi.fanli.dto.jd.JDCouponInfo;
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
import com.yeshi.fanli.entity.bus.activity.ActivityUser;
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
import com.yeshi.fanli.entity.dynamic.CommentInfo;
import com.yeshi.fanli.entity.dynamic.CommentInfo.CommentInfoEnum;
import com.yeshi.fanli.entity.dynamic.DynamicInfo;
@@ -44,6 +45,7 @@
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.entity.taobao.dataoke.DaTaoKeDetailV2;
import com.yeshi.fanli.exception.dynamic.ActivityUserException;
import com.yeshi.fanli.exception.dynamic.GoodsEvaluateException;
import com.yeshi.fanli.exception.goods.ConvertLinkExceptionException;
@@ -54,10 +56,12 @@
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.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
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.FileUtil;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.cache.JDGoodsCacheUtil;
@@ -66,7 +70,10 @@
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.pinduoduo.PinDuoDuoUtil;
import com.yeshi.fanli.util.taobao.DaTaoKeUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
import com.yeshi.fanli.vo.goods.CouponInfoVO;
import com.yeshi.fanli.vo.goods.GoodsDetailVO;
import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
@@ -104,12 +111,16 @@
   @Resource
   private ConvertLinkManager convertLinkManager;
   @Resource
   private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
   @Override
   public String saveHead(MultipartFile file, GoodsEvaluate record) throws GoodsEvaluateException {
      Integer state = record.getState();
      if (state == null) {
         state = 0;
      }
      record.setState(state);
      String tilte = record.getTitle();
      if (StringUtil.isNullOrEmpty(tilte)) {
@@ -155,18 +166,21 @@
         record.setId(id);
         record.setShareNumReal(0);
         record.setCreateTime(new Date());
         record.setUpdateTime(new Date());
         goodsEvaluateDao.save(record);
      } else {
         GoodsEvaluate resultObj = goodsEvaluateDao.getById(id);
         if (resultObj == null)
            throw new GoodsEvaluateException(1, "修改内容已不存在");
         resultObj.setState(record.getState());
         resultObj.setUser(record.getUser());
         resultObj.setShareNum(record.getShareNum());
         resultObj.setWeight(record.getWeight());
         resultObj.setStartTime(record.getStartTime());
         resultObj.setEndTime(record.getEndTime());
         resultObj.setTitle(tilte);
         resultObj.setUpdateTime(new Date());
         goodsEvaluateDao.save(resultObj);
      }
      return id;
@@ -344,10 +358,8 @@
      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);
      ConfigParamsDTO params = hongBaoManageService.getShowComputeRate("android", "55");
      params.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
      if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
         try {
            TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(goodsId);
@@ -427,6 +439,8 @@
      if (totalImg > 0) {
         if (totalImg == 1) {
            lineNum = 1;
         } else if (totalImg == 3) {
            lineNum = 3;
         } else if (totalImg <= 4) {
            lineNum = 2;
         } else {
@@ -456,9 +470,8 @@
      }
      /*
       * // 无券不能自动 生成评论 CouponInfoVO couponInfo1 =
       * goodsDetailVO.getCouponInfo(); if (couponInfo1 == null) { addComment
       * = false; }
       * // 无券不能自动 生成评论 CouponInfoVO couponInfo1 = goodsDetailVO.getCouponInfo(); if
       * (couponInfo1 == null) { addComment = false; }
       */
      String commentText = "";
@@ -477,23 +490,29 @@
            String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl,
                  JDApiUtil.POSITION_SHARE + "", "1");
            String template = configService.get(ConfigKeyEnum.quickShareJDCommentText.getKey());
            if (jumpLink == null) {
               throw new GoodsEvaluateException(1, "该商品转链失败");
            }
            commentText = template.replace("[链接]", jumpLink);
         } else if (goodsType == Constant.SOURCE_TYPE_PDD) {
            String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goodsId, PinDuoDuoApiUtil.PID_SHARE + "", "1");
            if (jumpLink == null) {
               throw new GoodsEvaluateException(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");
//         commentText = commentText.replace("[原价]", MoneyBigDecimalUtil.getWithNoZera(goodsDetailVO.getZkPrice())+"");
//         if (!goodsDetailVO.isHasCoupon()) {
//            commentText = commentText.replace("领券抢购", "抢购");
//            commentText = commentText.replace("【券后价】[券后价]元", "");
//         } else {
//            commentText = commentText.replace("[券后价]",  MoneyBigDecimalUtil.getWithNoZera(goodsDetailVO.getCouponPrice())+"");
//         }
//
//         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("-", ""));
@@ -502,6 +521,7 @@
         commentsNew.add(commentInfo);
         resultObj.setComments(commentsNew);
      }
      resultObj.setUpdateTime(new Date());
      goodsEvaluateDao.save(resultObj);
      // 删除图片
@@ -512,7 +532,7 @@
            }
         }
      }
      return commentText;
   }
@@ -555,10 +575,8 @@
   public GoodsDetailVO getGoodsDetailVO(Long goodsId, Integer goodsType) throws GoodsEvaluateException {
      GoodsDetailVO goodsDetail = null;
      BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
      BigDecimal shareRate = hongBaoManageService.getShareRate();
      BigDecimal vipFanLiRate = hongBaoManageService.getVIPFanLiRate();
      ConfigParamsDTO params = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE, vipFanLiRate);
      ConfigParamsDTO params = hongBaoManageService.getShowComputeRate("android", "55");
      params.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
      if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
         try {
            TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(goodsId);
@@ -752,6 +770,8 @@
      if (totalImg > 0) {
         if (totalImg == 1) {
            lineNum = 1;
         } else if (totalImg == 3) {
            lineNum = 3;
         } else if (totalImg <= 4) {
            lineNum = 2;
         } else {
@@ -834,6 +854,7 @@
      }
      resultObj.setComments(comments);
      resultObj.setUpdateTime(new Date());
      goodsEvaluateDao.save(resultObj);
   }
@@ -1031,8 +1052,8 @@
            if (info == null)
               throw new GoodsEvaluateException(2, "视频图片上传失败");
            videoPic = info.getUrl();
            width=info.getW();
            height=info.getH();
            width = info.getW();
            height = info.getH();
         }
         MultipartFile activityfile = fileRequest.getFile("activityfile");
@@ -1096,13 +1117,15 @@
            imgactivity.setH(imgactivity.getH());
         }
         listImg.add(imgactivity);
         totalImg ++;
         totalImg++;
      }
      int lineNum = 0;
      if (totalImg > 0) {
         if (totalImg == 1) {
            lineNum = 1;
         } else if (totalImg == 3) {
            lineNum = 3;
         } else if (totalImg <= 4) {
            lineNum = 2;
         } else {
@@ -1241,7 +1264,7 @@
                     ImgInfo imgInfo0 = new ImgInfo();
                     imgInfo0.setId(UUID.randomUUID().toString().replace("-", ""));
                     imgInfo0.setLarge(true);
                     imgInfo0.setLarge(false);
                     imgInfo0.setPid(pid);
                     imgInfo0.setUrl(picLink);
                     imgInfo0.setUrlHD(picLink);
@@ -1249,7 +1272,7 @@
                     imgInfo0.setW(1);
                     imgInfo0.setH(1);
                     listImg.add(imgInfo0);
                     totalImg ++;
                     totalImg++;
                     continue;
                  }
               }
@@ -1260,7 +1283,7 @@
                        String url = imgInfo.getUrl();
                        if (picLink.equals(url)) {
                           listImg.add(imgInfo);
                           totalImg ++;
                           totalImg++;
                           break;
                        }
                     }
@@ -1284,11 +1307,13 @@
               listDel.add(listOld.get(j));
         }
      }
      int lineNum = 0;
      if (totalImg > 0) {
         if (totalImg == 1) {
            lineNum = 1;
         } else if (totalImg == 3) {
            lineNum = 3;
         } else if (totalImg <= 4) {
            lineNum = 2;
         } else {
@@ -1450,6 +1475,45 @@
      return goodsEvaluateDao.count(key, state, dynamicType);
   }
   @Override
   public void addRanDomShareCount() {
      // 发圈
      try {
         List<GoodsEvaluate> list = goodsEvaluateDao.queryValid(0, Integer.MAX_VALUE, 1);
         if (list != null) {
            for (GoodsEvaluate goodsEvaluate: list) {
               Integer shareNum = goodsEvaluate.getShareNum();
               if (shareNum == null) {
                  shareNum = 0;
               }
               goodsEvaluate.setShareNum(shareNum + (int) (Math.random() * 100) + 10);
               goodsEvaluateDao.save(goodsEvaluate);
            }
         }
      } catch (Exception e) {
         LogHelper.errorDetailInfo(e);
      }
      // 素材
      try {
         List<GoodsEvaluate> list = goodsEvaluateDao.queryValid(0, Integer.MAX_VALUE, 2);
         if (list != null) {
            for (GoodsEvaluate goodsEvaluate: list) {
               Integer shareNum = goodsEvaluate.getShareNum();
               if (shareNum == null) {
                  shareNum = 0;
               }
               goodsEvaluate.setShareNum(shareNum + (int) (Math.random() * 100) + 10);
               goodsEvaluateDao.save(goodsEvaluate);
            }
         }
      } catch (Exception e) {
         LogHelper.errorDetailInfo(e);
      }
   }
   @Override
   @Cacheable(value = "dynamicCache", key = "'queryValidEvaluateCache-'+#start")
   public List<GoodsEvaluate> queryValidEvaluateCache(int start, int count) {
@@ -1483,7 +1547,6 @@
      List<GoodsEvaluate> listNew = new ArrayList<>();
      for (GoodsEvaluate goodsEvaluate : list) {
         GoodsEvaluate evaluateNew = new GoodsEvaluate();
         try {
            PropertyUtils.copyProperties(evaluateNew, goodsEvaluate);
@@ -1492,18 +1555,19 @@
            continue;
         }
         int comment = 0;
         List<CommentInfo> comments = evaluateNew.getComments();
         if (comments != null && comments.size() > 0) {
            EvaluateEnum typeEnum = evaluateNew.getType();
            List<CommentInfo> commentNew = new ArrayList<>();
            boolean singleCoupn = true;
            boolean currencyCoupon = true;
            for (CommentInfo commentInfo : comments) {
               if (StringUtil.isNullOrEmpty(commentInfo.getContent()) &&
                     StringUtil.isNullOrEmpty(commentInfo.getCoupon())) {
               if (StringUtil.isNullOrEmpty(commentInfo.getContent())
                     && StringUtil.isNullOrEmpty(commentInfo.getCoupon())) {
                  continue;
               }
               CommentInfo commentInfoNew = new CommentInfo();
               try {
                  PropertyUtils.copyProperties(commentInfoNew, commentInfo);
@@ -1511,8 +1575,26 @@
                  e.printStackTrace();
                  continue;
               }
               if (typeEnum != null && typeEnum == EvaluateEnum.single) {
                  GoodsDetailVO goods = evaluateNew.getGoods();
                  if (goods != null) {
                     String content = commentInfoNew.getContent();
                     if (!StringUtil.isNullOrEmpty(content)) {
                        content = content.replace("[原价]", MoneyBigDecimalUtil.getWithNoZera(goods.getZkPrice())+"");
                        if (goods.isHasCoupon()) {
                           content = content.replace("[券后价]",MoneyBigDecimalUtil.getWithNoZera(goods.getCouponPrice())+"");
                        } else {
                           singleCoupn = false;
                           content = content.replace("领券抢购", "抢购");
                           content = content.replace("【券后价】[券后价]元", "");
                        }
                        content = content.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
                        commentInfoNew.setContent(content);
                     }
                  }
               }
               
               comment++;
               CommentInfoEnum typeComment = commentInfoNew.getTypeEnum();
               if (typeComment != null && typeComment == CommentInfoEnum.goodsCoupon) {
                  GoodsDetailVO goods = evaluateNew.getGoods();
@@ -1529,30 +1611,39 @@
                  if (endDay.getTime() > now.getTime()) {
                     String daysBetween = DateUtil.dateDiff5(now, endDay);
                     if (!StringUtil.isNullOrEmpty(daysBetween)) {
                        List<ClientTextStyleVO> tagListNew = new ArrayList<>();
                        List<ClientTextStyleVO> tagList = commentInfoNew.getTagList();
                        if (tagList != null) {
                           tagListNew.addAll(tagList);
                        }
                        ClientTextStyleVO styleVO = new ClientTextStyleVO();
                        styleVO.setColor("#E5005C");
                        styleVO.setContent(daysBetween + "后过期");
                        List<ClientTextStyleVO> tagList = commentInfoNew.getTagList();
                        tagList.add(styleVO);
                        commentInfoNew.setTagList(tagList);
                        tagListNew.add(styleVO);
                        commentInfoNew.setTagList(tagListNew);
                        commentNew.add(commentInfoNew);
                        continue;
                     } else {
                        currencyCoupon = false;
                        continue;
                     }
                  } else {
                     currencyCoupon = false;
                     continue;
                  }
               }
               commentNew.add(commentInfo);
               commentNew.add(commentInfoNew);
            }
            evaluateNew.setComments(commentNew);
            if (typeEnum != null && typeEnum == EvaluateEnum.single) {
               if (comment > 0 && commentNew.size() == 0) { // 所有券评论下架
               if (!currencyCoupon && !singleCoupn) { // 所有券评论下架
                  GoodsDetailVO goods = evaluateNew.getGoods();
                  if (goods != null) {
                     goods.setState(1); // 评论不存在 下架
                     LogHelper.test("获取列表商品下架1");
                     evaluateNew.setRemarks("评论验证下架");
                  }
                  List<ImgInfo> imgList = evaluateNew.getImgList();
@@ -1561,7 +1652,7 @@
                        SimpleGoods simpleGoods = imgInfo.getGoods();
                        if (simpleGoods != null) {
                           simpleGoods.setState(1);
                           LogHelper.test("获取列表商品下架2");
                           simpleGoods.setRemarks("评论验证下架");
                        }
                     }
@@ -1605,11 +1696,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();
         ConfigParamsDTO paramsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE,
               vipFanLiRate);
         ConfigParamsDTO params = hongBaoManageService.getShowComputeRate("android", "55");
         params.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
         for (GoodsEvaluate goodsEvaluate : list) {
            // 是否2个小时之内已更新
            Date updateTime = goodsEvaluate.getUpdateTime();
@@ -1646,10 +1734,11 @@
            GoodsDetailVO goods = goodsEvaluate.getGoods();
            if (goods != null) {
               GoodsDetailVO goodsNew = getGoodsNewInfo(goods.getGoodsId(), goods.getGoodsType(), paramsDTO);
               GoodsDetailVO goodsNew = getGoodsNewInfo(goods.getGoodsId(), goods.getGoodsType(), params);
               if (goodsNew != null) {
                  goodsEvaluate.setGoods(goodsNew);
               } else {
                  goodsEvaluate.setRemarks("更新-位置找到商品信息");
                  goodsEvaluate.setState(0); // 已商品下架
                  goods.setState(1);
                  goodsEvaluate.setGoods(goods);
@@ -1668,7 +1757,7 @@
               }
               GoodsDetailVO goodsDetailVO = getGoodsNewInfo(simpleGoods.getGoodsId(), simpleGoods.getGoodsType(),
                     paramsDTO);
                     params);
               if (goodsDetailVO != null) {
                  simpleGoods.setPrice(goodsDetailVO.getCouponPrice());
                  simpleGoods.setState(0);
@@ -1682,6 +1771,7 @@
                  imgInfo.setGoods(simpleGoods);
                  imgInfo.setGoodsVO(goodsDetailVO);
               } else {
                  simpleGoods.setRemarks("更新-位置找到商品信息");
                  simpleGoods.setState(1);
                  imgInfo.setGoods(simpleGoods);
                  GoodsDetailVO goodsVO = imgInfo.getGoodsVO();
@@ -1691,7 +1781,7 @@
                  }
               }
            }
            goodsEvaluate.setImgList(imgList);
            goodsEvaluate.setUpdateTime(new Date());
            goodsEvaluateDao.save(goodsEvaluate);
         }
@@ -1790,7 +1880,9 @@
               }
               imgInfo.setGoods(simpleGoods);
               TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(1L, goodsVO.getGoodsId(), null);
               TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(1L, goodsVO.getGoodsId(), "0");
//               TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(Constant.LINK_TOKEN_VERIFY_UID, goodsVO.getGoodsId(), null);
               String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey());
               String commentText = template.replace("[淘口令]", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken()));
@@ -1826,4 +1918,417 @@
      }
   }
   @Override
   public void addGoodsEvaluateByDaTaoKe() {
      List<Long> listId = null;
      List<GoodsEvaluate> listExist = goodsEvaluateDao.querySingleExist();
      if (listExist != null && listExist.size() > 0) {
         listId = new ArrayList<Long>();
         for (GoodsEvaluate goodsEvaluate : listExist) {
            GoodsDetailVO goods = goodsEvaluate.getGoods();
            if (goods != null && goods.getGoodsType() == 1) {
               listId.add(goods.getGoodsId());
            }
         }
      }
      // 热销单品的分类
      List<GoodsClass> listClass = DaTaoKeUtil.goodsClasses;
      int ci = (int) (Math.random() * listClass.size());
      Long subId = listClass.get(ci).getId();
      List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Service.getGoodsNotInList(subId, listId, 1);
      if (list == null || list.size() == 0) {
         return;
      }
      for (int i = 0; i < list.size(); i++) {
         boolean cerateGoods = cerateGoods(list.get(i));
         if (cerateGoods) {
            break;
         }
      }
   }
   private boolean cerateGoods(DaTaoKeDetailV2 daTaoKe) {
      try {
         TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(daTaoKe.getGoodsId());
         if (goodsBrief == null) {
            return false;
         }
         BigDecimal couponAmount = goodsBrief.getCouponAmount();
         if (couponAmount == null || couponAmount.compareTo(new BigDecimal(0)) < 1) {
            return false;
         }
         ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate("android", "55");
         paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
         GoodsDetailVO goodsVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, paramsDTO);
         // 发布用户
         ActivityUser user = activityUserService.getRandomByDaTaoKeCid(daTaoKe.getCid());
         String desc = daTaoKe.getDesc().replace(",", ",");
         String[] split = desc.split(",");
         int max = 1;
         if (Math.random() > 0.5) {
            max = 2;
         }
         int e = 0;
         String emojis = "";
         String descNew = "";
         if (split.length > 0) {
            for (int i = 0; i < split.length; i++) {
               if (Math.random() > 0.5 && e < max) {
                  for (int j = 0; j < 10; j++) {
                     String emojisTemp = DaTaoKeUtil.getEvaluateEmojis();
                     if (!emojis.equals(emojisTemp)) {
                        emojis = emojisTemp;
                        break;
                     }
                  }
                  e++;
                  descNew += split[i] + emojis;
               } else {
                  descNew += split[i] + ",";
               }
            }
         } else {
            descNew = desc;
         }
         if (descNew.endsWith(",")) {
            descNew = descNew.substring(0, descNew.length() - 1);
         }
         GoodsEvaluate goodsEvaluate = new GoodsEvaluate();
         goodsEvaluate.setId(UUID.randomUUID().toString().replace("-", ""));
         goodsEvaluate.setUser(user);
         goodsEvaluate.setTitle(descNew);
         goodsEvaluate.setState(1);
         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.setPublishTime(new Date());
         goodsEvaluate.setCreateTime(new Date());
         goodsEvaluate.setUpdateTime(new Date());
         List<String> goodsimgs = goodsBrief.getImgList();
         List<String> imgs = new ArrayList<>();
         if (!StringUtil.isNullOrEmpty(goodsBrief.getPictUrlWhite())) {
            imgs.add(goodsBrief.getPictUrlWhite());
         }
         imgs.addAll(goodsimgs);
         int lineNum = 0;
         if (imgs.size() > 0) {
            if (imgs.size() == 1) {
               lineNum = 1;
            } else if (imgs.size() == 3) {
               lineNum = 3;
            } else if (imgs.size() <= 4) {
               lineNum = 2;
            } else {
               lineNum = 3;
            }
         }
         goodsEvaluate.setLineNum(lineNum);
         int i = 0;
         List<ImgInfo> imgList = new ArrayList<>();
         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);
               // TaoBaoLink taoBaoLink =
               // shareGoodsService.getTaoBaoLinkForShare(Constant.LINK_TOKEN_VERIFY_UID,
               // goodsVO.getGoodsId(), 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));
               commentText = commentText.replace("[原价]", MoneyBigDecimalUtil.getWithNoZera(goodsVO.getZkPrice())+"");
               if (!goodsVO.isHasCoupon()) {
                  commentText = commentText.replace("领券抢购", "抢购");
                  commentText = commentText.replace("【券后价】[券后价]元", "");
               } else {
                  commentText = commentText.replace("[券后价]", MoneyBigDecimalUtil.getWithNoZera(goodsVO.getCouponPrice())+"");
               }
               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());
               String text2 = "";
               String evaluateEmojis = configService.get(ConfigKeyEnum.evaluateEmojis.getKey());
               if (!StringUtil.isNullOrEmpty(evaluateEmojis)) {
                  text2 = evaluateEmojis + "\n";
               }
               String evaluateText = configService.get(ConfigKeyEnum.evaluateText.getKey());
               if (!StringUtil.isNullOrEmpty(evaluateText)) {
                  text2 += evaluateText;
               }
               String dtitle = daTaoKe.getDtitle();
               if (!StringUtil.isNullOrEmpty(dtitle)) {
                  text2 = text2 + dtitle +"\n";
               } else if (!StringUtil.isNullOrEmpty(evaluateText)) {
                  text2 += "\n";
               }
               text2 += "先领【"+ couponAmount +"元优惠券】下单";
               CommentInfo commentInfo2 = new CommentInfo();
               commentInfo2.setId(UUID.randomUUID().toString().replace("-", ""));
               commentInfo2.setContent(text2);
               commentInfo2.setTypeEnum(CommentInfoEnum.goodsCoupon);
               commentInfo2.setType("");
               List<CommentInfo> commentsNew = new ArrayList<>();
               commentsNew.add(commentInfo);
               commentsNew.add(commentInfo2);
               goodsEvaluate.setComments(commentsNew);
               goodsEvaluate.setGoods(goodsVO);
            }
            imgList.add(imgInfo);
            i++;
         }
         goodsEvaluate.setImgList(imgList);
         goodsEvaluateDao.save(goodsEvaluate);
      } catch (Exception e) {
         e.printStackTrace();
         LogHelper.errorDetailInfo(e);
         return false;
      }
      return true;
   }
   private String getDesc(String desc) {
      System.out.println(desc);
      String newDesc = "";
      int emoji = 0;
      String content = desc.replace(",", ",");
      while (content.length() > 0) {
         int length = 0;
         boolean end = true;
         for (int i = 0; i < content.length(); i++) {
            if (content.substring(0, i).length() >= 18) {
               length = i;
               end = false;
               break;
            }
         }
         if (end) {
            length = content.length();
         }
         String introduce = content.substring(0, length);
         System.out.println(introduce);
         if (verify(introduce)) {
            if (emoji >= 4) {
               introduce = introduce.replace(",", "\n"); // 需要换行
            } else {
               emoji++;
               introduce = introduce.replace(",", DaTaoKeUtil.getRandomCommonEmoji() + "\n"); // 需要换行
            }
         }
         // 随机替换emoji
         if (emoji <= 4 && Math.random() > 0.5) {
            introduce = introduce.replace(",", DaTaoKeUtil.getRandomCommonEmoji());
            emoji++;
         }
         newDesc += introduce;
         content = content.substring(length);
      }
      return newDesc;
   }
   private boolean verify(String content) {
      // 18个字符内(包含标点也算一个字符)有多个逗号,则不换行
      char d = ',';
      int count = 0;
      char chs[] = content.toCharArray();// 转换成char数组
      for (int i = 0; i < chs.length; i++) {
         if (d == chs[i]) {
            count++;
         }
      }
      if (count > 1) {
         return false;
      }
      // 书名号,大括号,小括号里面的内容不换行
      if (content.contains("[") && content.contains("]")) {
         return false;
      } else if (content.contains("【") && content.contains("】")) {
         return false;
      } else if (content.contains("{") && content.contains("}")) {
         return false;
      } else if (content.contains("(") && content.contains(")")) {
         return false;
      }
      int index = content.lastIndexOf(",");
      // (除开逗号以外的符号)感叹号/句号/问号前面有逗号,不换行
      if (content.contains("!") && index < content.lastIndexOf("!")) {
         return false;
      }
      if (content.contains("!") && index < content.lastIndexOf("!")) {
         return false;
      }
      if (content.contains("。") && index < content.lastIndexOf("。")) {
         return false;
      }
      if (content.contains("?") && index < content.lastIndexOf("?")) {
         return false;
      }
      if (content.contains("?") && index < content.lastIndexOf("?")) {
         return false;
      }
      if (content.contains(":")) {
         return false;
      }
      return true;
   }
   @Override
   public void updateTaoBaoGoods(TaoBaoGoodsBrief goods) {
      try {
         if (goods == null) {
            return;
         }
         List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_TAOBAO, goods.getAuctionId());
         if (queryExist == null || queryExist.size() == 0) {
            return;
         }
         ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate("android", "55");
         paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
         GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO);
         updateGoods(queryExist, goodsNew);
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
   @Override
   public void updateJDGoods(JDGoods jdGoods) {
      if (jdGoods == null) {
         return;
      }
      List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_JD, jdGoods.getSkuId());
      if (queryExist == null || queryExist.size() == 0) {
         return;
      }
      ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate("android", "55");
      paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
      GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertJDGoods(jdGoods, paramsDTO);
      updateGoods(queryExist, goodsNew);
   }
   @Override
   public void updatePDDGoods(PDDGoodsDetail pddGoods) {
      if (pddGoods == null) {
         return;
      }
      List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_PDD, pddGoods.getGoodsId());
      if (queryExist == null || queryExist.size() == 0) {
         return;
      }
      ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate("android", "55");
      paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
      GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertPDDGoods(pddGoods, paramsDTO);
      updateGoods(queryExist, goodsNew);
   }
   private void updateGoods(List<GoodsEvaluate> listExist, GoodsDetailVO goodsNew) {
      long goodsId = goodsNew.getGoodsId();
      int goodsType = goodsNew.getGoodsType();
      for (GoodsEvaluate goodsEvaluate: listExist) {
         GoodsDetailVO goodsDetailVO = goodsEvaluate.getGoods();
         if (goodsDetailVO != null && goodsDetailVO.getGoodsId() != null
            && goodsDetailVO.getGoodsId() == goodsId && goodsDetailVO.getGoodsType() == goodsType) {
            goodsEvaluate.setGoods(goodsNew);
         }
         // 更新商品信息
         List<ImgInfo> imgList = goodsEvaluate.getImgList();
         if (imgList == null || imgList.size() == 0) {
            continue;
         }
         for (ImgInfo imgInfo : imgList) {
            SimpleGoods simpleGoods = imgInfo.getGoods();
            if (simpleGoods == null || simpleGoods.getGoodsId() != goodsId
                  || goodsType != simpleGoods.getGoodsType()) {
               continue;
            }
            simpleGoods.setState(0);
            simpleGoods.setPrice(goodsNew.getCouponPrice());
            CouponInfoVO couponInfo = goodsNew.getCouponInfo();
            if (couponInfo == null) {
               simpleGoods.setPrice(goodsNew.getZkPrice());
            } else {
               simpleGoods.setPrice(goodsNew.getCouponPrice());
               simpleGoods.setAmount(couponInfo.getAmount());
            }
            imgInfo.setGoods(simpleGoods);
            imgInfo.setGoodsVO(goodsNew);
         }
         goodsEvaluate.setImgList(imgList);
         goodsEvaluate.setUpdateTime(new Date());
         goodsEvaluateDao.save(goodsEvaluate);
      }
   }
}