admin
2021-06-30 0912f56a392bdf48315747c64ec0c18bf0aa29a6
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java
@@ -1,47 +1,15 @@
package com.yeshi.fanli.service.impl.dynamic;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
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;
import java.util.List;
import java.util.UUID;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import com.yeshi.fanli.entity.SystemEnum;
import com.yeshi.fanli.entity.SystemFunction;
import com.yeshi.fanli.entity.SystemPIDInfo;
import com.yeshi.fanli.exception.taobao.TaoBaoConvertLinkException;
import com.yeshi.fanli.service.manger.PIDManager;
import com.yeshi.fanli.service.manger.goods.TaoBaoLinkManager;
import com.yeshi.fanli.util.*;
import com.yeshi.fanli.util.FileUtil;
import com.yeshi.fanli.util.StringUtil;
import org.apache.commons.beanutils.PropertyUtils;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.yeshi.utils.*;
import org.yeshi.utils.tencentcloud.COSManager;
import com.yeshi.common.vo.ClientTextStyleVO;
import com.yeshi.fanli.dao.dynamic.GoodsEvaluateDao;
import com.yeshi.fanli.dto.GoodsMoneyConfigParamsDTO;
import com.yeshi.fanli.dto.jd.JDCouponInfo;
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
import com.yeshi.fanli.dto.suning.SuningGoodsInfo;
import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo;
import com.yeshi.fanli.entity.SystemEnum;
import com.yeshi.fanli.entity.SystemFunction;
import com.yeshi.fanli.entity.SystemPIDInfo;
import com.yeshi.fanli.entity.bus.activity.ActivityRuleUser;
import com.yeshi.fanli.entity.bus.activity.ActivityUser;
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
@@ -54,13 +22,13 @@
import com.yeshi.fanli.entity.dynamic.SimpleGoods;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoLink;
import com.yeshi.goods.facade.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;
import com.yeshi.fanli.exception.taobao.TaoBaoConvertLinkException;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
import com.yeshi.fanli.lijin.manager.GoodsLijinMnager;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.activity.ActivityUserService;
import com.yeshi.fanli.service.inter.config.ConfigService;
@@ -68,20 +36,50 @@
import com.yeshi.fanli.service.inter.goods.ShareGoodsService;
import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService;
import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
import com.yeshi.goods.facade.service.DaTaoKeGoodsDetailV2Service;
import com.yeshi.fanli.service.manger.PIDManager;
import com.yeshi.fanli.service.manger.goods.ConvertLinkManager;
import com.yeshi.fanli.service.manger.goods.TaoBaoLinkManager;
import com.yeshi.fanli.service.manger.goods.tb.DaTaoKeTipOffManager;
import com.yeshi.fanli.util.*;
import com.yeshi.fanli.util.cache.JDGoodsCacheUtil;
import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil;
import com.yeshi.fanli.util.factory.CommonGoodsFactory;
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.DaTaoKeTipOffUtil;
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.common.vo.ClientTextStyleVO;
import sun.plugin2.util.SystemUtil;
import com.yeshi.goods.facade.dto.taobao.dataoke.DaTaoKeListTopOffDTO;
import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.goods.facade.entity.taobao.dataoke.DaTaoKeDetailV2;
import com.yeshi.goods.facade.service.DaTaoKeGoodsDetailV2Service;
import org.apache.commons.beanutils.PropertyUtils;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.core.task.TaskExecutor;
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.ImageCropUtil;
import org.yeshi.utils.MoneyBigDecimalUtil;
import org.yeshi.utils.TimeUtil;
import org.yeshi.utils.tencentcloud.COSManager;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
@Service
public class GoodsEvaluateServiceImpl implements GoodsEvaluateService {
@@ -128,6 +126,9 @@
    @Resource
    private PIDManager pidManager;
    @Resource
    private GoodsLijinMnager goodsLijinMnager;
    @Override
    public void switchState(String id) throws GoodsEvaluateException {
@@ -2280,6 +2281,152 @@
        return result;
    }
    @Resource
    private DaTaoKeTipOffManager daTaoKeTipOffManager;
    @Override
    public int addGoodsEvaluate(DaTaoKeListTopOffDTO dto, ActivityUser user, SystemEnum system) throws GoodsEvaluateException {
        if (dto == null || user == null || system == null) {
            throw new GoodsEvaluateException(1, "相关参数不能为空");
        }
        String title = null;
        try {
            title = daTaoKeTipOffManager.convertLinkForEvaluateWithEncode(dto, system);
        } catch (Exception e) {
            throw new GoodsEvaluateException(1, "转链出错");
        }
        Date limitDate = DateUtil.reduceDay(new Date(), 7);
        String identifyCode = "dataoke-" + StringUtil.Md5(DaTaoKeTipOffUtil.getRecoomendDesc(dto));
        GoodsEvaluate evaluate = goodsEvaluateDao.selectExistLimitTime(identifyCode, limitDate);
        if (evaluate != null)
            throw new GoodsEvaluateException(1, "线报已存在");
        List<String> imgs = new ArrayList<>();
        if (dto.getImageList() != null && dto.getImageList().size() > 0) {
            imgs.addAll(dto.getImageList());
        }
        GoodsDetailVO goods = null;
        //获取图片
        if (dto.getIdList() != null && dto.getIdList().size() > 0) {
            Set<String> imgSet = new HashSet<>();
            imgSet.addAll(imgs);
            String id = dto.getIdList().get(0);
            String source = dto.getPlatformType();
            switch (source) {
                case "tb":
                    try {
                        TaoBaoGoodsBrief goodsBrief = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id));
                        if (goodsBrief != null && goodsBrief.getImgList() != null) {
                            GoodsMoneyConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system);
                            goods = GoodsDetailVOFactory.convertTaoBao(goodsBrief, params);
                            goods = goodsLijinMnager.loadTBMoneyInfo(system, null, goodsBrief, goods);
                            for (String img : goodsBrief.getImgList()) {
                                if (!imgSet.contains(img) && imgs.size() < 9) {
                                    imgSet.add(img);
                                    imgs.add(img);
                                }
                            }
                        }
                    } catch (TaobaoGoodsDownException e) {
                        e.printStackTrace();
                    }
                    break;
                case "jd": {
                    JDGoods jdGoods = JDApiUtil.queryGoodsDetail(Long.parseLong(id));
                    if (jdGoods != null && jdGoods.getImageList() != null) {
                        GoodsMoneyConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system);
                        goods = GoodsDetailVOFactory.convertJDGoods(jdGoods, params);
                        goods = goodsLijinMnager.loadOtherMoneyInfo(system, null, CommonGoodsFactory.create(jdGoods), goods);
                        for (String img : jdGoods.getImageList()) {
                            if (!imgSet.contains(img) && imgs.size() < 9) {
                                imgSet.add(img);
                                imgs.add(img);
                            }
                        }
                    }
                }
                break;
                case "pdd": {
                    PDDGoodsDetail goodsDetail = PinDuoDuoApiUtil.getGoodsDetail(Long.parseLong(id));
                    if (goodsDetail != null && goodsDetail.getGoodsGalleryUrls() != null) {
                        GoodsMoneyConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system);
                        goods = GoodsDetailVOFactory.convertPDDGoods(goodsDetail, params);
                        goods = goodsLijinMnager.loadOtherMoneyInfo(system, null, CommonGoodsFactory.create(goodsDetail), goods);
                        for (String img : goodsDetail.getGoodsGalleryUrls()) {
                            if (!imgSet.contains(img) && imgs.size() < 9) {
                                imgSet.add(img);
                                imgs.add(img);
                            }
                        }
                    }
                }
                break;
                default:
                    throw new GoodsEvaluateException(1, "不支持的source:" + source);
            }
        }
        // 商品图片信息
        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);
            imgInfo.setType(ImgEnum.img);
            imgList.add(imgInfo);
        }
        // 一行显示多少个图片
        int lineNum = 3;
        int result = 0;
        int zeroPoint = 0;
        Date startTime = new Date();
        GoodsEvaluate goodsEvaluate = new GoodsEvaluate();
        goodsEvaluate.setId(UUID.randomUUID().toString().replace("-", ""));
        goodsEvaluate.setUser(user);
        goodsEvaluate.setTitle(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());
        //线报不显示商品
        if (goods != null && goods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
            goods.setCreatetime(null);
            goodsEvaluate.setGoods(goods);
        }
        goodsEvaluate.setLineNum(lineNum);
        goodsEvaluate.setImgList(imgList);
        goodsEvaluate.setComments(null);
        goodsEvaluate.setSystem(system);
        goodsEvaluate.setIdentifyCode(identifyCode);
        goodsEvaluateDao.save(goodsEvaluate);
        return result;
    }
    @Override
    public void addGoodsEvaluateByDaTaoKe(SystemEnum system) {
        List<Long> listId = null;