From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 25 二月 2025 16:41:22 +0800 Subject: [PATCH] 淘宝转链接口更新 --- fanli/src/main/java/com/yeshi/fanli/controller/client/lijin/GoodsControllerLijin.java | 215 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 192 insertions(+), 23 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 fbc66e3..47979c0 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 @@ -6,6 +6,7 @@ import com.ks.lijin.exception.LiJinGoodsException; import com.ks.lijin.exception.LiJinUserException; import com.ks.lijin.pojo.DO.LiJinExpendRecord; +import com.ks.lijin.pojo.DTO.MoneyInfo; import com.ks.vip.pojo.Enums.VIPEnum; import com.yeshi.common.entity.taobao.TaoBaoShop; import com.yeshi.common.entity.taobao.TaoKeAppInfo; @@ -18,19 +19,29 @@ 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.bus.user.UserInfo; 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.lijin.manager.UserLijinSendManager; +import com.yeshi.fanli.log.vo.UserGoodsScanLog; import com.yeshi.fanli.service.inter.goods.CollectionGoodsV2Service; +import com.yeshi.fanli.service.inter.goods.ScanHistoryV2Service; +import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService; 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.inter.user.UserInfoService; 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.GoodsDetailVOFactory; import com.yeshi.fanli.util.factory.goods.GoodsDetailVOLijinFactory; import com.yeshi.fanli.util.factory.goods.ShopInfoVOFactory; import com.yeshi.fanli.util.jd.JDApiUtil; @@ -44,20 +55,26 @@ import com.yeshi.fanli.lijin.vo.GoodsDetailVO; import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; import net.sf.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.yeshi.utils.JsonUtil; import org.yeshi.utils.MoneyBigDecimalUtil; +import org.yeshi.utils.NumberUtil; import javax.annotation.Resource; import java.io.PrintWriter; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Date; import java.util.List; @Controller @RequestMapping("api/lijin/goods") public class GoodsControllerLijin { + Logger userGoodsScanLogger = LoggerFactory.getLogger("userGoodsScanLog"); + @Resource private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil; @@ -80,8 +97,24 @@ @Resource private GoodsLijinMnager goodsLijinMnager; + + @Resource + private UserLijinMnager userLijinMnager; + + @Resource + private UserLijinSendManager userLijinSendManager; + @Resource private PIDManager pidManager; + @Resource + private ScanHistoryV2Service scanHistoryV2Service; + + @Resource + private UserInfoService userInfoService; + + @Resource + private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService; + /** * 鑾峰彇鍟嗗搧璇︽儏 @@ -92,23 +125,48 @@ * @param from * @return */ + @RequestMapping("getGoodsDetail") public void getGoodsDetail(AcceptData acceptData, int goodsType, String goodsId, Long uid, String from, PrintWriter out) { GoodsDetailVO goodsDetailVO = new GoodsDetailVO(); GoodsDetailVO.GoodsExtraVO extraVO = new GoodsDetailVO.GoodsExtraVO(); - GoodsMoneyConfigParamsDTO paramsDTO = new GoodsMoneyConfigParamsDTO(); - paramsDTO.setFanLiRate(new BigDecimal("60")); + GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem()); + + paramsDTO.setFanLiRate(goodsLijinMnager.getFanLiRate(uid)); // 棰嗗埜浜哄垪琛� List<ShamUser> listCouponUser = new ArrayList<>(); + Long goodsIdSuning = null; switch (goodsType) { case Constant .SOURCE_TYPE_TAOBAO: - TaoBaoGoodsBrief goods = getTaoBaoGoods(Long.parseLong(goodsId)); + if (uid != null) { + ThreadUtil.run(new Runnable() { + @Override + public void run() { + //灏忎簬10鍧楄嚜鍔ㄥ彂鏀惧閲� + userLijinSendManager.autoSendLijin(uid, new BigDecimal(10)); + } + }); + + } + + TaoBaoGoodsBrief goods = getTaoBaoGoods(goodsId); + + //鍔犺浇璧勯噾淇℃伅 + com.yeshi.fanli.vo.goods.GoodsDetailVO goodsDetailVO1 = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO); + goodsDetailVO1 = goodsLijinMnager.loadTBMoneyInfo(acceptData.getSystem(), uid, goods, goodsDetailVO1, true); goodsDetailVO.setGoods(GoodsDetailVOLijinFactory.convertTaoBao(goods, paramsDTO)); + //閲嶇疆璧勯噾淇℃伅 + goodsDetailVO.getGoods().setMoneyInfo(goodsDetailVO1.getMoneyInfo()); + + + GoodsDetailVOLijinFactory.fillRights(goodsDetailVO.getGoods()); + // 搴楅摵淇℃伅 - TaoBaoShop shop = taoBaoShopService.getTaoBaoShop(goods.getId(), goods.getSellerId()); + TaoBaoShop shop = taoBaoShopService.getTaoBaoShop(goods.getAuctionId(), goods.getSellerId()); if (shop != null) { String shopLink = shop.getShopLink(); if (StringUtil.isNullOrEmpty(shopLink)) { @@ -117,47 +175,122 @@ goodsDetailVO.getGoods().setShopInfo(ShopInfoVOFactory.convertTaoBaoShop(shop)); } - extraVO.setDetailUrl("http://apph5.banliapp.com/apppage/goods_img.html?id=" + goodsId); - + extraVO.setDetailUrl("http://apph5.banliapp.com/apppage/goods_img_tb.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 .SOURCE_TYPE_JD: - JDGoods jdGoods = getJDGoods(Long.parseLong(goodsId)); + JDGoods jdGoods = getJDGoods(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(acceptData.getSystem(), Long.parseLong(goodsId), uid); + PDDGoodsDetail pddGoodsDetail = getPDDGoods(acceptData.getSystem(), 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; } + + ThreadUtil.run(new Runnable() { + + + @Override + public void run() { + try { + userGoodsScanLogger.info("{}", new Gson().toJson(UserGoodsScanLog.UserGoodsScanLogFactory.create(goodsDetailVO.getGoods(), uid, acceptData.getUtdid(), acceptData.getDevice()))); + } catch (Exception e) { + + } + } + }); //鏄惁鏀惰棌 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 + "" : goodsDetailVO.getGoods().getGoodsId(), goodsType); if (collectionGoodsV2 != null) { extraVO.setCollected(true); } @@ -171,7 +304,13 @@ extraVO.setBuyValid(true); extraVO.setListCouponUser(listCouponUser); goodsDetailVO.setExtra(extraVO); - loadLijinInfo(uid, goodsDetailVO); + try { + loadLijinInfo(uid, acceptData.getSystem(), goodsDetailVO); + } catch (Exception e) { + if (goodsDetailVO.getGoods().getMoneyInfo() != null) { + goodsDetailVO.getGoods().getMoneyInfo().setHongBaoMoney("0.00"); + } + } //娓呴櫎涓存椂淇℃伅 goodsDetailVO.getGoods().setTempCoupon(null); if (goodsDetailVO.getGoods().getLabels() == null) @@ -189,8 +328,19 @@ //TODO 鑾峰彇閾炬帴 } else { //鍟嗗搧鏈韩绀奸噾 + //鑾峰彇鐢ㄦ埛娉ㄥ唽鏃堕棿 + UserInfo user = userInfoService.getUserByIdWithMybatis(uid); + try { - LiJinExpendRecord record = goodsLijinMnager.createTBLijin(Long.parseLong(goodsId), uid); + userLijinSendManager.autoSendLijin(uid, new BigDecimal(10)); + userLijinSendManager.autoRecieveLijin(acceptData.getSystem(), acceptData.getDevice(), uid); + } catch (Exception e) { + e.printStackTrace(); + } + + + try { + LiJinExpendRecord record = goodsLijinMnager.createTBLijin(goodsId, uid, new Date(user.getCreatetime())); String sendUrl = record.getSendUrl(); if (StringUtil.isNullOrEmpty(sendUrl)) { out.print(JsonUtil.loadFalseResult("绀奸噾鍒涘缓澶辫触")); @@ -203,6 +353,13 @@ data.put("type", 1); data.put("link", link); data.put("native", true); + data.put("userLevel", userLijinMnager.getUserLevelInfo(uid, acceptData.getSystem())); + //鑾峰彇浠婃棩鐨勫墿浣欐鏁� + try { + int leftCount = goodsLijinMnager.getTodayLeftCount(uid, new Date(user.getCreatetime())); + data.put("todayLeftCount", "绔嬪噺鏈轰細锛�-1娆� 浠婃棩鍓╀綑锛�" + leftCount + "娆�"); + } catch (Exception e) { + } out.print(JsonUtil.loadTrueResult(data)); } catch (LiJinException e) { out.print(JsonUtil.loadFalseResult(e.getMsg())); @@ -214,6 +371,9 @@ out.print(JsonUtil.loadFalseResult(e.getMsg())); return; } catch (LiJinUserException e) { + if (e.getCode() == LiJinUserException.CODE_USER_BALANCE_NOT_ENOUGH) { + //TODO 浣欓涓嶈冻 + } out.print(JsonUtil.loadFalseResult(2001, "浠婃棩棰嗗彇绾㈠寘娆℃暟瓒呴檺")); return; } @@ -225,26 +385,35 @@ * * @param goodsDetailVO */ - private void loadLijinInfo(Long uid, GoodsDetailVO goodsDetailVO) { - VIPEnum vipRank = goodsLijinMnager.getVIPRank(uid); - GoodsDetailVO.GoodsHongBaoListVO.UserLevelVO userLevelVO = goodsLijinMnager.getUserLevel(vipRank); + private void loadLijinInfo(Long uid, SystemEnum system, GoodsDetailVO goodsDetailVO) { + VIPEnum vipRank = userLijinMnager.getVIPRank(uid); + GoodsDetailVO.GoodsHongBaoListVO.UserLevelVO userLevelVO = goodsLijinMnager.getUserLevel(system, vipRank, true); + //杩斿埄UserLevel if (goodsDetailVO.getGoods().getPriceList() != null && goodsDetailVO.getGoods().getPriceList().size() > 0) goodsDetailVO.getGoods().getPriceList().get(0).setUserLevel(userLevelVO); + //绀奸噾UserLevel + userLevelVO = goodsLijinMnager.getUserLevel(system, vipRank, false); goodsLijinMnager.loadLijinInfo(vipRank, goodsDetailVO, userLevelVO); } - private TaoBaoGoodsBrief getTaoBaoGoods(Long id) { + private TaoBaoGoodsBrief getTaoBaoGoods(String id) { try { TaoBaoGoodsBrief goods = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(id); if (goods != null) { return goods; } TaoKeAppInfo app = new TaoKeAppInfo(); - app.setAppKey(TaoBaoConstant.TAOBAO_COMMON_APPKEY); - app.setAppSecret(TaoBaoConstant.TAOBAO_COMMON_APPSECRET); - app.setPid(TaoBaoConstant.TAOBAO_COMMON_PID); - app.setAdzoneId(TaoBaoConstant.TAOBAO_COMMON_PID.split("_")[3]); + if (NumberUtil.isNumeric(id)) { + app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY); + app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET); + app.setPid(TaoBaoConstant.TAOBAO_PID_DEFAULT); + } else { + app.setAppKey(TaoBaoConstant.TAOBAO_COMMON_APPKEY); + app.setAppSecret(TaoBaoConstant.TAOBAO_COMMON_APPSECRET); + app.setPid(TaoBaoConstant.TAOBAO_COMMON_PID); + } + app.setAdzoneId(app.getPid().split("_")[3]); goods = TaoKeApiUtil.searchGoodsDetail(id, app); final TaoBaoGoodsBrief finalGoods = goods; @@ -269,16 +438,16 @@ return null; } - private JDGoods getJDGoods(Long id) { + private JDGoods getJDGoods(String id) { JDGoods jdGoods = JDApiUtil.queryGoodsDetail(id); // 楂樼骇鎺ュ彛 if (jdGoods == null) { - jdGoods = JDUtil.getGoodsDetail(id); // 鐖彇缃戦〉 +// jdGoods = JDUtil.getGoodsDetail(id); // 鐖彇缃戦〉 // jdGoods = JDApiUtil.getGoodsDetail(id); // 鏅�氭帴鍙� } return jdGoods; } - private PDDGoodsDetail getPDDGoods(SystemEnum system, Long id, Long uid) { + private PDDGoodsDetail getPDDGoods(SystemEnum system, String id, Long uid) { String pid = pidManager.getPidCache(system, Constant.SOURCE_TYPE_PDD, SystemPIDInfo.PidType.fanli); PDDGoodsDetail pddGoods = null; try { -- Gitblit v1.8.0