From 70ebe043e6b62756be9e257fe954c747d46568b9 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 16 九月 2022 19:00:59 +0800 Subject: [PATCH] 商品ID字符串化 --- fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java | 142 ++++++++++++++++++++++++++++++++-------------- 1 files changed, 98 insertions(+), 44 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java index 0457f70..bc8fcec 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java @@ -1,7 +1,9 @@ package com.yeshi.fanli.controller.client.v2; import java.io.PrintWriter; +import java.io.UnsupportedEncodingException; import java.math.BigDecimal; +import java.net.URLEncoder; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; @@ -11,11 +13,17 @@ import javax.servlet.http.HttpServletRequest; import com.yeshi.fanli.entity.SystemEnum; +import com.yeshi.fanli.entity.SystemFunction; +import com.yeshi.fanli.entity.SystemPIDInfo; import com.yeshi.fanli.exception.taobao.TaoBaoConvertLinkException; import com.yeshi.fanli.service.inter.pdd.PDDAuthService; +import com.yeshi.fanli.service.inter.user.*; +import com.yeshi.fanli.service.manger.PIDManager; import com.yeshi.fanli.service.manger.goods.TaoBaoLinkManager; import com.yeshi.fanli.util.*; import com.yeshi.fanli.util.StringUtil; +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; @@ -61,10 +69,6 @@ import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; import com.yeshi.fanli.service.inter.tlj.ConfigTaoLiJinService; import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinRecordService; -import com.yeshi.fanli.service.inter.user.UserInfoExtraService; -import com.yeshi.fanli.service.inter.user.UserInfoService; -import com.yeshi.fanli.service.inter.user.UserShareGoodsGroupService; -import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService; import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; import com.yeshi.fanli.util.cache.JDGoodsCacheUtil; import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil; @@ -91,6 +95,9 @@ @Controller @RequestMapping("api/v2/share") public class ShareControllerV2 { + + Logger logger = LoggerFactory.getLogger(ShareControllerV2.class); + @Resource private ShareGoodsService shareGoodsService; @@ -148,6 +155,12 @@ @Resource private PDDAuthService pddAuthService; + + @Resource + private PIDManager pidManager; + + @Resource + private UserFunctionsLimitService userFunctionsLimitService; private List<ShareGoodsCommentChoiceInfo> getCommentChoiceList(String token, String link, String inviteCode, BigDecimal fanliMoney) { @@ -212,9 +225,14 @@ return; } + if (userFunctionsLimitService.isLimit(uid, SystemFunction.share, new Date())) { + out.print(JsonUtil.loadFalseResult(1, "璇ュ姛鑳介檺鍒朵娇鐢�")); + return; + } + // 娣樺疂 if (goodsType == null || goodsType == Constant.SOURCE_TYPE_TAOBAO) { - createTaoBaoShare(acceptData, uid, Long.parseLong(goodsId), totalNum, source, needGoods, request, out); + createTaoBaoShare(acceptData, uid, goodsId, totalNum, source, needGoods, request, out); return; } @@ -245,8 +263,25 @@ } public static String getERCodeContentNew(String template, TaoBaoGoodsBrief goods, String token) { + String tempToken = ""; + String[] sts = token.split(" "); + if (sts.length > 1) { + for (int i = 0; i < sts.length - 1; i++) { + tempToken += sts[i] + " "; + } + } else { + tempToken = token; + } + tempToken = tempToken.trim(); + + try { + tempToken = URLEncoder.encode(tempToken, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + String commentText = template.replace("[鍘熶环]", goods.getZkPrice().toString()); - commentText = commentText.replace("[娣樺彛浠", token); + commentText = commentText.replace("[娣樺彛浠", tempToken); if (StringUtil.isNullOrEmpty(goods.getCouponInfo())) { commentText = commentText.replace("棰嗗埜鎶㈣喘", "鎶㈣喘"); commentText = commentText.replace("銆愬埜鍚庝环銆慬鍒稿悗浠穄鍏�", ""); @@ -276,7 +311,7 @@ * @param request * @param out */ - public void createTaoBaoShare(AcceptData acceptData, Long uid, Long goodsId, Integer totalNum, String source, + public void createTaoBaoShare(AcceptData acceptData, Long uid, String goodsId, Integer totalNum, String source, Boolean needGoods, HttpServletRequest request, PrintWriter out) { if (needGoods == null) needGoods = false; @@ -323,7 +358,7 @@ * @param request * @param out */ - public void createTaoLijin(Long uid, Long auctionId, int totalNum, String relationId, AcceptData acceptData, HttpServletRequest request, + public void createTaoLijin(Long uid, String auctionId, int totalNum, String relationId, AcceptData acceptData, HttpServletRequest request, PrintWriter out) { try { TaoBaoGoodsBrief goods = null; @@ -494,14 +529,14 @@ } } - public void createCommonTaoBaoShare(String platform, String version, Long goodsId, String inviteCode, Long uid, + public void createCommonTaoBaoShare(String platform, String version, String goodsId, String inviteCode, Long uid, boolean needGoods, String relationId, AcceptData acceptData, PrintWriter out) { SystemEnum system = SystemInfoUtil.getSystem(acceptData); try { ShareInfoVO shareInfo = new ShareInfoVO(); - TaoBaoLink taoBaoLink = taoBaoLinkManager.getTaoBaoLinkForShare(uid, goodsId, relationId, null); + TaoBaoLink taoBaoLink = taoBaoLinkManager.getTaoBaoLinkForShare(acceptData.getSystem(), uid, goodsId, relationId, null); if (taoBaoLink != null && taoBaoLink.getGoods() != null && needGoods) { GoodsMoneyConfigParamsDTO dto = orderHongBaoMoneyComputeService.getShowComputeRate(platform, version, acceptData.getSystem()); @@ -738,9 +773,19 @@ couponUrl = couponInfo.getLink(); } String materialId = "https://item.jd.com/" + goodsId + ".html"; - String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, JDApiUtil.POSITION_SHARE + "", uid + ""); + String pid = pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_JD, SystemPIDInfo.PidType.share); + String jumpLink = null; + try { + jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, pid, uid + ""); + } catch (Exception e) { + logger.warn(String.format("浜笢杞摼鍑洪敊锛歮aterialId-%s couponUrl-%s", materialId, couponUrl), e); + } if (StringUtil.isNullOrEmpty(jumpLink)) { - jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, null, null, JDApiUtil.POSITION_SHARE + "", uid + ""); + try { + jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, null, null, pid, uid + ""); + } catch (Exception e) { + logger.warn(String.format("浜笢杞摼鍑洪敊锛歮aterialId-%s couponUrl-%s", materialId, couponUrl), e); + } } ShareInfoVO shareInfo = new ShareInfoVO(); @@ -787,7 +832,7 @@ BigDecimal shareMoney = JDUtil.getGoodsFanLiMoney(jdGoods, shareRate); shareInfo.setShareMoney("楼" + shareMoney.toString()); try { - ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, goodsId, + ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, goodsId+"", Constant.SOURCE_TYPE_JD, false); shareInfo.setShareId(shareRecord.getRedisKey()); } catch (Exception e) { @@ -863,7 +908,7 @@ history.setTkCode(null); history.setLink(null); history.setQuanLink(null); - history.setGoodsId(goodsId); + history.setGoodsId(goodsId+""); history.setPostPicture(goods.getPicUrl()); history.setShareImg(jumpLinkNew); @@ -895,13 +940,15 @@ //鏌ヨ褰撳墠鐢ㄦ埛鏄惁鎺堟潈 + String pid = pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_PDD, SystemPIDInfo.PidType.share); + if (VersionUtil.greaterThan_2_1_5(acceptData.getPlatform(), acceptData.getVersion())) { - if (!PinDuoDuoApiUtil.isAuth(PinDuoDuoApiUtil.PID_SHARE, pddAuthService.getFanliCustomParams(uid))) { + if (!PinDuoDuoApiUtil.isAuth(pid, pddAuthService.getFanliCustomParams(uid))) { out.print(JsonUtil.loadFalseResult(20001, "灏氭湭澶囨,璇峰厛澶囨")); return; } } else { - if (System.currentTimeMillis() > TimeUtil.convertToTimeTemp("2021-05-01", "yyyy-MM-dd") && !PinDuoDuoApiUtil.isAuth(PinDuoDuoApiUtil.PID_SHARE, pddAuthService.getFanliCustomParams(uid))) { + if (System.currentTimeMillis() > TimeUtil.convertToTimeTemp("2021-05-01", "yyyy-MM-dd") && !PinDuoDuoApiUtil.isAuth(pid, pddAuthService.getFanliCustomParams(uid))) { out.print(JsonUtil.loadFalseResult(20001, "璇峰崌绾у埌鏈�鏂扮増")); return; } @@ -920,7 +967,7 @@ // AESUtil.encrypt(uid + "", Constant.UIDAESKEY), // goodsId + ""); - String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goods.getGoodsSign(), PinDuoDuoApiUtil.PID_SHARE + "", uid + ""); + String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goods.getGoodsSign(), pid, pddAuthService.getFanliCustomParams(uid) + ""); SystemEnum system = SystemInfoUtil.getSystem(acceptData); @@ -975,7 +1022,7 @@ shareInfo.setShareMoney("楼" + shareMoney.toString()); try { - ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, goodsId, + ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, goodsId+"", Constant.SOURCE_TYPE_PDD, false); shareInfo.setShareId(shareRecord.getRedisKey()); } catch (Exception e) { @@ -1050,7 +1097,7 @@ history.setTkCode(null); history.setLink(null); history.setQuanLink(null); - history.setGoodsId(goodsId); + history.setGoodsId(goodsId+""); history.setPostPicture(goods.getGoodsImageUrl()); history.setShareImg(jumpLink); List<String> imgList = null; @@ -1130,7 +1177,7 @@ shareInfo.setShareMoney("楼" + shareMoney.toString()); try { - ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, goodsId, + ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, goodsId+"", Constant.SOURCE_TYPE_VIP, false); shareInfo.setShareId(shareRecord.getRedisKey()); } catch (Exception e) { @@ -1179,7 +1226,7 @@ history.setTkCode(null); history.setLink(null); history.setQuanLink(null); - history.setGoodsId(goodsId); + history.setGoodsId(goodsId+""); history.setPostPicture(goods.getGoodsThumbUrl()); history.setShareImg(jumpLink.getUrl()); List<String> imgList = goods.getGoodsDetailPictures(); @@ -1224,7 +1271,7 @@ String couponLink = goods.getCouponInfo().getCouponUrl(); String jumpLink = SuningApiUtil.convertLink(SuningUtil.getProductUrl(sts[0], sts[1]), - StringUtil.isNullOrEmpty(couponLink) ? null : couponLink, SuningApiUtil.PID_SHARE, uid + ""); + StringUtil.isNullOrEmpty(couponLink) ? null : couponLink, pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_SUNING, SystemPIDInfo.PidType.share), uid + ""); ShareInfoVO shareInfo = new ShareInfoVO(); shareInfo.setClickUrl(jumpLink); @@ -1274,7 +1321,7 @@ try { ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsDetail(uid, - Long.parseLong(sts[1]), Constant.SOURCE_TYPE_SUNING, false); + Long.parseLong(sts[1])+"", Constant.SOURCE_TYPE_SUNING, false); shareInfo.setShareId(shareRecord.getRedisKey()); } catch (Exception e) { try { @@ -1360,7 +1407,7 @@ history.setTkCode(null); history.setLink(null); history.setQuanLink(null); - history.setGoodsId(Long.parseLong(sts[1])); + history.setGoodsId(Long.parseLong(sts[1])+""); if (goods.getCommodityInfo().getPictureUrl() != null && goods.getCommodityInfo().getPictureUrl().size() > 0) history.setPostPicture(goods.getCommodityInfo().getPictureUrl().get(0).getPicUrl()); @@ -1401,17 +1448,17 @@ } if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { - createTaoBaoViewText(goodsType, uid, template, Long.parseLong(goodsId), tljId, hasCoupon, out); + createTaoBaoViewText(acceptData.getSystem(), goodsType, uid, template, goodsId, tljId, hasCoupon, out); return; } if (goodsType == Constant.SOURCE_TYPE_JD) { - createJDViewText(goodsType, uid, template, Long.parseLong(goodsId), hasCoupon, out); + createJDViewText(acceptData.getSystem(), goodsType, uid, template, Long.parseLong(goodsId), hasCoupon, out); return; } if (goodsType == Constant.SOURCE_TYPE_PDD) { - createPDDViewText(goodsType, uid, template, Long.parseLong(goodsId), hasCoupon, out); + createPDDViewText(acceptData.getSystem(), goodsType, uid, template, Long.parseLong(goodsId), hasCoupon, out); return; } @@ -1421,7 +1468,7 @@ } if (goodsType == Constant.SOURCE_TYPE_SUNING) { - createSuNingViewText(goodsType, uid, template, goodsId, hasCoupon, out); + createSuNingViewText(acceptData.getSystem(), goodsType, uid, template, goodsId, hasCoupon, out); return; } } @@ -1437,7 +1484,7 @@ * @param hasCoupon * @param out */ - private void createTaoBaoViewText(Integer goodsType, Long uid, String template, Long goodsId, Long tljId, + private void createTaoBaoViewText(SystemEnum system, Integer goodsType, Long uid, String template, String goodsId, Long tljId, Boolean hasCoupon, PrintWriter out) { TaoBaoGoodsBrief goods = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(goodsId); if (goods == null) @@ -1472,11 +1519,12 @@ } if (StringUtil.isNullOrEmpty(token)) { + String pid = pidManager.getPidCache(system, Constant.SOURCE_TYPE_TAOBAO, SystemPIDInfo.PidType.share); TaoKeAppInfo app = new TaoKeAppInfo(); - app.setAdzoneId(TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT.split("_")[3]); + app.setAdzoneId(pid.split("_")[3]); app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY); app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET); - app.setPid(TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT); + app.setPid(pid); TaoBaoGoodsBrief goodsLink = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), app, null, null); if (goodsLink != null) token = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), @@ -1499,7 +1547,7 @@ * @param hasCoupon * @param out */ - private void createJDViewText(Integer goodsType, Long uid, String template, Long goodsId, Boolean hasCoupon, + private void createJDViewText(SystemEnum system, Integer goodsType, Long uid, String template, Long goodsId, Boolean hasCoupon, PrintWriter out) { JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(goodsId); if (goods == null) { @@ -1525,8 +1573,13 @@ couponUrl = couponInfo.getLink(); } String materialId = "https://item.jd.com/" + goodsId + ".html"; - String shortLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, JDApiUtil.POSITION_SHARE + "", - uid + ""); + String shortLink = null; + try { + shortLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, pidManager.getPidCache(system, Constant.SOURCE_TYPE_JD, SystemPIDInfo.PidType.share), + uid + ""); + } catch (Exception e) { + logger.warn(String.format("浜笢杞摼鍑洪敊锛歮aterialId-%s couponUrl-%s", materialId, couponUrl), e); + } String content = shareGoodsTextTemplateService.createContentJD(template, goods, shortLink, hasCoupon); JSONObject data = new JSONObject(); @@ -1544,7 +1597,7 @@ * @param hasCoupon * @param out */ - private void createPDDViewText(Integer goodsType, Long uid, String template, Long goodsId, Boolean hasCoupon, + private void createPDDViewText(SystemEnum system, Integer goodsType, Long uid, String template, Long goodsId, Boolean hasCoupon, PrintWriter out) { PDDGoodsDetail goods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); if (goods == null) { @@ -1572,7 +1625,7 @@ // goodsId + ""); // String shortLink = HttpUtil.getShortLink(url); - String shortLink = PinDuoDuoApiUtil.getPromotionUrl(goods.getGoodsSign(), PinDuoDuoApiUtil.PID_SHARE + "", uid + ""); + String shortLink = PinDuoDuoApiUtil.getPromotionUrl(goods.getGoodsSign(), pidManager.getPidCache(system, Constant.SOURCE_TYPE_PDD, SystemPIDInfo.PidType.share), uid + ""); // // 鍒涘缓鍙d护 // String token = PinDuoDuoApiUtil.createGenerate(goodsId); @@ -1626,7 +1679,7 @@ } - private void createSuNingViewText(Integer goodsType, Long uid, String template, String goodsId, Boolean hasCoupon, + private void createSuNingViewText(SystemEnum system, Integer goodsType, Long uid, String template, String goodsId, Boolean hasCoupon, PrintWriter out) { String[] ids = SuningUtil.getGoodsIdDetail(goodsId); SuningGoodsInfo goods = SuningApiUtil.getGoodsDetail(ids[1], ids[0]); @@ -1649,7 +1702,7 @@ String couponLink = goods.getCouponInfo().getCouponUrl(); String jumpLink = SuningApiUtil.convertLink(SuningUtil.getProductUrl(ids[0], ids[1]), - StringUtil.isNullOrEmpty(couponLink) ? null : couponLink, SuningApiUtil.PID_SHARE, uid + ""); + StringUtil.isNullOrEmpty(couponLink) ? null : couponLink, pidManager.getPidCache(system, Constant.SOURCE_TYPE_SUNING, SystemPIDInfo.PidType.share), uid + ""); // 鐢熸垚鏅�氬垎浜唴瀹� String content = shareGoodsTextTemplateService.createCommonShareTextSuNing(template, goods, jumpLink); @@ -1840,7 +1893,7 @@ // API缃戠粶鎺ュ彛楠岃瘉鏄惁鍦ㄥ敭 List<TaoBaoGoodsBrief> listTaoKeGoods = null; - List<Long> listGid = new ArrayList<Long>(); + List<String> listGid = new ArrayList<>(); for (UserShareGoodsGroup goodsGroup : list) { CommonGoods commonGoods = goodsGroup.getCommonGoods(); Integer goodsType = commonGoods.getGoodsType(); @@ -1879,10 +1932,10 @@ if (listTaoKeGoods != null && listTaoKeGoods.size() > 0 && goodsType != null && goodsType == Constant.SOURCE_TYPE_TAOBAO) { int state = 1; // 榛樿鍋滃敭 - Long goodsId = commonGoods.getGoodsId(); + String goodsId = commonGoods.getGoodsId(); for (TaoBaoGoodsBrief taoKeGoods : listTaoKeGoods) { - Long auctionId = taoKeGoods.getAuctionId(); - if (goodsId == auctionId || goodsId.equals(auctionId)) { + String auctionId = taoKeGoods.getAuctionId(); + if (TaoBaoUtil.isEqual(goodsId , auctionId)) { state = 0; // 鍦ㄥ敭 break; } @@ -1904,6 +1957,7 @@ dataObject.put("totalMoney", "楼" + goodsGroup.getTotalMoney()); GoodsDetailVO detailVO = GoodsDetailVOFactory.convertCommonGoods(commonGoods, paramsDTO); + detailVO.setCreatetime(null); detailVO.setId(commonGoods.getId()); dataObject.put("goods", gson.toJson(detailVO)); array.add(dataObject); @@ -1939,10 +1993,10 @@ paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate(acceptData.getSystem())); if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { - TaoBaoGoodsBrief goods = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(Long.parseLong(goodsId)); + TaoBaoGoodsBrief goods = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(goodsId); if (goods == null) { try { - goods = redisManager.getTaoBaoGoodsBrief(Long.parseLong(goodsId)); + goods = redisManager.getTaoBaoGoodsBrief(goodsId); } catch (TaobaoGoodsDownException e) { goods = null; } -- Gitblit v1.8.0