<?php
|
|
namespace app\api\controller;
|
|
use app\common\controller\Api;
|
use think\Log;
|
use app\api\logic\taoke\device\Zhetaoke as LogicZhetaoke;
|
use app\api\logic\order\TbOrder as LogicTbOrder;
|
|
/**
|
* 同步淘宝订单
|
*/
|
class AnsyTaobaoOrder 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('访问密钥错误,访问受限');
|
}
|
|
/**
|
* 同步订单近20分钟内的订单
|
*
|
* @return void
|
*/
|
public function syncOrder()
|
{
|
$time_str = date("Y-m-d H:i:s");
|
echo "---------".$time_str."同步开始-------------";
|
$query_type = request()->param('query_type','');
|
if(empty($query_type)){
|
mylog('系统提示','查询类型不能为空',"errorInfo");
|
fault('查询类型不能为空');
|
}
|
$LogicZhetaoke = new LogicZhetaoke();
|
$end_time = date("Y-m-d H:i:s",time()); //当前时间
|
$start_time = date("Y-m-d H:i:s",time()-20*60);//默认前20分钟
|
/**测试 */
|
// $start_time = "2022-06-20 23:50:00";
|
// $end_time = "2022-06-20 23:59:59";
|
$position_index = "";
|
$error_flag = false;
|
$error = "";
|
$LogicTbOrder = new LogicTbOrder();
|
for($i=1;$i<=$this->max_page;$i++){
|
$res = $LogicZhetaoke->synchronizeOrder($query_type,$start_time,$end_time,2,$position_index,$i,$this->page_size,0);
|
if(!$res['status']){
|
$error_flag = true;
|
$error = $res['info'];
|
break;
|
}else{
|
if($res['total'] == 0)break;
|
$position_index = $res['position_index'];
|
$order_list = $res['list'];
|
if(!empty($order_list)){
|
foreach($order_list as $order){
|
$result = $LogicTbOrder->fanliOrder($order);
|
if(!$result['status']){
|
mylog('订单更新错误',$result['info'],"errorInfo");
|
}
|
}
|
}
|
if(!$res['has_next'])break;
|
}
|
}
|
if($error_flag){
|
mylog('同步错误',$error,"errorInfo");
|
fault('同步错误--'.$error);
|
}
|
echo "---------".$time_str."同步完成-------------";
|
}
|
|
|
|
/**
|
* 同步订单拆分
|
*
|
* @return void
|
*/
|
public function orderCommission()
|
{
|
$time_str = date("Y-m-d H:i:s");
|
echo "---------".$time_str."同步拆分开始-------------";
|
$LogicTbOrder = new LogicTbOrder();
|
$result = $LogicTbOrder->chaifenOrder();
|
if(!$result)fault('同步拆分错误--'.$result['info']);
|
echo "---------".$time_str."同步拆分完成-------------";
|
}
|
|
|
/**
|
* 同步近x天的订单
|
*
|
* @return void
|
*/
|
public function synchronizeDayOrder()
|
{
|
$day = request()->param('day','');
|
$time_type = request()->param('time_type','now');
|
if($time_type == "now"){
|
if(empty($day)) fault('只限近90天数据');
|
if($day > 90) fault('只限近90天数据');
|
}
|
$tk_status = request()->param('tk_status','');
|
$query_type = request()->param('query_type','');
|
if(empty($query_type))fault('查询类型不能为空');
|
$interval = request()->param('interval',20); //时间间隔
|
if($interval > 100)fault('最大时间间隔100');
|
$order_scene = request()->param('order_scene',2);
|
$LogicZhetaoke = new LogicZhetaoke();
|
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 = 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 = time();
|
}
|
$error_flag = false;
|
$error = "";
|
$LogicTbOrder = new LogicTbOrder();
|
for($j=strtotime($start_time);$j<=$now_time;$j+=$interval*60){
|
$begain_time = date("Y-m-d H:i:s",$j);
|
$end_time = date("Y-m-d H:i:s",$j+$interval*60);
|
$position_index = "";
|
for($i=1;$i<=$this->max_page;$i++){
|
$res = $LogicZhetaoke->synchronizeOrder($query_type,$begain_time,$end_time,$order_scene,$position_index,$i,$this->page_size,0,$tk_status);
|
if(!$res['status']){
|
$error_flag = true;
|
$error = $res['info'];
|
break;
|
}else{
|
if($res['total'] == 0)break;
|
$position_index = $res['position_index'];
|
$order_list = $res['list'];
|
if(!empty($order_list)){
|
foreach($order_list as $order){
|
$result = $LogicTbOrder->fanliOrder($order);
|
if(!$result['status']){
|
mylog('订单更新错误',$result['info'],"errorInfo");
|
}
|
}
|
}
|
if(!$res['has_next'])break;
|
}
|
}
|
}
|
if($error_flag){
|
mylog('同步错误',$error,"errorInfo");
|
fault('同步错误--'.$error);
|
}
|
echo "同步成功";
|
|
}
|
|
}
|