admin
2022-07-15 3727469752a977dde6327e2c48d761b20b565d3d
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsControllerV2.java
@@ -27,6 +27,8 @@
import com.yeshi.fanli.vo.suning.SuningConvertLinkResult;
import com.yeshi.goods.facade.dto.taobao.TaoBaoGoodsImportantInfo;
import org.json.simple.JSONArray;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@@ -127,6 +129,9 @@
@Controller
@RequestMapping("api/v2/goods")
public class GoodsControllerV2 {
    Logger logger = LoggerFactory.getLogger(GoodsControllerV2.class);
    @Resource
    private BusinessSystemService businessSystemService;
@@ -289,11 +294,13 @@
     * @param out
     */
    @RequestMapping(value = "getDetailTB", method = RequestMethod.POST)
    public void getDetialTB(AcceptData acceptData, Long id, Long uid, String from, PrintWriter out) {
    public void getDetialTB(AcceptData acceptData, String id, Long uid, String from, PrintWriter out) {
        if (id == null) {
            out.print(JsonUtil.loadFalseResult(1, "商品id不能为空"));
            return;
        }
        logger.debug("获取商品详情-开始:{}", id + "");
        BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
                acceptData.getPackages(), acceptData.getSystem());
@@ -332,6 +339,7 @@
        TaoBaoGoodsBrief goods = null;
        if (!convertInServer) {
            logger.debug("获取商品详情-不在服务端转链:{}", id + "");
            try {
                goods = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(id);
                if (goods == null) {
@@ -410,6 +418,8 @@
            });
        }
        logger.debug("获取商品详情-获取商品详情成功:{}", id + "");
        TaoBaoGoodsBrief tb = goods;
        //创建时间设置为空,防止前端用long解析
@@ -458,6 +468,8 @@
        tb.setImgList(finalImgList);
        logger.debug("获取商品详情-开始大淘客商品过滤:{}", id + "");
        // 大淘客商品过滤
        try {
            goods = filterDaTaoKeGoodsInfo(acceptData.getSystem(), goods);
@@ -465,8 +477,12 @@
            LogHelper.errorDetailInfo(e);
        }
        logger.debug("获取商品详情-结束大淘客商品过滤:{}", id + "");
        GoodsMoneyConfigParamsDTO paramsDTO = getParamsDTO(acceptData.getPlatform(), acceptData.getVersion(), uid, acceptData.getSystem());
        paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate(acceptData.getSystem()));
        logger.debug("获取商品详情-获取到返利比例:{}", id + "");
        GoodsDetailVO goodsDetail = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO);
        if (goodsDetail != null && goodsDetail.getMoneyInfo() != null && userVIPInfoService.isVIP(uid)) {
@@ -497,6 +513,8 @@
            }
            goodsDetail.setShopInfo(ShopInfoVOFactory.convertTaoBaoShop(shop));
        }
        logger.debug("获取商品详情-获取店铺信息结束:{}", id + "");
        // 免单商品
        if (!StringUtil.isNullOrEmpty(from) && "miandan".equals(from)) {
@@ -524,6 +542,8 @@
        }
        extraVO.setListShareUser(listShareUser);
        logger.debug("获取商品详情-分享赚人提示结束:{}", id + "");
        // 领券人列表
        List<ShamUser> listCouponUser = new ArrayList<ShamUser>();
        if (!StringUtil.isNullOrEmpty(goods.getCouponInfo()) && goods.getCouponAmount() != null
@@ -534,13 +554,17 @@
        }
        extraVO.setListCouponUser(listCouponUser);
        logger.debug("获取商品详情- 领券人列表结束:{}", id + "");
        if (uid != null) {
            // 是否加入收藏
            CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid, id,
                    Constant.SOURCE_TYPE_TAOBAO);
            extraVO.setCollected(collectionGoods != null ? true : false);
            logger.debug("获取商品详情- 收藏结束:{}", id + "");
            // 是否加入选品库
            extraVO.setStorage(userGoodsStorageService.isExistStorage(uid, id, Constant.SOURCE_TYPE_TAOBAO));
            logger.debug("获取商品详情- 选品库结束:{}", id + "");
        }
        // 测试
