Administrator
2020-02-24 09417e97672be66c5e312b10f23a9e30da3acb97
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java
@@ -2,8 +2,11 @@
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;
@@ -18,15 +21,29 @@
import org.springframework.stereotype.Service;
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.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.GoodsEvaluate;
import com.yeshi.fanli.entity.dynamic.GoodsEvaluate.EvaluateEnum;
import com.yeshi.fanli.entity.dynamic.GoodsPicture;
import com.yeshi.fanli.entity.dynamic.ImgInfo;
import com.yeshi.fanli.entity.dynamic.ImgInfo.ImgEnum;
import com.yeshi.fanli.entity.dynamic.SimpleGoods;
@@ -49,6 +66,8 @@
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 {
@@ -107,7 +126,7 @@
      if (dynamicType == null) {
         record.setDynamicType(1);
      }
      if (record.getShareNum() == null)
         record.setShareNum(0);
@@ -212,7 +231,7 @@
            BufferedImage sourceImg = ImageIO.read(inputStream);
            int width = sourceImg.getWidth();
            int height = sourceImg.getHeight();
            String picLink = uploadPicture(filevideo);
            if (imgVideo != null) {
               String url = imgVideo.getUrl();
@@ -265,7 +284,7 @@
                  if (file != null) {
                     picLink = uploadPicture(file);
                  }
               }
               if (picLink.startsWith("http")) {
                  listpic.add(picLink);
@@ -279,11 +298,13 @@
         picNum = 1;
      }
      GoodsDetailVO goodsDetailVO = getGoodsDetailVO(goodsId, goodsType);;
      GoodsDetailVO goodsDetailVO = getGoodsDetailVO(goodsId, goodsType);
      ;
      if (goodsDetailVO == null) {
         throw new GoodsEvaluateException(1, "该商品信息不存在");
      }
      int totalImg = 0;
      if (listpic != null && listpic.size() > 0) {
         for (int i = 0; i < listpic.size(); i++) {
            ImgInfo imgInfo0 = new ImgInfo();
@@ -311,10 +332,12 @@
                  simpleGoods.setState(0);
               }
               imgInfo0.setGoods(simpleGoods);
               imgInfo0.setGoodsVO(goodsDetailVO);
            } else {
               imgInfo0.setType(ImgEnum.img);
            }
            listImg.add(imgInfo0);
            totalImg++;
         }
      }
@@ -322,18 +345,29 @@
         for (int j = 0; j < listOld.size(); j++) {
            boolean del = true;
            String oldPic = listOld.get(j);
            for (ImgInfo imgInfo: listImg) {
            for (ImgInfo imgInfo : listImg) {
               String url = imgInfo.getUrl();
               if (url.equals(oldPic)) {
                  del = false;
               }
               }
            }
            if (del)
               listDel.add(listOld.get(j));
         }
      }
      // 保存图片信息
      int lineNum = 0;
      if (totalImg > 0) {
         if (totalImg == 1) {
            lineNum = 1;
         } else if (totalImg <= 4) {
            lineNum = 2;
         } else {
            lineNum = 3;
         }
      }
      resultObj.setLineNum(lineNum);
      resultObj.setGoods(goodsDetailVO);
      resultObj.setMainPicNum(picNum);
      resultObj.setImgList(listImg);
@@ -413,7 +447,7 @@
            BufferedImage sourceImg = ImageIO.read(inputStream);
            int width = sourceImg.getWidth();
            int height = sourceImg.getHeight();
            String picLink = uploadPicture(filevideo);
            if (imgVideo != null) {
               String url = imgVideo.getUrl();
@@ -453,10 +487,11 @@
         }
      }
      int totalImg = 0;
      if (!StringUtil.isNullOrEmpty(goodsList)) {
         String[] goodsArray = goodsList.split(",");
         if (goodsArray != null && goodsArray.length > 0) {
            for (int i = 0; i < goodsArray.length || i < 9; i++) {
            for (int i = 0; i < goodsArray.length && i < 9; i++) {
               String goodsids = goodsArray[i];
               String[] g = goodsids.split("-");
               GoodsDetailVO goodsDetailVO = getGoodsDetailVO(Long.parseLong(g[0]), Integer.parseInt(g[1]));
@@ -494,6 +529,9 @@
                  simpleGoods.setState(0);
               }
               imgInfo0.setGoods(simpleGoods);
               imgInfo0.setGoodsVO(goodsDetailVO);
               listImg.add(imgInfo0);
               totalImg++;
            }
         }
      }
