```
<?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)