@@ -628,9 +652,10 @@
            goodsDetail.setLabels(labels);
        } else {// 普通购买
            logger.debug("获取商品详情- 奖励券开始:{}", id + "");
            OtherInfo otherInfo = new OtherInfo();
            RewardCouponVO rewardCoupon = new RewardCouponVO();
            rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web",acceptData.getSystem()));
            rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", acceptData.getSystem()));
            JSONObject params1 = new JSONObject();
            if (!VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion()))
                params1.put("url", configService.getValue(ConfigKeyEnum.specialGuideRewardCouponLink.getKey(), acceptData.getSystem()));
@@ -646,6 +671,7 @@
            rewardCoupon.setParams(params1.toString());
            otherInfo.setRewardCoupon(rewardCoupon);
            logger.debug("获取商品详情- 奖励券结束:{}", id + "");
            if ("ios".equalsIgnoreCase(acceptData.getPlatform())
                    && configService.iosOnLining(Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()))
                otherInfo.setRewardCoupon(null);
@@ -677,15 +703,20 @@
            goodsDetail.setCouponInfoList(couponInfoList);
        }
        logger.debug("获取商品详情- 分享信息结束:{}", id + "");
        if (VersionUtil.greaterThan_2_1_2(acceptData.getPlatform(), acceptData.getVersion())) {
            getCloudInfo(acceptData, uid, goodsDetail, extraVO);  // 云发单文案信息
        }
//云发单关闭
//        if (VersionUtil.greaterThan_2_1_2(acceptData.getPlatform(), acceptData.getVersion())) {
//            getCloudInfo(acceptData, uid, goodsDetail, extraVO);  // 云发单文案信息
//            logger.debug("获取商品详情- 云发单文案结束:{}", id + "");
//        }
        JSONObject object = new JSONObject();
        object.put("extra", JsonUtil.getApiCommonGson().toJson(extraVO));
        object.put("goods", JsonUtil.getApiCommonGson().toJson(goodsDetail));
        out.print(JsonUtil.loadTrueResult(object.toString()));
        logger.debug("获取商品详情-详情结束:{}", id + "");
        final TaoBaoGoodsBrief goodsInfo = tb;
        ThreadUtil.run(new Runnable() {
@@ -720,7 +751,7 @@
            return;
        }
        JDGoods jdGoods = JDApiUtil.queryGoodsDetail(id); // 高级接口
        JDGoods jdGoods = JDApiUtil.queryGoodsDetail( id); // 高级接口
        if (jdGoods == null) {
            jdGoods = JDUtil.getGoodsDetail(id); // 爬取网页
            // jdGoods = JDApiUtil.getGoodsDetail(id); // 普通接口
@@ -787,7 +818,7 @@
        // 奖励券返利
        RewardCouponVO rewardCoupon = new RewardCouponVO();
        rewardCoupon.setMaxMoneyPlus(maxMoneyPlus);
        rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web",acceptData.getSystem()));
        rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", acceptData.getSystem()));
        JSONObject params1 = new JSONObject();
        if (!VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion()))
            params1.put("url", configService.getValue(ConfigKeyEnum.specialGuideRewardCouponLink.getKey(), acceptData.getSystem()));
@@ -815,8 +846,13 @@
        if (couponInfo != null) {
            // 券链接处理
            String materialId = "https://item.jd.com/" + id + ".html";
            String url = JDApiUtil.convertLinkWithSubUnionId(materialId, couponInfo.getLink(), null,
                    pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_JD, SystemPIDInfo.PidType.coupon), null);
            String url = null;
            try {
                url = JDApiUtil.convertLinkWithSubUnionId(materialId, couponInfo.getLink(), null,
                        pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_JD, SystemPIDInfo.PidType.coupon), null);
            } catch (Exception e) {
                logger.warn(String.format("京东转链出错:materialId-%s  couponUrl-%s", materialId, couponInfo.getLink()), e);
            }
            couponInfo.setLink(url);
        }