@@ -536,6 +574,19 @@
         }
      }
      int lineNum = 0;
      if (totalImg > 0) {
         if (totalImg == 1) {
            lineNum = 1;
         } else if (totalImg <= 4) {
            lineNum = 2;
         } else {
            lineNum = 3;
         }
      }
      resultObj.setLineNum(lineNum);
      // 保存图片信息
      resultObj.setImgList(listImg);
      goodsEvaluateDao.save(resultObj);
@@ -564,15 +615,15 @@
      CommentInfo currencyCoupon = null;
      List<CommentInfo> oldComments = resultObj.getComments();
      if (oldComments != null) {
         for (CommentInfo info: oldComments) {
            if(CommentInfoEnum.goodsCoupon == info.getType()) {
         for (CommentInfo info : oldComments) {
            if (CommentInfoEnum.goodsCoupon == info.getType()) {
               goodsCoupon = info;
            } else if (CommentInfoEnum.currencyCoupon == info.getType()) {
               currencyCoupon = info;
            }
         }
      }
      List<CommentInfo> comments = new ArrayList<>();
      if (!StringUtil.isNullOrEmpty(content)) {
         CommentInfo commentInfo = new CommentInfo();
@@ -585,15 +636,15 @@
         commentInfo.setType(CommentInfoEnum.goodsCoupon);
         comments.add(commentInfo);
      }
      if (currencyCoupon != null) {
         comments.add(currencyCoupon);
      }
      resultObj.setComments(comments);
      goodsEvaluateDao.save(resultObj);
   }
   @Override
   public void saveSingleGoodsCoupon(String pid, CommentInfo commentInfo) throws GoodsEvaluateException, Exception {
      if (StringUtil.isNullOrEmpty(pid)) {
@@ -608,20 +659,20 @@
      CommentInfo currencyCoupon = null;
      List<CommentInfo> oldComments = resultObj.getComments();
      if (oldComments != null) {
         for (CommentInfo info: oldComments) {
            if(CommentInfoEnum.goodsCoupon == info.getType()) {
         for (CommentInfo info : oldComments) {
            if (CommentInfoEnum.goodsCoupon == info.getType()) {
               goodsCoupon = info;
            } else if (CommentInfoEnum.currencyCoupon == info.getType()) {
               currencyCoupon = info;
            }
         }
      }
      List<CommentInfo> comments = new ArrayList<>();
      if (goodsCoupon != null) {
         comments.add(goodsCoupon);
      }
      if (commentInfo != null) {
         if (currencyCoupon != null) {
            commentInfo.setId(currencyCoupon.getId());
@@ -629,7 +680,7 @@
            commentInfo.setId(UUID.randomUUID().toString().replace("-", ""));
         }
         commentInfo.setType(CommentInfoEnum.currencyCoupon);
         // 标签信息
         List<ClientTextStyleVO> tagList = new ArrayList<>();
         String couponSource = commentInfo.getCouponSource();
@@ -647,10 +698,10 @@
            tagList.add(styleVO);
         }
         commentInfo.setTagList(tagList);
         comments.add(commentInfo);
      }
      resultObj.setComments(comments);
      goodsEvaluateDao.save(resultObj);
@@ -686,12 +737,14 @@
      int width = 0;
      int height = 0;
      int width2 = 0;
      int height2 = 0;
      List<ImgInfo> listImg = new ArrayList<ImgInfo>();
      if (fileRequest != null) {
         MultipartFile filevideo = fileRequest.getFile("filevideo");
         if (filevideo != null) {
            removePicture(videoPic);
            InputStream inputStream = filevideo.getInputStream();
            BufferedImage sourceImg = ImageIO.read(inputStream);
            width = sourceImg.getWidth();
@@ -703,6 +756,10 @@
         MultipartFile activityfile = fileRequest.getFile("activityfile");
         if (activityfile != null) {
            removePicture(activityPic);
            InputStream inputStream = activityfile.getInputStream();
            BufferedImage sourceImg = ImageIO.read(inputStream);
            width2 = sourceImg.getWidth();
            height2 = sourceImg.getHeight();
            String picLink = uploadPicture(activityfile);
            activityPic = picLink;
         }
@@ -741,8 +798,6 @@
         } else {
            imgactivity = new ImgInfo();
            imgactivity.setId(UUID.randomUUID().toString().replace("-", ""));
            imgactivity.setW(1);
            imgactivity.setH(1);
            imgactivity.setLarge(true);
            imgactivity.setPid(pid);
            imgactivity.setUrl(activityPic);
@@ -750,15 +805,23 @@
            imgactivity.setActivityUrl(imgInfo.getActivityUrl());
            imgactivity.setType(ImgEnum.activity);
         }
         if (width2 > 0) {
            imgactivity.setW(width2);
            imgactivity.setH(height2);
         } else {
            imgactivity.setW(imgactivity.getW());
            imgactivity.setH(imgactivity.getH());
         }
         listImg.add(imgactivity);
      }
      resultObj.setLineNum(1);
      resultObj.setImgList(listImg);
      goodsEvaluateDao.save(resultObj);
   }
   @Override
   public void saveSuCai(String pid, String videoUrl, String picUrls,
         MultipartHttpServletRequest fileRequest) throws GoodsEvaluateException, Exception {
   public void saveSuCai(String pid, String videoUrl, String picUrls, MultipartHttpServletRequest fileRequest)
         throws GoodsEvaluateException, Exception {
      if (StringUtil.isNullOrEmpty(pid)) {
         throw new GoodsEvaluateException(1, "请保存第一部分信息");
      }
@@ -769,9 +832,11 @@
      // 原封视频面图
      ImgInfo imgVideo = null;
      ImgInfo imgActivity = null;
      List<String> listDel = new ArrayList<String>();
      List<String> listOld = new ArrayList<String>();
      List<ImgInfo> listOldImgInfo = new ArrayList<ImgInfo>();
      // 处理图片
      List<ImgInfo> resultList = resultObj.getImgList();
      if (resultList != null && resultList.size() > 0) {
@@ -780,14 +845,18 @@
            if (type == ImgEnum.video) {
               imgVideo = info;
            } else if (type == ImgEnum.img) {
               listOldImgInfo.add(info);
               String url = info.getUrl();
               if (!StringUtil.isNullOrEmpty(url)) {
                  listOld.add(url);
               }
            } else if (type == ImgEnum.activity) {
               imgActivity = info;
            }
         }
      }
      MultipartFile activityFile = null;
      // 视频部分
      if (fileRequest != null) {
         MultipartFile filevideo = fileRequest.getFile("filevideo");
@@ -799,7 +868,7 @@
            BufferedImage sourceImg = ImageIO.read(inputStream);
            int width = sourceImg.getWidth();
            int height = sourceImg.getHeight();
            String picLink = uploadPicture(filevideo);
            if (imgVideo != null) {
               String url = imgVideo.getUrl();
@@ -821,6 +890,8 @@
            imgVideo.setW(width);
            imgVideo.setH(height);
         }
         activityFile = fileRequest.getFile("activityFile");
      }
      List<ImgInfo> listImg = new ArrayList<ImgInfo>();
@@ -829,6 +900,7 @@
            if (imgVideo != null && StringUtil.isNullOrEmpty(imgVideo.getUrl())) {
               throw new GoodsEvaluateException(1, "视频封面图不能为空");
            }
            imgVideo.setVideoUrl(videoUrl);
            listImg.add(imgVideo);
         } else {
@@ -839,40 +911,66 @@
         }
      }
      if (activityFile != null) {
         InputStream inputStream = activityFile.getInputStream();
         BufferedImage sourceImg = ImageIO.read(inputStream);
         int width = sourceImg.getWidth();
         int height = sourceImg.getHeight();
         String picLink = uploadPicture(activityFile);
         ImgInfo activity = new ImgInfo();
         activity.setId(UUID.randomUUID().toString().replace("-", ""));
         activity.setLarge(true);
         activity.setPid(pid);
         activity.setUrl(picLink);
         activity.setUrlHD(picLink);
         activity.setActivityPic(picLink);
         activity.setW(width);
         activity.setH(height);
         activity.setType(ImgEnum.activity);
         listImg.add(activity);
      } else if (imgActivity != null) {
         listImg.add(imgActivity);
      }
      // 编辑图片
      List<String> listpic = null;
      if (!StringUtil.isNullOrEmpty(picUrls)) {
         String[] pics = picUrls.split(",");
         if (pics != null) {
            listpic = new ArrayList<>();
            for (int i = 0; i < pics.length; i++) {
               String picLink = pics[i];
               if (fileRequest != null) {
                  MultipartFile file = fileRequest.getFile("file" + i);
                  if (file != null) {
                     picLink = uploadPicture(file);
                     ImgInfo imgInfo0 = new ImgInfo();
                     imgInfo0.setId(UUID.randomUUID().toString().replace("-", ""));
                     imgInfo0.setLarge(true);
                     imgInfo0.setPid(pid);
                     imgInfo0.setUrl(picLink);
                     imgInfo0.setUrlHD(picLink);
                     imgInfo0.setType(ImgEnum.img);
                     imgVideo.setW(1);
                     imgVideo.setH(1);
                     listImg.add(imgInfo0);
                     continue;
                  }
               }
               if (picLink.startsWith("http")) {
                  listpic.add(picLink);
                  if (listOldImgInfo != null) {
                     for (ImgInfo imgInfo : listOldImgInfo) {
                        String url = imgInfo.getUrl();
                        if (picLink.equals(url)) {
                           listImg.add(imgInfo);
                           break;
                        }
                     }
                  }
               }
            }
         }
      }
      if (listpic != null && listpic.size() > 0) {
         for (int i = 0; i < listpic.size(); i++) {
            ImgInfo imgInfo0 = new ImgInfo();
            imgInfo0.setId(UUID.randomUUID().toString().replace("-", ""));
            imgInfo0.setW(1);
            imgInfo0.setH(1);
            imgInfo0.setLarge(false);
            imgInfo0.setPid(pid);
            imgInfo0.setUrl(listpic.get(i));
            imgInfo0.setUrlHD(listpic.get(i));
            imgInfo0.setType(ImgEnum.img);
            listImg.add(imgInfo0);
         }
      }
@@ -880,17 +978,17 @@
         for (int j = 0; j < listOld.size(); j++) {
            boolean del = true;
            String oldPic = listOld.get(j);
            for (ImgInfo imgInfo: listImg) {
            for (ImgInfo imgInfo : listImg) {
               String url = imgInfo.getUrl();
               if (url.equals(oldPic)) {
                  del = false;
               }
               }
            }
            if (del)
               listDel.add(listOld.get(j));
         }
      }
      resultObj.setLineNum(1);
      resultObj.setImgList(listImg);
      goodsEvaluateDao.save(resultObj);
@@ -903,7 +1001,7 @@
         }
      }
   }
   @Override
   public void deleteBatchByPrimaryKey(List<String> list) {
      if (list == null || list.size() == 0) {
@@ -975,7 +1073,7 @@
      goodsEvaluate.setComments(comments);
      goodsEvaluateDao.save(goodsEvaluate);
   }
   @Override
   public void release(String id) throws GoodsEvaluateException {
      GoodsEvaluate goodsEvaluate = goodsEvaluateDao.getById(id);
@@ -985,7 +1083,6 @@
      goodsEvaluate.setState(1);
      goodsEvaluateDao.save(goodsEvaluate);
   }
   @Override
   public void deleteComment(String pid, List<String> list) throws GoodsEvaluateException {
@@ -1065,7 +1162,7 @@
   public long countValid() {
      return goodsEvaluateDao.countValid(1);
   }
   @Override
   @Cacheable(value = "dynamicCache", key = "'queryMaterialsCache-'+#start+'-'+#type")
   public List<GoodsEvaluate> queryMaterialsCache(int start, int count, int type) {
@@ -1120,6 +1217,8 @@
            GoodsDetailVO goods = goodsEvaluate.getGoods();
            if (goods != null) {
               GoodsDetailVO goodsNew = getGoodsNewInfo(goods.getGoodsId(), goods.getGoodsType(), paramsDTO);
               if (goodsNew != null)
                  goodsEvaluate.setGoods(goodsNew);
            }
            // 更新商品信息
            List<ImgInfo> imgList = goodsEvaluate.getImgList();
@@ -1127,6 +1226,32 @@
               continue;
            }
            for (ImgInfo imgInfo : imgList) {
               SimpleGoods simpleGoods = imgInfo.getGoods();
               if (simpleGoods == null) {
                  continue;
               }
               GoodsDetailVO goodsDetailVO = getGoodsNewInfo(simpleGoods.getGoodsId(), simpleGoods.getGoodsType(),
                     paramsDTO);
               if (goodsDetailVO != null) {
                  simpleGoods.setPrice(goodsDetailVO.getCouponPrice());
                  CouponInfoVO couponInfo = goodsDetailVO.getCouponInfo();
                  if (couponInfo == null) {
                     simpleGoods.setPrice(goodsDetailVO.getZkPrice());
                     simpleGoods.setState(1);
                  } else {
                     simpleGoods.setPrice(goodsDetailVO.getCouponPrice());
                     simpleGoods.setAmount(couponInfo.getAmount());
                     simpleGoods.setState(0);
                  }
                  imgInfo.setGoods(simpleGoods);
                  imgInfo.setGoodsVO(goodsDetailVO);
               }
            }
            goodsEvaluate.setUpdateTime(new Date());
            goodsEvaluateDao.save(goodsEvaluate);
         }
      } catch (Exception e) {
         LogHelper.errorDetailInfo(e);
@@ -1150,5 +1275,72 @@
      return vo;
   }
}
   @Override
   public void addGoodsEvaluateByDynamicInfo(DynamicInfo info) {
      try {
         GoodsEvaluate goodsEvaluate = new GoodsEvaluate();
         goodsEvaluate.setId(UUID.randomUUID().toString().replace("-", ""));
         ActivityUser user = info.getUser();
         goodsEvaluate.setUser(user);
         goodsEvaluate.setState(1);
         goodsEvaluate.setDynamicType(1);
         goodsEvaluate.setType(EvaluateEnum.single);
         goodsEvaluate.setLineNum(2);
         goodsEvaluate.setShareNum(info.getShareCount());
         goodsEvaluate.setShareNumReal(0);
         goodsEvaluate.setPublishTime(info.getCreateTime());
         goodsEvaluate.setCreateTime(new Date());
         goodsEvaluate.setUpdateTime(new Date());
         goodsEvaluate.setWeight(0.0);
         goodsEvaluate.setStartTime(new Date());
         goodsEvaluate.setEndTime(DateUtil.plusYears(new Date(), 100));
         List<ClientTextStyleVO> titles = info.getTitle();
         if (titles != null) {
            goodsEvaluate.setTitle(info.getTitle().get(0).getContent());
         } else {
            goodsEvaluate.setTitle("");
         }
         List<ImgInfo> imgList = new ArrayList<>();
         List<GoodsPicture> imgs = info.getImgs();
         for (GoodsPicture goodsPicture : imgs) {
            ImgInfo imgInfo = new ImgInfo();
            imgInfo.setH(1);
            imgInfo.setW(1);
            imgInfo.setLarge(false);
            imgInfo.setUrl(goodsPicture.getUrl());
            imgInfo.setUrlHD(goodsPicture.getUrl());
            GoodsDetailVO goodsVO = goodsPicture.getGoodsVO();
            if (goodsVO == null) {
               imgInfo.setType(ImgEnum.img);
            } else {
               imgInfo.setType(ImgEnum.goods);
               SimpleGoods simpleGoods = new SimpleGoods();
               simpleGoods.setGoodsId(goodsVO.getGoodsId());
               simpleGoods.setGoodsType(goodsVO.getGoodsType());
               CouponInfoVO couponInfo = goodsVO.getCouponInfo();
               if (couponInfo == null) {
                  simpleGoods.setState(0);
                  simpleGoods.setPrice(goodsVO.getZkPrice());
               } else {
                  simpleGoods.setState(goodsVO.getState());
                  simpleGoods.setPrice(goodsVO.getCouponPrice());
                  simpleGoods.setAmount(couponInfo.getAmount());
               }
               imgInfo.setGoods(simpleGoods);
               goodsEvaluate.setGoods(goodsVO);
            }
            imgList.add(imgInfo);
         }
         goodsEvaluate.setImgList(imgList);
         goodsEvaluateDao.save(goodsEvaluate);
      } catch (Exception e) {
         LogHelper.errorDetailInfo(e);
      }
   }
}