admin
2020-03-01 b730b81641e9eadac879a401aedbd333e6973e28
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java
@@ -2,11 +2,8 @@
import java.awt.image.BufferedImage;
import java.io.InputStream;
import java.io.PrintWriter;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
@@ -22,25 +19,16 @@
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.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.yeshi.fanli.dao.dynamic.GoodsEvaluateDao;
import com.yeshi.fanli.dto.ConfigParamsDTO;
import com.yeshi.fanli.dto.jd.JDCouponInfo;
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.activity.ActivityUser;
import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.dynamic.CommentInfo;
import com.yeshi.fanli.entity.dynamic.DynamicInfo;
import com.yeshi.fanli.entity.dynamic.CommentInfo.CommentInfoEnum;
import com.yeshi.fanli.entity.dynamic.DynamicInfo;
import com.yeshi.fanli.entity.dynamic.GoodsEvaluate;
import com.yeshi.fanli.entity.dynamic.GoodsEvaluate.EvaluateEnum;
import com.yeshi.fanli.entity.dynamic.GoodsPicture;
@@ -48,13 +36,17 @@
import com.yeshi.fanli.entity.dynamic.ImgInfo.ImgEnum;
import com.yeshi.fanli.entity.dynamic.SimpleGoods;
import com.yeshi.fanli.entity.jd.JDGoods;
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.exception.dynamic.ActivityUserException;
import com.yeshi.fanli.exception.dynamic.GoodsEvaluateException;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.activity.ActivityUserService;
import com.yeshi.fanli.service.inter.config.ConfigService;
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.util.Constant;
import com.yeshi.fanli.util.FilePathEnum;
@@ -63,11 +55,13 @@
import com.yeshi.fanli.util.cache.JDGoodsCacheUtil;
import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil;
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
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.taobao.TaoBaoUtil;
import com.yeshi.fanli.vo.goods.CouponInfoVO;
import com.yeshi.fanli.vo.goods.GoodsDetailVO;
import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
import net.sf.json.JSONObject;
@Service
public class GoodsEvaluateServiceImpl implements GoodsEvaluateService {
@@ -92,6 +86,14 @@
   @Resource
   private PinDuoDuoCacheUtil pinDuoDuoCacheUtil;
   @Resource
   private ConfigService configService;
   @Resource
   private ShareGoodsService shareGoodsService;
   @Override
   public String saveHead(MultipartFile file, GoodsEvaluate record) throws GoodsEvaluateException {
@@ -205,17 +207,18 @@
      List<String> listOld = new ArrayList<String>();
      // 处理图片
      GoodsDetailVO oldGoodsVO = null;
      List<ImgInfo> resultList = resultObj.getImgList();
      if (resultList != null && resultList.size() > 0) {
         for (ImgInfo info : resultList) {
            ImgEnum type = info.getType();
            if (type == ImgEnum.video) {
               imgVideo = info;
            } else if (type == ImgEnum.goods || type == ImgEnum.img) {
               String url = info.getUrl();
               if (!StringUtil.isNullOrEmpty(url)) {
                  listOld.add(url);
               }
            } else if (type == ImgEnum.goods ) {
               listOld.add(info.getUrl());
               oldGoodsVO = info.getGoodsVO();
            } else if (type == ImgEnum.img){
               listOld.add(info.getUrl());
            }
         }
      }
@@ -298,8 +301,28 @@
         picNum = 1;
      }
      GoodsDetailVO goodsDetailVO = getGoodsDetailVO(goodsId, goodsType);
      ;
      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);
      if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
         try {
            TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(goodsId);
            goodsDetailVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, params);
         } catch (TaobaoGoodsDownException e) {
            throw new GoodsEvaluateException(1, "商品已下架");
         }
      } else if (goodsType == Constant.SOURCE_TYPE_JD) {
         jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsId);
         goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(jdGoods, params);
      } else if (goodsType == Constant.SOURCE_TYPE_PDD) {
         pddGoods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId);
         goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(pddGoods, params);
      }
      if (goodsDetailVO == null) {
         throw new GoodsEvaluateException(1, "该商品信息不存在");
      }
@@ -371,6 +394,62 @@
      resultObj.setGoods(goodsDetailVO);
      resultObj.setMainPicNum(picNum);
      resultObj.setImgList(listImg);
      boolean addComment = true;
      List<CommentInfo> commentsNew = new ArrayList<>();
      List<CommentInfo> comments = resultObj.getComments();
      if (comments != null) {
         for (CommentInfo commentInfo: comments) {
            if (commentInfo.getType() == CommentInfoEnum.goodsCoupon) {
               if (oldGoodsVO != null && oldGoodsVO.getGoodsId().longValue() == goodsId.longValue()
                     && oldGoodsVO.getGoodsType() == goodsType) {
                  addComment = true;
               } else {
                  addComment = false;
               }
               continue;
            }
            commentsNew.add(commentInfo);
         }
      }
      if (addComment) {
         String commentText = "";
         if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
            TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(1L, goodsId, null);
            String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey());
            commentText = template.replace("[口令]", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken()));
         } else if (goodsType == Constant.SOURCE_TYPE_JD) {
            String couponUrl = null;
            JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(jdGoods);
            if (couponInfo != null) {
               couponUrl = couponInfo.getLink();
            }
            String materialId = "https://item.jd.com/" + goodsId + ".html";
            String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "","1");
            String template = configService.get(ConfigKeyEnum.quickShareJDCommentText.getKey());
            commentText = template.replace("[链接]", jumpLink);
         } else if (goodsType == Constant.SOURCE_TYPE_PDD) {
            String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goodsId, 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());
         }
         CommentInfo commentInfo = new CommentInfo();
         commentInfo.setId(UUID.randomUUID().toString().replace("-", ""));
         commentInfo.setContent(commentText);
         commentInfo.setType(CommentInfoEnum.goodsCoupon);
         commentsNew.add(commentInfo);
         resultObj.setComments(commentsNew);
      }
      goodsEvaluateDao.save(resultObj);
      // 删除图片
@@ -1333,6 +1412,28 @@
               }
               imgInfo.setGoods(simpleGoods);
               goodsEvaluate.setGoods(goodsVO);
               TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(0L, 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());
               }
               CommentInfo commentInfo = new CommentInfo();
               commentInfo.setId(UUID.randomUUID().toString().replace("-", ""));
               commentInfo.setContent(commentText);
               commentInfo.setType(CommentInfoEnum.goodsCoupon);
               List<CommentInfo> commentsNew = new ArrayList<>();
               commentsNew.add(commentInfo);
               goodsEvaluate.setComments(commentsNew);
            }
            imgList.add(imgInfo);
         }