@@ -863,11 +899,11 @@
        if (uid != null) {
            // 是否加入收藏
            CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid, id,
            CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid,  id+"",
                    Constant.SOURCE_TYPE_JD);
            extraVO.setCollected(collectionGoods != null ? true : false);
            // 是否加入选品库
            extraVO.setStorage(userGoodsStorageService.isExistStorage(uid, id, Constant.SOURCE_TYPE_JD));
            extraVO.setStorage(userGoodsStorageService.isExistStorage(uid, id+"", Constant.SOURCE_TYPE_JD));
        }
        // 图文详情
@@ -984,7 +1020,7 @@
        // 附加信息
        OtherInfo otherInfo = new OtherInfo();
        RewardCouponVO rewardCoupon = new RewardCouponVO();
        rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web",acceptData.getSystem()));
        rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", acceptData.getSystem()));
        JSONObject params1 = new JSONObject();
        if (!VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion()))
            params1.put("url", configService.getValue(ConfigKeyEnum.specialGuideRewardCouponLink.getKey(), acceptData.getSystem()));
@@ -1067,11 +1103,11 @@
        if (uid != null) {
            // 是否加入收藏
            CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid, id,
            CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid, id+"",
                    Constant.SOURCE_TYPE_PDD);
            extraVO.setCollected(collectionGoods != null ? true : false);
            // 是否加入选品库
            extraVO.setStorage(userGoodsStorageService.isExistStorage(uid, id, Constant.SOURCE_TYPE_PDD));
            extraVO.setStorage(userGoodsStorageService.isExistStorage(uid, id+"", Constant.SOURCE_TYPE_PDD));
        }
        extraVO.setIsNative(true);
@@ -1191,7 +1227,7 @@
        // 附加信息
        OtherInfo otherInfo = new OtherInfo();
        RewardCouponVO rewardCoupon = new RewardCouponVO();
        rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web",acceptData.getSystem()));
        rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", acceptData.getSystem()));
        JSONObject params1 = new JSONObject();
        if (!VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion()))
            params1.put("url", configService.getValue(ConfigKeyEnum.specialGuideRewardCouponLink.getKey(), acceptData.getSystem()));
@@ -1231,11 +1267,11 @@
        if (uid != null) {
            // 是否加入收藏
            CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid, id,
            CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid, id+"",
                    Constant.SOURCE_TYPE_VIP);
            extraVO.setCollected(collectionGoods != null ? true : false);
            // 是否加入选品库
            extraVO.setStorage(userGoodsStorageService.isExistStorage(uid, id, Constant.SOURCE_TYPE_VIP));
            extraVO.setStorage(userGoodsStorageService.isExistStorage(uid, id+"", Constant.SOURCE_TYPE_VIP));
        }
        extraVO.setIsNative(true);
@@ -1331,7 +1367,7 @@
        // 附加信息
        OtherInfo otherInfo = new OtherInfo();
        RewardCouponVO rewardCoupon = new RewardCouponVO();
        rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web",acceptData.getSystem()));
        rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", acceptData.getSystem()));
        JSONObject params1 = new JSONObject();
        params1.put("url", userVipConfigService.getValueByKey("vip_link"));
@@ -1372,11 +1408,11 @@
        if (uid != null) {
            // 是否加入收藏
            CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid,
                    Long.parseLong(suningGoodsInfo.getCommodityInfo().getCommodityCode()), Constant.SOURCE_TYPE_SUNING);
                   (suningGoodsInfo.getCommodityInfo().getCommodityCode()), Constant.SOURCE_TYPE_SUNING);
            extraVO.setCollected(collectionGoods != null ? true : false);
            // 是否加入选品库
            extraVO.setStorage(userGoodsStorageService.isExistStorage(uid,
                    Long.parseLong(suningGoodsInfo.getCommodityInfo().getCommodityCode()),
                 (suningGoodsInfo.getCommodityInfo().getCommodityCode()),
                    Constant.SOURCE_TYPE_SUNING));
        }
