admin
2025-02-25 30d8e227e8d823b6c38c3b9c90ac2df03b63befe
淘宝转链接口更新
22个文件已修改
267 ■■■■ 已修改文件
fanli/pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/RecommendController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/ShareController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsControllerV2.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/h5/BuWanH5Controller.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/h5/H5RecommendController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/jd/JDOrderItemMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/jd/JDOrderItem.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/manger/goods/ConvertLinkManager.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/manger/goods/TaoBaoLinkManager.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/manger/goods/tb/TBConvertLinkManager.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/Constant.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/jd/JDApiUtil.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java 81 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/resource/dubbo/consumer.xml 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/resource/mapping/jd/JDOrderItemMapper.xml 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/resource/sms_config.properties 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/pom.xml
@@ -60,7 +60,7 @@
        <dependency>
            <groupId>com.ks</groupId>
            <artifactId>lib-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <version>0.0.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.data</groupId>
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/RecommendController.java
@@ -1901,7 +1901,7 @@
                }
                if (goods.getTkRate() == null || new BigDecimal(0).compareTo(goods.getTkRate()) == 0) {
                    TaoBaoGoodsBrief linkInfo = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), app, null, null);
                    TaoBaoGoodsBrief linkInfo = TaoKeApiUtil.specialConvertCouponV2(goods.getAuctionId(), app, null, null);
                    if (linkInfo != null) {
                        goods.setAuctionUrl(linkInfo.getAuctionUrl());
                        goods.setCouponLink(linkInfo.getCouponLink());
@@ -2398,7 +2398,7 @@
                        }
                        if (taoBaoGoodsBrief == null) {
                            TaoBaoGoodsBrief newGoods = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), app, null, null);
                            TaoBaoGoodsBrief newGoods = TaoKeApiUtil.specialConvertCouponV2(goods.getAuctionId(), app, null, null);
                            goods.setCouponInfo(newGoods.getCouponInfo());
                            goods.setCouponLink(newGoods.getCouponLink());
                            goods.setTkRate(newGoods.getTkRate());
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/ShareController.java
@@ -755,7 +755,7 @@
            app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
            app.setPid(pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_TAOBAO, SystemPIDInfo.PidType.share));
            app.setAdzoneId(app.getPid().split("_")[3]);
            TaoBaoGoodsBrief goodsLink = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), app, null, null);
            TaoBaoGoodsBrief goodsLink = TaoKeApiUtil.specialConvertCouponV2(goods.getAuctionId(), app, null, null);
            if (goodsLink != null)
                token = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(),
                        StringUtil.isNullOrEmpty(goodsLink.getCouponLink()) ? goodsLink.getAuctionUrl()
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsControllerV2.java
@@ -385,7 +385,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.specialConvertCouponV2(goods.getAuctionId(), app, null, null);
                    if (linkInfo != null) {
                        goods.setAuctionUrl(linkInfo.getAuctionUrl());
                        goods.setCouponLink(linkInfo.getCouponLink());
@@ -441,7 +441,7 @@
        if (uid != null && uid > 0) {
            String specialId = userExtraTaoBaoInfoService.getSpecialIdByUid(uid);
            //获取最新的比例
            TaoBaoGoodsBrief rateGoods = TaoKeApiUtil.specialConvertCoupon(tb.getAuctionId(), TaoBaoConstant.getSpecialAuthAppInfo(pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_TAOBAO, SystemPIDInfo.PidType.fanli)), specialId, null);
            TaoBaoGoodsBrief rateGoods = TaoKeApiUtil.specialConvertCouponV2(tb.getAuctionId(), TaoBaoConstant.getSpecialAuthAppInfo(pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_TAOBAO, SystemPIDInfo.PidType.fanli)), specialId, null);
            if (rateGoods != null)
                tb.setMinTkRate(rateGoods.getTkRate());
        }
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java
@@ -1706,7 +1706,7 @@
            app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
            app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
            app.setPid(pid);
            TaoBaoGoodsBrief goodsLink = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), app, null, null);
            TaoBaoGoodsBrief goodsLink = TaoKeApiUtil.specialConvertCouponV2(goods.getAuctionId(), app, null, null);
            if (goodsLink != null)
                token = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(),
                        StringUtil.isNullOrEmpty(goodsLink.getCouponLink()) ? goodsLink.getAuctionUrl()
