From bc9d4bf3fddcb3107f8509159a250f7a5a5f8ae5 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期五, 11 六月 2021 17:13:01 +0800
Subject: [PATCH] 特价bug修复

---
 fanli/src/main/java/com/yeshi/fanli/controller/client/lijin/GoodsControllerLijin.java |  217 +++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 156 insertions(+), 61 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/lijin/GoodsControllerLijin.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/lijin/GoodsControllerLijin.java
index b2c75c6..bac3c92 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/lijin/GoodsControllerLijin.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/lijin/GoodsControllerLijin.java
@@ -1,6 +1,12 @@
 package com.yeshi.fanli.controller.client.lijin;
 
 import com.google.gson.Gson;
+import com.ks.lijin.exception.LiJinAmountException;
+import com.ks.lijin.exception.LiJinException;
+import com.ks.lijin.exception.LiJinGoodsException;
+import com.ks.lijin.exception.LiJinUserException;
+import com.ks.lijin.pojo.DO.LiJinExpendRecord;
+import com.ks.vip.pojo.Enums.VIPEnum;
 import com.yeshi.common.entity.taobao.TaoBaoShop;
 import com.yeshi.common.entity.taobao.TaoKeAppInfo;
 import com.yeshi.common.vo.ClientTextStyleVO;
@@ -8,21 +14,26 @@
 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.util.Constant;
-import com.yeshi.fanli.util.StringUtil;
-import com.yeshi.fanli.util.TaoBaoConstant;
-import com.yeshi.fanli.util.ThreadUtil;
+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;
 import com.yeshi.fanli.util.factory.goods.ShopInfoVOFactory;
@@ -36,6 +47,7 @@
 import com.yeshi.fanli.util.vipshop.VipShopApiUtil;
 import com.yeshi.fanli.lijin.vo.GoodsDetailVO;
 import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
+import net.sf.json.JSONObject;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.yeshi.utils.JsonUtil;
@@ -69,6 +81,19 @@
     @Resource
     private TaoBaoShopService taoBaoShopService;
 
+    @Resource
+    private GoodsLijinMnager goodsLijinMnager;
+
+
+    @Resource
+    private UserLijinMnager userLijinMnager;
+
+    @Resource
+    private PIDManager pidManager;
+    @Resource
+    private ScanHistoryV2Service scanHistoryV2Service;
+
+
     /**
      * 鑾峰彇鍟嗗搧璇︽儏
      *
@@ -83,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:
@@ -93,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) {
@@ -104,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
@@ -112,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;
         }
 
@@ -143,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);
             }
@@ -157,66 +250,67 @@
         extraVO.setBuyValid(true);
         extraVO.setListCouponUser(listCouponUser);
         goodsDetailVO.setExtra(extraVO);
-        loadLijinInfo(goodsDetailVO.getGoods());
-
-
+        loadLijinInfo(uid, goodsDetailVO);
         //娓呴櫎涓存椂淇℃伅
         goodsDetailVO.getGoods().setTempCoupon(null);
         if (goodsDetailVO.getGoods().getLabels() == null)
             goodsDetailVO.getGoods().setLabels(new ArrayList<>());
-        goodsDetailVO.getGoods().getLabels().add(new ClientTextStyleVO("澶╃尗", "#FF2C4A"));
+        goodsDetailVO.getGoods().getLabels().add(0, new ClientTextStyleVO(ShopUtil.getShopTypeName(goodsDetailVO.getGoods().getShopType()), "#FF2C4A"));
         out.print(JsonUtil.loadTrueResult(new Gson().toJson(goodsDetailVO)));
+    }
+
+    @RequestMapping("buyWithLijin")
+    public void buyWithLijin(AcceptData acceptData, int goodsType, String goodsId, String lijinId, Long uid, String from, PrintWriter out) {
+        String[] lijinTypes = lijinId.split("#");
+        String lijinType = lijinTypes[0];
+        if (lijinType.equalsIgnoreCase(GoodsDetailVO.GoodsHongBaoListVO.TYPE_LIJIN_LINK)) {
+            //绀奸噾閾炬帴
+            //TODO 鑾峰彇閾炬帴
+        } else {
+            //鍟嗗搧鏈韩绀奸噾
+            try {
+                LiJinExpendRecord record = goodsLijinMnager.createTBLijin(Long.parseLong(goodsId), uid);
+                String sendUrl = record.getSendUrl();
+                if (StringUtil.isNullOrEmpty(sendUrl)) {
+                    out.print(JsonUtil.loadFalseResult("绀奸噾鍒涘缓澶辫触"));
+                    return;
+                }
+
+                JSONObject data = new JSONObject();
+                JSONObject link = new JSONObject();
+                link.put("clickUrl", sendUrl);
+                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()));
+                return;
+            } catch (LiJinGoodsException e) {
+                out.print(JsonUtil.loadFalseResult(e.getMsg()));
+                return;
+            } catch (LiJinAmountException e) {
+                out.print(JsonUtil.loadFalseResult(e.getMsg()));
+                return;
+            } catch (LiJinUserException e) {
+                out.print(JsonUtil.loadFalseResult(2001, "浠婃棩棰嗗彇绾㈠寘娆℃暟瓒呴檺"));
+                return;
+            }
+        }
     }
 
     /**
      * 鍔犺浇绀奸噾淇℃伅
      *
-     * @param goodsInfoVO
+     * @param goodsDetailVO
      */
