6
0
Fork 0
panliang 2023-03-17 22:09:10 +08:00
parent fbbd46e614
commit 1fc2505b82
3 changed files with 27 additions and 17 deletions

View File

@ -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;

View File

@ -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,
];
}

View File

@ -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,
];
}