<?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."同步拆分完成-------------";
|
}
|
|
|
|
|
}
|