sku
parent
fbbd46e614
commit
1fc2505b82
|
|
@ -33,7 +33,7 @@ class OrderController extends AdminController
|
|||
|
||||
protected function grid()
|
||||
{
|
||||
$grid = new Grid(Order::with(['user', 'userInfo', 'inviter', 'inviterInfo', 'store']));
|
||||
$grid = new Grid(Order::with(['user', 'userInfo', 'inviter', 'inviterInfo', 'store', 'userCoupon']));
|
||||
|
||||
$user = Admin::user();
|
||||
$canAdmin = $this->canAdmin();
|
||||
|
|
@ -70,6 +70,7 @@ class OrderController extends AdminController
|
|||
$grid->column('market_price')->display(fn ($value) => bcdiv($value, 100, 2))->prepend('¥');
|
||||
$grid->column('cost_price')->display(fn ($value) => bcdiv($value, 100, 2))->prepend('¥');
|
||||
$grid->column('profit_price')->display(fn () => round(($this->total_amount - $this->cost_price) / 100, 2, PHP_ROUND_HALF_DOWN));
|
||||
$grid->column('user_coupon_id')->display(fn ($value) => $value ? data_get($this->userCoupon, 'coupon_name') . '(¥'.round($this->coupon_discount_amount/100, 2, PHP_ROUND_HALF_DOWN).')' : '');
|
||||
$grid->column('sales_value');
|
||||
$grid->column('order_status')->using($this->statusMap)->dot($this->statusColor);
|
||||
$grid->column('created_at');
|
||||
|
|
@ -138,6 +139,7 @@ class OrderController extends AdminController
|
|||
OrderStatus::CANCELLED => '已取消'
|
||||
])->width(3);
|
||||
$filter->between('created_at')->dateTime()->width(6);
|
||||
$filter->where('user_coupon_id', fn($q) => $this->input ? $q->whereNotNull('user_coupon_id') : $q->whereNull('user_coupon_id'))->select(['未使用', '已使用'])->width(3);
|
||||
$filter->between('completed_at')->dateTime()->width(6);
|
||||
});
|
||||
|
||||
|
|
@ -175,25 +177,24 @@ class OrderController extends AdminController
|
|||
|
||||
protected function detail($id)
|
||||
{
|
||||
$show = Show::make($id, Order::with(['user', 'inviter']));
|
||||
$show = Show::make($id, Order::with(['user', 'inviter', 'userCoupon']));
|
||||
$show->field('id');
|
||||
$show->field('sn');
|
||||
$show->field('user.phone');
|
||||
$show->field('inviter.phone');
|
||||
$show->field('products_total_amount')->as(fn($value) => bcdiv($value, 100, 2))->prepend('¥');
|
||||
$show->field('total_amount')->as(fn ($value) => bcdiv($value, 100, 2));
|
||||
$show->field('market_price')->as(fn ($value) => bcdiv($value, 100, 2));
|
||||
$show->field('cost_price')->as(fn ($value) => bcdiv($value, 100, 2));
|
||||
$show->field('profit_price')->as(fn () => round(($this->total_amount - $this->cost_price) / 100, 2, PHP_ROUND_HALF_DOWN));
|
||||
$show->field('vip_discount_amount')->as(fn ($v) => bcdiv($v, 100, 2))->prepend('- ¥');
|
||||
|
||||
// 优惠券
|
||||
$show->field('user_coupon_id')->as(fn() => data_get($this->userCoupon, 'coupon_name'));
|
||||
$show->field('coupon_discount_amount')->as(fn($value) => bcdiv($value, 100, 2))->prepend('- ¥');
|
||||
|
||||
$userCouponId = $show->model()->user_coupon_id;
|
||||
if ($userCouponId) {
|
||||
$show->field('coupon_discount_amount')->as(fn($value) => bcdiv($value, 100, 2))->prepend('- ¥');
|
||||
}
|
||||
$show->field('shipping_fee')->as(fn ($v) => bcdiv($v, 100, 2))->prepend('+ ¥');
|
||||
$show->field('reduced_amount')->as(fn($value) => bcdiv($value, 100, 2))->prepend('- ¥');
|
||||
$show->field('total_amount', '支付金额')->as(fn($value) => bcdiv($value, 100, 2))->prepend('¥');
|
||||
$show->field('total_amount')->as(fn($value) => bcdiv($value, 100, 2))->prepend('¥');
|
||||
$show->field('sales_value');
|
||||
$show->field('order_status')->as(function ($v) {
|
||||
return $this->order_status;
|
||||
|
|
|
|||
|
|
@ -66,7 +66,11 @@ class ProductSkuController extends Controller
|
|||
$user = $request->user();
|
||||
$spu = ProductSpu::with(['specs', 'features'])->findOrFail($id);
|
||||
|
||||
$sku = $spu->skus()->with(['buynote', 'spu'])->online()->first();
|
||||
$sku = $spu->skus()
|
||||
->with(['buynote', 'spu'])
|
||||
->online()
|
||||
->when($request->filled('sku_id'), fn($q) => $q->where('id', $request->input('sku_id')))
|
||||
->first();
|
||||
if (!$sku) {
|
||||
throw new BizException('商品sku未上架');
|
||||
}
|
||||
|
|
@ -92,12 +96,13 @@ class ProductSkuController extends Controller
|
|||
|
||||
$key = implode('_', $jSpecs);
|
||||
$mapSku = $mapSkus->get($key);
|
||||
if ($mapSku) {
|
||||
$stock = (int) $mapSku?->saleable_stock;
|
||||
if ($mapSku && $stock > 0) {
|
||||
$spuSpecItems[] = [
|
||||
'name' => $value['name'],
|
||||
'selected' => $sku->is($mapSku),
|
||||
'sku_id' => (int) $mapSku?->id,
|
||||
'sku_stock' => (int) $mapSku?->saleable_stock,
|
||||
'sku_id' => (int) $mapSku->id,
|
||||
'sku_stock' => $stock,
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -66,7 +66,10 @@ class StoreController extends Controller
|
|||
$user = $request->user();
|
||||
$spu = $store->productSpus()->with(['specs', 'features'])->findOrFail($id);
|
||||
|
||||
$sku = $store->productSkus()->where('product_spu_id', $spu->id)->first();
|
||||
$sku = $store->productSkus()
|
||||
->where('product_spu_id', $spu->id)
|
||||
->when($request->filled('sku_id'), fn($q) => $q->where('product_sku_id', $request->input('sku_id')))
|
||||
->first();
|
||||
if (!$sku) {
|
||||
throw new BizException('商品sku未上架');
|
||||
}
|
||||
|
|
@ -74,7 +77,7 @@ class StoreController extends Controller
|
|||
$spuSpecs = [];
|
||||
|
||||
if (count($original = (array) $sku->specs) > 0) {
|
||||
$skus = $spu->skus()->get(['id', 'specs', 'stock', 'release_at']);
|
||||
$skus = $store->productSkus()->where('product_spu_id', $spu->id)->get();
|
||||
|
||||
$mapSkus = $skus->mapWithKeys(function ($item) {
|
||||
$key = implode('_', $item->specs) ?: $item->id;
|
||||
|
|
@ -92,12 +95,13 @@ class StoreController extends Controller
|
|||
|
||||
$key = implode('_', $jSpecs);
|
||||
$mapSku = $mapSkus->get($key);
|
||||
if ($mapSku) {
|
||||
$stock = (int) data_get($mapSku?->pivot, 'amount');
|
||||
if ($mapSku && $stock > 0) {
|
||||
$spuSpecItems[] = [
|
||||
'name' => $value['name'],
|
||||
'selected' => $sku->is($mapSku),
|
||||
'sku_id' => (int) $mapSku?->id,
|
||||
'sku_stock' => (int) $mapSku?->saleable_stock,
|
||||
'sku_id' => (int) $mapSku->id,
|
||||
'sku_stock' => $stock,
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue