添加计算价格接口
parent
4fed927528
commit
c66f69e330
|
|
@ -49,9 +49,8 @@ class DealerProductSaleRule extends Form implements LazyRenderable
|
|||
$saleRules[] = new DealerProductSaleRuleModel($rule);
|
||||
} else {
|
||||
$_rule = DealerProductSaleRuleModel::find($rule['id']);
|
||||
$_rule['lvl'] = $rule['id'];
|
||||
$_rule['sale_price'] = $rule['sale_price'];
|
||||
$_rule['min_order_amount'] = $rule['min_order_amount'];
|
||||
$_rule['qty'] = $rule['qty'];
|
||||
$_rule['price'] = $rule['price'];
|
||||
$saleRules[] = $_rule;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
|
||||
namespace App\Endpoint\Api\Http\Controllers\Dealer;
|
||||
|
||||
use App\Endpoint\Api\Http\Controllers\Controller;
|
||||
use App\Models\DealerProduct;
|
||||
use App\Services\Dealer\OrderService;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class OrderController extends Controller
|
||||
{
|
||||
/**
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return void
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
}
|
||||
|
||||
public function show($id, Request $request)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算订单价格
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function totalAmount(Request $request, OrderService $orderService)
|
||||
{
|
||||
$input = $request->validate([
|
||||
'product_id'=>['bail', 'required', 'int', 'min:0'],
|
||||
'num'=>['bail', 'required', 'int', 'min:1'],
|
||||
]);
|
||||
|
||||
$product = DealerProduct::online()->findOrFail($input['product_id']);
|
||||
|
||||
return response()->json([
|
||||
'total_amount'=> $orderService->totalAmount($request->user(), $product, $input['num']),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
@ -222,5 +222,8 @@ Route::group([
|
|||
Route::get('products', [Dealer\ProductController::class, 'index']);
|
||||
//商品详情
|
||||
Route::get('products/{id}', [Dealer\ProductController::class, 'show']);
|
||||
|
||||
//计算商品下单价格
|
||||
Route::get('orders/total-amount', [Dealer\OrderController::class, 'totalAmount']);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ class DealerProduct extends Model
|
|||
|
||||
public function saleRules()
|
||||
{
|
||||
return $this->hasMany(DealerProductSaleRule::class, 'product_id')->orderBy('qty', 'asc');
|
||||
return $this->hasMany(DealerProductSaleRule::class, 'product_id')->orderBy('qty', 'desc');
|
||||
}
|
||||
|
||||
public function manageRules()
|
||||
|
|
|
|||
|
|
@ -127,6 +127,16 @@ class User extends Model implements AuthorizableContract, AuthenticatableContrac
|
|||
return $this->hasOne(UserCid::class, 'user_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 属于次用户得经销商身份
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function dealer()
|
||||
{
|
||||
return $this->hasOne(Dealer::class, 'user_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 确认此用户是否是 VIP
|
||||
*
|
||||
|
|
|
|||
|
|
@ -0,0 +1,47 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services\Dealer;
|
||||
|
||||
use App\Models\DealerProduct;
|
||||
use App\Models\User;
|
||||
|
||||
class OrderService
|
||||
{
|
||||
/**
|
||||
* 计算订单价格
|
||||
*
|
||||
* @param DealerProduct $product
|
||||
* @param integer $number
|
||||
* @return void
|
||||
*/
|
||||
public function totalAmount(User $user, DealerProduct $product, int $number = 0)
|
||||
{
|
||||
//获取等级规则,判断当前用户等级是否配置等级价格
|
||||
$salePrice = $product->price;
|
||||
if ($user->dealer) {
|
||||
foreach ($product->lvlRules as $rule) {
|
||||
if ($rule->lvl == $user->dealer->lvl) {
|
||||
$salePrice = $rule->sale_price;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//获取销售规则,判断当前用户购买数量价格
|
||||
foreach ($product->saleRules as $rule) {
|
||||
if ($number >= $rule->qty) {
|
||||
if ($salePrice > $rule->price) {
|
||||
$salePrice = $rule->price;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
// dd($salePrice, $number);
|
||||
|
||||
return bcmul($salePrice, $number, 2);
|
||||
}
|
||||
|
||||
public function createOrder(User $user, DealerProduct $product, int $number = 0)
|
||||
{
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue