<?php
|
namespace app\api\logic\commission;
|
|
use think\Db;
|
use app\api\logic\Commission as BasicCommission;
|
use app\common\model\commission\Jd as ModelJd;
|
use app\common\model\order\JdOrder as ModelJdOrder;
|
use app\common\model\User as ModelUser;
|
use app\common\model\UserLevel as ModelUserLevel;
|
|
class Jd extends BasicCommission
|
{
|
protected $model;
|
|
public function __construct(){
|
|
parent::__construct();
|
|
$this->model = new ModelJd();
|
}
|
|
/**
|
* 获取用户对应时间段的预估金额
|
*
|
* @param [type] $user_id 用户ID
|
* @return void $time_type today yesterday month last month
|
*/
|
public function getEstimateCommission($user_id,$time_type,$is_own)
|
{
|
$info = Db::name('jingdong_order_commission')->field("COUNT(id) as order_num,COALESCE(SUM(pub_share_pre_fee),0) as money,COALESCE(SUM(alipay_total_price),0) as sales_volume,'京东' as name")->where(['member_id'=>$user_id,'is_own'=>$is_own])->whereTime('tb_paid_time', $time_type)->whereIn('tk_status',[16,17,18])->find();
|
return $info;
|
}
|
|
/**
|
* 获取订单列表
|
*
|
* @return void
|
*/
|
public function getOrderList($user_id,$status,$page,$pageSize)
|
{
|
$where['member_id'] = $user_id;
|
$where['is_own'] = 1;
|
if($status != 0){
|
switch($status){
|
case 1:
|
$where['tk_status'] = 16;
|
break;
|
case 2:
|
$where['tk_status'] = 17;
|
break;
|
case 3:
|
$where['tk_status'] = 17;
|
break;
|
case 4:
|
$where['tk_status'] = 3;
|
break;
|
}
|
}
|
$list =$this->model->field($this->field)->where($where)->page($page,$pageSize)->order('create_time desc')->select();
|
return empty($list) ? [] : $list;
|
}
|
|
|
/**
|
* 返利入库和更新(新),加上首单逻辑
|
*
|
* @return void
|
*/
|
public function fanliCommissionNew($order)
|
{
|
$trade_id = isset($order['order_row_id']) ? $order['order_row_id'] : '';
|
if(empty($trade_id)) return ['status'=>false,'info'=>'订单号为空'];
|
//判断是实付金额是否大于4元,大于4元直接普通返利
|
if(floatval($order['estimate_cos_price'])>5){
|
$res=self::fanliCommission($order);
|
return $res;
|
}
|
//根据淘宝绑定渠道id查询用户信息
|
$ModelUser = new ModelUser();
|
$user = $ModelUser->where(['common_relation_id'=>$order['position_id']])->find();
|
if(!empty($user))
|
{
|
$browse=DB::name('user_first_free_browse')->where(['user_id'=>$user['id'],'is_order'=>1])->find();
|
if(!empty($browse)){
|
//查询是否是首单商品
|
$first_browse=DB::name('user_first_free_browse')->where(['user_id'=>$user['id'],'tid'=>$order['order_row_id']])->find();
|
if(!empty('first_browse')){
|
//计算首单返利
|
$res=self::fanliCommissionForFree($order);
|
return $res;
|
}
|
else{
|
$res=self::fanliCommission($order);
|
return $res;
|
}
|
|
}
|
else{
|
$itemid=$order['sku_id'];
|
$first_good=DB::name('user_first_free_browse')->where(['user_id'=>$user['id'],'is_order'=>0,'new_goodsId'=>$itemid])->find();
|
if(empty($first_good)){
|
$res=self::fanliCommission($order);
|
return $res;
|
}
|
else{
|
//计算首单返利
|
$res=self::fanliCommissionForFree($order);
|
return $res;
|
|
}
|
}
|
|
}
|
else{
|
//标记订单为无需分销
|
$ModelOrder = new ModelTaobaoOrder();
|
$ModelOrder->where(['id'=>$order['id']])->update(['is_distribution'=>2,'update_time'=>time()]);
|
Db::commit();
|
return ['status'=>true,'info'=>'无需分销'];
|
}
|
|
}
|
|
|
|
/**
|
* 返利入库和更新
|
*
|
* @return void
|
*/
|
public function fanliCommission($order)
|
{
|
$trade_id = isset($order['order_row_id']) ? $order['order_row_id'] : '';
|
if(empty($trade_id)) return ['status'=>false,'info'=>'订单号为空'];
|
Db::startTrans();
|
$ModelUser = new ModelUser();
|
$user = $ModelUser->where(['common_relation_id'=>$order['position_id']])->find();
|
$ModelOrder = new ModelJdOrder();
|
if(empty($user)){
|
//标记订单为无需分销
|
$ModelOrder->where(['id'=>$order['id']])->update(['is_distribution'=>2,'update_time'=>time()]);
|
Db::commit();
|
return ['status'=>true,'info'=>'无需分销'];
|
}
|
$userLevelInfo = $this->getLevelInfo($user['level']); //用户等级信息
|
$find_commission = $this->model->where(['trade_id'=>$trade_id])->select();
|
$push_data = [];
|
if(empty($find_commission)){ //开始反佣入库
|
//自购反佣
|
$tmp_1 = [
|
'trade_parent_id' => $order['order_id'],
|
'trade_id' => $trade_id,
|
'member_id' => $user['id'],
|
'buy_member_id' => $user['id'],
|
'is_own' => 1,
|
'alipay_total_price' => $order['estimate_cos_price'],
|
'pub_share_pre_fee' => $order['estimate_fee']*$userLevelInfo['own_commission_rate']/100,
|
'pub_share_fee' => $order['valid_code'] == 17 ? $order['actual_fee']*$userLevelInfo['own_commission_rate']/100 : "",
|
'refund_tag' => 0,
|
'item_img' => $order['image_url'],
|
'item_title' => $order['sku_name'],
|
'tk_status' => $order['valid_code'],
|
'item_id' => $order['sku_id'],
|
'member_commission_rate' => $userLevelInfo['own_commission_rate'],
|
'is_settle' => 0,
|
'tb_paid_time' => $order['order_time'],
|
'pay_price' => $order['actual_cos_price'],
|
'tk_earning_time' =>!empty($order['finish_time']) ? strtotime($order['finish_time']) : 0,
|
'pay_month' => $order['pay_month'],
|
'create_time' => time()
|
];
|
|
// dump(2222);exit;
|
$save_data[] = $tmp_1;
|
// $push_data[] = [
|
// 'user' => $user,
|
// 'title' => '恭喜,您有一笔新的订单收益',
|
// 'body' => "您有一笔新的自购订单收益,佣金" + $tmp_1['pub_share_fee'] + "元,继续加油哦",
|
// ];
|
if($user['invitation_id'] > 0){ //拥有上级用户
|
$invitation_user = $ModelUser->where(['id'=>$user['invitation_id']])->find();
|
if(!empty($invitation_user)){
|
$invitationLevelInfo = $this->getLevelInfo($invitation_user['level']);
|
if(!empty($invitationLevelInfo)){
|
$invitationRate = 0;
|
if($user['level'] == 1){ //直属初级
|
$invitationRate = $invitationLevelInfo['direct_commission_rate'];
|
}else if($user['level'] == 2 && $invitation_user['level'] == 3){ //直属中级
|
$invitationRate = $invitationLevelInfo['direct_intermediate_rate'];
|
}
|
if($invitationRate != 0){
|
$tmp_2 = [
|
'trade_parent_id' => $order['order_id'],
|
'trade_id' => $trade_id,
|
'member_id' => $invitation_user['id'],
|
'buy_member_id' => $user['id'],
|
'is_own' => 0,
|
'alipay_total_price' => $order['estimate_cos_price'],
|
'pub_share_pre_fee' => $order['estimate_fee']*$invitationRate/100,
|
'pub_share_fee' => $order['valid_code'] == 17 ? $order['actual_fee']*$invitationRate/100 : "",
|
'refund_tag' => 0,
|
'item_img' => $order['image_url'],
|
'item_title' => $order['sku_name'],
|
'tk_status' => $order['valid_code'],
|
'item_id' => $order['sku_id'],
|
'member_commission_rate' => $invitationRate,
|
'is_settle' => 0,
|
'tb_paid_time' => $order['order_time'],
|
'pay_price' => $order['actual_cos_price'],
|
'tk_earning_time' =>!empty($order['finish_time']) ? strtotime($order['finish_time']) : 0,
|
'pay_month' => $order['pay_month'],
|
'create_time' => time()
|
];
|
$save_data[] = $tmp_2;
|
// $push_data[] = [
|
// 'user' => $invitation_user,
|
// 'title' => '恭喜,您有一笔新的订单收益',
|
// 'body' => "您有一笔新的团队订单收益,佣金" + $tmp_2['pub_share_fee'] + "元,继续加油哦",
|
// ];
|
}
|
|
}
|
if($user['f_invitation_id'] > 0){ //拥有上上级
|
$f_invitation_user = $ModelUser->where(['id'=>$user['f_invitation_id']])->find();
|
if(!empty($f_invitation_user)){
|
$f_invitationLevelInfo = $this->getLevelInfo($f_invitation_user['level']);
|
if(!empty($f_invitationLevelInfo)){
|
$f_invitationRate = 0;
|
if($user['level'] == 1){ //间接初级
|
$f_invitationRate = $f_invitationLevelInfo['indirect_commission_rate'];
|
}
|
if($f_invitationRate != 0){
|
$tmp_3 = [
|
'trade_parent_id' => $order['order_id'],
|
'trade_id' => $trade_id,
|
'member_id' => $f_invitation_user['id'],
|
'buy_member_id' => $user['id'],
|
'is_own' => 0,
|
'alipay_total_price' => $order['estimate_cos_price'],
|
'pub_share_pre_fee' => $order['estimate_fee']*$f_invitationRate/100,
|
'pub_share_fee' => $order['valid_code'] == 17 ? $order['actual_fee']*$f_invitationRate/100 : "",
|
'refund_tag' => 0,
|
'item_img' => $order['image_url'],
|
'item_title' => $order['sku_name'],
|
'tk_status' => $order['valid_code'],
|
'item_id' => $order['sku_id'],
|
'member_commission_rate' => $f_invitationRate,
|
'is_settle' => 0,
|
'tb_paid_time' => $order['order_time'],
|
'pay_price' => $order['actual_cos_price'],
|
'tk_earning_time' =>!empty($order['finish_time']) ? strtotime($order['finish_time']) : 0,
|
'pay_month' => $order['pay_month'],
|
'create_time' => time()
|
];
|
$save_data[] = $tmp_3;
|
// $push_data[] = [
|
// 'user' => $invitation_user,
|
// 'title' => '恭喜,您有一笔新的订单收益',
|
// 'body' => "您有一笔新的团队订单收益,佣金" + $tmp_3['pub_share_fee'] + "元,继续加油哦",
|
// ];
|
}
|
}
|
}
|
|
}
|
}
|
}
|
$result = $this->model->saveAll($save_data);
|
if(!$result){
|
Db::rollback();
|
return ['status'=>false,'info'=>'反佣入库失败'];
|
}
|
if($order['is_distribution'] == 0){
|
$res_order = $ModelOrder->where(['id'=>$order['id']])->update(['is_distribution'=>1,'update_time'=>time()]);
|
if(!$res_order){
|
Db::rollback();
|
return ['status'=>false,'info'=>'订单状态修改失败'];
|
}
|
}
|
// if(!empty($push_data)){
|
// $this->userPush($push_data);
|
// }
|
}else{ //已经拆分订单,进行更新
|
foreach($find_commission as $item){
|
$item_data = [
|
'alipay_total_price' => $order['estimate_cos_price'],
|
'pub_share_pre_fee' => $order['estimate_fee']*$item['member_commission_rate']/100,
|
'pub_share_fee' => $order['valid_code'] == 17 ? $order['actual_fee']*$item['member_commission_rate']/100 : $item['pub_share_fee'],
|
'refund_tag' => 0,
|
'tk_status' => $order['valid_code'],
|
'pay_price' => $order['actual_cos_price'],
|
'tk_earning_time' =>!empty($order['finish_time']) ? strtotime($order['finish_time']) : 0,
|
'pay_month' => $order['pay_month'],
|
'update_time' => time()
|
];
|
$update_commission = $this->model->where(['id'=>$item['id']])->update($item_data);
|
if(!$update_commission){
|
Db::rollback();
|
return ['status'=>false,'info'=>'更新拆分记录错误,ID为:'.$item['id']];
|
}
|
}
|
//更新订单
|
$update_order = $ModelOrder->where(['id'=>$order['id']])->update(['tk_z_status'=>1,'update_time'=>time()]);
|
if(!$update_order){
|
Db::rollback();
|
return ['status'=>false,'info'=>'更新订单tk_z_status错误,订单ID为:'.$order['id']];
|
}
|
}
|
Db::commit();
|
return ['status'=>true,'info'=>'拆分成功'];
|
}
|
|
/**
|
* 首单返利入库和更新
|
*
|
* @return void
|
*/
|
public function fanliCommissionForFree($order)
|
{
|
$trade_id = isset($order['order_row_id']) ? $order['order_row_id'] : '';
|
if(empty($trade_id)) return ['status'=>false,'info'=>'订单号为空'];
|
Db::startTrans();
|
$ModelUser = new ModelUser();
|
$user = $ModelUser->where(['common_relation_id'=>$order['position_id']])->find();
|
$ModelOrder = new ModelJdOrder();
|
if(empty($user)){
|
//标记订单为无需分销
|
$ModelOrder->where(['id'=>$order['id']])->update(['is_distribution'=>2,'update_time'=>time()]);
|
Db::commit();
|
return ['status'=>true,'info'=>'无需分销'];
|
}
|
$userLevelInfo = $this->getLevelInfo($user['level']); //用户等级信息
|
$find_commission = $this->model->where(['trade_id'=>$trade_id])->select();
|
$push_data = [];
|
if(empty($find_commission)){ //开始反佣入库
|
//自购反佣
|
$tmp_1 = [
|
'trade_parent_id' => $order['order_id'],
|
'trade_id' => $trade_id,
|
'member_id' => $user['id'],
|
'buy_member_id' => $user['id'],
|
'is_own' => 1,
|
'alipay_total_price' => $order['estimate_cos_price'],
|
'pub_share_pre_fee' => $order['estimate_cos_price'],
|
'pub_share_fee' => $order['valid_code'] == 17 ? $order['estimate_cos_price']: "",
|
'refund_tag' => 0,
|
'item_img' => $order['image_url'],
|
'item_title' => $order['sku_name'],
|
'tk_status' => $order['valid_code'],
|
'item_id' => $order['sku_id'],
|
'member_commission_rate' => 100,
|
'is_settle' => 0,
|
'tb_paid_time' => $order['order_time'],
|
'pay_price' => $order['actual_cos_price'],
|
'tk_earning_time' =>!empty($order['finish_time']) ? strtotime($order['finish_time']) : 0,
|
'pay_month' => $order['pay_month'],
|
'create_time' => time()
|
];
|
$save_data[] = $tmp_1;
|
$result = $this->model->saveAll($save_data);
|
if(!$result){
|
Db::rollback();
|
return ['status'=>false,'info'=>'反佣入库失败'];
|
}
|
if($order['is_distribution'] == 0){
|
$res_order = $ModelOrder->where(['id'=>$order['id']])->update(['is_distribution'=>1,'update_time'=>time()]);
|
if(!$res_order){
|
Db::rollback();
|
return ['status'=>false,'info'=>'订单状态修改失败'];
|
}
|
}
|
// if(!empty($push_data)){
|
// $this->userPush($push_data);
|
// }
|
}else{ //已经拆分订单,进行更新
|
foreach($find_commission as $item){
|
$item_data = [
|
'alipay_total_price' => $order['estimate_cos_price'],
|
'pub_share_pre_fee' => $order['estimate_cos_price'],
|
'pub_share_fee' => $order['valid_code'] == 17 ? $order['estimate_cos_price']: $item['pub_share_fee'],
|
'refund_tag' => 0,
|
'tk_status' => $order['valid_code'],
|
'pay_price' => $order['actual_cos_price'],
|
'tk_earning_time' =>!empty($order['finish_time']) ? strtotime($order['finish_time']) : 0,
|
'pay_month' => $order['pay_month'],
|
'update_time' => time()
|
];
|
$update_commission = $this->model->where(['id'=>$item['id']])->update($item_data);
|
if(!$update_commission){
|
Db::rollback();
|
return ['status'=>false,'info'=>'更新拆分记录错误,ID为:'.$item['id']];
|
}
|
}
|
//更新订单
|
$update_order = $ModelOrder->where(['id'=>$order['id']])->update(['tk_z_status'=>1,'update_time'=>time()]);
|
if(!$update_order){
|
Db::rollback();
|
return ['status'=>false,'info'=>'更新订单tk_z_status错误,订单ID为:'.$order['id']];
|
}
|
}
|
Db::name('user_first_free_browse')->where(['user_id'=>$user['id'],'new_goodsId'=>$order['sku_id']])->update(['tid'=>$trade_id,'is_order'=>1]);
|
Db::commit();
|
return ['status'=>true,'info'=>'拆分成功'];
|
}
|
|
|
}
|