fanli/src/main/java/com/yeshi/fanli/controller/h5/BuWanH5Controller.java
@@ -118,7 +118,7 @@
        try {
            goods = TaoKeApiUtil.searchGoodsDetail(id, info);
            if (goods.getTkRate() == null || new BigDecimal(0).compareTo(goods.getTkRate()) == 0) {
                TaoBaoGoodsBrief linkInfo = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), info, null, null);
                TaoBaoGoodsBrief linkInfo = TaoKeApiUtil.specialConvertCouponV2(goods.getAuctionId(), info, null, null);
                if (linkInfo != null) {
                    goods.setAuctionUrl(linkInfo.getAuctionUrl());
                    goods.setCouponLink(linkInfo.getCouponLink());
fanli/src/main/java/com/yeshi/fanli/controller/h5/H5RecommendController.java
@@ -346,7 +346,7 @@
                    url = goods.getCouponLink();
                }
                if (!url.contains("uland.taobao.com") && !url.contains("s.click.taobao.com")) {
                    TaoBaoGoodsBrief linkInfo = TaoKeApiUtil.specialConvertCoupon(id, app, null, null);
                    TaoBaoGoodsBrief linkInfo = TaoKeApiUtil.specialConvertCouponV2(id, app, null, null);
                    url = linkInfo.getCouponLink();
                    if (StringUtil.isNullOrEmpty(url))
                        url = linkInfo.getAuctionUrl();
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/jd/JDOrderItemMapper.java
@@ -1,5 +1,6 @@
package com.yeshi.fanli.dao.mybatis.jd;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.annotations.Param;
@@ -26,6 +27,10 @@
     */
    List<JDOrderItem> listByOrderId(Long orderId);
    List<JDOrderItem> list(@Param("minCreateTime") Date minCreateTime,@Param("start") int start,@Param("count") int count);
    /**
     * 统计所有订单
     * 
fanli/src/main/java/com/yeshi/fanli/entity/jd/JDOrderItem.java
@@ -57,6 +57,9 @@
    @Column(name = "joi_sku_id")
    private Long skuId;// 商品ID
    @Column(name = "joi_item_id")
    private String itemId;// 商品ID
    @Column(name = "joi_sku_name")
    private String skuName;// 商品名称
@@ -404,4 +407,12 @@
        this.orderBy = orderBy;
    }
    public String getItemId() {
        return itemId;
    }
    public void setItemId(String itemId) {
        this.itemId = itemId;
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsServiceImpl.java
@@ -141,7 +141,7 @@
        // 没有获取到转过链的商品详情
        if (StringUtil.isNullOrEmpty(goods.getCouponLink()) && !goods.getAuctionUrl().contains("s.click.taobao.com")) {
            TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCoupon(auctionId, info, null, null); // TaoBaoUtil.getTbLinkForShare(auctionId,
            TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCouponV2(auctionId, info, null, null); // TaoBaoUtil.getTbLinkForShare(auctionId,
            // tbPid.getPid(),
            // taoBaoUnionConfig);
            if (taoBaoLink == null) {
@@ -412,7 +412,7 @@
        }
        if (StringUtil.isNullOrEmpty(goods.getCouponLink()) && !goods.getAuctionUrl().contains("s.click.taobao.com")) {
            TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCoupon(auctionId, info, null, null);
            TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCouponV2(auctionId, info, null, null);
            if (taoBaoLink == null) {
                throw new ShareGoodsException(201, "商品转链失败");
            }
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java
@@ -1181,16 +1181,13 @@
                    cog.getGoodsType());
            if (commonGoodsList.size() <= 0)// 不存在就插入商品
            {
                JDGoods goods = JDApiUtil.getGoodsDetail(itemOrder.getSkuId()+"");
                if (goods == null) {
                    goods = JDUtil.getGoodsFromWeb(itemOrder.getSkuId());
                }
                JDGoods goods = null;
                if (goods == null) {
                    goods = new JDGoods();
                    goods.setSkuName(itemOrder.getSkuName());
                    goods.setPrice(itemOrder.getPrice());
                    goods.setSkuId(itemOrder.getSkuId());
                    goods.setItemId(itemOrder.getItemId());
                }
                if (goods != null) {
@@ -1201,7 +1198,20 @@
                cog.setUpdateTime(new Date());
                commonOrderGoodsMapper.insertSelective(cog);
            } else {
                for (CommonOrderGoods orderGoods : commonGoodsList) {
                    if (StringUtil.isNullOrEmpty(orderGoods.getGoodsId())) {
                        JDGoods goods = new JDGoods();
                        goods.setSkuName(itemOrder.getSkuName());
                        goods.setPrice(itemOrder.getPrice());
                        goods.setSkuId(itemOrder.getSkuId());
                        goods.setItemId(itemOrder.getItemId());
                        if (goods != null) {
                            cog = CommonOrderGoodsFactory.create(goods);
                            cog.setId(orderGoods.getId());
                            commonOrderGoodsMapper.updateByPrimaryKeySelective(cog);
                        }
                    }
                }
            }
            newCommonOrder.setUserInfo(new UserInfo(uid));
            commonOrderList.add(addCommonOrder(newCommonOrder));
fanli/src/main/java/com/yeshi/fanli/service/manger/goods/ConvertLinkManager.java
@@ -221,7 +221,7 @@
                    if (simpleGoods.getMaterialLibType() != null && simpleGoods.getMaterialLibType() == 1) {
                        TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCoupon(auctionId,
                        TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCouponV2(auctionId,
                                new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY,
                                        TaoBaoConstant.TAOBAO_AUTH_APPSECRET,
                                        specialPid), specialId, null);
@@ -235,7 +235,7 @@
                    } else {
                        String sRelationId = taoBaoBuyRelationMapService.getRelationId(uid);
                        TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCoupon(auctionId,
                        TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCouponV2(auctionId,
                                new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY,
                                        TaoBaoConstant.TAOBAO_AUTH_APPSECRET,
                                        specialRelationPid), specialId, null);
fanli/src/main/java/com/yeshi/fanli/service/manger/goods/TaoBaoLinkManager.java
@@ -117,7 +117,7 @@
            return taoBaoLink;
        }
        TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCoupon(auctionId, app, specialId, null);
        TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCouponV2(auctionId, app, specialId, null);
        if (goods == null) {
            throw new TaoBaoConvertLinkException(1, "");
        }
@@ -286,7 +286,7 @@
        if (StringUtil.isNullOrEmpty(goods.getCouponLink()) && !goods.getAuctionUrl().contains("s.click.taobao.com")) {
            TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCoupon(auctionId, info, null, relationId);
            TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCouponV2(auctionId, info, null, relationId);
            if (taoBaoLink == null) {
                throw new TaoBaoConvertLinkException(201, "商品转链失败");
            }
@@ -312,7 +312,7 @@
                //保存券链接
                cacheCouponInfo(goods, info.getPid());
            } else {
                TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCoupon(auctionId, info, null, relationId);
                TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCouponV2(auctionId, info, null, relationId);
                if (taoBaoLink == null) {
                    throw new TaoBaoConvertLinkException(201, "商品转链失败");
                }
@@ -464,7 +464,7 @@
        if (StringUtil.isNullOrEmpty(goods.getCouponLink()) && !goods.getAuctionUrl().contains("s.click.taobao.com")) {
            TaoBaoUnionConfig taoBaoUnionConfig = taoBaoUnionConfigService
                    .getConfigByAppIdCache(info.getPid().split("_")[2]);
            TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCoupon(auctionId, info, null, relationId);
            TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCouponV2(auctionId, info, null, relationId);
            if (taoBaoLink == null) {
                throw new TaoBaoConvertLinkException(201, "商品转链失败");
            }
fanli/src/main/java/com/yeshi/fanli/service/manger/goods/tb/TBConvertLinkManager.java
@@ -159,7 +159,7 @@
            return taoBaoLink;
        }
        TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCoupon(auctionId, app, specialId, relationId);
        TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCouponV2(auctionId, app, specialId, relationId);
        if (goods == null) {
            throw new TaoBaoConvertLinkException(1, "");
        }
fanli/src/main/java/com/yeshi/fanli/util/Constant.java
@@ -22,9 +22,9 @@
public class Constant {
    public static boolean IS_TASK = true;
    // 外网环境
    public static boolean IS_OUTNET = false;
    public static boolean IS_OUTNET = true;
    public static boolean IS_TEST = true;
    public static boolean IS_TEST = false;
    public static boolean ENABLE_MQ = true;
fanli/src/main/java/com/yeshi/fanli/util/jd/JDApiUtil.java
@@ -819,28 +819,29 @@
                List<JDOrder> orderList = new Gson().fromJson(data.toString(), typeToken);
                if (orderList != null)
                    for (JDOrder order : orderList) {
                        Map<Long, List<JDOrderItem>> map = new HashMap<>();
                        Map<String, List<JDOrderItem>> map = new HashMap<>();
                        for (int i = 0; i < order.getOrderItemList().size(); i++) {
                            JDOrderItem orderItem = order.getOrderItemList().get(i);
                            if (map.get(orderItem.getSkuId()) == null)
                                map.put(orderItem.getSkuId(), new ArrayList<>());
                            map.get(orderItem.getSkuId()).add(orderItem);
                            String goodsId = getGoodsId(orderItem, order.getOrderItemList().size());
                            if (map.get(goodsId) == null)
                                map.put(goodsId, new ArrayList<>());
                            map.get(goodsId).add(orderItem);
                            order.getOrderItemList().get(i)
                                    .setTradeId(order.getOrderId() + "-" + order.getOrderItemList().get(i).getSkuId());
                                    .setTradeId(order.getOrderId() + "-" + getGoodsId(order.getOrderItemList().get(i),order.getOrderItemList().size()));
                            order.getOrderItemList().get(i).setOrderId(order.getOrderId());
                            order.getOrderItemList().get(i).setOrderBy(i + 1);
                        }
                        // 查询商品ID相同的子订单
                        for (Iterator<Long> its = map.keySet().iterator(); its.hasNext(); ) {
                            Long skuId = its.next();
                            if (map.get(skuId).size() > 1) {
                        for (Iterator<String> its = map.keySet().iterator(); its.hasNext(); ) {
                            String goodsId = its.next();
                            if (map.get(goodsId).size() > 1) {
                                int skuOrderBy = 1;
                                for (int i = 0; i < order.getOrderItemList().size(); i++) {
                                    JDOrderItem orderItem = order.getOrderItemList().get(i);
                                    if (orderItem.getSkuId().longValue() == skuId) {
                                    if (getGoodsId(orderItem,order.getOrderItemList().size()).equalsIgnoreCase(goodsId)) {
                                        order.getOrderItemList().get(i).setTradeId(order.getOrderId() + "-"
                                                + order.getOrderItemList().get(i).getSkuId() + "-" + skuOrderBy++);
                                                + getGoodsId(order.getOrderItemList().get(i), order.getOrderItemList().size()) + "-" + skuOrderBy++);
                                    }
                                }
                            }
@@ -851,6 +852,16 @@
            }
        }
        return null;
    }
    private static String getGoodsId(JDOrderItem item, int itemCount) {
        if (itemCount <= 1) {
            return item.getSkuId() + "";
        }
        if (item.getSkuId() != null) {
            return item.getSkuId() + "";
        }
        return item.getItemId().split("_")[1];
    }
@@ -964,16 +975,28 @@
    }
    public static void main(String[] args) {
        JDGoods goods =     queryGoodsDetail("KXexrdv7wvWFvE1JNpVMEjdo_3KLpG8mAYwxxKXwFw0");
        System.out.println(goods.toString());
        Date startTime = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24L);
        // 一个小时为一个步长
        List<JDOrder> tempOrderList = new ArrayList<>();
        for (int i = 0; i < 24; i++) {
            Date da = new Date(startTime.getTime() + 1000 * 60 * 60L * i);
            if (da.getTime() >System.currentTimeMillis())
                break;
//        long now = System.currentTimeMillis();
//
//        JDOrderResult result = JDApiUtil.getOrderList(1, 200, new Date(now), JDApiUtil.ORDER_TYPE_CREATETIME);
//        System.out.printf(result.toString());
            int pageSize = 200;
            int page = 1;
            JDOrderResult result = JDApiUtil.getOrderList(page++, pageSize, da, JDApiUtil.ORDER_TYPE_UPDATETIME);
            if (result != null) {
                tempOrderList.addAll(result.getOrderList());
                while (result != null && result.isHasMore()) {
                    result = JDApiUtil.getOrderList(page++, pageSize, da, JDApiUtil.ORDER_TYPE_UPDATETIME);
                    if (result != null)
                        tempOrderList.addAll(result.getOrderList());
                }
            }
        }
        System.out.println(tempOrderList.size());
    }
}
fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java
@@ -977,11 +977,10 @@
        }else{
            return String.format("https://jingfen.jd.com/detail/%s.html", id);
        }
    }
    public static void main(String[] args) throws IOException {
        System.out.printf(getJDGoodsIdByUJD("https://3.cn/1-U6tjhC"));
        System.out.printf(getJDGoodsIdByUJD("https://3.cn/297ndx-c"));
    }
}
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java
@@ -2241,7 +2241,11 @@
        if (StringUtil.isNullOrEmpty(relationId))
            return url;
        if (!url.contains("&relationId="))
            if(url.contains("?")) {
            return url + "&relationId=" + relationId;
            }else{
                return url + "?relationId=" + relationId;
            }
        else
            return url;
    }
@@ -2415,13 +2419,20 @@
    public static void main(String[] args) {
        String reg = "「.*」";
        Pattern p = Pattern.compile(reg);
        Matcher matcher = p.matcher("【淘宝】https://m.tb.cn/h.Ub3d7Kb?tk=g2Az2EmdcIX CZ3457 「造梦【蔷薇少女】复古碎花牛奶绒羊羔绒毛毯秋冬保暖休闲毯沙发毯」\n" +
                "点击链接直接打开");
        if (matcher.find()) {
            String title = matcher.group();
            System.out.println(title);
//        String reg = "「.*」";
//        Pattern p = Pattern.compile(reg);
//        Matcher matcher = p.matcher("【淘宝】https://m.tb.cn/h.Ub3d7Kb?tk=g2Az2EmdcIX CZ3457 「造梦【蔷薇少女】复古碎花牛奶绒羊羔绒毛毯秋冬保暖休闲毯沙发毯」\n" +
//                "点击链接直接打开");
//        if (matcher.find()) {
//            String title = matcher.group();
//            System.out.println(title);
//        }
        String relationId = "1222";
        String url="http://123id=123";
        if(url.contains("?")) {
            System.out.println(url + "&relationId=" + relationId);
        }else{
            System.out.println(url + "?relationId=" + relationId);
        }
    }
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java
@@ -356,7 +356,7 @@
            }
        // 从转链搜索
        TaoBaoGoodsBrief newGoods = specialConvertCoupon(goods.getAuctionId(),
        TaoBaoGoodsBrief newGoods = specialConvertCouponV2(goods.getAuctionId(),
                new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET,
                        TaoBaoConstant.TAOBAO_PID_DEFAULT), specialId, relationId);
@@ -437,7 +437,7 @@
            }
        // 从转链搜索
        TaoBaoGoodsBrief newGoods = specialConvertCoupon(goods.getAuctionId(),
        TaoBaoGoodsBrief newGoods = specialConvertCouponV2(goods.getAuctionId(),
                new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET,
                        TaoBaoConstant.TAOBAO_PID_DEFAULT), null, null);
@@ -1231,7 +1231,6 @@
        JSONObject publishInfo = item.optJSONObject("publish_info");
        // 线报内容
        JSONObject mgcInfo = item.optJSONObject("mgc_info");
        TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
@@ -2069,6 +2068,62 @@
    }
    public static TaoBaoGoodsBrief specialConvertCouponV2(String auctionId, TaoKeAppInfo app, String specialId, String relationId) {
        String pid = app.getPid();
        String[] sts = pid.split("_");
        Map<String, String> map = new HashMap<>();
        map.put("method", "taobao.tbk.dg.general.link.convert");
        map.put("item_id_list", auctionId + "");
        map.put("adzone_id", sts[3]);
        if (!StringUtil.isNullOrEmpty(specialId) && !StringUtil.isNullOrEmpty(relationId)) {
            map.put("special_id", specialId);
        } else if (!StringUtil.isNullOrEmpty(specialId)) {
            map.put("special_id", specialId);
        } else if (!StringUtil.isNullOrEmpty(relationId)) {
            map.put("relation_id", relationId);
        }
        try {
            String result = TaoKeBaseUtil.baseRequestForThreeTimes(map, app);
            System.out.println(result);
            JSONObject json = JSONObject.fromObject(result);
            JSONObject resultJSON = json.optJSONObject("tbk_dg_general_link_convert_response").optJSONObject("data")
                    .optJSONObject("item_url_list").optJSONArray("item_url_list").optJSONObject(0);
            JSONObject goodsInfo=resultJSON.optJSONObject("link_info_dto");
            String couponLink = goodsInfo.optString("coupon_short_url");
            String itemLink = goodsInfo.optString("cps_short_url");
            TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
            goods.setAuctionUrl(itemLink);
            goods.setCouponLink(couponLink);
            if (!StringUtil.isNullOrEmpty(resultJSON.optString("coupon_info"))) {
                goods.setCouponLink(couponLink);
                goods.setCouponInfo(resultJSON.optString("coupon_info"));
                if (!StringUtil.isNullOrEmpty(resultJSON.optString("coupon_total_count"))) {
                    goods.setCouponTotalCount(Integer.parseInt(resultJSON.optString("coupon_total_count")));
                }
                if (!StringUtil.isNullOrEmpty(resultJSON.optString("coupon_remain_count"))) {
                    goods.setCouponLeftCount(Integer.parseInt(resultJSON.optString("coupon_remain_count")));
                }
                goods.setCouponEffectiveStartTime(resultJSON.optString("coupon_start_time"));
                goods.setCouponEffectiveEndTime(resultJSON.optString("coupon_end_time"));
            }
            JSONObject rateInfo=resultJSON.optJSONObject("promotion_info_dto");
            String tkRate = rateInfo.optString("commission_rate");
            if (!StringUtil.isNullOrEmpty(tkRate)) {
                goods.setTkRate(new BigDecimal(tkRate));
            }
            goods = loadYuShouInfo(goods, resultJSON);
            return goods;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    // AA5ISJ
    private static TaoBaoGoodsBrief parseWuLiaoItemFromMaterialId(JSONObject item) {
@@ -2588,12 +2643,20 @@
//        map.put("num_iids",  "708395859317");
//        String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
//        System.out.println(resultStr);
        SearchFilter sf=new SearchFilter();
        sf.setKey("鞋");
        sf.setPage(1);
        sf.setPageSize(20);
        TaoBaoSearchResult result =  searchWuLiaoNew(sf,null,null);
        System.out.printf(result.toString());
//        SearchFilter sf=new SearchFilter();
//        sf.setKey("鞋");
//        sf.setPage(1);
//        sf.setPageSize(20);
//        TaoBaoSearchResult result =  searchWuLiaoNew(sf,null,null);
//        System.out.printf(result.toString());
//        public static final String TAOBAO_AUTH_APPKEY = "24980167";
//        public static final String TAOBAO_AUTH_APPSECRET = "e0a2e05deabf5ce039b52e5b492d5382";
//        public static final String TAOBAO_PID_DEFAULT="mm_124933865_56750082_89555600043";
        TaoKeAppInfo app = new TaoKeAppInfo("24980167", "e0a2e05deabf5ce039b52e5b492d5382", "mm_124933865_56750082_89555600043");
        specialConvertCouponV2("ZMxBywvT6tPr0wabjaFBQPiVt6-g4DYZPC2OoJaaRXIoq", app, "511379263", null);
    }
}
fanli/src/main/resource/dubbo/consumer.xml
fanli/src/main/resource/mapping/jd/JDOrderItemMapper.xml
@@ -25,6 +25,7 @@
        <result column="joi_cid2" property="cid2" jdbcType="BIGINT" />
        <result column="joi_site_id" property="siteId" jdbcType="BIGINT" />
        <result column="joi_sku_id" property="skuId" jdbcType="BIGINT" />
        <result column="joi_item_id" property="itemId" jdbcType="VARCHAR" />
        <result column="joi_sku_name" property="skuName" jdbcType="VARCHAR" />
        <result column="joi_sku_num" property="skuNum" jdbcType="BIGINT" />
        <result column="joi_sku_return_num" property="skuReturnNum"
@@ -59,7 +60,7 @@
        <result column="showValue" property="showValue" jdbcType="VARCHAR" />
    </resultMap>
    
    <sql id="Base_Column_List">joi_id,joi_order_id,joi_actual_cos_price,joi_actual_fee,joi_commission_rate,joi_estimate_cos_price,joi_estimate_fee,joi_final_rate,joi_cid1,joi_frozen_sku_num,joi_pid,joi_position_id,joi_price,joi_cid2,joi_site_id,joi_sku_id,joi_sku_name,joi_sku_num,joi_sku_return_num,joi_sub_side_rate,joi_sub_sidy_rate,joi_cid3,joi_union_alias,joi_union_tag,joi_union_traffic_group,joi_valid_code,joi_sub_union_id,joi_trace_type,joi_pay_month,joi_pop_id,joi_ext1,joi_trade_id,joi_create_time,joi_update_time,joi_order_by
    <sql id="Base_Column_List">joi_id,joi_order_id,joi_actual_cos_price,joi_actual_fee,joi_commission_rate,joi_estimate_cos_price,joi_estimate_fee,joi_final_rate,joi_cid1,joi_frozen_sku_num,joi_pid,joi_position_id,joi_price,joi_cid2,joi_site_id,joi_sku_id,joi_item_id,joi_sku_name,joi_sku_num,joi_sku_return_num,joi_sub_side_rate,joi_sub_sidy_rate,joi_cid3,joi_union_alias,joi_union_tag,joi_union_traffic_group,joi_valid_code,joi_sub_union_id,joi_trace_type,joi_pay_month,joi_pop_id,joi_ext1,joi_trade_id,joi_create_time,joi_update_time,joi_order_by
    </sql>
    <select id="selectByPrimaryKey" resultMap="BaseResultMap"
        parameterType="java.lang.Long">
@@ -80,6 +81,12 @@
        select
        <include refid="Base_Column_List" />
        from yeshi_ec_jd_order_item where joi_order_id = #{0}
    </select>
    <select id="list" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
        from yeshi_ec_jd_order_item where  joi_create_time > #{minCreateTime}  order by joi_create_time asc limit #{start}, #{count}
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from
@@ -111,6 +118,7 @@
            <if test="cid2 != null">joi_cid2,</if>
            <if test="siteId != null">joi_site_id,</if>
            <if test="skuId != null">joi_sku_id,</if>
            <if test="itemId != null">joi_item_id,</if>
            <if test="skuName != null">joi_sku_name,</if>
            <if test="skuNum != null">joi_sku_num,</if>
            <if test="skuReturnNum != null">joi_sku_return_num,</if>
@@ -149,6 +157,7 @@
            <if test="cid2 != null">#{cid2,jdbcType=BIGINT},</if>
            <if test="siteId != null">#{siteId,jdbcType=BIGINT},</if>
            <if test="skuId != null">#{skuId,jdbcType=BIGINT},</if>
            <if test="itemId != null">#{itemId,jdbcType=VARCHAR},</if>
            <if test="skuName != null">#{skuName,jdbcType=VARCHAR},</if>
            <if test="skuNum != null">#{skuNum,jdbcType=BIGINT},</if>
            <if test="skuReturnNum != null">#{skuReturnNum,jdbcType=BIGINT},</if>
@@ -186,7 +195,8 @@
        #{price,jdbcType=DECIMAL},joi_cid2 =
        #{cid2,jdbcType=BIGINT},joi_site_id =
        #{siteId,jdbcType=BIGINT},joi_sku_id =
        #{skuId,jdbcType=BIGINT},joi_sku_name =
        #{skuId,jdbcType=BIGINT},joi_item_id =
        #{itemId,jdbcType=VARCHAR},joi_sku_name =
        #{skuName,jdbcType=VARCHAR},joi_sku_num =
        #{skuNum,jdbcType=BIGINT},joi_sku_return_num =
        #{skuReturnNum,jdbcType=BIGINT},joi_sub_side_rate =
@@ -228,6 +238,7 @@
            <if test="cid2 != null">joi_cid2=#{cid2,jdbcType=BIGINT},</if>
            <if test="siteId != null">joi_site_id=#{siteId,jdbcType=BIGINT},</if>
            <if test="skuId != null">joi_sku_id=#{skuId,jdbcType=BIGINT},</if>
            <if test="itemId != null">joi_item_id=#{itemId,jdbcType=VARCHAR},</if>
            <if test="skuName != null">joi_sku_name=#{skuName,jdbcType=VARCHAR},</if>
            <if test="skuNum != null">joi_sku_num=#{skuNum,jdbcType=BIGINT},</if>
            <if test="skuReturnNum != null">joi_sku_return_num=#{skuReturnNum,jdbcType=BIGINT},</if>
fanli/src/main/resource/sms_config.properties
@@ -1,11 +1,11 @@
#短信验证码模板
#登录验证码
sms_login=【[签名]】验证码:[验证码],2分钟内有效。为了保护您的账号安全,验证短信请勿转发他人。
sms_login=【[签名]】验证码:[验证码],2分钟内有效。
#绑定验证码
sms_bind=【[签名]】验证码:[验证码],2分钟内有效。为了保护您的账号安全,验证短信请勿转发他人。
sms_bind=【[签名]】验证码:[验证码],2分钟内有效。
#提现验证码
sms_extract=【[签名]】[验证码](返利券验证码),有效期为2分钟。为了保护您的账号安全,验证短信请勿转发他人。
sms_extract=【[签名]】[验证码](返利券验证码),有效期为2分钟。
#提现成功验证码
sms_extract_success=【[签名]】恭喜您!成功提现[金额]元,请前往您绑定的提现支付宝账单中确认查收(来自于重庆椰视科技有限公司的转账),如有疑问请联系本APP人工客服。
#提现失败验证码