admin
2021-06-11 bc9d4bf3fddcb3107f8509159a250f7a5a5f8ae5
fanli/src/main/java/com/yeshi/fanli/controller/client/lijin/GoodsControllerLijin.java
@@ -14,18 +14,25 @@
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.SystemPIDInfo;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.ShamUser;
import com.yeshi.fanli.entity.goods.CollectionGoodsV2;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.exception.goods.CommonGoodsException;
import com.yeshi.fanli.exception.goods.ScanHistoryException;
import com.yeshi.fanli.exception.pdd.PDDApiException;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
import com.yeshi.fanli.lijin.manager.GoodsLijinMnager;
import com.yeshi.fanli.lijin.manager.UserLijinMnager;
import com.yeshi.fanli.service.inter.goods.CollectionGoodsV2Service;
import com.yeshi.fanli.service.inter.goods.ScanHistoryV2Service;
import com.yeshi.fanli.service.inter.pdd.PDDAuthService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService;
import com.yeshi.fanli.service.inter.user.ShamUserService;
import com.yeshi.fanli.service.manger.PIDManager;
import com.yeshi.fanli.util.*;
import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil;
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOLijinFactory;
@@ -77,6 +84,16 @@
    @Resource
    private GoodsLijinMnager goodsLijinMnager;
    @Resource
    private UserLijinMnager userLijinMnager;
    @Resource
    private PIDManager pidManager;
    @Resource
    private ScanHistoryV2Service scanHistoryV2Service;
    /**
     * 获取商品详情
     *
@@ -91,9 +108,10 @@
        GoodsDetailVO goodsDetailVO = new GoodsDetailVO();
        GoodsDetailVO.GoodsExtraVO extraVO = new GoodsDetailVO.GoodsExtraVO();
        GoodsMoneyConfigParamsDTO paramsDTO = new GoodsMoneyConfigParamsDTO();
        paramsDTO.setFanLiRate(new BigDecimal("60"));
        paramsDTO.setFanLiRate(goodsLijinMnager.getFanLiRate(uid));
        // 领券人列表
        List<ShamUser> listCouponUser = new ArrayList<>();
        Long goodsIdSuning = null;
        switch (goodsType) {
            case Constant
                    .SOURCE_TYPE_TAOBAO:
@@ -101,6 +119,11 @@
                goodsDetailVO.setGoods(GoodsDetailVOLijinFactory.convertTaoBao(goods, paramsDTO));
                BigDecimal lijinAmount = goodsLijinMnager.getTBLijin(uid, goods);
                if (lijinAmount != null && lijinAmount.compareTo(new BigDecimal(0)) > 0) {
                    goodsDetailVO.getGoods().getMoneyInfo().setHongBaoMoney("¥" + lijinAmount);
                    GoodsDetailVOLijinFactory.fillRights(goodsDetailVO.getGoods());
                }
                // 店铺信息
                TaoBaoShop shop = taoBaoShopService.getTaoBaoShop(goods.getId(), goods.getSellerId());
                if (shop != null) {
@@ -112,7 +135,18 @@
                }
                extraVO.setDetailUrl("http://apph5.banliapp.com/apppage/goods_img.html?id=" + goodsId);
                ThreadUtil.run(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            scanHistoryV2Service.addScanHistory(uid, acceptData.getDevice(), goods);
                        } catch (CommonGoodsException e) {
                            e.printStackTrace();
                        } catch (ScanHistoryException e) {
                            e.printStackTrace();
                        }
                    }
                });
                break;
            case Constant
@@ -120,30 +154,81 @@
                JDGoods jdGoods = getJDGoods(Long.parseLong(goodsId));
                goodsDetailVO.setGoods(GoodsDetailVOLijinFactory.convertJDGoods(jdGoods, paramsDTO));
                extraVO.setDetailUrl("https://in.m.jd.com/product/jieshao/video/" + goodsId + ".html");
                ThreadUtil.run(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            scanHistoryV2Service.addJDScanHistory(uid, acceptData.getDevice(), jdGoods);
                        } catch (CommonGoodsException e) {
                            e.printStackTrace();
                        } catch (ScanHistoryException e) {
                            e.printStackTrace();
                        }
                    }
                });
                break;
            case Constant
                    .SOURCE_TYPE_PDD:
                PDDGoodsDetail pddGoodsDetail = getPDDGoods(Long.parseLong(goodsId), uid);
                PDDGoodsDetail pddGoodsDetail = getPDDGoods(acceptData.getSystem(), Long.parseLong(goodsId), uid);
                goodsDetailVO.setGoods(GoodsDetailVOLijinFactory.convertPDDGoods(pddGoodsDetail, paramsDTO));
                extraVO.setDetailUrl("http://apph5.banliapp.com/apppage/goods_img_pdd.html?id=" + goodsId);
                ThreadUtil.run(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            scanHistoryV2Service.addPDDScanHistory(uid, acceptData.getDevice(), pddGoodsDetail);
                        } catch (CommonGoodsException e) {
                            e.printStackTrace();
                        } catch (ScanHistoryException e) {
                            e.printStackTrace();
                        }
                    }
                });
                break;
            case Constant
                    .SOURCE_TYPE_VIP:
                VIPGoodsInfo vipGoodsInfo = VipShopApiUtil.getGoodsDetail(goodsId);
                goodsDetailVO.setGoods(GoodsDetailVOLijinFactory.convertVIPGoods(vipGoodsInfo, paramsDTO));
                ThreadUtil.run(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            scanHistoryV2Service.addVIPScanHistory(uid, acceptData.getDevice(), vipGoodsInfo);
                        } catch (CommonGoodsException e) {
                            e.printStackTrace();
                        } catch (ScanHistoryException e) {
                            e.printStackTrace();
                        }
                    }
                });
                break;
            case Constant
                    .SOURCE_TYPE_SUNING:
                String[] ids = SuningUtil.getGoodsIdDetail(goodsId);
                SuningGoodsInfo suningGoodsInfo = SuningApiUtil.getGoodsDetail(ids[1], ids[0]);
                goodsIdSuning = Long.parseLong(suningGoodsInfo.getCommodityInfo().getCommodityCode());
                goodsDetailVO.setGoods(GoodsDetailVOLijinFactory.convertSuningGoods(suningGoodsInfo, paramsDTO));
                extraVO.setDetailUrl("http://apph5.banliapp.com/apppage/goods_img_suning.html?id="
                        + suningGoodsInfo.getCommodityInfo().getCommodityCode() + "&supplierCode="
                        + suningGoodsInfo.getCommodityInfo().getSupplierCode());
                ThreadUtil.run(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            scanHistoryV2Service.addSuningScanHistory(uid, acceptData.getDevice(), suningGoodsInfo);
                        } catch (CommonGoodsException e) {
                            e.printStackTrace();
                        } catch (ScanHistoryException e) {
                            e.printStackTrace();
                        }
                    }
                });
                break;
        }
@@ -151,7 +236,7 @@
        //是否收藏
        extraVO.setCollected(false);
        if (uid != null) {
            CollectionGoodsV2 collectionGoodsV2 = collectionGoodsV2Service.findByUidAndAuctionId(uid, Long.parseLong(goodsDetailVO.getGoods().getGoodsId()), goodsType);
            CollectionGoodsV2 collectionGoodsV2 = collectionGoodsV2Service.findByUidAndAuctionId(uid, goodsType == Constant.SOURCE_TYPE_SUNING ? goodsIdSuning : Long.parseLong(goodsDetailVO.getGoods().getGoodsId()), goodsType);
            if (collectionGoodsV2 != null) {
                extraVO.setCollected(true);
            }
@@ -197,6 +282,7 @@
                data.put("type", 1);
                data.put("link", link);
                data.put("native", true);
                data.put("userLevel", userLijinMnager.getUserLevelInfo(uid, acceptData.getSystem()));
                out.print(JsonUtil.loadTrueResult(data));
            } catch (LiJinException e) {
                out.print(JsonUtil.loadFalseResult(e.getMsg()));
@@ -208,7 +294,7 @@
                out.print(JsonUtil.loadFalseResult(e.getMsg()));
                return;
            } catch (LiJinUserException e) {
                out.print(JsonUtil.loadFalseResult(2001,"今日领取红包次数超限"));
                out.print(JsonUtil.loadFalseResult(2001, "今日领取红包次数超限"));
                return;
            }
        }
@@ -220,7 +306,7 @@
     * @param goodsDetailVO
     */
    private void loadLijinInfo(Long uid, GoodsDetailVO goodsDetailVO) {
        VIPEnum vipRank = goodsLijinMnager.getVIPRank(uid);
        VIPEnum vipRank = userLijinMnager.getVIPRank(uid);
        GoodsDetailVO.GoodsHongBaoListVO.UserLevelVO userLevelVO = goodsLijinMnager.getUserLevel(vipRank);
        if (goodsDetailVO.getGoods().getPriceList() != null && goodsDetailVO.getGoods().getPriceList().size() > 0)
            goodsDetailVO.getGoods().getPriceList().get(0).setUserLevel(userLevelVO);
@@ -272,15 +358,16 @@
        return jdGoods;
    }
    private PDDGoodsDetail getPDDGoods(Long id, Long uid) {
    private PDDGoodsDetail getPDDGoods(SystemEnum system, Long id, Long uid) {
        String pid = pidManager.getPidCache(system, Constant.SOURCE_TYPE_PDD, SystemPIDInfo.PidType.fanli);
        PDDGoodsDetail pddGoods = null;
        try {
            pddGoods = PinDuoDuoApiUtil.getGoodsDetail(id, PinDuoDuoApiUtil.PID_FANLI, pddAuthService.getFanliCustomParams(uid));
            pddGoods = PinDuoDuoApiUtil.getGoodsDetail(id, pid, pddAuthService.getFanliCustomParams(uid));
        } catch (PDDApiException e) {
            e.printStackTrace();
            if (e.getCode() == PDDApiException.CODE_NOT_AUTH) {
                try {
                    pddGoods = PinDuoDuoApiUtil.getGoodsDetail(id, PinDuoDuoApiUtil.PID_FANLI, Constant.PDD_SEARCH_CUSTOMER_PARAMS);
                    pddGoods = PinDuoDuoApiUtil.getGoodsDetail(id, pid, Constant.PDD_SEARCH_CUSTOMER_PARAMS);
                } catch (PDDApiException e1) {
                }
            }