Browse Source

商品销售统计

gorden 4 months ago
parent
commit
be558daf67

+ 63 - 3
app/admin/controller/finance/GoodsSalesController.php

@@ -45,8 +45,8 @@ class GoodsSalesController
             $oldSearchGoodsIds = $searchGoodsIds;
 
             $searchGoodsIds = Goods::whereIn('join_goods_category_id', $searchCategoryIds)->pluck('goods_id')->toArray();
-            if (!empty($oldSearchGoodsIds)){
-                $searchGoodsIds = array_intersect($searchGoodsIds,$oldSearchGoodsIds);
+            if (!empty($oldSearchGoodsIds)) {
+                $searchGoodsIds = array_intersect($searchGoodsIds, $oldSearchGoodsIds);
             }
         }
 
@@ -56,7 +56,7 @@ class GoodsSalesController
             ->when(!empty($payType), function ($query) use ($payType) {
                 $query->where('data_inout_pay_type', $payType);
             })->when(!empty($goodsName), function ($query) use ($goodsName) {
-                $query->where('join_data_inout_object_json', 'like', "'" . $goodsName . "'");
+                $query->where('join_data_inout_object_json', 'like', "%" . $goodsName . "%");
             })->select('join_data_inout_object_json')
             ->get()
             ->toArray();
@@ -167,4 +167,64 @@ class GoodsSalesController
             'statistics' => $statistics
         ]);
     }
+
+    public function info(Request $request)
+    {
+        $goodsId = $request->get('goods_id');
+        $skuId = $request->get('sku_id');
+        if (!$goodsId) {
+            return json_fail("参数异常");
+        }
+
+        $goods = Goods::with([
+            'sku' => function ($query) use ($skuId) {
+                $query->where('goods_sku_id', $skuId);
+            },
+            'running' => function ($query) {
+                $query->select('join_running_goods_id', 'goods_running_storage', 'goods_running_sale');
+            },
+            'detail' => function ($query) {
+                $query->select('join_detail_goods_id', 'goods_detail_slider_json');
+            },
+            'user' => function ($query) {
+                $query->select('user_id', 'user_name');
+            },
+            'updateUser' => function ($query) {
+                $query->select('user_id', 'user_name');
+            }
+        ])->where('goods_id', $goodsId)
+            ->first();
+        $goods = $goods ?? [];
+        if (!empty($goods['goods_cover'])) {
+            $goods['goods_cover'] = getenv('STORAGE_DOMAIN') . $goods['goods_cover'];
+        }
+        $sliderArr = [];
+        if (!empty($goods['detail']) && !empty($goods['detail']['goods_detail_slider_json'])) {
+            $sliderJson = json_decode($goods['detail']['goods_detail_slider_json'], true);
+            $sliders = explode(',', $sliderJson['slider']);
+            foreach ($sliders as $slider) {
+                $sliderArr[] = getenv('STORAGE_DOMAIN') . $slider;
+            }
+        }
+        $goods['slider'] = $sliderArr;
+
+        if (!empty($goods['user'])) {
+            $goods['creator_username'] = $goods['user']['user_name'];
+        }
+        if (!empty($goods['updateUser'])) {
+            $goods['updator_username'] = $goods['updateUser']['user_name'];
+        }
+        if (!empty($goods['sku'])) {
+            foreach ($goods['sku'] as &$sku) {
+                if (!empty($sku['goods_sku_storage_json']) && !in_array($goods['goods_classify'], ['MEALS', 'PACKAGE'])) {
+                    $storageJson = json_decode($sku['goods_sku_storage_json'], true);
+                    $sku['storage'] = $storageJson['storage'];
+                }else{
+                    $sku['storage'] = !empty($goods['running']) ? $goods['running']['goods_running_storage'] : 0;
+                }
+            }
+        }
+
+        return json_success('success', $goods);
+    }
 }

+ 12 - 5
app/admin/controller/order/WholeController.php

@@ -291,7 +291,7 @@ class WholeController extends Curd
                 unset($item['join_express_order_id'], $item['order_express_type']);
             }
 
-            $item['payDetail'] = PayDetailService::getPayWay($item['order_groupby'],$item['order_id']);
+            $item['payDetail'] = PayDetailService::getPayWay($item['order_groupby'], $item['order_id']);
         }
 
         return $items;
@@ -527,6 +527,11 @@ class WholeController extends Curd
                 if (isset($orderExtendJson['free_remark'])) {
                     $order->free_remark = $orderExtendJson['free_remark'];
                 }
