From e1a62ec62e7331d97af9302e90e1ce44af8235eb Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 27 一月 2021 15:26:55 +0800 Subject: [PATCH] 拼多多授权绑定 --- fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsControllerV2.java | 205 ++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 154 insertions(+), 51 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsControllerV2.java index 091d2e6..fa5ef77 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsControllerV2.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsControllerV2.java @@ -10,7 +10,10 @@ import javax.annotation.Resource; import com.yeshi.fanli.entity.SystemEnum; +import com.yeshi.fanli.entity.SystemFunction; +import com.yeshi.fanli.service.inter.pdd.PDDAuthService; import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; +import com.yeshi.fanli.util.*; import org.json.simple.JSONArray; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @@ -86,14 +89,8 @@ import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService; import com.yeshi.fanli.service.inter.user.vip.UserVipConfigService; import com.yeshi.fanli.service.manger.user.UserLevelManager; -import com.yeshi.fanli.util.Constant; import org.yeshi.utils.MoneyBigDecimalUtil; -import com.yeshi.fanli.util.RedisManager; -import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.TaoBaoConstant; -import com.yeshi.fanli.util.ThreadUtil; import org.yeshi.utils.TimeUtil; -import com.yeshi.fanli.util.VersionUtil; import com.yeshi.fanli.util.cache.JDGoodsCacheUtil; import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil; import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil; @@ -213,6 +210,10 @@ @Resource private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService; + + + @Resource + private PDDAuthService pddAuthService; private ConfigParamsDTO getParamsDTO(String platform, String version, Long uid, SystemEnum system) { UserLevelEnum level = UserLevelEnum.daRen; @@ -357,7 +358,7 @@ try { goods = TaoKeApiUtil.searchGoodsDetail(id, app); if (goods.getTkRate() == null || new BigDecimal(0).compareTo(goods.getTkRate()) == 0) { - TaoBaoGoodsBrief linkInfo = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), app,null,null); + TaoBaoGoodsBrief linkInfo = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), app, null, null); if (linkInfo != null) { goods.setAuctionUrl(linkInfo.getAuctionUrl()); goods.setCouponLink(linkInfo.getCouponLink()); @@ -794,7 +795,7 @@ if (couponInfo != null) { // 鍒搁摼鎺ュ鐞� String materialId = "https://item.jd.com/" + id + ".html"; - String url = JDApiUtil.convertLinkWithSubUnionId(materialId, couponInfo.getLink(), + String url = JDApiUtil.convertLinkWithSubUnionId(materialId, couponInfo.getLink(), null, JDApiUtil.POSITION_COUPON + "", null); couponInfo.setLink(url); } @@ -927,7 +928,7 @@ return; } - PDDGoodsDetail pddGoods = PinDuoDuoApiUtil.getGoodsDetail(id); + PDDGoodsDetail pddGoods = PinDuoDuoApiUtil.getGoodsDetail(id, PinDuoDuoApiUtil.PID_FANLI, pddAuthService.getFanliCustomParams(uid)); if (pddGoods == null) { out.print(JsonUtil.loadFalseResult(2, "鍟嗗搧涓嶅瓨鍦�")); return; @@ -939,7 +940,7 @@ GoodsDetailVO goodsDetail = GoodsDetailVOFactory.convertPDDGoods(pddGoods, paramsDTO); if (goodsDetail != null && goodsDetail.getMoneyInfo() != null && userVIPInfoService.isVIP(uid)) { goodsDetail.getMoneyInfo().setFanliMoney(goodsDetail.getMoneyInfo().getMaxMoney()); - goodsDetail.getMoneyInfo().setShareMoney("楼" + PinDuoDuoUtil.getGoodsFanLiMoney(pddGoods, + goodsDetail.getMoneyInfo().setShareMoney("楼" + PinDuoDuoUtil.getGoodsShareMoney(pddGoods, hongBaoManageService.getShareRate(UserLevelEnum.superVIP, acceptData.getSystem()))); goodsDetail.getMoneyInfo().setRateInfo(goodsDetail.getMoneyInfo().getMaxRateInfo()); goodsDetail.getMoneyInfo().setCompositionInfo(goodsDetail.getMoneyInfo().getMaxCompositionInfo()); @@ -974,7 +975,7 @@ CouponInfoVO couponInfo = goodsDetail.getCouponInfo(); PDDPromotionUrl convertUrl = null; if (couponInfo != null) { - convertUrl = PinDuoDuoApiUtil.convert(id, PinDuoDuoApiUtil.PID_COUPON + "", null); + convertUrl = PinDuoDuoApiUtil.convert(id, PinDuoDuoApiUtil.PID_COUPON + "", null, false); if (convertUrl != null) couponInfo.setLink(convertUrl.getUrl()); } @@ -1070,6 +1071,14 @@ if (VersionUtil.greaterThan_2_1_2(acceptData.getPlatform(), acceptData.getVersion())) { getCloudInfo(acceptData, uid, goodsDetail, extraVO); // 浜戝彂鍗曟枃妗堜俊鎭� + } + + if (extraVO.getListCouponUser() == null) { + extraVO.setListCouponUser(new ArrayList<>()); + } + + if (extraVO.getListShareUser() == null) { + extraVO.setListShareUser(new ArrayList<>()); } // 鍏嶅崟鍟嗗搧 @@ -1218,6 +1227,14 @@ shareInfoVO.setHelpLink(helpLink); extraVO.setShare(shareInfoVO); + if (extraVO.getListShareUser() == null) { + extraVO.setListShareUser(new ArrayList<>()); + } + + if (extraVO.getListCouponUser() == null) { + extraVO.setListCouponUser(new ArrayList<>()); + } + // 浜戝彂鍗曟枃妗堜俊鎭� getCloudInfo(acceptData, uid, goodsDetail, extraVO); @@ -1351,6 +1368,14 @@ ShareVO shareInfoVO = new ShareVO(); shareInfoVO.setHelpLink(helpLink); extraVO.setShare(shareInfoVO); + + if (extraVO.getListShareUser() == null) { + extraVO.setListShareUser(new ArrayList<>()); + } + + if (extraVO.getListCouponUser() == null) { + extraVO.setListCouponUser(new ArrayList<>()); + } // 浜戝彂鍗曟枃妗堜俊鎭� getCloudInfo(acceptData, uid, goodsDetail, extraVO); @@ -1493,7 +1518,7 @@ Long[] strings = new Long[goodsIdList.size()]; pddfilter.setGoodsIdList(goodsIdList.toArray(strings)); - PDDGoodsResult result = PinDuoDuoApiUtil.searchGoods(pddfilter); + PDDGoodsResult result = PinDuoDuoApiUtil.searchGoods(pddfilter, Constant.PDD_SEARCH_CUSTOMER_PARAMS); if (result != null) { List<PDDGoodsDetail> goodsList = result.getGoodsList(); if (goodsList != null && goodsList.size() > 0) { @@ -1602,6 +1627,49 @@ } } + + /** + * 鑾峰彇浜笢棰嗗埜閾炬帴锛堜笉杩斿埄锛� + * + * @param acceptData + * @param id + * @param couponUrl + * @param source + * @param out + */ + private void getJDLinkWithoutFanLi(AcceptData acceptData, Long id, String couponUrl, String source, PrintWriter out) { + JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(id); + if (goods == null) { + out.print(JsonUtil.loadFalseResult(2, "鍟嗗搧宸蹭笅鏋�")); + return; + } + String jumpLink = null; + String materialId = "https://item.jd.com/" + id + ".html"; + if (StringUtil.isNullOrEmpty(couponUrl)) { + JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(goods.getCouponInfoList(), goods.getPrice()); + if (couponInfo != null) { + couponUrl = couponInfo.getLink(); + } + jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, JDApiUtil.POSITION_COUPON + "", + ""); + if (jumpLink == null) { + jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, null, null, JDApiUtil.POSITION_COUPON + "", + ""); + } + } else { + jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, JDApiUtil.POSITION_COUPON + "", + ""); + if (StringUtil.isNullOrEmpty(jumpLink)) { + jumpLink = couponUrl; + } + } + + JSONObject data = new JSONObject(); + data.put("native", true); + data.put("jumpLink", jumpLink); + out.print(JsonUtil.loadTrueResult(data)); + } + /** * 浜笢璐拱閾炬帴 * @@ -1614,15 +1682,23 @@ */ @RequestMapping(value = "getJDLink") public void getJDLink(AcceptData acceptData, Long uid, Long id, String couponUrl, String source, PrintWriter out) { - if (uid == null || uid <= 0) { - out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛ID涓嶈兘涓虹┖")); - return; - } + if (id == null || id <= 0) { out.print(JsonUtil.loadFalseResult(1, "鍟嗗搧ID涓嶈兘涓虹┖")); return; } + + if (!SystemInfoUtil.hasFunctions(acceptData.getSystem(), SystemFunction.fanli)) { + getJDLinkWithoutFanLi(acceptData, id, couponUrl, source, out); + return; + } + + if (uid == null || uid <= 0) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛ID涓嶈兘涓虹┖")); + return; + } + UserInfo user = userInfoService.getUserByIdWithMybatis(uid); if (user != null && user.getState() != UserInfo.STATE_NORMAL) { @@ -1643,14 +1719,14 @@ if (couponInfo != null) { couponUrl = couponInfo.getLink(); } - jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_FANLI + "", + jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, JDApiUtil.POSITION_FANLI + "", uid + ""); if (jumpLink == null) { - jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, null, JDApiUtil.POSITION_FANLI + "", + jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, null, null, JDApiUtil.POSITION_FANLI + "", uid + ""); } } else { - jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_FANLI + "", + jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, JDApiUtil.POSITION_FANLI + "", uid + ""); if (StringUtil.isNullOrEmpty(jumpLink)) { jumpLink = couponUrl; @@ -1680,7 +1756,7 @@ String jumpLink = null; String materialId = "https://item.jd.com/" + id + ".html"; - jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_FANLI + "", null); + jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, JDApiUtil.POSITION_FANLI + "", null); if (StringUtil.isNullOrEmpty(jumpLink)) { jumpLink = couponUrl; } @@ -1702,21 +1778,31 @@ */ @RequestMapping(value = "getPDDLink") public void getPDDLink(AcceptData acceptData, Long uid, Long id, String source, PrintWriter out) { - if (uid == null || uid <= 0) { - out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛ID涓嶈兘涓虹┖")); - return; - } if (id == null || id <= 0) { out.print(JsonUtil.loadFalseResult(1, "鍟嗗搧ID涓嶈兘涓虹┖")); return; } - UserInfo user = userInfoService.getUserByIdWithMybatis(uid); - if (user != null && user.getState() != UserInfo.STATE_NORMAL) { - out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC)); - return; + String pid = PinDuoDuoApiUtil.PID_FANLI; + //鍙槸棰嗗埜 + if (!SystemInfoUtil.hasFunctions(acceptData.getSystem(), SystemFunction.fanli)) { + pid = PinDuoDuoApiUtil.PID_COUPON; + uid = null; + } else { + if (uid == null || uid <= 0) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛ID涓嶈兘涓虹┖")); + return; + } + + UserInfo user = userInfoService.getUserByIdWithMybatis(uid); + if (user != null && user.getState() != UserInfo.STATE_NORMAL) { + out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC)); + return; + } + } + PDDGoodsDetail goods = pinDuoDuoCacheUtil.getGoodsInfo(id); if (goods == null) { @@ -1724,12 +1810,15 @@ return; } - PDDPromotionUrl convertUrl = PinDuoDuoApiUtil.convert(id, PinDuoDuoApiUtil.PID_FANLI + "", uid + ""); + //TODO 鏄惁闇�瑕佽繑鍥炵粦瀹氶摼鎺� + String customParams = pddAuthService.getFanliCustomParams(uid); + boolean auth = PinDuoDuoApiUtil.isAuth(pid, customParams); + PDDPromotionUrl convertUrl = PinDuoDuoApiUtil.convert(id, pid + "", customParams, !auth); JSONObject data = new JSONObject(); data.put("native", true); - data.put("jumpLink", convertUrl.getUrl()); data.put("nativeJumpLink", PinDuoDuoUtil.getAndroidNativeURI(convertUrl.getUrl())); + LogHelper.test(String.format("鎷煎澶氳浆閾�:uid:%s data:%s", uid + "", data.toString())); out.print(JsonUtil.loadTrueResult(data)); // 鑾峰緱閲戝竵 @@ -1747,20 +1836,28 @@ */ @RequestMapping(value = "getVIPLink") public void getVIPLink(AcceptData acceptData, Long uid, Long id, String source, PrintWriter out) { - if (uid == null || uid <= 0) { - out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛ID涓嶈兘涓虹┖")); - return; - } - if (id == null || id <= 0) { out.print(JsonUtil.loadFalseResult(1, "鍟嗗搧ID涓嶈兘涓虹┖")); return; } - UserInfo user = userInfoService.getUserByIdWithMybatis(uid); - if (user != null && user.getState() != UserInfo.STATE_NORMAL) { - out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC)); - return; + String tag = null; + //鍙槸棰嗗埜 + if (!SystemInfoUtil.hasFunctions(acceptData.getSystem(), SystemFunction.fanli)) { + tag = VipShopUtil.getCouponChanTag(); + } else { + if (uid == null || uid <= 0) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛ID涓嶈兘涓虹┖")); + return; + } + + UserInfo user = userInfoService.getUserByIdWithMybatis(uid); + if (user != null && user.getState() != UserInfo.STATE_NORMAL) { + out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC)); + return; + } + + tag = VipShopUtil.getBuyChanTag(uid); } VIPGoodsInfo goods = VipShopApiUtil.getGoodsDetail(id + ""); @@ -1769,7 +1866,7 @@ return; } - VIPConvertResultDTO convertUrl = VipShopApiUtil.convertLink(id + "", VipShopUtil.getBuyChanTag(uid)); + VIPConvertResultDTO convertUrl = VipShopApiUtil.convertLink(id + "", tag); JSONObject data = new JSONObject(); data.put("native", true); data.put("jumpLink", convertUrl.getUrl()); @@ -1782,21 +1879,27 @@ @RequestMapping(value = "getSuningLink") public void getSuningLink(AcceptData acceptData, Long uid, String id, String source, PrintWriter out) { - if (uid == null || uid <= 0) { - out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛ID涓嶈兘涓虹┖")); - return; - } - if (StringUtil.isNullOrEmpty(id)) { out.print(JsonUtil.loadFalseResult(1, "鍟嗗搧ID涓嶈兘涓虹┖")); return; } - UserInfo user = userInfoService.getUserByIdWithMybatis(uid); - if (user != null && user.getState() != UserInfo.STATE_NORMAL) { - out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC)); - return; + String pid = SuningApiUtil.PID_BUY; + if (!SystemInfoUtil.hasFunctions(acceptData.getSystem(), SystemFunction.fanli)) { + pid = SuningApiUtil.PID_COUPON; + uid = null; + } else { + if (uid == null || uid <= 0) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛ID涓嶈兘涓虹┖")); + return; + } + UserInfo user = userInfoService.getUserByIdWithMybatis(uid); + if (user != null && user.getState() != UserInfo.STATE_NORMAL) { + out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC)); + return; + } } + String[] sts = SuningUtil.getGoodsIdDetail(id); String supplierCode = sts[0]; @@ -1812,7 +1915,7 @@ if (!StringUtil.isNullOrEmpty(goods.getCouponInfo().getCouponUrl())) quanUrl = goods.getCouponInfo().getCouponUrl(); String link = SuningApiUtil.convertLink(SuningUtil.getProductUrl(supplierCode, goodsCode), quanUrl, - SuningApiUtil.PID_BUY, uid + ""); + pid, uid + ""); JSONObject data = new JSONObject(); data.put("native", false); data.put("jumpLink", link); @@ -2000,7 +2103,7 @@ return; } - link = JDApiUtil.convertLinkWithSubUnionId(link, null, JDApiUtil.POSITION_FANLI + "", uid + ""); + link = JDApiUtil.convertLinkWithSubUnionId(link, null, null, JDApiUtil.POSITION_FANLI + "", uid + ""); JSONObject data = new JSONObject(); data.put("link", link); -- Gitblit v1.8.0