<?php
|
|
namespace app\api\controller;
|
|
use app\common\controller\Api;
|
use think\Log;
|
use app\api\logic\taoke\device\Haodanku as LogicHaodanku;
|
use app\api\logic\order\DyOrder as LogicDyOrder;
|
|
/**
|
* 同步抖音订单
|
*/
|
class AnsyDyOrder 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 > 120) fault('只限近120天数据');
|
}
|
$date_type = request()->param('date_type','');
|
if(empty($date_type))fault('查询类型不能为空');
|
if(!in_array($date_type,[1,2,3,4]))fault('查询类型错误');
|
$media_type = request()->param('media_type','');
|
if(empty($media_type))fault('媒体类型不能为空');
|
$interval = request()->param('interval',20); //时间间隔
|
if($interval > 60)fault('最大时间间隔60');
|
$end_now_time = request()->param('end_now_time','');
|
$st_time = request()->param('start_time','');
|
$LogicHaodanku = new LogicHaodanku();
|
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{
|
if(!empty($st_time)){
|
$start_time = strtotime($st_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)]);
|
$error_flag = false;
|
$error = "";
|
$LogicDyOrder = new LogicDyOrder();
|
for($j=$start_time;$j<=$now_time;$j+=$interval*60){
|
$begain_time = $j;
|
$end_time = $j+$interval*60;
|
for($i=1;$i<=$this->max_page;$i++){
|
$res = $LogicHaodanku->dyOrderList($date_type,$media_type,$begain_time,$end_time,$i,100);
|
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 = $LogicDyOrder->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."同步拆分开始-------------";
|
$LogicDyOrder = new LogicDyOrder();
|
$result = $LogicDyOrder->chaifenOrder();
|
if(!$result)fault('同步拆分错误--'.$result['info']);
|
echo "---------".$time_str."同步拆分完成-------------";
|
}
|
|
|
|
|
}
|