@@ -1443,6 +1479,9 @@
     * @param goodsDetail
     */
    private void getCloudInfo(AcceptData acceptData, Long uid, GoodsDetailVO goodsDetail, GoodsDetailExtraVO extraVO) {
        if (1 > 0) {
            return;
        }
        // 云发单是否开启
        boolean cloudOpen = configService.isRobotCloudOpen(ConfigKeyEnum.robotCloudOpenGoodsDetail.getKey(), acceptData.getPlatform(), acceptData.getVersion(), acceptData.getSystem());
        if (!cloudOpen && uid != null) {
@@ -1614,16 +1653,16 @@
                return;
            }
            List<TaoBaoGoodsBrief> goodsList = TaoKeApiUtil.guessLikeByAuctionId(Long.parseLong(id), 10);
            List<TaoBaoGoodsBrief> goodsList = TaoKeApiUtil.guessLikeByAuctionId(id, 10);
            // 初始化
            if (goodsList == null) {
                goodsList = new ArrayList<TaoBaoGoodsBrief>();
                goodsList = new ArrayList<>();
            }
            List<GoodsDetailVO> listExtra = new ArrayList<GoodsDetailVO>();
            GoodsMoneyConfigParamsDTO paramsDTO = getParamsDTO(acceptData.getPlatform(), acceptData.getVersion(), null, acceptData.getSystem());
            listExtra = goodsLijinMnager.loadTBMoneyInfo(acceptData.getSystem(), uid, goodsList, paramsDTO,false);
            listExtra = goodsLijinMnager.loadTBMoneyInfo(acceptData.getSystem(), uid, goodsList, paramsDTO, false);
            List<GoodsDetailVO> listQuality = new ArrayList<GoodsDetailVO>();
            // 取偶数个数据
@@ -1673,16 +1712,29 @@
                couponUrl = couponInfo.getLink();
            }
            jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, pid,
                    "");
            if (jumpLink == null) {
                jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, null, null, pid,
            try {
                jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, pid,
                        "");
            } catch (Exception e) {
                logger.warn(String.format("京东转链出错:materialId-%s  couponUrl-%s", materialId, couponUrl), e);
            }
            if (jumpLink == null) {
                try {
                    jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, null, null, pid,
                            "");
                } catch (Exception e) {
                    e.printStackTrace();
                    logger.warn(String.format("京东转链出错:materialId-%s ", materialId), e);
                }
            }
        } else {
            jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, pid,
                    "");
            try {
                jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, pid,
                        "");
            } catch (Exception e) {
                e.printStackTrace();
                logger.warn(String.format("京东转链出错:materialId-%s  couponUrl-%s", materialId, couponUrl), e);
            }
            if (StringUtil.isNullOrEmpty(jumpLink)) {
                jumpLink = couponUrl;
            }
@@ -1768,15 +1820,27 @@
            if (couponInfo != null) {
                couponUrl = couponInfo.getLink();
            }
            jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, pid,
                    uid + "");
            if (jumpLink == null) {
                jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, null, null, pid,
            try {
                jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, pid,
                        uid + "");
            } catch (Exception e) {
                logger.warn(String.format("京东转链出错:materialId-%s  couponUrl-%s", materialId, couponUrl), e);
            }
            if (jumpLink == null) {
                try {
                    jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, null, null, pid,
                            uid + "");
                } catch (Exception e) {
                    logger.warn(String.format("京东转链出错:materialId-%s", materialId), e);
                }
            }
        } else {
            jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, pid,
                    uid + "");
            try {
                jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, pid,
                        uid + "");
            } catch (Exception e) {
                logger.warn(String.format("京东转链出错:materialId-%s  couponUrl-%s", materialId, couponUrl), e);
            }
            if (StringUtil.isNullOrEmpty(jumpLink)) {
                jumpLink = couponUrl;
            }