-    private void loadLijinInfo(GoodsDetailVO.GoodsInfoVO goodsInfoVO) {
-        //铏氭嫙鏁版嵁
-        List<BigDecimal> lijinList = new ArrayList<>();
-        lijinList.add(new BigDecimal("1"));
-        lijinList.add(new BigDecimal("2"));
-        lijinList.add(new BigDecimal("2.5"));
-
-        GoodsDetailVO.GoodsHongBaoListVO.UserLevelVO userLevelVO = new GoodsDetailVO.GoodsHongBaoListVO.UserLevelVO();
-        userLevelVO.setVipRank(1);
-        userLevelVO.setDesc("鍗囩骇涓洪搨閲戜細鍛樼孩鍖呭彲鎻愰珮100%");
-        userLevelVO.setLink("http://www.baidu.com");
-
-        if (goodsInfoVO.getPriceList() == null) {
-            goodsInfoVO.setPriceList(new ArrayList<>());
-        }
-
-        goodsInfoVO.getPriceList().get(0).setUserLevel(userLevelVO);
-
-        for (BigDecimal money : lijinList) {
-            GoodsDetailVO.GoodsHongBaoListVO price = new GoodsDetailVO.GoodsHongBaoListVO();
-            price.setType(2);
-            price.setSubMoney("楼" + money);
-            price.setUserLevel(userLevelVO);
-
-            //鏈�缁堜环鏍艰绠�=鍒稿悗浠�-绀奸噾
-            price.setFinalMoney("楼" + goodsInfoVO.getCouponPrice().subtract(money).toString());
-
-            List<GoodsDetailVO.GoodsHongBaoListVO.PriceInfo> priceInfos = new ArrayList<>();
-
-            priceInfos.add(new GoodsDetailVO.GoodsHongBaoListVO.PriceInfo("鍘熶环", goodsInfoVO.getZkPrice()));
-
-            if (goodsInfoVO.getTempCoupon() != null) {
-                priceInfos.add(new GoodsDetailVO.GoodsHongBaoListVO.PriceInfo("浼樻儬鍒�", "-楼" + MoneyBigDecimalUtil.getWithNoZera(goodsInfoVO.getTempCoupon().getAmount()).toString()));
-            }
-
-            priceInfos.add(new GoodsDetailVO.GoodsHongBaoListVO.PriceInfo("棣栧崟绀奸噾", "-楼1"));
-
-            priceInfos.add(new GoodsDetailVO.GoodsHongBaoListVO.PriceInfo("绀奸噾", "-" + "楼" + money));
-            price.setPriceDetails(priceInfos);
-            goodsInfoVO.getPriceList().add(0, price);
-        }
-
-        //璁$畻鏈�澶х殑绀奸噾闈㈤
-        goodsInfoVO.getMoneyInfo().setHongBaoMoney("楼3");
+    private void loadLijinInfo(Long uid, GoodsDetailVO goodsDetailVO) {
+        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);
+        goodsLijinMnager.loadLijinInfo(vipRank, goodsDetailVO, userLevelVO);
     }
 
 
@@ -264,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) {
                 }
             }

--
Gitblit v1.8.0