+                if ($order->order_status_payment == 'AWAITING' && !empty($orderExtendJson['awaiting_times'])){
+                    $order->awaiting_times = $orderExtendJson['awaiting_times'];
+                }elseif ($order->order_status_payment == 'AWAITING' && empty($orderExtendJson['awaiting_times'])){
+                    $order->awaiting_times = date('Y-m-d H:i:s',strtotime($order->order_addtimes));
+                }
             }
             $discount = ['coupon_name' => '', 'classify' => '', 'value' => 0];
             if (!empty($order->order_discount_json)) {
@@ -5249,9 +5254,15 @@ class WholeController extends Curd
             } else if ($orderStatusPayment == 'FREE' && $order->order_status_payment != 'PENDING') {
                 throw new BusinessException("当前订单不允许免单");
             }
+            $orderExtendJson = [];
+            if (!empty($order->order_extend_json)) {
+                $orderExtendJson = json_decode($order->order_extend_json, true);
+            }
             // 挂账,释放餐桌
             if (in_array($orderStatusPayment, ['AWAITING', 'FREE'])) {
                 $order->order_status_payment = $orderStatusPayment;
+                $orderExtendJson['awaiting_times'] = date('Y-m-d H:i:s');
+                $order->order_extend_json = json_encode($orderExtendJson, JSON_UNESCAPED_UNICODE);
                 // 如果有餐桌,释放
                 if (!empty($order->order_config_json)) {
                     $orderConfigJson = json_decode($order->order_config_json, true);
@@ -5272,10 +5283,6 @@ class WholeController extends Curd
                     'coupon_detail_id' => ['免单'],
                     'coupon_classify_en' => ['free']
                 ];
-                $orderExtendJson = [];
-                if (!empty($order->order_extend_json)) {
-                    $orderExtendJson = json_decode($order->order_extend_json, true);
-                }
                 $orderExtendJson['free_remark'] = $freeRemark;
                 $order->order_discount_json = json_encode($orderDiscountJson, JSON_UNESCAPED_UNICODE);
                 $order->order_extend_json = json_encode($orderExtendJson, JSON_UNESCAPED_UNICODE);

+ 16 - 9
app/model/Goods.php

@@ -42,7 +42,12 @@ class Goods extends Model
     public function category()
     {
         return $this->hasOne(SysCategory::class, 'category_id', 'join_goods_category_id')
-            ->select('category_id','category_name');
+            ->select('category_id', 'category_name');
+    }
+
+    public function detail()
+    {
+        return $this->hasOne(GoodsDetail::class, 'join_detail_goods_id', 'goods_id');
     }
 
     /**
@@ -69,22 +74,24 @@ class Goods extends Model
 
     public function sku()
     {
-        return $this->hasMany(GoodsSku::class,'join_sku_goods_id','goods_id')
+        return $this->hasMany(GoodsSku::class, 'join_sku_goods_id', 'goods_id')
 //            ->where('goods_sku_status','ON')
-            ->select('goods_sku_id','join_sku_goods_id','goods_sku_specs_json','goods_sku_sales_price','goods_sku_status');
+            ->select('goods_sku_id', 'join_sku_goods_id', 'goods_sku_specs_json', 'goods_sku_sales_price', 'goods_sku_status', 'goods_sku_storage_json');
     }
 
     public function skuOne()
     {
-        return $this->hasOne(GoodsSku::class,'join_sku_goods_id','goods_id')
-            ->select('goods_sku_id','join_sku_goods_id','goods_sku_specs_json','goods_sku_sales_price','goods_sku_status');
+        return $this->hasOne(GoodsSku::class, 'join_sku_goods_id', 'goods_id')
+            ->select('goods_sku_id', 'join_sku_goods_id', 'goods_sku_specs_json', 'goods_sku_sales_price', 'goods_sku_status', 'goods_sku_storage_json');
     }
 
-    public function user(){
-        return $this->hasOne(SysUser::class,'user_id','creator_user_id');
+    public function user()
+    {
+        return $this->hasOne(SysUser::class, 'user_id', 'creator_user_id');
     }
 
-    public function updateUser(){
-        return $this->hasOne(SysUser::class,'user_id','updator_user_id');
+    public function updateUser()
+    {
+        return $this->hasOne(SysUser::class, 'user_id', 'updator_user_id');
     }
 }

+ 1 - 1
route/admin.php

@@ -152,7 +152,7 @@ Route::group('/admin', function () {
             Route::get('/statistics', [\app\admin\controller\finance\WriteOffController::class, 'statistics']);
         });
         Route::group('/goodsSales', function () {
-            Route::get('/statistics', [\app\admin\controller\finance\GoodsSalesController::class, 'statistics']);
+            Route::get('/info', [\app\admin\controller\finance\GoodsSalesController::class, 'info']);
             Route::get('/list', [\app\admin\controller\finance\GoodsSalesController::class, 'list']);
         });
         Route::group('/memberAccount', function () {