zhaojs
2023-10-07 6c7bba2e05c011a3d640b6565a113204228e92e0
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
<?php
 
namespace app\api\controller;
 
use app\common\controller\Api;
use think\Log;
use app\api\logic\taoke\device\Pdd as LogicPdd;
use app\api\logic\order\PddOrder as LogicPddOrder;
 
/**
 * 同步拼多多订单
 */
class AnsyPddOrder extends Api
{
 
    protected $noNeedLogin = '*';
    protected $noNeedRight = '*';
 
    protected $max_page = 50; //最大执行页数
 
    protected $page_size = 100; //每页获取数据
 
 
 
    public function __construct()
    {
        $key = request()->param('key','');
        if(empty($key)) fault('访问受限');
        if($key != config('site.pas_key'))fault('访问密钥错误,访问受限');
    }
 
    /**
     * 1分钟按照更新时间同步近10分钟订单
     * 
     * @return void
     */
    public function syncOneMinuteOrder()
    {
        $LogicPdd = new LogicPdd();
        $start_time =  time()-10*60;
        $now_time = time();
        $error_flag = false;
        $error = "";
        $LogicPddOrder = new LogicPddOrder();
        for($i=1;$i<=$this->max_page;$i++){
            $res = $LogicPdd->incrementOrder($start_time,$now_time,1,$i,50);
            if(!$res['status']){
                $error_flag = true;
                $error = $res['info'];
                break;
            }else{
                if($res['total'] == 0)break;
                $order_list = $res['list'];
                if(!empty($order_list)){
                    foreach($order_list as $order){
                        $result = $LogicPddOrder->fanliOrder($order);
                        if(!$result['status']){
                            mylog('订单更新错误',$result['info'],"errorInfo");
                        }
                    }
                }
                if(!$res['hasMore'])break;
            }
        }
        if($error_flag){
            mylog('同步错误',$error,"errorInfo");
            fault('同步错误--'.$error);
        }
        echo "同步成功";
    }
 
 
    /**
     * 同步近x天的订单
     *
     * @return void
     */
    public function syncOrder()
    {
        $day = request()->param('day','');
        $time_type = request()->param('time_type','now');
        if($time_type == "now"){
            if(!empty($day) && $day > 90) fault('只限近90天数据');
        }
        $end_now_time = request()->param('end_now_time','');
        $LogicPdd = new LogicPdd();
        if($time_type == 'last_month'){
            $time = strtotime('-1 month');
            $start_time = date('Y-m-d H:i:s',mktime(0,0,0,date('m',$time),01,date('Y',$time))); //上个月的开始时间
            $now_time = date('Y-m-d H:i:s',mktime(23,59,59,date('m',$time),date('t',$time),date('Y',$time)));
        }else{
            $start_time = date("Y-m-d 00:00:00", strtotime("-".($day-1)." day"));
            $now_time = empty($end_now_time) ? date("Y-m-d H:i:s",time()) : $end_now_time;
        }
        //dump([$start_time,$now_time]);exit;
        $error_flag = false;
        $error = "";
        $LogicPddOrder = new LogicPddOrder();
        $last_order_id = "";
        for($i=1;$i<=$this->max_page;$i++){
            $res = $LogicPdd->rangOrder($start_time,$now_time,1,$last_order_id,300);
            if(!$res['status']){
                $error_flag = true;
                $error = $res['info'];
                break;
            }else{
                if($res['total'] == 0)break;
                $order_list = $res['list'];
                if(!empty($order_list)){
                    foreach($order_list as $order){
                        $result = $LogicPddOrder->fanliOrder($order);
                        if(!$result['status']){
                            mylog('订单更新错误',$result['info'],"errorInfo");
                        }
                    }
                }
                if(!$res['hasMore'])break;
            }
        }
        if($error_flag){
            mylog('同步错误',$error,"errorInfo");
            fault('同步错误--'.$error);
        }
        echo "同步成功";
    }
 
 
 
    /**
     * 同步订单拆分
     *
     * @return void
     */
    public function orderCommission()
    {
        $time_str = date("Y-m-d H:i:s");
        echo "---------".$time_str."同步拆分开始-------------";
        $LogicPddOrder = new LogicPddOrder();
        $result = $LogicPddOrder->chaifenOrder();
        if(!$result)fault('同步拆分错误--'.$result['info']);
        echo "---------".$time_str."同步拆分完成-------------";
    }
 
 
  
 
}