```
<?php
// +------------------------------------------------------------------------------------------------
// | 【使用說明】請將本文件上傳至網站服務器:/application/index/controller/ 目錄下。
// +------------------------------------------------------------------------------------------------
// | [18淘客助手api文件(程序俠淘寶客專用)] Copyright (c) 2019 18.LA
// +------------------------------------------------------------------------------------------------
// | 最后修改:2019年4月19日
// +------------------------------------------------------------------------------------------------
// | 官網:http://taoke.18.la/
// +------------------------------------------------------------------------------------------------
namespace app\index\controller;
use think\Controller;
use think\Db;
use \think\Request;
class Api extends Controller
{
//定義返回數據
private $return = array('state'=>'ok','code'=>1,'message'=>'','version'=>'5.7');
public function index()
{
$this->return['system']=urlencode('程序俠淘寶客');//系統名稱
$this->return['updatetime']=urlencode('2019年4月19日');//最后修改日期
//驗證key
$this->verify();
//讀取api參數
$api=Request::instance()->post('api');
//訂單同步
if($api=='postorder'){
$this->postorder();
}
//商品采集
elseif($api=='postgoods'){
$this->postgoods();
}
//商品管理
elseif($api=='delgoods'){
$this->delgoods();
}
//代理管理
elseif($api=='agentadmin'){
$op=Request::instance()->post('op');
if($op=='getrequest'){
//獲取待審核代理列表
$this->getagent();
}elseif($op=='check'){
//審核代理
$this->checkagent();
}else{
$this->returnExit($this->return,0,"傳入條件數據不正確");//code值設置為0,表示失敗
}
}
//拼多多訂單同步
elseif($api=='postpddorder'){
$this->postpddorder();
}
//京東訂單同步
elseif($api=='postjdorder'){
$this->postjdorder();
}
$this->returnExit($this->return,0,"未傳入有效API參數");//code值設置為0,表示失敗
}
// +----------------------------------------
// | 接口驗證相關函數
// +----------------------------------------
//接口驗證
private function verify()
{
//讀取post的基礎參數
$api=Request::instance()->post('api');//api名稱
$getkey=Request::instance()->post('key');
//如果未傳入有效參數
if (!isset($getkey) || !isset($api)) {
$this->returnExit($this->return,0,"API接口正常");//code值設置為0,表示失敗
}
//讀取網站授權碼
$web_auth_code = Db::name('config')->where("name","WEB_AUTH_CODE")->value('value');
//處理字符串
$getkey=trim($getkey);
$getkey=strtoupper($getkey);
$web_auth_code=trim($web_auth_code);
$web_auth_code=strtoupper($web_auth_code);
//判斷密鑰是否正確
if($getkey!=$web_auth_code){
$this->returnExit($this->return,0,"密鑰錯誤");//code值設置為0,表示失敗
}
//接口驗證
if($api=='verify'){
$this->returnExit($this->return,1,"驗證成功");//code值設置為1,表示成功
}
}
// +----------------------------------------
// | 訂單同步相關函數
// +----------------------------------------
//訂單同步
private function postorder()
{
//獲取post過來的訂單內容
$content=Request::instance()->post('content');
if(empty($content)){
$this->returnExit($this->return,0,"content參數不能為空");//code值設置為0,表示失敗
}
$content=htmlspecialchars_decode($content);//把一些預定義的 HTML 實體轉換為字符
$contentArr=@json_decode($content, true);//json解碼
//如果數組不為空
if(!empty($contentArr)){
//將訂單數據以訂單號和商品ID做鍵值,保存到新數組
$contentArr=$this->orderOnly($contentArr);
$db = Db::name('union_order');//操作union_order表
$resultStr="";//記錄訂單入庫結果字符串
//遍歷訂單數組
foreach($contentArr as $orderData)
{
//判斷是否為空數組
if(count($orderData)<1){
continue;
}
//讀取訂單編號和商品id
$orderid=$orderData[0]['訂單編號'];
$goodsid=$orderData[0]['商品ID'];
//查詢是否存在
$goods_order_id = $db->where('goods_order',$orderid)->where('goods_id',$goodsid)->column('id');
//遍歷數組
$id=0;
$resultValue=1;
foreach($orderData as $data){
//格式化訂單數據
$newdata=$this->orderFormat($data);
Db::startTrans();// 啟動事務
//判斷數據是否存在
if(isset($goods_order_id[$id])){
//如果數據已存在,更新
try{
$result=$db->where('id',$goods_order_id[$id])->update($newdata);
// 提交事務
Db::commit();
$resultValue = ($resultValue==1) ? 1 : 0;//如果上次狀態為1,這次也標記為1,否則設置為0
} catch (\Exception $e) {
// 回滾事務
Db::rollback();
$resultValue=0;
}
}else{
//如果數據不存在,新增
try{
$result=$db->insert($newdata);
// 提交事務
Db::commit();
if (!empty($result)) {
//添加成功
$resultValue = ($resultValue==1) ? 1 : 0;//如果上次狀態為1,這次也標記為1,否則設置為0
}else{
//添加失敗
$resultValue=0;
}
} catch (\Exception $e) {
// 回滾事務
Db::rollback();
$resultValue=0;
}
}
$id++;
}
//記錄入庫結果
$resultStr=$this->resultState($resultStr,$orderid,$resultValue);
}
$this->returnExit($this->return,1,"result:".$resultStr);//code值設置為1,表示成功
}else{
$this->returnExit($this->return,0,"傳入訂單數據不正確");//code值設置為0,表示失敗
}
}
//將訂單數據以訂單號和商品ID做鍵值,保存到新數組
private function orderOnly($contentArr)
{
//遍歷訂單數組
foreach($contentArr as $orderID=>$orderData)
{
foreach($orderData as $data){
$key=$data['訂單編號'].'_'.$data['商品ID'];
$newData[$key][]=$data;
}
}
return $newData;
}
//格式化訂單數據
function orderFormat($data){
//將數據存儲到符合當前系統的新數組
$newData=array(
//'id'=>0,//ID
//'uid'=>0,//認領用戶ID
'type'=>0,//訂單類型 0淘寶 1拼多多 2京東
'goods_order'=>$data['訂單編號'],//訂單編號
'goods_number'=>$data['商品數'],//成交數量
'order_status'=>$data['訂單狀態'],//3:訂單結算12:訂單付款13:訂單失效
'title'=>$data['商品信息'],//商品標題
'goods_id'=>$data['商品ID'],//商品ID
'price'=>$data['商品單價'],//商品價格
'shop_type'=>$data['訂單類型'],//訂單類型
'pay_price'=>$data['付款金額'],//付款金額
'settlement_price'=>$data['結算金額'],//結算金額
'commission'=>$data['效果預估'],//效果預估
'commission_rate'=>$data['傭金比率'],//傭金比率
//'status'=>0,//狀態
//'is_receive'=>0,//提現狀態 0:未提現 1:已提現
//'second_receive'=>0,//二代提現狀態
//'third_receive'=>0,//三代提現狀態
'terminal_type'=>$data['成交平臺'],//成交平臺
'create_time'=>strtotime($data['創建時間']),//創建時間
'adzone_id'=>$data['廣告位ID'],//廣告位ID
'adzone_name'=>$data['渠道關系ID'] ? $this->getAdzoneName($data['渠道關系ID']) : $data['廣告位名稱'],//廣告位名稱
'relation_id'=>$data['渠道關系ID'],//渠道id
'special_id'=>$data['會員運營ID'],//渠道id
'earning_time'=>strtotime($data['結算時間']),//結算時間
);
//將訂單狀態轉化為程序俠支持的格式
if($newData['order_status']=='訂單結算' || $newData['order_status']=='訂單完成'|| $newData['order_status']=='訂單成功'){
$newData['order_status']='3';
}elseif($newData['order_status']=='訂單付款'){
$newData['order_status']='12';
}if($newData['order_status']=='訂單失效'){
$newData['order_status']='13';
}
//處理維權訂單
if(strpos($data['維權狀態'],"維權創建") !== false || strpos($data['維權狀態'],"等待處理") !== false) {
$newData['order_status']='12';//強制將訂單狀態設置為:訂單付款
}
elseif(strpos($data['維權狀態'],"維權成功") !== false) {
$newData['order_status']='13';//強制將訂單狀態設置為:訂單失效
}
elseif(strpos($data['維權狀態'],"維權失敗") !== false) {
//$newData['order_status']='3';//強制將訂單狀態設置為:訂單結算(因為訂單也有可能本身是其他狀態,所以此處不做處理即可)
}
//是否開啟渠道
$channel = get_config('AGENT_CHANNEL_MEMBER');
//
if ($channel == '1'){
if (isset($newData['special_id']) && $newData['special_id']) {
$data = $this->createOrderLog($newData);
if ($data['uid']) {
$newData['uid'] = $data['uid']; //用戶id
$newData['rebate_money'] = $data['money']; //返利金額
}
}
if (Db::query('show tables like "cxxia_push_log"')) {
if ($newData['order_status'] == '12'){
$this->pushOrder($newData,'1');
}
}
}
return $newData;
}
// +----------------------------------------
// | 商品采集相關函數
// +----------------------------------------
//商品采集
private function postgoods()
{
//獲取post過來的訂單內容
$content=Request::instance()->post('content');
if(empty($content)){
$this->returnExit($this->return,0,"content參數不能為空");//code值設置為0,表示失敗
}
$content=htmlspecialchars_decode($content);//把一些預定義的 HTML 實體轉換為字符
$contentArr=@json_decode($content, true);//json解碼
//print_r($contentArr);
//如果數組不為空
if(!empty($contentArr['cat']) && !empty($contentArr['goods'])){
//商品分類
$cat=$this->goodsCat($contentArr['cat']);
if(empty($cat)){
$this->returnExit($this->return,0,"分類綁定不正確");//code值設置為0,表示失敗
}
//商品數據
$resultStr="";//記錄訂單入庫結果字符串
foreach($contentArr['goods'] as $data)
{
$itemid=$data['商品ID'];
//格式化商品數據
$newdata=$this->goodsFormat($cat,$data);
//print_r($newdata);
$db = Db::name('goods');
//查詢是否存在
$goodsid = $db->where('goods_id',$itemid)->value('id');
if (empty($goodsid)){
Db::startTrans();// 啟動事務
try{
$result=$db->insert($newdata);
// 提交事務
Db::commit();
} catch (\Exception $e) {
// 回滾事務
Db::rollback();
}
}else{
//如果已存在,更新
Db::startTrans();// 啟動事務
try{
$result=$db->where('goods_id',$itemid)->update($newdata);
// 提交事務
Db::commit();
} catch (\Exception $e) {
// 回滾事務
Db::rollback();
}
}
//記錄入庫結果
if (!empty($result)) {
//添加成功
$resultStr=$this->resultState($resultStr,$itemid,"1");
}else{
//添加失敗
$resultStr=$this->resultState($resultStr,$itemid,"0");
}
}
//清空緩存
$this->clearcache();
$this->returnExit($this->return,1,"result:".$resultStr);//code值設置為1,表示成功
}else{
$this->returnExit($this->return,0,"傳入商品數據不正確");//code值設置為0,表示失敗
}
}
//處理商品分類
private function goodsCat($softCat)
{
//查詢數據庫的分類名和對應ID
$allCat = Db::name('goods_cate')->column('id','name');
//print_r($allCat);
foreach($allCat as $key=>$value){
$key=str_replace("其他","其它",$key);//兼容分類名字為“其他”時的情況
$dbCat[$key]=$value;
}
//將程序商品分類關系轉化成對應的id
foreach($softCat as $key=>$value){
$value=str_replace("其他","其它",$value);//兼容分類名字為“其他”時的情況
if (isset($dbCat[$value])) $newCat[$key]=$dbCat[$value];
}
//print_r($softCat);
return $newCat;
}
//格式化商品數據
private function goodsFormat($cat,$data){
//處理商品類目
if (empty($cat[$data['商品類目']])){
$data['商品類目']=0;
}else{
$data['商品類目']=$cat[$data['商品類目']];
}
//處理優惠券數量
if(empty($data['優惠券總數量'])) $data['優惠券總數量']=rand(5000,20000);//生成隨機的優惠券總數
if(empty($data['優惠券領取量'])) $data['優惠券領取量']=intval($data['優惠券總數量']*(rand(60,98)/100));//生成隨機的優惠券領取量
$data['優惠券剩余量']=$data['優惠券總數量']-$data['優惠券領取量'];//計算優惠券剩余量
//優化商品圖片地址
if($data['商品圖片'])
if(strpos($data['商品圖片'],'http://') === 0 )
{
if(!strpos($data['商品圖片'],'.haodanku.') && !strpos($data['商品圖片'],'.tbcdn.cn'))
{
$data['商品圖片']='https://'.substr($data['商品圖片'],7);
}
}
elseif(strpos($data['商品圖片'],'//') === 0)
{
if(!strpos($data['商品圖片'],'.haodanku.') && !strpos($data['商品圖片'],'.tbcdn.cn'))
{
$data['商品圖片']='https:'.$data['商品圖片'];
}else
{
$data['商品圖片']='http:'.$data['商品圖片'];
}
}
$newData=array(
//'id' => '1',//自增ID
//'sort' => '999',//排序
'cid' => $data['商品類目'],//分類
'goods_id' => $data['商品ID'],//商品ID
'title' => $data['商品標題'],//商品標題
'intro' => $data['商品文案'],//商品簡介
//'content' => '',//商品詳情
//'goods_url' => '',//商品URL地址
'nick' => $data['賣家昵稱'],//賣家旺旺
'sellerId' => $data['賣家ID'],//賣家ID
'img' => $data['商品圖片'],//商品圖片地址
'price' => $data['商品原價'],//商品價格
'discount_price' => $data['商品券后價'],//商品折扣價
//'discount_rate' => '',//折扣率
//'click_url' => '',//推廣鏈接
//'taokouling' => '',//淘口令
'volume' => $data['商品銷量'],//商品銷量
'commission' => $data['預計傭金'],//傭金金額
'commission_rate' => $data['傭金比例'],//傭金比例
'shop_type' => $data['店鋪類型'],//店鋪類型
//'ems' => '',//是否包郵
'coupon_id' => $data['優惠券ID'],//優惠券id
//'coupon_url' => $data['優惠券鏈接'],//優惠券地址
'coupon_price' => $data['優惠券金額'],//優惠券價格
'coupon_receive' => $data['優惠券領取量'],//券已領取數量
'coupon_surplus' => $data['優惠券剩余量'],//券剩余數量
'coupon_total' => $data['優惠券總數量'],//優惠券總數
'coupon_explain' => $data['優惠券使用條件'],//優惠券說明
'start_time' => $data['優惠券開始時間'],//開始時間
'end_time' => $data['優惠券結束時間'],//結束時間
//'status' => '',//商品狀態(1開啟,0禁用)
//'seo_title' => '',//seo標題
//'seo_keys' => '',//seo關鍵詞
//'seo_desc' => '',//seo描述
'create_time' => time(),//添加時間
);
//處理視頻單
if (!empty($data['商品視頻ID'])) {
//是否視頻單
$newData['video'] = 'http://cloud.video.taobao.com/play/u/1/p/1/e/6/t/1/' . $data['商品視頻ID'] . '.mp4';
}
return $newData;
}
// +----------------------------------------
// | 商品管理相關函數
// +----------------------------------------
//刪除商品
private function delgoods()
{
//獲取post過來的訂單內容
$content=htmlspecialchars_decode(Request::instance()->post('content'));
$contentArr=@json_decode($content, true);//json解碼
//按where條件刪除商品
if(!empty($contentArr['where']) ){//如果where數組不為空
$whereArr=$contentArr['where'];
//print_r($whereArr);
$where='';
//構造sql語句
if(!empty($whereArr['銷量小于']) )
{
if(!empty($where)) $where.=" or ";
$where.=" volume<'{$whereArr['銷量小于']}' ";
}
if(!empty($whereArr['價格小于'])){
if(!empty($where)) $where.=" or ";
$where.=" discount_price<'{$whereArr['價格小于']}' ";
}
if(!empty($whereArr['價格大于'])){
if(!empty($where)) $where.=" or ";
$where.=" discount_price>'{$whereArr['價格大于']}' ";
}
if(!empty($whereArr['傭金小于']) )
{
if(!empty($where)) $where.=" or ";
$where.=" commission<'{$whereArr['傭金小于']}' ";
}
if(!empty($whereArr['傭金比例']) )
{
if(!empty($where)) $where.=" or ";
$where.=" commission_rate<'{$whereArr['傭金比例']}' ";
}
if(!empty($whereArr['非天貓']) )
{
if(!empty($where)) $where.=" or ";
$where.=" shop_type!='B' ";
}
/*
if(!empty($whereArr['非視頻單']) )
{
if(!empty($where)) $where.=" or ";
$where.=" videoid='0' ";
}
*/
if(!empty($whereArr['優惠券過期']) )
{
if(!empty($where)) $where.=" or ";
$where.="(end_time<>'' and end_time<='".time()."') ";
}
if(!empty($whereArr['無優惠券']) )
{
if(!empty($where)) $where.=" or ";
$where.=" ((coupon_id='' or coupon_id is null) and (coupon_url='' or coupon_url is null)) ";
}
if(!empty($where)){
Db::startTrans();// 啟動事務
try{
$result = Db::name('goods')->where($where)->delete();//執行刪除語句
// 提交事務
Db::commit();
} catch (\Exception $e) {
// 回滾事務
Db::rollback();
}
if(!empty($result)){
$this->clearcache();//清空緩存
$this->returnExit($this->return,1,'成功刪除'.$result.'件商品');//code值設置為1,表示成功
}else{
$this->returnExit($this->return,1,'暫無符合條件商品');//code值設置為1,表示成功
}
}else{
$this->returnExit($this->return,0,'傳入條件數據不正確');//code值設置為1,表示成功
}
}
//按傳入的商品id列表刪除商品
elseif(!empty($contentArr['goodsid']) ){//如果goodsid數組不為空
Db::startTrans();// 啟動事務
try{
$result = Db::name('goods')->where('goods_id',array('IN',$contentArr['goodsid']))->delete();//執行刪除語句
// 提交事務
Db::commit();
} catch (\Exception $e) {
// 回滾事務
Db::rollback();
}
if(!empty($result)){
$this->clearcache();//清空緩存
$this->returnExit($this->return,1,'成功刪除'.$result.'件商品');//code值設置為1,表示成功
}else{
$this->returnExit($this->return,1,'暫無符合條件商品');//code值設置為1,表示成功
}
}
//刪除全部商品
elseif(!empty($contentArr['all']) ){
Db::startTrans();// 啟動事務
try{
$result = Db::name('goods')->where('18=18')->delete();//清空數據表
// 提交事務
Db::commit();
} catch (\Exception $e) {
// 回滾事務
Db::rollback();
}
if(!empty($result)){
$this->clearcache();//清空緩存
$this->returnExit($this->return,1,'成功刪除'.$result.'件商品');//code值設置為1,表示成功
}else{
$this->returnExit($this->return,1,'暫無商品');//code值設置為1,表示成功
}
}
//無有效參數
else
{
$this->returnExit($this->return,0,'傳入條件數據不正確');//code值設置為1,表示成功
}
}
// +----------------------------------------
// | 代理審核相關函數
// +----------------------------------------
//獲取待審核代理列表
private function getagent()
{
//查詢數據庫
$list = Db::name('agent')
->field('id,name')
->where('status',0)
//->where('upid',null)
//->where('wechat_pid',null)
//->where('app_pid',null)
->where('upid',['=',''],['EXP','IS NULL'],'or')
->where('wechat_pid',['=',''],['EXP','IS NULL'],'or')
->where('app_pid',['=',''],['EXP','IS NULL'],'or')
->select();
//如果數組不為空
if (!empty($list)){
$this->returnExit($this->return,1,"獲取未審核代理數據成功",$list);
}else{
$this->returnExit($this->return,1,"暫無未審核代理數據");
}
}
//審核代理
private function checkagent()
{
//獲取post過來的訂單內容
$content=Request::instance()->post('content');
if(empty($content)){
$this->returnExit($this->return,0,"content參數不能為空");//code值設置為0,表示失敗
}
$content=htmlspecialchars_decode($content);//把一些預定義的 HTML 實體轉換為字符
$contentArr=@json_decode($content, true);//json解碼
//判斷數據是否正確
if(empty($contentArr['id']))
{
$this->returnExit($this->return,0,"傳入數據不正確");
}
$pid=(empty($contentArr['pid']))?'':$contentArr['pid'];
//查詢全局傭金比例配置
$rate = Db::name('config')
->where('name','AGENT_FIRST_RATE')
->whereOr('name','AGENT_SECOND_RATE')
->whereOr('name','AGENT_THIRD_RATE')
->column('value','name');
//設置審核數據
$newdata = array(
'status'=>1,//代理狀態 1為代理,0為待審核
'level' =>1,//代理級別 1為銅牌 2銀牌 3金牌
'agent_rate'=>$rate['AGENT_FIRST_RATE'],//一級代理分成比率
'secondAgent_rate'=>$rate['AGENT_SECOND_RATE'],//二級代理分成比率
'thirdAgent_rate'=>$rate['AGENT_THIRD_RATE'],//三級代理分成比率
'upid'=>$pid,//普通pid,三段式,類似:mm_181818818_68516333_68516333格式
'wechat_pid'=>$pid,//微信小程序pid,取普通pid一樣即可
'app_pid'=>$pid,//app應用pid,取普通pid一樣即可
'create_time'=>time(),
);
// 啟動事務
Db::startTrans();
//更新數據
try{
$result=Db::name('agent')->where('id',$contentArr['id'])->update($newdata);
// 提交事務
Db::commit();
} catch (\Exception $e) {
// 回滾事務
Db::rollback();
}
//判斷結果
if (!empty($result)){
$this->returnExit($this->return,1,"代理審核成功");
}else{
$this->returnExit($this->return,1,"代理審核失敗");
}
}
// +----------------------------------------
// | 拼多多訂單同步相關函數
// +----------------------------------------
//訂單同步
private function postpddorder()
{
//獲取post過來的訂單內容
$content=Request::instance()->post('content');
if(empty($content)){
$this->returnExit($this->return,0,"content參數不能為空");//code值設置為0,表示失敗
}
$content=htmlspecialchars_decode($content);//把一些預定義的 HTML 實體轉換為字符
$contentArr=@json_decode($content, true);//json解碼
//如果數組不為空
if(!empty($contentArr)){
$db = Db::name('union_order');//操作union_order表
$resultStr="";//記錄訂單入庫結果字符串
//遍歷訂單數組
foreach ($contentArr as $orderid => $orderdata)
{
//格式化訂單數據
$newdata = $this->orderFormatPdd($orderdata);
//查詢是否存在
$goods_order_id = $db->where('goods_order',$orderid)->value('id');
Db::startTrans();// 啟動事務
$resultValue=1;//定義存儲返回結果變量
//判斷數據是否存在
if(isset($goods_order_id)){
//如果數據已存在,更新
try{
$result=$db->where('id',$goods_order_id)->update($newdata);
// 提交事務
Db::commit();
$resultValue = 1;//不管數據是否有變動,都返回1
} catch (\Exception $e) {
// 回滾事務
Db::rollback();
$resultValue=0;
}
}else{
//如果數據不存在,新增
try{
$result=$db->insert($newdata);
// 提交事務
Db::commit();
$resultValue = (!empty($result)) ? 1 : 0;
} catch (\Exception $e) {
// 回滾事務
Db::rollback();
$resultValue=0;
}
}
//記錄入庫結果
$resultStr=$this->resultState($resultStr,$orderid,$resultValue);
}
$this->returnExit($this->return,1,"result:".$resultStr);//code值設置為1,表示成功
}else{
$this->returnExit($this->return,0,"傳入訂單數據不正確");//code值設置為0,表示失敗
}
}
//格式化訂單數據
function orderFormatPdd($data){
//設置訂單狀態
$odtxt=$data['訂單狀態描述'];
if ($odtxt == '未支付,已取消') {
$order_status = 13;
}elseif ($odtxt == '未支付') {
$order_status = 13;
}elseif ($odtxt == '已取消') {
$order_status = 13;
}elseif ($odtxt == '已支付') {
$order_status = 12;
}elseif ($odtxt == '待成團') {
$order_status = 12;
}elseif ($odtxt == '已成團') {
$order_status = 12;
}elseif ($odtxt == '確認收貨') {
$order_status = 12;
}elseif ($odtxt == '審核通過') {
$order_status = 12;
}elseif ($odtxt == '審核失敗') {
$order_status = 13;
}elseif ($odtxt == '已結算') {
$order_status = 3;
}elseif ($odtxt == '非多多進寶商品') {
$order_status = 13;
}elseif ($odtxt == '已處罰') {
$order_status = 13;
}else{
$order_status = 13;
}
//設置結算時間
$earning_time= (empty($data['結算時間'])) ? 0 : strtotime($data['結算時間']);
//將數據存儲到符合當前系統的新數組
$newData=array(
//'id'=>0,//ID
//'uid'=>0,//認領用戶ID
'type'=>1,//訂單類型 0淘寶 1拼多多 2京東
'goods_order'=>$data['訂單編號'],//訂單編號
'goods_number'=>$data['商品數'],//成交數量
'order_status'=>$order_status,//3:訂單結算12:訂單付款13:訂單失效
'title'=>$data['商品信息'],//商品標題
'goods_id'=>$data['商品ID'],//商品ID
'price'=>$data['商品價格'],//商品價格
'shop_type'=>'拼多多',//訂單類型
'pay_price'=>$data['訂單金額'],//付款金額
'settlement_price'=>$data['訂單金額'],//結算金額
'commission'=>$data['預估傭金收入'],//效果預估
'commission_rate'=>$data['傭金比例'],//傭金比率
//'status'=>0,//狀態
//'is_receive'=>0,//提現狀態 0:未提現 1:已提現
//'second_receive'=>0,//二代提現狀態
//'third_receive'=>0,//三代提現狀態
'terminal_type'=>'無線',//成交平臺
'create_time'=>strtotime($data['創建時間']),//創建時間
'adzone_id'=>$data['pid'],//廣告位ID
'adzone_name'=>$data['推廣位名稱'],//廣告位名稱
'earning_time'=>$earning_time,//結算時間
);
return $newData;
}
// +----------------------------------------
// | 拼多多訂單同步相關函數
// +----------------------------------------
//訂單同步
private function postjdorder()
{
//獲取post過來的訂單內容
$content=Request::instance()->post('content');
if(empty($content)){
$this->returnExit($this->return,0,"content參數不能為空");//code值設置為0,表示失敗
}
$content=htmlspecialchars_decode($content);//把一些預定義的 HTML 實體轉換為字符
$contentArr=@json_decode($content, true);//json解碼
//如果數組不為空
if(!empty($contentArr)){
$db = Db::name('union_order');//操作union_order表
$resultStr="";//記錄訂單入庫結果字符串
//遍歷訂單數組
foreach ($contentArr as $orderid => $orderdata)
{
$resultValue=1;//定義存儲返回結果變量
foreach($orderdata as $data){
//格式化訂單數據
$newdata = $this->orderFormatJd($data);
//讀取訂單編號和商品id
$orderid=$data['orderId'];
$goodsid=$data['skuId'];
//查詢是否存在
$goods_order_id = $db->where('goods_order',$orderid)->where('goods_id',$goodsid)->value('id');
Db::startTrans();// 啟動事務
//判斷數據是否存在
if(isset($goods_order_id)){
//如果數據已存在,更新
try{
$result=$db->where('id',$goods_order_id)->update($newdata);
// 提交事務
Db::commit();
//$resultValue = 1;//不管數據是否有變動,都返回1
$resultValue = ($resultValue==1) ? 1 : 0;//如果上次狀態為1,這次也標記為1,否則設置為0
} catch (\Exception $e) {
// 回滾事務
Db::rollback();
$resultValue=0;
}
}else{
//如果數據不存在,新增
try{
$result=$db->insert($newdata);
// 提交事務
Db::commit();
if (!empty($result)) {
//添加成功
$resultValue = ($resultValue==1) ? 1 : 0;//如果上次狀態為1,這次也標記為1,否則設置為0
}else{
//添加失敗
$resultValue=0;
}
} catch (\Exception $e) {
// 回滾事務
Db::rollback();
$resultValue=0;
}
}
}
//記錄入庫結果
$resultStr=$this->resultState($resultStr,$orderid,$resultValue);
}
$this->returnExit($this->return,1,"result:".$resultStr);//code值設置為1,表示成功
}else{
$this->returnExit($this->return,0,"傳入訂單數據不正確");//code值設置為0,表示失敗
}
}
//格式化訂單數據
function orderFormatJd($data){
//設置訂單狀態
$validCode=$data['validCode'];
if ($validCode == 16 ||$validCode == 17) {
$order_status = 12;//訂單付款
}elseif ($validCode == 18) {
$order_status = 3;//訂單結算
}else{
$order_status = 13;//訂單失效
}
//設置結算時間
$finishTime=$data['finishTime'];//結算時間
$finishTime=($finishTime == 0 || $finishTime == "0")?0:strtotime($finishTime);
//將數據存儲到符合當前系統的新數組
$newData=array(
//'id'=>0,//ID
//'uid'=>0,//認領用戶ID
'type'=>2,//訂單類型 0淘寶 1拼多多 2京東
'goods_order'=>$data['orderId'],//訂單編號
'goods_number'=>$data['skuNum'],//成交數量
'order_status'=>$order_status,//3:訂單結算12:訂單付款13:訂單失效
'title'=>$data['skuName'],//商品標題
'goods_id'=>$data['skuId'],//商品ID
'price'=>$data['price'],//商品價格
'shop_type'=>'京東',//訂單類型
'pay_price'=>$data['estimateCosPrice'],//付款金額
'settlement_price'=>$data['actualCosPrice'],//結算金額
'commission'=>$data['estimateFee'],//效果預估
'commission_rate'=>$data['commissionRate'],//傭金比率
//'status'=>0,//狀態
//'is_receive'=>0,//提現狀態 0:未提現 1:已提現
//'second_receive'=>0,//二代提現狀態
//'third_receive'=>0,//三代提現狀態
'terminal_type'=>'無線',//成交平臺
'create_time'=>strtotime($data['orderTime']),//創建時間
'adzone_id'=>$data['positionId'],//廣告位ID
'adzone_name'=>$data['positionId'],//廣告位名稱
'earning_time'=>$finishTime,//結算時間
);
return $newData;
}
// +----------------------------------------
// | 其他函數
// +----------------------------------------
//返回json信息并退出
private function returnExit($return,$code,$message,$data=''){
$return['code']=$code;
$return['message']=urlencode($message);
if(!empty($data)) $return['data']=$data;
exit(urldecode(json_encode($return)));
}
//構造返回狀態結果字符串
private function resultState($result,$id,$v){
if (!empty($result)) $result.='|';
$result.=$id.':'.$v;
return $result;
}
//清空緩存
private function clearcache() {
//清空緩存
array_map( 'unlink', glob(RUNTIME_PATH.'/cache/*/*.php' ) );
array_map( 'unlink', glob(RUNTIME_PATH.'/temp/*.php' ) );
}
/**
*計算返利價格
*@param $rebate['home'] 用來判斷選中的限制類型 0固定金額 1百分比
*@param $rebate['money'] 用來判斷他所選中的返利類型 0固定金額 1百分比
*/
public function createOrderLog($data){
$uid = Db::name('User')->where('special_id',$data['special_id'])->value('id');
$money = 0;
$agent = Db::name('agent')->where('uid',$uid)->where('status','1')->find();
if (!$agent) {
$rebateStatus = get_config('REBATE_STATUS');
if ($rebateStatus) {
$rebateMoney = get_config('REBATE_MONEY') ? get_config('REBATE_MONEY') :0;
$agentTaobaoRate = get_config('AGENT_TAOBAO_RATE') ? (100 - get_config('AGENT_TAOBAO_RATE'))/100 : 1;
$commission = $data['commission'] * $agentTaobaoRate;
$money = round($commission * $rebateMoney/100,2);
}
}else{
if ($data['relation_id'] != $agent['relation_id']) {
$uid = '0';
}
}
$rod = [];
$rod['money'] = $money;
$rod['uid'] = $uid;
return $rod;
}
//推廣位名稱
public function getAdzoneName($relation_id){
$name ='';
if ($relation_id) {
$name = Db::name('agent')->where('relation_id',$relation_id)->value('name');
if (!$name) {
$name = '渠道&會員';
}
}
return $name;
}
//$data 訂單數據
//$type $type 1淘寶/天貓 2拼多多 3京東
public function pushOrder($data,$type){
//判斷訂單是否是代理訂單
$extra = [
'orderId' => $data['goods_order'],
'orderType' => $data['shop_type'],
'orderPrice' => round($data['pay_price'],2),
];
// 判斷訂單是否村在
$hasGoodsOrder = Db::name('PushLog')->where('extra','like','%'.$data['goods_order'].'%')->find();
if($hasGoodsOrder){
return;
}
if (isset($data['uid']) && $data['uid']) {
$uid = $data['uid'];
}
if (isset($data['special_id']) && $data['special_id']) {
$uid = Db::name('User')->where('special_id',$data['special_id'])->value('id');
}
if($uid){
$money = new \app\common\controller\Money();
$extra['money'] = $money->earnMoney2($data['commission']*100,$uid,$type);
$extra['fansName'] = Db::name('User')->where('id',$uid)->value('username');
$extra['time'] = $data['create_time'];
push_log('buy',$uid,$extra); //自購推送
$userPid = Db::name('User')->where('id',$uid)->value('pid');
if ($userPid) {
$agentinfo = Db::name('Agent')->where('uid',$uid)->find();//代理信息
if ($agentinfo) {
$a = '2';
$pid = $agentinfo['pid'];
}else{
$a = '1';
$pid = Db::name('Agent')->where('uid',$userPid)->value('id');//代理信息
}
if ($pid) {
$this->pushLog($data['commission'],$pid,$a,$data['create_time'],$extra); //執行推送
}
}
}
}
// 訂單代理推送消息
// $a 1: 一帶關系 2:二代關系 3:三代關系
//$id 代理id;
//$goodCommission 訂單傭金;
public function pushLog($goodCommission,$id,$a,$time,$extra){
$agentinfo = Db::name('Agent')->where('id',$id)->find();//代理信息
if (!$agentinfo) {
return;
}
$channel = get_config('AGENT_CHANNEL_MEMBER');
if ($channel) {
switch ($a) {
case '1':
$agentRate = get_config('AGENT_FIRST_RATE');
break;
case '2':
$agentRate = get_config('AGENT_SECOND_RATE');
break;
case '3':
$agentRate = get_config('AGENT_THIRD_RATE');
break;
}
}else{
switch ($a) {
case '1':
if($agent['agent_rate'])
{
$agentRate = $agent['agent_rate'];
}else{
$agentRate = get_config('AGENT_FIRST_RATE');
}
break;
case '2':
if($agent['secondAgent_rate'])
{
$agentRate = $agent['secondAgent_rate'];
}else{
$agentRate = get_config('AGENT_SECOND_RATE');
}
break;
case '3':
if($agent['thirdAgent_rate'])
{
$agentRate = $agent['thirdAgent_rate'];
}else{
$agentRate = get_config('AGENT_THIRD_RATE');
}
break;
}
}
$taobaoRate = get_config('AGENT_TAOBAO_RATE') ? (100 - get_config('AGENT_TAOBAO_RATE'))/100 : 1;
$commission = round($goodCommission * $taobaoRate * $agentRate * 0.98/100,2);
$extra['money'] = $commission;
$extra['level'] = $a;
push_log('fanBuy',$agentinfo['uid'],$extra); //推送
$a++;
//根據uid 在User表中查找上級uid
if ($agentinfo['pid']) {
$this->pushLog($goodCommission,$agentinfo['pid'],$a,$time,$extra);
}
}
}
```
- 最新公告
- 軟件介紹
- 初次使用
- 購買授權
- 基礎配置
- 接口配置
- 牛貝淘寶客系統接口配置
- 老虎淘寶客系統接口配置
- 程序俠淘寶客系統接口配置
- 好京客四合一淘客系統接口配置
- 楊他他淘寶客系統接口配置
- 唐格時創淘客系統接口配置
- 全局配置
- 第1章 淘客訂單同步
- 采集方案【推薦方案】
- 訂單采集(基礎)
- 訂單采集(工具API)
- 訂單采集(渠道API)
- 訂單入庫
- 第2章 淘客商品采集
- 商品采集(大淘客)
- 商品采集(好單庫)
- 商品采集(輕淘客)
- 商品入庫
- 商品管理
- 商品分類綁定
- 老虎淘客系統分類綁定
- 牛貝淘寶客系統分類綁定
- 程序俠淘客系統分類綁定
- 第3章 拼多多
- 拼多多API設置教程
- 拼多多訂單采集使用教程
- 拼多多訂單入庫使用教程
- 第4章 京東
- 創建查看京東APPKEY
- 京東訂單采集使用教程
- 京東訂單入庫使用教程
- 第5章 唯品會
- 唯品會配置教程
- 唯品會訂單采集使用教程
- 唯品會訂單入庫使用教程
- 第6章 蘑菇街
- 蘑菇街配置教程
- 蘑菇街訂單采集使用教程
- 蘑菇街訂單入庫使用教程
- 第7章 蘇寧
- 蘇寧API設置教程
- 蘇寧訂單采集使用教程
- 蘇寧訂單入庫使用教程
- 第8章 多麥
- 多麥API設置教程
- 多麥訂單采集使用教程
- 多麥訂單入庫使用教程
- 第9章 高級功能
- 萬能定時任務
- 【牛貝系統】萬能定時任務使用說明
- 【老虎系統】代理傭金更新
- 自動審核代理
- 第10章 常見問題
- 程序無法登錄
- 阿里媽媽登陸相關問題
- 阿里旺旺安裝登錄教程
- 阿里媽媽賬號受限解決辦法
- 清理服務器日志
- 120元(1年)掛機服務器購買教程
- 推廣位相關問題
- 渠道相關問題
- 過期歷史教程
- 阿里媽媽登陸
- 阿里媽媽登錄器(Chrome版)使用教程
- 阿里媽媽登錄器(Chrome版)安裝教程
- 批量創建推廣位
- 開發對接文檔
- 18助手對接必看說明
- 18淘客助手調試模式
- 18助手接口開發規范
- 入庫POST數據說明
- 淘客訂單POST數據說明
- 淘客商品POST數據說明
- 京東訂單POST數據說明
- 拼多多訂單POST數據說明
- 蘇寧訂單POST數據說明
- 唯品會訂單POST數據說明
- 多麥訂單POST數據說明
- 接口文件示例
- PHP接口文件示例(微擎)
- PHP接口文件示例(ThinkPHP)