6
0
Fork 0

调整批零端计算下单价格接口

release
vine_liutk 2022-04-24 10:22:10 +08:00
parent 3ea9612ae5
commit 454e5d39d3
2 changed files with 60 additions and 35 deletions

View File

@ -182,9 +182,13 @@ class OrderController extends Controller
]);
$product = DealerProduct::online()->findOrFail($input['product_id']);
$user = $request->user();
$totalAmount = $orderService->totalAmount($user, $product, $input['num']);
return response()->json([
'total_amount'=> $orderService->totalAmount($request->user(), $product, $input['num']),
'total_amount'=> $totalAmount,
'to_lvl'=>$orderService->willBecome($user, $totalAmount),
]);
}

View File

@ -67,6 +67,39 @@ class OrderService
return bcmul($this->getSalePrice($user, $product, $allNumber ?? $number), $number, 2);
}
/**
* 计算即将成为的身份
*
* @param User $user
* @param [float] $totalAmount
* @return DealerLvl
*/
public function willBecome(User $user, $totalAmount): DealerLvl
{
$rules = [
[
'amount' => app_settings('dealer.upgrade_amount_'.DealerLvl::Contracted->value),
'lvl' => DealerLvl::Contracted,
],
[
'amount' => app_settings('dealer.upgrade_amount_'.DealerLvl::Special->value),
'lvl' => DealerLvl::Special,
],
[
'amount' => app_settings('dealer.upgrade_amount_'.DealerLvl::Gold->value),
'lvl' => DealerLvl::Gold,
],
];
$lvl = $user->dealer->lvl;
//计算通过这个订单可能升级成为的身份
foreach ($rules as $rule) {
if ($totalAmount >= $rule['amount'] && $lvl->value < $rule['lvl']->value) {
$lvl = $rule['lvl'];
}
}
return $lvl;
}
/**
* 快捷创建订单(单个商品下单)
*
@ -695,44 +728,32 @@ class OrderService
private function getConsignor(User $user, $totalAmount, ?User $lastConsignor = null)
{
$rules = [
[
'amount' => app_settings('dealer.upgrade_amount_'.DealerLvl::Contracted->value),
'lvl' => DealerLvl::Contracted,
],
[
'amount' => app_settings('dealer.upgrade_amount_'.DealerLvl::Special->value),
'lvl' => DealerLvl::Special,
],
[
'amount' => app_settings('dealer.upgrade_amount_'.DealerLvl::Gold->value),
'lvl' => DealerLvl::Gold,
],
];
$lvl = $user->dealer->lvl;
//计算通过这个订单可能升级成为的身份
foreach ($rules as $rule) {
if ($totalAmount >= $rule['amount'] && $lvl->value < $rule['lvl']->value) {
$lvl = $rule['lvl'];
}
}
// $rules = [
// [
// 'amount' => app_settings('dealer.upgrade_amount_'.DealerLvl::Contracted->value),
// 'lvl' => DealerLvl::Contracted,
// ],
// [
// 'amount' => app_settings('dealer.upgrade_amount_'.DealerLvl::Special->value),
// 'lvl' => DealerLvl::Special,
// ],
// [
// 'amount' => app_settings('dealer.upgrade_amount_'.DealerLvl::Gold->value),
// 'lvl' => DealerLvl::Gold,
// ],
// ];
// $lvl = $user->dealer->lvl;
// //计算通过这个订单可能升级成为的身份
// foreach ($rules as $rule) {
// if ($totalAmount >= $rule['amount'] && $lvl->value < $rule['lvl']->value) {
// $lvl = $rule['lvl'];
// }
// }
$lvl = $this->willBecome($user, $totalAmount);
//如果是签约单,直接抛到公司后台发货
if ($lvl->value >= DealerLvl::Contracted->value) {
return null;
}
// //老逻辑;
// $query = UserInfo::with('dealer');
// if ($lastConsignor) {
// $query->whereIn('user_id', $lastConsignor->userInfo->real_parent_ids);//上个发货人的上级
// } else {
// $query->whereIn('user_id', $user->userInfo->real_parent_ids);//自己的上级
// }
// $consignor = $query->whereHas('dealer', function ($q) use ($lvl) {
// return $q->where('is_sale', true)->where('lvl', '>', $lvl);//可销售的经销商,且身份大于自己的
// })->orderBy('depth', 'desc')->first();//深度逆序第一个
// if (!$consignor) {
// $consignor = $lastConsignor;
// }
//新逻辑
$consignor = null;
$_lastConsignor = $lastConsignor;