From b343b14acd3508431b9a7523d66b614288557eb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=B8=96=E7=95=8C?= <642747453@qq.com> Date: Fri, 19 May 2023 21:19:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20#10000=20=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Console/Commands/KttOrderQuery.php | 1 + app/Filters/BusinessOrderFilter.php | 5 +++ .../Goods/GoodsCombinationController.php | 38 ++++++++++++++++++- .../Controllers/Goods/GoodsSkusController.php | 2 +- app/Models/BusinessOrder.php | 1 + .../frontend/src/views/goods/combination.vue | 32 ++++++++++++---- resources/frontend/src/views/goods/goods.vue | 7 ++-- .../frontend/src/views/plat/orderList.vue | 14 ++++++- 8 files changed, 86 insertions(+), 14 deletions(-) diff --git a/app/Console/Commands/KttOrderQuery.php b/app/Console/Commands/KttOrderQuery.php index d0f0bf1..69498a8 100644 --- a/app/Console/Commands/KttOrderQuery.php +++ b/app/Console/Commands/KttOrderQuery.php @@ -37,6 +37,7 @@ class KttOrderQuery extends Command * Execute the console command. * * @return mixed + * @throws \Exception */ public function handle() { diff --git a/app/Filters/BusinessOrderFilter.php b/app/Filters/BusinessOrderFilter.php index f8c25b6..17045b3 100644 --- a/app/Filters/BusinessOrderFilter.php +++ b/app/Filters/BusinessOrderFilter.php @@ -9,6 +9,11 @@ class BusinessOrderFilter extends Filters return $this->builder->where('participate_no', trim($value)); } + protected function supplyParticipateNo($value) + { + return $this->builder->where('supply_participate_no', trim($value)); + } + protected function shopId($value) { return $this->builder->where('shop_id', $value); diff --git a/app/Http/Controllers/Goods/GoodsCombinationController.php b/app/Http/Controllers/Goods/GoodsCombinationController.php index 2696135..7cbfb92 100644 --- a/app/Http/Controllers/Goods/GoodsCombinationController.php +++ b/app/Http/Controllers/Goods/GoodsCombinationController.php @@ -6,6 +6,7 @@ use App\Events\StockUpdateEvent; use App\Http\Controllers\Controller; use App\Http\Resources\GoodsSkuResource; use App\Imports\CombinationGoodsImport; +use App\Models\BusinessOrderItem; use App\Models\CombinationGood; use App\Models\Goods; use App\Models\GoodsSku; @@ -20,7 +21,7 @@ class GoodsCombinationController extends Controller public function index(Request $request) { // ToDo - // 可通过子商城查找主商品 + // 可通过子商品查找主商品 $skus = GoodsSku::query() ->with([ 'combinationGoods:id,goods_sku_id,item_id,item_num', @@ -29,9 +30,41 @@ class GoodsCombinationController extends Controller ]) ->where('is_combination', 1) ->filter() + ->orderBy('stock', 'desc') ->paginate($request->get('per_page')); + $fields = implode(',', [ + 'shop_id', + 'external_sku_id', + 'sum(goods_number) as number', + 'sum(already_cancel_number) as cancel_number', + ]); foreach ($skus as &$item) { $items = []; + $lastInventoryTime = date('Y-m-d 07:00:00'); + $orderDetail = BusinessOrderItem::query() + ->select(DB::raw($fields)) + ->with(['shop:id,name']) + ->where('external_sku_id', $item['external_sku_id']) + ->when($lastInventoryTime, function ($query) use ($lastInventoryTime) { + $query->where('created_at', '>', $lastInventoryTime); + }) + ->groupBy(['shop_id', 'external_sku_id']) + ->get() + ->toArray(); + $addOrderGoodsNum = $reduceOrderGoodsNum = 0; + if ($orderDetail) { + $addOrderGoodsNum = array_sum(array_column($orderDetail, 'number')); + $reduceOrderGoodsNum = array_sum(array_column($orderDetail, 'cancel_number')); + } + $item['order_goods_num'] = $addOrderGoodsNum - $reduceOrderGoodsNum; + $item['order_detail'] = $orderDetail; + $number = BusinessOrderItem::query() + ->where('external_sku_id', $item['external_sku_id']) + ->sum('goods_number'); + $cancelNumber = BusinessOrderItem::query() + ->where('external_sku_id', $item['external_sku_id']) + ->sum('already_cancel_number'); + $item['total_orders_num'] = $number - $cancelNumber; foreach ($item['combinationGoods'] as $combinationItem) { $items[] = [ 'cost' => 0, @@ -48,6 +81,9 @@ class GoodsCombinationController extends Controller 'title' => $combinationItem['goodsSkuItem']['goods']['title'] . $combinationItem['goodsSkuItem']['title'], 'updated_at' => $combinationItem['goodsSkuItem']['updated_at'], 'yesterday_num' => $combinationItem['goodsSkuItem']['yesterday_num'], + 'order_goods_num' => '请在商品列表查看', + 'order_detail' => [], + 'total_orders_num' => '不显示', ]; } $item['children'] = $items; diff --git a/app/Http/Controllers/Goods/GoodsSkusController.php b/app/Http/Controllers/Goods/GoodsSkusController.php index 97f1d34..fa495cf 100644 --- a/app/Http/Controllers/Goods/GoodsSkusController.php +++ b/app/Http/Controllers/Goods/GoodsSkusController.php @@ -52,7 +52,7 @@ class GoodsSkusController extends Controller $query->where('day', $day); }]) ->where('is_combination', 0) - ->orderBy('updated_at', 'desc') + ->orderBy('stock', 'desc') ->paginate($request->get('per_page')); $fields = implode(',', [ 'shop_id', diff --git a/app/Models/BusinessOrder.php b/app/Models/BusinessOrder.php index afd5344..71d945c 100644 --- a/app/Models/BusinessOrder.php +++ b/app/Models/BusinessOrder.php @@ -16,6 +16,7 @@ class BusinessOrder extends Model 'is_supplier', 'cancel_status', 'after_sales_status', + 'supply_participate_no', ]; protected $fillable = [ diff --git a/resources/frontend/src/views/goods/combination.vue b/resources/frontend/src/views/goods/combination.vue index f1f5bd4..e878d5b 100644 --- a/resources/frontend/src/views/goods/combination.vue +++ b/resources/frontend/src/views/goods/combination.vue @@ -11,11 +11,11 @@ 筛选 - - 组合商品导入 - + + 组合商品导入 + @@ -44,7 +44,25 @@ - + + + + +