@@ -1807,7 +1871,11 @@
        String jumpLink = null;
        String materialId = "https://item.jd.com/" + id + ".html";
        jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_JD, SystemPIDInfo.PidType.fanli), null);
        try {
            jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_JD, SystemPIDInfo.PidType.fanli), null);
        } catch (Exception e) {
            logger.warn(String.format("京东转链出错:materialId-%s  couponUrl-%s", materialId, couponUrl), e);
        }
        if (StringUtil.isNullOrEmpty(jumpLink)) {
            jumpLink = couponUrl;
        }
@@ -2041,7 +2109,7 @@
        if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
            TaoBaoGoodsBrief goods = null;
            try {
                goods = TaoKeApiUtil.getSimpleGoodsInfo(Long.parseLong(goodsId));
                goods = TaoKeApiUtil.getSimpleGoodsInfo(goodsId);
            } catch (NumberFormatException e) {
                e.printStackTrace();
            } catch (TaobaoGoodsDownException e) {
@@ -2105,7 +2173,7 @@
        for (int i = 0; i < array.size(); i++) {
            JSONObject obj = array.optJSONObject(i);
            CommonGoods cg = new CommonGoods();
            cg.setGoodsId(obj.optLong("goodsId"));
            cg.setGoodsId(obj.optString("goodsId"));
            cg.setGoodsType(obj.optInt("goodsType"));
            commonGoodsList.add(cg);
        }
@@ -2116,7 +2184,7 @@
        }
        // 分离各个平台的商品信息
        List<Long> tbGoodsList = new ArrayList<>();
        List<String> tbGoodsList = new ArrayList<>();
        List<Long> jdGoodsList = new ArrayList<>();
        List<Long> pddGoodsList = new ArrayList<>();
@@ -2127,9 +2195,9 @@
            if (cg.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
                tbGoodsList.add(cg.getGoodsId());
            } else if (cg.getGoodsType() == Constant.SOURCE_TYPE_JD) {
                jdGoodsList.add(cg.getGoodsId());
                jdGoodsList.add(Long.parseLong( cg.getGoodsId()));
            } else if (cg.getGoodsType() == Constant.SOURCE_TYPE_PDD) {
                pddGoodsList.add(cg.getGoodsId());
                pddGoodsList.add(Long.parseLong(cg.getGoodsId()));
            }
        }
@@ -2198,7 +2266,11 @@
            return;
        }
        link = JDApiUtil.convertLinkWithSubUnionId(link, null, null, pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_JD, SystemPIDInfo.PidType.fanli), uid + "");
        try {
            link = JDApiUtil.convertLinkWithSubUnionId(link, null, null, pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_JD, SystemPIDInfo.PidType.fanli), uid + "");
        } catch (Exception e) {
            logger.warn(String.format("京东转链出错:materialId-%s", link), e);
        }
        GoodsJumpLinkVO vo = GoodsJumpUtil.getJDJumpInfo(link);
@@ -2209,7 +2281,7 @@
    @RequestMapping(value = "convertPDDLink")
    public void convertPDDLink(AcceptData acceptData, String resourceType, String channelType, Long uid, PrintWriter out) {
        if (StringUtil.isNullOrEmpty(resourceType)&&StringUtil.isNullOrEmpty(channelType)) {
        if (StringUtil.isNullOrEmpty(resourceType) && StringUtil.isNullOrEmpty(channelType)) {
            out.print(JsonUtil.loadFalseResult(1, "resourceType|channelType为空"));
            return;
        }
@@ -2232,7 +2304,7 @@
    }
    @RequestMapping(value = "getTaoBaoGoodsDetailImgs")
    public void getTaoBaoGoodsDetailImgs(AcceptData acceptData, Long id, PrintWriter out) {
    public void getTaoBaoGoodsDetailImgs(AcceptData acceptData, String id, PrintWriter out) {
        TaoBaoGoodsImportantInfo info = DaTaoKeApiUtil.getGoodsImportantInfo(id);
        if (info == null || info.getDetailImages() == null) {
            out.print(JsonUtil.loadFalseResult(""));