| | |
| | |
|
| | | if (taoBaoLink == null) {
|
| | | taoBaoLink = shareGoodsService.getTaoBaoLinkForBuyWithSpecial(uid, specialId, auctionId);
|
| | | if(taoBaoLink!=null)
|
| | | clientTBPid=null;
|
| | | }
|
| | |
|
| | | data.put("native", true);
|
| | |
| | |
|
| | | // 大淘客商品过滤
|
| | | try {
|
| | | goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods);
|
| | | goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods).getGoods();
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | |
| | | 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;
|
| | |
| | |
|
| | | 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;
|
| | |
| | | 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;
|
| | |
| | | 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;
|
| | |
| | |
|
| | | @Resource
|
| | | private UserLevelManager userLevelManager;
|
| | | |
| | |
|
| | | @Resource
|
| | | private HongBaoManageService hongBaoManageService;
|
| | |
|
| | |
| | | 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;
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | |
|
| | | // 大淘客商品过滤
|
| | | try {
|
| | | goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods, acceptData.getPlatform(),
|
| | | acceptData.getVersion());
|
| | |
|
| | | // goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods);
|
| | |
|
| | | goods = filterDaTaoKeGoodsInfo(goods);
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | |
| | |
|
| | | 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);
|
| | | }
|
| | |
|
| | | extraVO.setH5Url(h5Url);
|
| | |
|
| | | String helpLink = null;
|
| | | boolean fanliValid = true;
|
| | |
| | | // 设置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();
|
| | |
| | |
|
| | | if (TaoBaoUtil.canAddToTLJBuyGoods(goods)) {
|
| | | count++;
|
| | | goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods);
|
| | | goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods).getGoods();
|
| | | shareHotGoodsService.addShareHotGoods(new ShareHotGoods(null, day, new Date(), goods));
|
| | | }
|
| | | }
|
| | |
| | | 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(
|
New file |
| | |
| | | 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;
|
| | | }
|
| | | }
|
| | |
| | | && 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(
|
| | |
| | | && 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));
|
| | | }
|
| | | }
|
| | |
| | |
|
| | | 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;
|
| | |
| | | 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;
|
| | |
| | | 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;
|
| | |
| | | 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;
|
| | |
| | | @Resource
|
| | | private HongBaoManageService hongBaoManageService;
|
| | |
|
| | |
|
| | | @Resource
|
| | | private UserTLJBuyHistoryService userTLJBuyHistoryService;
|
| | |
|
| | |
| | |
|
| | | @Resource
|
| | | private UserTaoLiJinNewbiesService userTaoLiJinNewbiesService;
|
| | | |
| | |
|
| | | @Resource
|
| | | private ConvertLinkManager convertLinkManager;
|
| | |
|
| | | @Resource
|
| | | private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil;
|
| | |
|
| | | @Resource
|
| | | private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
|
| | |
|
| | | @Override
|
| | | public void addShareGoodsHistory(UserShareGoodsHistory history) {
|
| | |
| | | }
|
| | |
|
| | | 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)) {
|
| | |
| | | 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);
|
| | | }
|
| | |
| | | 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;
|
| | | }
|
| | | |
| | |
|
| | | @Override
|
| | | public TaoBaoLink getTaoBaoLinkForBuy(Long uid, Long auctionId, int pidType) throws ShareGoodsException {
|
| | |
|
| | |
| | | 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);
|
| | |
| | | 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)) {
|
| | | if (!StringUtil.isNullOrEmpty(goods.getAuctionUrl()))
|
| | |
| | | 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;
|
| | |
| | | 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;
|
| | |
| | | return goodsList;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public TaoBaoGoodsBrief filterTaoBaoGoods(TaoBaoGoodsBrief goods) {
|
| | |
|
| | | return filterTaoBaoGoods(goods, null, null);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public List<DaTaoKeDetailV2> listByIds(List<Long> idsList) {
|
| | |
| | | }
|
| | |
|
| | | @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)) {
|
| | | // 重新设置标题与券价格
|
| | | goods = DaTaoKeUtil.filterTaoBaoGoods(goods, daTaoKeList.get(0), true);
|
| | | } else
|
| | | goods = DaTaoKeUtil.filterTaoBaoGoods(goods, daTaoKeList.get(0), false);
|
| | |
|
| | | return goods;
|
| | | return new DaTaoKeFilterResult(goods, DaTaoKeFilterResult.FILTER_TYPE_NONE);
|
| | | // 重新设置标题与券价格
|
| | | return DaTaoKeUtil.filterTaoBaoGoods(goods, daTaoKeList.get(0), true);
|
| | | }
|
| | |
|
| | | }
|
| | |
| | | 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;
|
| | |
|
| | |
| | | * @param goods
|
| | | * @return
|
| | | */
|
| | | public TaoBaoGoodsBrief filterTaoBaoGoods(TaoBaoGoodsBrief goods);
|
| | |
|
| | | |
| | | public TaoBaoGoodsBrief filterTaoBaoGoods(TaoBaoGoodsBrief goods,String platform,String version);
|
| | | public DaTaoKeFilterResult filterTaoBaoGoods(TaoBaoGoodsBrief goods);
|
| | |
|
| | | /**
|
| | | * 根据主键查询
|
| | |
| | | wxmpUserLogin("wxmp-user-login-", "小程序登录"),
|
| | | frequencyLimit("frequency-", "频率限制"),
|
| | | inviteShortLink("invite-shortlink-", "短连接"),
|
| | | |
| | |
|
| | | taobaoGoods("taobao-goods-", "淘宝商品"),
|
| | | taobaoGoodsCommon("taobao-goods-common-", "淘宝商品"),
|
| | | taobaoGoodsTemp("taobao-goods-temp-", "淘宝商品缓存"),
|
| | | taobaoImgs("taobao-img-", "淘宝图片"), |
| | | taobaoImgs("taobao-img-", "淘宝图片"),
|
| | | taobaoGoodsDetailimgs("taobao-goods-detailimgs-size-", "淘宝图片"),
|
| | | taobaoShop("taobao-shop-", "淘宝店铺"),
|
| | | taobaoTokenCommon("taobao-common-token-", "淘宝口令"),
|
| | | taobaoTokenTLJ("taobao-tlj-token-", "淘礼金的口令"),
|
| | | taobaoCoupleXCX("taobao-couple-xcx-", "淘宝券"),
|
| | | taobaoUserTKToken("taobao-user-token-","用户的淘口令"),
|
| | | taobaoUserTKToken("taobao-user-token-", "用户的淘口令"),
|
| | | taobaoCachecoupon("cachecoupon-", "淘宝券商品列表"),
|
| | | taobaolinkParse("linkParse-", "获取淘宝推广链接"),
|
| | | taobaoUpdate("tb-u-", "淘宝商品更新"),
|
| | | taobaoQueue("tb-u-q-", "淘宝商品队列"),
|
| | | taobaoCode("taobao-code-", "淘宝code"),
|
| | | taobaoTokenGoodsMap("tb-t-g_m-","淘宝口令对应商品的映射关系保存"),
|
| | | 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-", "商品搜索"),
|
| | | couponByClass("getCouponListByClass-", "通过分类获取券信息"),
|
| | | elmeLink("elme-link-", "饿了么链接"),
|
| | | recommendGoodsUser("recommend-goods-user-", "用户推荐商品"),
|
| | | |
| | |
|
| | | S11YuShou("s11-yushou-", "双11预售"),
|
| | | S11PresaleGoods("s11_presale_goods-", "双11淘宝预售商品"),
|
| | | S11PresaleGoodsType("s11_presale_goods-type-", "双11淘宝预售商品类型"),
|
| | | S11SuperHongBao("s11-superhongbao-", "双11超级红包"),
|
| | | |
| | |
|
| | | spikeGoodsHour("spikeGoods_hour-", "限时秒杀时间"),
|
| | | spikeGoodsList("spikeGoodsList-", "限时秒杀商品列表"),
|
| | | spikeGoodsHourNew("spikeGoods_hour_new-", "限时秒杀时间新版"),
|
| | | spikeGoodsListNew("spikeGoodsList_new-", "限时秒杀商品新版"),
|
| | | |
| | |
|
| | | addOrder("addorder-", "添加订单"),
|
| | | addOrderQueue("addorderqueue-", "添加订单队列"),
|
| | | JDOrder("jd-order-", "京东订单"),
|
| | | PDDOrder("pdd-order-", "拼多多订单"),
|
| | | hongBaoFanLi("hongbao-fanli-", "红包返利"),
|
| | | |
| | |
|
| | | deviceSex("device_sex-", "设备性别版本"),
|
| | | |
| | | convertLinkDocTemp("convert-link-doc-temp-","转链文本暂存"),
|
| | | convertLinkDocResultTemp("convert-link-doc-result-temp-","转链文本结果暂存")
|
| | | |
| | |
|
| | | convertLinkDocTemp("convert-link-doc-temp-", "转链文本暂存"),
|
| | | convertLinkDocResultTemp("convert-link-doc-result-temp-", "转链文本结果暂存")
|
| | |
|
| | | ;
|
| | |
|
| | | private final String key;
|
| | |
| | | public String getKey() {
|
| | | return key;
|
| | | }
|
| | | |
| | | |
| | |
|
| | | public static String getRedisKey(RedisKeyEnum keyEnum, String value) {
|
| | | return keyEnum.getKey() + value;
|
| | | }
|
| | |
| | | package com.yeshi.fanli.util.cache;
|
| | |
|
| | | import java.util.Calendar;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import org.springframework.stereotype.Component;
|
| | |
| | | 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 {
|
| | |
| | | */
|
| | | public void saveTokenGoodsIdMap(String token, Long auctionId) {
|
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoTokenGoodsMap, StringUtil.Md5(token));
|
| | | redisManager.cacheCommonString(key, auctionId+"", 60 * 30);// 有效期30分钟
|
| | | redisManager.cacheCommonString(key, auctionId + "", 60 * 30);// 有效期30分钟
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | 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;
|
| | | }
|
| | |
|
| | | }
|
| | |
| | | return result;
|
| | | }
|
| | |
|
| | | |
| | |
|
| | | /**
|
| | | * 获取大淘客品牌优选 品牌id
|
| | | *
|
| | |
| | | for (int cid : cidList)
|
| | | cids += cid + ",";
|
| | | cids = cids.endsWith(",") ? cids.substring(0, cids.length() - 1) : cids;
|
| | | |
| | |
|
| | | params.put("cids", cids + "");
|
| | | }
|
| | |
|
| | |
| | | }
|
| | | 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;
|
| | | }
|
| | | }
|
| | |
| | |
|
| | | 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;
|
| | |
| | | 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) {
|
| | | // 重新设置标题与券价格
|
| | |
| | | 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();
|
| | | // 券在有效期内并且还有剩余券
|
| | |
| | | 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) {
|
| | |
| | |
|
| | | 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) {
|
| | |
| | | </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>
|