<?php
|
namespace app\api\logic\commission;
|
|
use think\Db;
|
use app\api\logic\Commission as BasicCommission;
|
use app\common\model\commission\Pdd as ModelPdd;
|
use app\common\model\order\PddOrder as ModelPddOrder;
|
use app\common\model\User as ModelUser;
|
use app\common\model\UserLevel as ModelUserLevel;
|
|
class Pdd extends BasicCommission
|
{
|
protected $model;
|
|
public function __construct(){
|
|
parent::__construct();
|
|
$this->model = new ModelPdd();
|
}
|
|
/**
|
* 获取用户对应时间段的预估金额
|
*
|
* @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('pdd_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',[0,1,2,5])->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'] = 0;
|
break;
|
case 2:
|
$where['tk_status'] = 2;
|
break;
|
case 3:
|
$where['tk_status'] = 5;
|
break;
|
case 4:
|
$where['tk_status'] = 4;
|
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 fanliCommission($order)
|
{
|
$order_sn = isset($order['order_sn']) ? $order['order_sn'] : '';
|
if(empty($order_sn)) return ['status'=>false,'info'=>'订单号为空'];
|
Db::startTrans();
|
$ModelUser = new ModelUser();
|
$user = $ModelUser->where(['common_relation_id'=>$order['uid']])->find();
|
$ModelOrder = new ModelPddOrder();
|
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'=>$order_sn])->select();
|
$push_data = [];
|
if(empty($find_commission)){ //开始反佣入库
|
//自购反佣
|
$tmp_1 = [
|
'trade_parent_id' => $order['order_id'],
|
'trade_id' => $order_sn,
|
'member_id' => $user['id'],
|
'buy_member_id' => $user['id'],
|
'is_own' => 1,
|
'alipay_total_price' => $order['order_amount']/100,
|
'pub_share_pre_fee' => $order['price_compare_status'] == 1 ? $order['promotion_amount']/100 : $order['promotion_amount']*$userLevelInfo['own_commission_rate']/10000,
|
'refund_tag' => 0,
|
'item_img' => $order['goods_thumbnail_url'],
|
'item_title' => $order['goods_name'],
|
'tk_status' => $order['order_status'],
|
'item_id' => $order['goods_id'],
|
'member_commission_rate' => $userLevelInfo['own_commission_rate'],
|
'is_settle' => 0,
|
'tb_paid_time' => empty($order['order_pay_time']) ? "" : date("Y-m-d H:i:s",$order['order_pay_time']),
|
'tk_earning_time' => empty($order['order_settle_time']) ? "" : $order['order_settle_time'],
|
'create_time' => time()
|
];
|
if($order['order_status'] == 5){
|
$tmp_1['pub_share_fee'] = $order['price_compare_status'] == 1 ? $order['promotion_amount']/100 : $order['promotion_amount']*$userLevelInfo['own_commission_rate']/10000;
|
$tmp_1['pay_price'] = $order['order_amount']/100;
|
// $push_data[] = [
|
// 'user' => $user,
|
// 'title' => '恭喜,您有一笔新的订单收益',
|
// 'body' => "您有一笔新的自购订单收益,佣金" + $tmp_1['pub_share_fee'] + "元,继续加油哦",
|
// ];
|
}
|
$save_data[] = $tmp_1;
|
if($order['price_compare_status'] != 1){ //不是比价订单
|
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' => $order_sn,
|
'member_id' => $invitation_user['id'],
|
'buy_member_id' => $user['id'],
|
'is_own' => 0,
|
'alipay_total_price' => $order['order_amount']/100,
|
'pub_share_pre_fee' => $order['promotion_amount']*$invitationRate/10000,
|
'refund_tag' => 0,
|
'item_img' => $order['goods_thumbnail_url'],
|
'item_title' => $order['goods_name'],
|
'tk_status' => $order['order_status'],
|
'item_id' => $order['goods_id'],
|
'member_commission_rate' => $invitationRate,
|
'is_settle' => 0,
|
'tb_paid_time' => empty($order['order_pay_time']) ? '' : date('Y-m-d H:i:s', $order['order_pay_time']),
|
'tk_earning_time' => empty($order['order_settle_time']) ? "" : $order['order_settle_time'],
|
'create_time' => time()
|
];
|
if($order['order_status'] == 5){
|
$tmp_2['pub_share_fee'] = $order['promotion_amount']*$invitationRate/10000;
|
$tmp_2['pay_price'] = $order['order_amount']/100;
|
// $push_data[] = [
|
// 'user' => $invitation_user,
|
// 'title' => '恭喜,您有一笔新的订单收益',
|
// 'body' => "您有一笔新的团队订单收益,佣金" + $tmp_2['pub_share_fee'] + "元,继续加油哦",
|
// ];
|
}
|
$save_data[] = $tmp_2;
|
}
|
|
}
|
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' => $order_sn,
|
'member_id' => $f_invitation_user['id'],
|
'buy_member_id' => $user['id'],
|
'is_own' => 0,
|
'alipay_total_price' => $order['order_amount']/100,
|
'pub_share_pre_fee' => $order['promotion_amount']*$f_invitationRate/10000,
|
'refund_tag' => 0,
|
'item_img' => $order['goods_thumbnail_url'],
|
'item_title' => $order['goods_name'],
|
'tk_status' => $order['order_status'],
|
'item_id' => $order['goods_id'],
|
'member_commission_rate' => $f_invitationRate,
|
'is_settle' => 0,
|
'tb_paid_time' => empty($order['order_pay_time']) ? '' : date('Y-m-d H:i:s', $order['order_pay_time']),
|
'tk_earning_time' => empty($order['order_settle_time']) ? "" : $order['order_settle_time'],
|
'create_time' => time()
|
];
|
if($order['order_status'] == 5){
|
$tmp_3['pub_share_fee'] = $order['promotion_amount']*$f_invitationRate/10000;
|
$tmp_3['pay_price'] = $order['order_amount']/100;
|
// $push_data[] = [
|
// 'user' => $invitation_user,
|
// 'title' => '恭喜,您有一笔新的订单收益',
|
// 'body' => "您有一笔新的团队订单收益,佣金" + $tmp_3['pub_share_fee'] + "元,继续加油哦",
|
// ];
|
}
|
$save_data[] = $tmp_3;
|
}
|
}
|
}
|
|
}
|
}
|
}
|
}
|
$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['order_amount']/100,
|
'pub_share_pre_fee' => $order['price_compare_status'] == 1 ? $order['promotion_amount']/100 : $order['promotion_amount']*$item['member_commission_rate']/10000,
|
'pub_share_fee' => $order['order_status'] == 5 ? ($order['price_compare_status'] == 1 ? $order['promotion_amount']/100 : $order['promotion_amount']*$item['member_commission_rate']/10000) : $item['pub_share_fee'],
|
'refund_tag' => 0,
|
'tk_status' => $order['order_status'],
|
'pay_price' => $order['order_status'] == 5 ? $order['order_amount']/100 : $item['pay_price'],
|
'tk_earning_time' => empty($order['order_settle_time']) ? "" : $order['order_settle_time'],
|
'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'=>'拆分成功'];
|
}
|
|
|
}
|