zhaojs
2023-06-27 26d73c661f7af5d7069b28bd6d5a68619d1610c2
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
<?php
 
namespace app\api\controller;
 
use app\common\controller\Api;
use think\Log;
use app\api\logic\taoke\device\Dingdanxia as LogicDingdanxia;
use app\api\logic\order\WphOrder as LogicWphOrder;
 
/**
 * 同步唯品会订单
 */
class AnsyWphOrder 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('访问密钥错误,访问受限');
    }
 
    /**
     * 同步近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天数据');
        }
        $type = request()->param('type','');
        if(empty($type))fault('查询类型不能为空');
        if(!in_array($type,[1,2]))fault('查询类型错误');
        $interval = request()->param('interval',20); //时间间隔
        if($interval > 60)fault('最大时间间隔60');
        $end_now_time = request()->param('end_now_time','');
        $status = request()->param('status','');
        $LogicDingdanxia = new LogicDingdanxia();
        if($time_type == 'last_month'){
            $time = strtotime('-1 month');
            $start_time =mktime(0,0,0,date('m',$time),01,date('Y',$time)); //上个月的开始时间
            $now_time = mktime(23,59,59,date('m',$time),date('t',$time),date('Y',$time));
        }else{
            $start_time = empty($day) ? time()-$interval*60 : strtotime(date("Y-m-d 00:00:00", strtotime("-".($day-1)." day")));
        $now_time = empty($end_now_time) ? time() : strtotime($end_now_time);
        }
        
        //dump([date("Y-m-d H:i:s",$start_time),date("Y-m-d H:i:s",$now_time)]);exit;
        $error_flag = false;
        $error = "";
        $LogicWphOrder = new LogicWphOrder();
        for($j=$start_time;$j<=$now_time;$j+=$interval*60){
            $orderTimeStart = "";
            $orderTimeEnd = "";
            $updateTimeStart = "";
            $updateTimeEnd = "";
            $begain_time = $j."000";
            $end_time = ($j+$interval*60)."000";
            switch($type){
                case 1: 
                    $orderTimeStart = $begain_time;
                    $orderTimeEnd = $end_time;
                    break;
                case 2: 
                    $updateTimeStart = $begain_time;
                    $updateTimeEnd = $end_time;
                    break;
            }
            for($i=1;$i<=$this->max_page;$i++){
                $res = $LogicDingdanxia->getOrderDetails2($i,20,$orderTimeStart,$orderTimeEnd,$status,$updateTimeStart,$updateTimeEnd);
                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 = $LogicWphOrder->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."同步拆分开始-------------";
        $LogicWphOrder = new LogicWphOrder();
        $result = $LogicWphOrder->chaifenOrder();
        if(!$result)fault('同步拆分错误--'.$result['info']);
        echo "---------".$time_str."同步拆分完成-------------";
    }
 
 
  
 
}