<?php
|
|
|
|
namespace app\api\model\plus\team;
|
|
|
|
use app\common\model\plus\team\Order as OrderModel;
|
|
use app\common\service\order\OrderService;
|
|
use app\common\enum\order\OrderTypeEnum;
|
|
|
|
use app\common\model\plus\agent\Referee as agentRefereeModel;
|
|
use app\common\model\plus\team\User as userModel;
|
|
use app\common\model\plus\team\Referee as RefereeModel;
|
|
|
|
/**
|
|
* 队长订单模型
|
|
*/
|
|
class Order extends OrderModel
|
|
{
|
|
/**
|
|
* 隐藏字段
|
|
*/
|
|
protected $hidden = [
|
|
'update_time',
|
|
];
|
|
|
|
/**
|
|
* 获取队长订单列表
|
|
*/
|
|
public function getList($user_id, $is_settled = -1)
|
|
{
|
|
$model = $this;
|
|
$is_settled > -1 && $model = $model->where('is_settled', '=', !!$is_settled);
|
|
$data = $model->with(['user'])
|
|
->where('heads_id', '=', $user_id)
|
|
->order(['create_time' => 'desc'])
|
|
->paginate(15);
|
|
if ($data->isEmpty()) {
|
|
return $data;
|
|
}
|
|
// 整理订单信息
|
|
$with = ['product' => ['image', 'refund'], 'address', 'user'];
|
|
return OrderService::getOrderList($data, 'order_master', $with);
|
|
}
|
|
|
|
/**
|
|
* 创建队长订单记录
|
|
*/
|
|
public static function createOrder($order, $order_type = OrderTypeEnum::MASTER)
|
|
{
|
|
// 分红订单模型
|
|
$model = new self;
|
|
// 队长基本设置
|
|
$setting = Setting::getItem('basic', $order['app_id']);
|
|
// 是否开启分红功能
|
|
if (!$setting['is_open']) {
|
|
return false;
|
|
}
|
|
// 订单总金额(不含运费)
|
|
$orderPrice= bcsub($order['pay_price'], $order['express_price'], 2);
|
|
|
|
// 获取当前买家的所有上级队长用户id
|
|
$teamUser = $model->getTeamUser($order['user_id'], $setting);
|
|
//log_write($teamUser);
|
|
// 非分销订单
|
|
if (!$teamUser) {
|
|
return false;
|
|
}
|
|
// 计算订单分红
|
|
$capital = $model->getCapitalByOrder($order, $teamUser, 'create');
|
|
//log_write($capital);
|
|
// 如果没有分红,则不写入订单
|
|
if(!$capital){
|
|
return false;
|
|
}
|
|
foreach ($teamUser as $user) {
|
|
$model::create([
|
|
'user_id' => $order['user_id'],
|
|
'order_id' => $order['order_id'],
|
|
'order_type' => $order_type,
|
|
'order_price' => $capital['orderPrice'],
|
|
'bonus_money' => $capital['user'][$user['heads_id']],
|
|
'heads_id' => $user['heads_id'],
|
|
'bonus_percent' => $user['bonus_percent'],
|
|
'bonus_type' => $user['bonus_type'],
|
|
'is_settled' => 0,
|
|
'shop_supplier_id' => $order['shop_supplier_id'],
|
|
'app_id' => $order['app_id']
|
|
]);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* 获取当前买家的所有需分红队长用户id
|
|
*/
|
|
private function getTeamUser($user_id, $setting)
|
|
{
|
|
$teamUser = [];
|
|
$heads_id = RefereeModel::getHeadsId($user_id);
|
|
if($heads_id) {
|
|
//log_write($user_id .':' . $heads_id);
|
|
$headsUser = UserModel::detail($heads_id, ['grade']);
|
|
$teamUser[] = [
|
|
'heads_id' => $heads_id,
|
|
'bonus_type' => 10,
|
|
'bonus_percent' => floatval($headsUser['grade']['equity']) //分红比例
|
|
];
|
|
} else {
|
|
return false;
|
|
}
|
|
// 如果开启级差奖,获取所有级差奖用户
|
|
$jcUser = [];
|
|
if($setting['jcaward']) {
|
|
$jcUser = RefereeModel::getAllJcUser($heads_id);
|
|
}
|
|
//log_write('jc:'.$heads_id);
|
|
//log_write($jcUser);
|
|
// 如果开启平级奖,获取所有平级奖用户
|
|
$pjUser = [];
|
|
if($setting['pjaward']) {
|
|
$pjUser = RefereeModel::getAllPjUser($heads_id, $setting['pjaward_level']);
|
|
}
|
|
//log_write('pj:'.$heads_id);
|
|
//log_write($pjUser);
|
|
return array_merge($teamUser, $jcUser, $pjUser);
|
|
}
|
|
}
|