model = new ModelDy(); } /** * 获取用户对应时间段的预估金额 * * @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('douyin_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',[1,2])->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'] = 1; break; case 2: $where['tk_status'] = '000'; break; case 3: $where['tk_status'] = 2; 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['trade_id']) ? $order['trade_id'] : ''; if(empty($trade_id)) return ['status'=>false,'info'=>'订单号为空']; //判断是实付金额是否大于4元,大于4元直接普通返利 if(floatval($order['pay_price'])>4){ $res=self::fanliCommission($order); return $res; } //根据淘宝绑定渠道id查询用户信息 $ModelUser = new ModelUser(); $user = $ModelUser->where(['common_relation_id'=>$order['channel_code']])->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['trade_id']])->find(); if(!empty('first_browse')){ //计算首单返利 $res=self::fanliCommissionForFree($order); return $res; } else{ $res=self::fanliCommission($order); return $res; } } else{ $itemid=$order['product_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)){ dump('没进入首单返利'); $res=self::fanliCommission($order); return $res; } else{ //计算首单返利 dump('进入首单返利'); $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['trade_id']) ? $order['trade_id'] : ''; if(empty($trade_id)) return ['status'=>false,'info'=>'订单号为空']; Db::startTrans(); $ModelUser = new ModelUser(); $user = $ModelUser->where(['common_relation_id'=>$order['channel_code']])->find(); $ModelOrder = new ModelDyOrder(); if(empty($user)){ //标记订单为无需分销 $ModelOrder->where(['id'=>$order['id']])->update(['is_distribution'=>2,'tk_z_status'=>1,'change_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['trade_parent_id'], 'trade_id' => $trade_id, 'member_id' => $user['id'], 'buy_member_id' => $user['id'], 'is_own' => 1, 'alipay_total_price' => $order['pay_price'], 'pub_share_pre_fee' => empty($order['predict_money']) ? "" : $order['predict_money']*$userLevelInfo['own_commission_rate']/100, 'refund_tag' => 0, 'item_img' => $order['item_img'], 'item_title' => $order['item_title'], 'tk_status' => $order['order_status'], 'item_id' => $order['product_id'], 'member_commission_rate' => $userLevelInfo['own_commission_rate'], 'is_settle' => 0, 'tb_paid_time' => empty($order['paid_time']) ? "" : (date("Y-m-d H:i:s",$order['paid_time'])), 'tk_earning_time' =>empty($order['earning_time']) ? "" : $order['earning_time'], 'create_time' => time() ]; if($order['settled_status'] == '1'){ $tmp_1['pub_share_fee'] = $order['actual_money']*$userLevelInfo['own_commission_rate']/100; $tmp_1['pay_price'] = $order['pay_price']; // $push_data[] = [ // 'user' => $user, // 'title' => '恭喜,您有一笔新的订单收益', // 'body' => "您有一笔新的自购订单收益,佣金" + $tmp_1['pub_share_fee'] + "元,继续加油哦", // ]; } $save_data[] = $tmp_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){ //直属中级 $invitationRate = $invitationLevelInfo['direct_intermediate_rate']; } if($invitationRate != 0){ $tmp_2 = [ 'trade_parent_id' => $order['trade_parent_id'], 'trade_id' => $trade_id, 'member_id' => $invitation_user['id'], 'buy_member_id' => $user['id'], 'is_own' => 0, 'alipay_total_price' => $order['pay_price'], 'pub_share_pre_fee' => empty($order['predict_money']) ? "" : $order['predict_money']*$invitationRate/100, 'refund_tag' => 0, 'item_img' => $order['item_img'], 'item_title' => $order['item_title'], 'tk_status' => $order['order_status'], 'item_id' => $order['product_id'], 'member_commission_rate' => $invitationRate, 'is_settle' => 0, 'tb_paid_time' => empty($order['paid_time']) ? "" : (date("Y-m-d H:i:s",$order['paid_time'])), 'tk_earning_time' =>empty($order['earning_time']) ? "" : $order['earning_time'], 'create_time' => time() ]; if($order['settled_status'] == '1'){ $tmp_2['pub_share_fee'] = $order['actual_money']*$invitationRate/100; $tmp_2['pay_price'] = $order['pay_price']; // $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['trade_parent_id'], 'trade_id' => $trade_id, 'member_id' => $f_invitation_user['id'], 'buy_member_id' => $user['id'], 'is_own' => 0, 'alipay_total_price' => $order['pay_price'], 'pub_share_pre_fee' => empty($order['predict_money']) ? "" : $order['predict_money']*$f_invitationRate/100, 'refund_tag' => 0, 'item_img' => $order['item_img'], 'item_title' => $order['item_title'], 'tk_status' => $order['order_status'], 'item_id' => $order['product_id'], 'member_commission_rate' => $f_invitationRate, 'is_settle' => 0, 'tb_paid_time' => empty($order['paid_time']) ? "" : (date("Y-m-d H:i:s",$order['paid_time'])), 'tk_earning_time' =>$order['earning_time'], 'create_time' => time() ]; if($order['settled_status'] == '1'){ $tmp_3['pub_share_fee'] = $order['actual_money']*$f_invitationRate/100; $tmp_3['pay_price'] = $order['pay_price']; // $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,'change_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['pay_price'], 'pub_share_pre_fee' => empty($order['predict_money']) ? "" : $order['predict_money']*$item['member_commission_rate']/100, 'pub_share_fee' => $order['settled_status'] == '1' ? $order['actual_money']*$item['member_commission_rate']/100 : $item['pub_share_fee'], 'refund_tag' => 0, 'tk_status' => $order['order_status'], 'pay_price' => $order['settled_status'] == '1' ? $order['pay_price'] : $item['pay_price'], 'tk_earning_time' => empty($order['earning_time']) ? "" : $order['earning_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'=>'拆分成功']; } /** * 首单返利入库和更新 * * @return void */ public function fanliCommissionForFree($order) { $trade_id = isset($order['trade_id']) ? $order['trade_id'] : ''; if(empty($trade_id)) return ['status'=>false,'info'=>'订单号为空']; Db::startTrans(); $ModelUser = new ModelUser(); $user = $ModelUser->where(['common_relation_id'=>$order['channel_code']])->find(); $ModelOrder = new ModelDyOrder(); if(empty($user)){ //标记订单为无需分销 $ModelOrder->where(['id'=>$order['id']])->update(['is_distribution'=>2,'tk_z_status'=>1,'change_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['trade_parent_id'], 'trade_id' => $trade_id, 'member_id' => $user['id'], 'buy_member_id' => $user['id'], 'is_own' => 1, 'alipay_total_price' => $order['pay_price'], 'pub_share_pre_fee' => empty($order['pay_price']) ? "" : $order['pay_price'], 'refund_tag' => 0, 'item_img' => $order['item_img'], 'item_title' => $order['item_title'], 'tk_status' => $order['order_status'], 'item_id' => $order['product_id'], 'member_commission_rate' => $userLevelInfo['own_commission_rate'], 'is_settle' => 0, 'tb_paid_time' => empty($order['paid_time']) ? "" : (date("Y-m-d H:i:s",$order['paid_time'])), 'tk_earning_time' =>empty($order['earning_time']) ? "" : $order['earning_time'], 'create_time' => time() ]; if($order['settled_status'] == '1'){ $tmp_1['pub_share_fee'] = $order['pay_price']; $tmp_1['pay_price'] = $order['pay_price']; // $push_data[] = [ // 'user' => $user, // 'title' => '恭喜,您有一笔新的订单收益', // 'body' => "您有一笔新的自购订单收益,佣金" + $tmp_1['pub_share_fee'] + "元,继续加油哦", // ]; } $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,'change_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['pay_price'], 'pub_share_pre_fee' => empty($order['pay_price']) ? "" : $order['pay_price'], 'pub_share_fee' => $order['settled_status'] == '1' ? $order['pay_price'] : "", 'refund_tag' => 0, 'tk_status' => $order['order_status'], 'pay_price' => $order['settled_status'] == '1' ? $order['pay_price'] : $item['pay_price'], 'tk_earning_time' => empty($order['earning_time']) ? "" : $order['earning_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::name('user_first_free_browse')->where(['user_id'=>$user['id'],'new_goodsId'=>$order['product_id']])->update(['tid'=>$trade_id,'is_order'=>1]); Db::commit(); return ['status'=>true,'info'=>'拆分成功']; } }