fanli/src/main/java/com/yeshi/fanli/controller/client/v1/GoodsController.java
@@ -250,6 +250,8 @@ if (taoBaoLink == null) { taoBaoLink = shareGoodsService.getTaoBaoLinkForBuyWithSpecial(uid, specialId, auctionId); if(taoBaoLink!=null) clientTBPid=null; } data.put("native", true); fanli/src/main/java/com/yeshi/fanli/controller/client/v1/RecommendController.java
@@ -2074,7 +2074,7 @@ // 大淘客商品过滤 try { goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods); goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods).getGoods(); } catch (Exception e) { LogHelper.errorDetailInfo(e); } fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsControllerV2.java
@@ -1,7 +1,6 @@ package com.yeshi.fanli.controller.client.v2; import java.io.PrintWriter; import java.lang.reflect.InvocationTargetException; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; @@ -10,7 +9,6 @@ import javax.annotation.Resource; import org.apache.commons.beanutils.PropertyUtils; import org.json.simple.JSONArray; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @@ -27,6 +25,7 @@ import com.yeshi.fanli.dto.pdd.PDDGoodsResult; import com.yeshi.fanli.dto.pdd.PDDPromotionUrl; import com.yeshi.fanli.dto.pdd.PDDSearchFilter; import com.yeshi.fanli.dto.taobao.DaTaoKeFilterResult; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.user.ShamUser; import com.yeshi.fanli.entity.bus.user.UserInfo; @@ -89,6 +88,7 @@ import com.yeshi.fanli.util.cache.JDGoodsCacheUtil; import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil; import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil; import com.yeshi.fanli.util.dataoke.DaTaoKeApiUtil; import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; import com.yeshi.fanli.util.factory.goods.ShopInfoVOFactory; import com.yeshi.fanli.util.jd.JDApiUtil; @@ -227,6 +227,38 @@ if (level == null) level = UserLevelEnum.daRen; return orderHongBaoMoneyComputeService.getShowComputeRate(platform, version, level); } private TaoBaoGoodsBrief filterDaTaoKeGoodsInfo(TaoBaoGoodsBrief goods) { try { DaTaoKeFilterResult result = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods); if (result.getFilterType() == DaTaoKeFilterResult.FILTER_TYPE_COUPON || result.getFilterType() == DaTaoKeFilterResult.FILTER_TYPE_PRICE_AND_COUPON) { // 缓存基础链接 String dpid = null; if (TaoBaoUtil.isSpecialGoods(goods.getMaterialLibType())) { dpid = TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT; } else { dpid = TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID; } String link = taoBaoGoodsCacheUtil.getBaseConvertLink(goods.getAuctionId(), dpid); if (!StringUtil.isNullOrEmpty(link)) { // result.getGoods().setCouponLink(link); return result.getGoods(); } else { link = DaTaoKeApiUtil.convertLink(goods.getAuctionId(), dpid); if (!StringUtil.isNullOrEmpty(link)) { // result.getGoods().setCouponLink(link); taoBaoGoodsCacheUtil.cacheBaseConvertLink(goods.getAuctionId(), dpid, link); } return result.getGoods(); } } } catch (Exception e) { LogHelper.errorDetailInfo(e); } return goods; } /** @@ -399,11 +431,7 @@ // 大淘客商品过滤 try { goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods, acceptData.getPlatform(), acceptData.getVersion()); // goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods); goods = filterDaTaoKeGoodsInfo(goods); } catch (Exception e) { LogHelper.errorDetailInfo(e); } @@ -495,11 +523,8 @@ String h5Url = String.format("http://%s%s?uid=%s&id=%s&appType=flq", configService.getH5Host(), Constant.systemCommonConfig.getShareGoodsPagePath(), "", id + ""); try { extraVO.setH5Url(HttpUtil.getShortLink(h5Url)); } catch (Exception e) { extraVO.setH5Url(h5Url); } String helpLink = null; boolean fanliValid = true; @@ -619,22 +644,6 @@ // 设置couponList List<CouponInfoVO> couponInfoList = new ArrayList<>(); couponInfoList.add(goodsDetail.getCouponInfo()); if (Constant.IS_TEST) { CouponInfoVO coupon = new CouponInfoVO(); try { PropertyUtils.copyProperties(coupon, goodsDetail.getCouponInfo()); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } coupon.setShopCoupon(true); coupon.setLink( "https://uland.taobao.com/quan/detail?sellerId=725677994&activityId=d03aa6d23a5a4040afb3942e7ea9a007"); couponInfoList.add(coupon); } goodsDetail.setCouponInfoList(couponInfoList); } JSONObject object = new JSONObject(); fanli/src/main/java/com/yeshi/fanli/controller/web/ShareHotGoodsController.java
@@ -96,7 +96,7 @@ if (TaoBaoUtil.canAddToTLJBuyGoods(goods)) { count++; goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods); goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods).getGoods(); shareHotGoodsService.addShareHotGoods(new ShareHotGoods(null, day, new Date(), goods)); } } fanli/src/main/java/com/yeshi/fanli/controller/web/TLJBuyGoodsController.java
@@ -96,7 +96,7 @@ if (TaoBaoUtil.getAfterUseCouplePrice(goods).multiply(goods.getTkRate()) .compareTo(new BigDecimal("143")) >= 0) { count++; goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods); goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods).getGoods(); int totalHongBaoCount = 2000 + (int) (Math.random() * 8000); int leftHongBaoCount = 200 + (int) (Math.random() * 2000); tljBuyGoodsService.addTLJBuyGoods( fanli/src/main/java/com/yeshi/fanli/dto/taobao/DaTaoKeFilterResult.java
New file @@ -0,0 +1,43 @@ package com.yeshi.fanli.dto.taobao; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; /** * 大淘客过滤结果 * @author Administrator * */ public class DaTaoKeFilterResult { public final static int FILTER_TYPE_NONE = 0;// 没有过滤 public final static int FILTER_TYPE_PRICE = 1;// 过滤了价格 public final static int FILTER_TYPE_COUPON = 2;// 过滤了券 public final static int FILTER_TYPE_PRICE_AND_COUPON = 12;// 过滤了券和价格 private TaoBaoGoodsBrief goods; private int filterType; public DaTaoKeFilterResult(TaoBaoGoodsBrief goods, int filterType) { super(); this.goods = goods; this.filterType = filterType; } public TaoBaoGoodsBrief getGoods() { return goods; } public void setGoods(TaoBaoGoodsBrief goods) { this.goods = goods; } public int getFilterType() { return filterType; } public void setFilterType(int filterType) { this.filterType = filterType; } } fanli/src/main/java/com/yeshi/fanli/job/TaoLiJinJob.java
@@ -102,7 +102,7 @@ && TaoBaoUtil.getAfterUseCouplePrice(goods).multiply(goods.getTkRate()) .compareTo(new BigDecimal("1430")) <= 0 && goods.getUserType() == 1) { goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods); goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods).getGoods(); int totalHongBaoCount = 2000 + (int) (Math.random() * 8000); int leftHongBaoCount = 200 + (int) (Math.random() * 2000); tljBuyGoodsService.addTLJBuyGoods( fanli/src/main/java/com/yeshi/fanli/job/UpdateDaTaoKeJob.java
@@ -142,7 +142,7 @@ && goods.getCouponAmount().compareTo(new BigDecimal(0)) > 0) { if (TaoBaoUtil.canAddToTLJBuyGoods(goods)) { count++; goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods); goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods).getGoods(); shareHotGoodsService.addShareHotGoods(new ShareHotGoods(null, day, new Date(), goods)); } } fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsServiceImpl.java
@@ -21,6 +21,7 @@ import com.yeshi.fanli.dao.mybatis.UserInfoMapper; import com.yeshi.fanli.dao.mybatis.UserShareGoodsHistoryMapper; import com.yeshi.fanli.dto.taobao.DaTaoKeFilterResult; import com.yeshi.fanli.dto.taobao.TaoLiJinDTO; import com.yeshi.fanli.entity.bus.share.UserShareGoodsHistory; import com.yeshi.fanli.entity.bus.user.UserInfo; @@ -31,6 +32,7 @@ import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig; import com.yeshi.fanli.entity.taobao.TaoKeAppInfo; import com.yeshi.fanli.entity.taobao.UserTLJBuyHistory; import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2; import com.yeshi.fanli.exception.share.ShareGoodsException; import com.yeshi.fanli.exception.taobao.TaoKeApiException; import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; @@ -47,6 +49,7 @@ import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsService; import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService; import com.yeshi.fanli.service.inter.taobao.UserTLJBuyHistoryService; import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service; import com.yeshi.fanli.service.inter.user.TBPidService; import com.yeshi.fanli.service.inter.user.UserAccountService; import com.yeshi.fanli.service.manger.goods.ConvertLinkManager; @@ -59,20 +62,20 @@ import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TaoBaoConstant; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil; import com.yeshi.fanli.util.dataoke.DaTaoKeApiUtil; import com.yeshi.fanli.util.taobao.DaTaoKeUtil; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; @Service public class ShareGoodsServiceImpl implements ShareGoodsService { @Resource private TBPidService tbPidService; @Resource private UserShareGoodsHistoryMapper userShareGoodsHistoryMapper; @Resource private UserInfoMapper userinfoMapper; @@ -92,7 +95,6 @@ @Resource private HongBaoManageService hongBaoManageService; @Resource private UserTLJBuyHistoryService userTLJBuyHistoryService; @@ -107,6 +109,12 @@ @Resource private ConvertLinkManager convertLinkManager; @Resource private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil; @Resource private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service; @Override public void addShareGoodsHistory(UserShareGoodsHistory history) { @@ -418,12 +426,36 @@ } if (StringUtil.isNullOrEmpty(goods.getCouponLink()) && !goods.getAuctionUrl().contains("s.click.taobao.com")) { TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCoupon(auctionId, info); if (taoBaoLink == null) { throw new ShareGoodsException(201, "商品转链失败"); } goods.setCouponLink(taoBaoLink.getCouponLink()); goods.setAuctionUrl(taoBaoLink.getAuctionUrl()); } String link = taoBaoGoodsCacheUtil.getBaseConvertLink(auctionId, info.getPid()); if (link != null) { goods.setCouponLink(link); } else {// 缓存 DaTaoKeFilterResult result = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods); if (result.getFilterType() == DaTaoKeFilterResult.FILTER_TYPE_COUPON || result.getFilterType() == DaTaoKeFilterResult.FILTER_TYPE_PRICE_AND_COUPON) { link = DaTaoKeApiUtil.convertLink(auctionId, info.getPid()); if (!StringUtil.isNullOrEmpty(link)) { goods.setCouponLink(link); taoBaoGoodsCacheUtil.cacheBaseConvertLink(auctionId, info.getPid(), link); } } if (StringUtil.isNullOrEmpty(link)) { TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCoupon(auctionId, info); if (taoBaoLink == null) { throw new ShareGoodsException(201, "商品转链失败"); } goods.setCouponLink(taoBaoLink.getCouponLink()); goods.setAuctionUrl(taoBaoLink.getAuctionUrl()); } } if (!StringUtil.isNullOrEmpty(relationId)) { @@ -442,12 +474,14 @@ tbLink.setCouponLink(goods.getCouponLink()); if (!StringUtil.isNullOrEmpty(tbLink.getCouponLink())) {// 通过立即推广方式获取淘口令成功 String quanToken = convertLinkManager.createTaoBaoToken(uid, goods.getPictUrl(), goods.getTitle(), tbLink.getCouponLink()); String quanToken = convertLinkManager.createTaoBaoToken(uid, goods.getPictUrl(), goods.getTitle(), tbLink.getCouponLink()); if (!StringUtil.isNullOrEmpty(quanToken)) { tbLink.setTaoToken(quanToken); } } else if (!StringUtil.isNullOrEmpty(tbLink.getClickUrl())) { String quanToken = convertLinkManager.createTaoBaoToken(uid,goods.getPictUrl(), goods.getTitle(), tbLink.getClickUrl()); String quanToken = convertLinkManager.createTaoBaoToken(uid, goods.getPictUrl(), goods.getTitle(), tbLink.getClickUrl()); if (!StringUtil.isNullOrEmpty(quanToken)) { tbLink.setTaoToken(quanToken); } @@ -470,9 +504,11 @@ public String createTaoBaoToken(Long uid, TaoBaoGoodsBrief goods) { String quanToken = ""; if (!StringUtil.isNullOrEmpty(goods.getCouponLink())) {// 通过立即推广方式获取淘口令成功 quanToken = convertLinkManager.createTaoBaoToken(uid, goods.getPictUrl(), goods.getTitle(), goods.getCouponLink()); quanToken = convertLinkManager.createTaoBaoToken(uid, goods.getPictUrl(), goods.getTitle(), goods.getCouponLink()); } else if (!StringUtil.isNullOrEmpty(goods.getAuctionUrl())) { quanToken = convertLinkManager.createTaoBaoToken(uid,goods.getPictUrl(), goods.getTitle(), goods.getAuctionUrl()); quanToken = convertLinkManager.createTaoBaoToken(uid, goods.getPictUrl(), goods.getTitle(), goods.getAuctionUrl()); } return quanToken; } @@ -563,15 +599,51 @@ app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY); app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET); app.setPid(TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT); TaoBaoLink taoBaoLink = new TaoBaoLink(); taoBaoLink.setAuctionId(auctionId); String baseUrl = taoBaoGoodsCacheUtil.getBaseConvertLink(auctionId, app.getPid()); if (!StringUtil.isNullOrEmpty(baseUrl)) { taoBaoLink.setClickUrl(baseUrl); taoBaoLink.setCouponLink(baseUrl); return taoBaoLink; } // 查询是否为大淘客商品 String link = null; DaTaoKeDetailV2 v2 = daTaoKeGoodsDetailV2Service.selectByAuctionId(auctionId); if (v2 != null) { try { TaoBaoGoodsBrief goods = redisManager.getTaoBaoGoodsBrief(auctionId); if (goods != null) { if (DaTaoKeUtil.canFilterCouponInfo(goods, v2)) { link = DaTaoKeApiUtil.convertLink(auctionId, app.getPid()); if (!StringUtil.isNullOrEmpty(link)) { taoBaoGoodsCacheUtil.cacheBaseConvertLink(auctionId, app.getPid(), link); } } } } catch (TaobaoGoodsDownException e) { throw new ShareGoodsException(4, "商品ID不能为空"); } } if (!StringUtil.isNullOrEmpty(link)) { taoBaoLink.setCouponLink(link); return taoBaoLink; } TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCoupon(auctionId, app); if (goods == null) { throw new ShareGoodsException(1, ""); } TaoBaoLink taoBaoLink = new TaoBaoLink(); taoBaoLink.setAuctionId(auctionId); taoBaoLink.setClickUrl(goods.getAuctionUrl()); taoBaoLink.setCouponLink(goods.getCouponLink()); if (!StringUtil.isNullOrEmpty(goods.getYsylClickUrl())) taoBaoLink.setCouponLink(goods.getYsylClickUrl()); taoBaoLink.setGoods(goods); @@ -637,6 +709,31 @@ goods.setAuctionUrl(taoBaoLink.getAuctionUrl()); } String link = taoBaoGoodsCacheUtil.getBaseConvertLink(auctionId, info.getPid()); if (link != null) { goods.setCouponLink(link); } else {// 缓存 DaTaoKeFilterResult result = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods); if (result.getFilterType() == DaTaoKeFilterResult.FILTER_TYPE_COUPON || result.getFilterType() == DaTaoKeFilterResult.FILTER_TYPE_PRICE_AND_COUPON) { link = DaTaoKeApiUtil.convertLink(auctionId, info.getPid()); if (!StringUtil.isNullOrEmpty(link)) { goods.setCouponLink(link); taoBaoGoodsCacheUtil.cacheBaseConvertLink(auctionId, info.getPid(), link); } } if (StringUtil.isNullOrEmpty(link)) { TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCoupon(auctionId, info); if (taoBaoLink == null) { throw new ShareGoodsException(201, "商品转链失败"); } goods.setCouponLink(taoBaoLink.getCouponLink()); goods.setAuctionUrl(taoBaoLink.getAuctionUrl()); } } if (!StringUtil.isNullOrEmpty(relationId)) { if (!StringUtil.isNullOrEmpty(goods.getAuctionUrl())) goods.setAuctionUrl(goods.getAuctionUrl() + "&relationId=" + relationId); fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailV2ServiceImpl.java
@@ -21,6 +21,7 @@ import com.yeshi.fanli.dao.goods.taobao.dataoke.DaTaoKeGoodsDetailV2Dao; import com.yeshi.fanli.dto.dataoke.DaTaoKeGoodsResult; import com.yeshi.fanli.dto.dataoke.DingDongQiangDTO; import com.yeshi.fanli.dto.taobao.DaTaoKeFilterResult; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2; import com.yeshi.fanli.log.LogHelper; @@ -28,7 +29,6 @@ import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.VersionUtil; import com.yeshi.fanli.util.dataoke.DaTaoKeApiUtil; import com.yeshi.fanli.util.taobao.DaTaoKeUtil; import com.yeshi.fanli.util.taobao.TaoBaoUtil; @@ -178,11 +178,6 @@ return goodsList; } @Override public TaoBaoGoodsBrief filterTaoBaoGoods(TaoBaoGoodsBrief goods) { return filterTaoBaoGoods(goods, null, null); } @Override public List<DaTaoKeDetailV2> listByIds(List<Long> idsList) { @@ -451,21 +446,15 @@ } @Override public TaoBaoGoodsBrief filterTaoBaoGoods(TaoBaoGoodsBrief goods, String platform, String version) { public DaTaoKeFilterResult filterTaoBaoGoods(TaoBaoGoodsBrief goods) { List<Long> goodsIdList = new ArrayList<>(); goodsIdList.add(goods.getAuctionId()); List<DaTaoKeDetailV2> daTaoKeList = listByGoodsIds(goodsIdList); if (daTaoKeList == null || daTaoKeList.size() == 0) return goods; if (platform != null && version != null && VersionUtil.greaterThan_2_1(platform, version)) { return new DaTaoKeFilterResult(goods, DaTaoKeFilterResult.FILTER_TYPE_NONE); // 重新设置标题与券价格 goods = DaTaoKeUtil.filterTaoBaoGoods(goods, daTaoKeList.get(0), true); } else goods = DaTaoKeUtil.filterTaoBaoGoods(goods, daTaoKeList.get(0), false); return goods; return DaTaoKeUtil.filterTaoBaoGoods(goods, daTaoKeList.get(0), true); } } fanli/src/main/java/com/yeshi/fanli/service/inter/taobao/dataoke/DaTaoKeGoodsDetailV2Service.java
@@ -4,8 +4,8 @@ import java.util.Date; import java.util.List; import com.yeshi.fanli.dao.goods.taobao.dataoke.DaTaoKeGoodsDetailV2Dao; import com.yeshi.fanli.dto.dataoke.DingDongQiangDTO; import com.yeshi.fanli.dto.taobao.DaTaoKeFilterResult; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2; @@ -58,10 +58,8 @@ * @param goods * @return */ public TaoBaoGoodsBrief filterTaoBaoGoods(TaoBaoGoodsBrief goods); public TaoBaoGoodsBrief filterTaoBaoGoods(TaoBaoGoodsBrief goods,String platform,String version); public DaTaoKeFilterResult filterTaoBaoGoods(TaoBaoGoodsBrief goods); /** * 根据主键查询 fanli/src/main/java/com/yeshi/fanli/util/RedisKeyEnum.java
@@ -27,12 +27,12 @@ taobaoQueue("tb-u-q-", "淘宝商品队列"), taobaoCode("taobao-code-", "淘宝code"), taobaoTokenGoodsMap("tb-t-g_m-","淘宝口令对应商品的映射关系保存"), taobaoBaseLink("tb-b-l-", "淘客商品转链结果缓存"), JDGoods("JD-goods-", "京东商品"), JDShortUrl("jd-link-to-goods-", "京东短链"), jingDongGoods("jingdong-goods-", "京东商品"), PDDGoods("PDD-goods-", "拼多多商品"), pinDuoDuoGoods("pinduoduo-goods-", "拼多多商品"), bindAlipay("bindalipay-", "绑定支付宝"), seacrhGoods("integral-seacrh-goods-", "商品搜索"), @@ -78,7 +78,6 @@ public String getKey() { return key; } public static String getRedisKey(RedisKeyEnum keyEnum, String value) { return keyEnum.getKey() + value; fanli/src/main/java/com/yeshi/fanli/util/cache/TaoBaoGoodsCacheUtil.java
@@ -1,5 +1,7 @@ package com.yeshi.fanli.util.cache; import java.util.Calendar; import javax.annotation.Resource; import org.springframework.stereotype.Component; @@ -9,6 +11,7 @@ import com.yeshi.fanli.util.RedisKeyEnum; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TimeUtil; @Component public class TaoBaoGoodsCacheUtil { @@ -126,4 +129,38 @@ return Long.parseLong(goodsId); } /** * 缓存转链结果 * @Title: cacheBaseConvertLink * @Description: * @param auctionId * @param pid * @param link * void 返回类型 * @throws */ public void cacheBaseConvertLink(Long auctionId, String pid, String link) { String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoBaseLink, StringUtil.Md5(auctionId + "#" + pid)); // Calendar calendar = Calendar.getInstance(); long now = calendar.getTimeInMillis(); calendar.add(Calendar.HOUR, 1); Long time = TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(calendar.getTimeInMillis(), "yyyy-MM-dd HH"), "yyyy-MM-dd HH"); int second = (int) ((time - now) / 1000); if (second <= 0) second = 1; redisManager.cacheCommonString(key, link, second);// 有效期30分钟 } public String getBaseConvertLink(Long auctionId, String pid) { String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoBaseLink, StringUtil.Md5(auctionId + "#" + pid)); String url = redisManager.getCommonString(key); return StringUtil.isNullOrEmpty(url) ? null : url; } } fanli/src/main/java/com/yeshi/fanli/util/dataoke/DaTaoKeApiUtil.java
@@ -113,8 +113,6 @@ return result; } /** * 获取大淘客品牌优选 品牌id * @@ -691,4 +689,43 @@ } return hotWords; } /** * 高效转链 * @Title: convertLink * @Description: * @param auctionId * @param pid * void 返回类型 * @throws */ public static String convertLink(Long auctionId, String pid) { TaoKeAppInfo app = APP_KEYS[1]; Map<String, String> params = new TreeMap<>(); params.put("version", "v1.1.1"); params.put("goodsId", auctionId + ""); params.put("pid", pid); params.put("appKey", app.getAppKey()); params.put("sign", getSign(params, app.getAppSecret())); String result = null; try { result = HttpUtil.get("https://openapi.dataoke.com/api/tb-service/get-privilege-link", params, new HashMap<>()); } catch (Exception e) { result = HttpUtil.get("https://openapi.dataoke.com/api/tb-service/get-privilege-link", params, new HashMap<>()); } System.out.println(result); JSONObject json = JSONObject.fromObject(result); if (json != null) { json = json.getJSONObject("data"); if (json != null) { return json.optString("couponClickUrl"); } } return null; } } fanli/src/main/java/com/yeshi/fanli/util/taobao/DaTaoKeUtil.java
@@ -21,6 +21,7 @@ import com.yeshi.fanli.dto.dataoke.DingDongQiangDTO; import com.yeshi.fanli.dto.dataoke.DingDongTime; import com.yeshi.fanli.dto.taobao.DaTaoKeFilterResult; import com.yeshi.fanli.entity.bus.clazz.GoodsClass; import com.yeshi.fanli.entity.taobao.TaoBaoCoupon; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; @@ -555,7 +556,7 @@ return desc; } public static TaoBaoGoodsBrief filterTaoBaoGoods(TaoBaoGoodsBrief goods, DaTaoKeDetailV2 v2, public static DaTaoKeFilterResult filterTaoBaoGoods(TaoBaoGoodsBrief goods, DaTaoKeDetailV2 v2, boolean filterCouponInfo) { if (v2 != null && goods != null) { // 重新设置标题与券价格 @@ -563,8 +564,7 @@ if (!StringUtil.isNullOrEmpty(v2.getMainPic())) goods.setPictUrlWhite(v2.getMainPic()); // 如果没有券信息,则提供券信息 if (StringUtil.isNullOrEmpty(goods.getCouponInfo()) && v2 != null && !StringUtil.isNullOrEmpty(v2.getCouponLink())) { if (canFilterCouponInfo(goods, v2)) { try { long time = System.currentTimeMillis(); // 券在有效期内并且还有剩余券 @@ -586,8 +586,9 @@ goods.setCouponLeftCount(v2.getCouponTotalNum() - v2.getCouponReceiveNum()); goods.setCouponLink(v2.getCouponLink()); goods.setCouponTotalCount(v2.getCouponTotalNum()); goods.setShopCoupon(true); goods.setShopCoupon(false); goods.setZkPrice(v2.getOriginalPrice()); return new DaTaoKeFilterResult(goods, DaTaoKeFilterResult.FILTER_TYPE_PRICE_AND_COUPON); } } catch (Exception e) { @@ -605,16 +606,46 @@ if (goods.getZkPrice().compareTo(v2.getOriginalPrice()) > 0) { goods.setZkPrice(v2.getOriginalPrice()); return new DaTaoKeFilterResult(goods, DaTaoKeFilterResult.FILTER_TYPE_PRICE); } } } } } return goods; return new DaTaoKeFilterResult(goods, DaTaoKeFilterResult.FILTER_TYPE_NONE); } /** * 是否可以过滤掉券信息 * @Title: filterCouponInfo * @Description: * @param goods * @param v2 * void 返回类型 * @throws */ public static boolean canFilterCouponInfo(TaoBaoGoodsBrief goods, DaTaoKeDetailV2 v2) { if (StringUtil.isNullOrEmpty(goods.getCouponInfo()) && v2 != null && !StringUtil.isNullOrEmpty(v2.getCouponLink())) { try { long time = System.currentTimeMillis(); // 券在有效期内并且还有剩余券 if (time >= TimeUtil.convertToTimeTemp(v2.getCouponStartTime(), "yyyy-MM-dd HH:mm:ss") && time <= TimeUtil.convertToTimeTemp(v2.getCouponEndTime(), "yyyy-MM-dd HH:mm:ss") && (v2.getCouponTotalNum() - v2.getCouponReceiveNum()) > 0) { return true; } } catch (Exception e) { } } return false; } public static TaoBaoGoodsBrief filterTaoBaoGoods(TaoBaoGoodsBrief goods, DaTaoKeDetailV2 v2) { return filterTaoBaoGoods(goods, v2, false); return filterTaoBaoGoods(goods, v2, false).getGoods(); } public static DaTaoKeDetailV2 filterDaTaoKe(TaoBaoGoodsBrief goods, DaTaoKeDetailV2 detail) { fanli/src/main/resource/rocket/consumer.xml
@@ -35,49 +35,6 @@ </property> </bean> <!-- 红包消息订阅 --> <bean id="redPackMessageListener" class="com.yeshi.fanli.util.rocketmq.consumer.redpack.RedPackMessageListener"></bean> <!-- Group ID 订阅同一个 Topic,可以创建多个 ConsumerBean --> <bean id="redPackConsumer" class="com.aliyun.openservices.ons.api.bean.ConsumerBean" init-method="start" destroy-method="shutdown"> <property name="properties"> <!--消费者配置信息 --> <props> <prop key="AccessKey">${rocketmq.AccessKey}</prop> <prop key="SecretKey">${rocketmq.SecretKey}</prop> <prop key="GROUP_ID">GID_RED_PACK</prop> <prop key="NAMESRV_ADDR">${rocketmq.NAMESRV_ADDR}</prop> <prop key="ConsumeThreadNums">50</prop> </props> </property> <property name="subscriptionTable"> <map> <!-- 产生订单/延时,订单到账 --> <entry value-ref="redPackMessageListener"> <key> <bean class="com.aliyun.openservices.ons.api.bean.Subscription"> <property name="topic" value="TOPIC_ORDER" /> <property name="expression" value="orderStatistic||orderFanLiActual||orderStatisticDelay||orderFanLiSeparateByOrderNo" /> </bean> </key> </entry> <!-- 用户注册,账号绑定,邀请好友 ,完成金币任务,红包赠送到期 --> <entry value-ref="redPackMessageListener"> <key> <bean class="com.aliyun.openservices.ons.api.bean.Subscription"> <property name="topic" value="TOPIC_USER" /> <property name="expression" value="inviteSuccess||userAccountBinding||integralTaskFinish||redPackGift||redPackGiftDrawback" /> </bean> </key> </entry> </map> </property> </bean> <!-- 金币消息订阅 --> <bean id="integralMessageListener" class="com.yeshi.fanli.util.rocketmq.consumer.integral.IntegralMessageListener"></bean>