zhaojs
2023-05-16 ea24ddd0b978cbd3b0a900711b49b8a9c2db4186
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<?php
namespace app\api\logic\taoke\device;
 
use app\api\logic\taoke\Parser;
 
 
 
class Zhetaoke extends Parser
{
    protected $app_key,$config;
 
    protected $baseUrl = '';
 
    const request_url = [
        'zhuanlian_url' => "https://api.zhetaoke.com:10001/api/open_gaoyongzhuanlian_tkl.ashx", 
        'synchronize_order_url' => "https://api.zhetaoke.com:10001/api/open_dingdanchaxun2.ashx",
        'day_synchronize_order_url' => 'https://api.zhetaoke.com:10001/api/open_dingdanchaxun2_piliang.ashx'
    ];
 
    const shop_type = ["0"=>"淘宝","1"=>"天猫","3"=>"特价版"];
    
 
 
    public function __construct()
    {
        parent::__construct();
 
        $this->config = config('site.zhetaoke');
 
        $this->app_key = $this->config['appkey'];
 
        if(empty($this->app_key)) return fault('配置信息错误');
    }
 
 
    /**
     * 同步订单接口 http://www.zhetaoke.com/user/open/open_dingdanchaxun2.aspx
     *
     * @param [type] $query_type 查询时间类型,1:按照订单淘客创建时间查询,2:按照订单淘客付款时间查询,3:按照订单淘客结算时间查询,4:按照订单更新时间查询;
     * @param integer $order_scene 场景订单场景类型,1:常规订单,2:渠道订单,3:会员运营订单,默认为1
     * @param string $position_index 位点,除第一页之外,都需要传递;前端原样返回。注意:从第二页开始,位点必须传递前一页返回的值,否则翻页无效。
     * @param integer $page_no 第几页,默认1,1~100
     * @param integer $page_size 页大小,默认20,1~100
     * @param string $start_time 订单查询开始时间
     * @param string $end_time 订单查询结束时间
     * @return void
     */
    public function synchronizeOrder($query_type,$start_time,$end_time,$order_scene = "2",$position_index="",$page_no = 1,$page_size=100,$step = 0,$tk_status="")
    {
        $send_data = [
            'appkey' => $this->app_key,
            'sid' => $this->config['sid'],
            'query_type' => $query_type,
            'position_index' => $position_index,
            'page_size' => $page_size,
            'page_no' => $page_no,
            'order_scene' => $order_scene,
            'start_time' => $start_time,
            'end_time' => $end_time,
            'tk_status' => $tk_status
        ];
        $result = send_get(self::request_url['synchronize_order_url'],$send_data);
        if(empty($result) || empty($result['url'])){//做处理
            if($step == 2) return ['status'=>false,'info'=>$start_time.'--'.$end_time.'返回链接错误','position_index'=>'','list'=>[]];
            $step++;
            return $this->synchronizeOrder($query_type,$start_time,$end_time,$order_scene = 2,$position_index,$page_no,$page_size=100,$step);
        }
        $search_url = $result['url'];
        $search_result = send_get($search_url);
        if(isset($search_result['error_response'])){
            if($step == 2) return ['status'=>false,'info'=>'接口请求错误','position_index'=>'','list'=>[]];
            $step++;
            return $this->synchronizeOrder($query_type,$start_time,$end_time,$order_scene = 2,$position_index,$page_no,$page_size=100,$step);
        }
        if(isset($search_result['tbk_sc_order_details_get_response'])){
            $data = $search_result['tbk_sc_order_details_get_response'];
            $order_list = isset($data['data']['results']['publisher_order_dto']) ? $data['data']['results']['publisher_order_dto'] : [];
            if(empty($order_list))return ['status'=>true,'info'=>'请求成功','has_next'=>false,'total'=>0,'position_index'=>'','list'=>[]];
            return ['status'=>true,'info'=>'请求成功','has_next'=>$data['data']['has_next'],'position_index'=>$data['data']['position_index'],'list'=>$order_list,'total'=>count($order_list)];
        }else{
            return ['status'=>false,'info'=>'接口请求失败','position_index'=>'']; 
        }
    }
 
 
    /**
     * 高佣专链 https://www.zhetaoke.com/user/open/open_gaoyongzhuanlian_tkl.aspx
     *
     */
    public function zhuanlian($goodsUrl,$is_turn=false,$relation_id="")
    {
        $send_data = [
            'appkey' => $this->app_key,
            'pid' => MOBILE_INFO == "IOS" ? config('site.taobao_pid')['ios_pid'] : config('site.taobao_pid')['android_pid'],
            'sid' => $this->config['sid'],
            'tkl' => urlencode($goodsUrl),
            'relation_id' => $relation_id,
            'signurl' => 5
        ];
        $result = send_get(self::request_url['zhuanlian_url'],$send_data);
        if(isset($result['error_response']) && !empty($result['error_response'])) return [];
        if(empty($result) || $result['status'] != 200 || !isset($result['status']))return [];
        $info = $result['content'][0];
        if($is_turn){
            $return_info = $info['title']."\n"
            ."原价:¥".$info['size']." 券后价:¥".$info['quanhou_jiage']."\n"
            ."0复.制文案.打.开桃.宝:".$info['tkl'];
            return $return_info;
        }else{
            $goods = self::initGoods($info);
            return $goods;
        }
        
    }
 
 
   
 
    /**
     * 格式化商品信息
     *
     * @param [type] $goods
     * @return void
     */
    private static function initGoods($goods)
    {
        if(empty($goods)) return [];
        $init_goods = self::goodsField();
        $init_goods['id'] = isset($goods['item_id']) ? $goods['item_id'] : '';
        $init_goods['goodsId'] = isset($goods['tao_id']) ? $goods['tao_id'] : '';   //商品id
        $init_goods['itemLink'] = isset($goods['taobao_url']) ? $goods['taobao_url'] : '';        //商品链接
        $init_goods['title'] = isset($goods['tao_title']) ? $goods['tao_title'] : '';               //商品标题
        $init_goods["dtitle"] = isset($goods['title']) ? $goods['title'] : '';               //短标题  
        $init_goods["actualPrice"] = isset($goods['quanhou_jiage']) ? $goods['quanhou_jiage'] : '';        //券后价
        $init_goods["originalPrice"] = isset($goods['size']) ? $goods['size'] : '';        //商品原价
        $init_goods["sellerId"] = isset($goods['seller_id']) ? $goods['seller_id'] : '';           //店铺Id
        $init_goods["shopName"] = isset($goods['shop_title']) ? $goods['shop_title'] : '';           //店铺名称
        $init_goods["couponPrice"] = isset($goods['coupon_info_money']) ? $goods['coupon_info_money'] : '';       //优惠券金额
        $init_goods["monthSales"] = isset($goods['volume']) ? format_number($goods['volume']) : 0;        //30天销量
        $init_goods["mainPic"] = isset($goods['pict_url']) ? $goods['pict_url'] : '';      //商品主图
        $init_goods["video"] = isset($goods['zhibo_url']) ? $goods['zhibo_url'] : '';              //商品视频
        $init_goods['couponLink'] = isset($goods['coupon_click_url']) ? $goods['coupon_click_url'] : '';          //优惠券链接
        $init_goods['couponEndTime'] = isset($goods['coupon_end_time']) && !empty($goods['coupon_end_time']) ? $goods['coupon_end_time'] : '';      //优惠券结束时间
        $init_goods['couponStartTime'] = isset($goods['coupon_start_time']) && !empty($goods['coupon_start_time']) ? $goods['coupon_start_time'] : '';      //优惠券开始时间 
        $init_goods['shopType'] = isset(self::shop_type[$goods['user_type']]) ? self::shop_type[$goods['user_type']] : "未知";            //店铺类型
        $init_goods['sourceType'] = "tb";
        if(isset($goods['user_type']) && $goods['user_type'] == 1)$init_goods['sourceType'] = "tm";
        if(isset($goods['shopType']) && $goods['user_type'] == 1)$init_goods['sourceType'] = "tm";
        $init_goods['desc'] = isset($goods['item_description']) ? $goods['item_description'] : '';  //推广文案
        $init_goods['imgs'] =[$goods['pict_url']];
        $init_goods['labelImg'] = self::initSourse($init_goods['sourceType']);
        $init_goods['isCollect'] = self::isCollect($init_goods);
        if(empty($init_goods['detailPics']))$init_goods['detailPics'] = $init_goods['mainPic'];
        $init_goods['fanli'] = self::rebate($init_goods["actualPrice"],$goods['tkrate3']);
        $init_goods['topFanli'] = self::rebate($init_goods['actualPrice'],$goods['tkrate3'],self::$topFanliRate);
        return $init_goods;
    }
    
    
}