Browse Source

餐饮订单

gorden 9 months ago
parent
commit
6808c07bda

+ 2 - 0
app/admin/controller/content/SpecialController.php

@@ -73,6 +73,8 @@ class SpecialController extends Curd
                     $item->cover = getenv('STORAGE_DOMAIN') . $configJson['cover'];
                 }
             }
+
+            $item->content_main = htmlspecialchars_decode($item->content_main);
         }
 
         return $items;

+ 120 - 1
app/admin/controller/order/WholeController.php

@@ -676,7 +676,6 @@ class WholeController extends Curd
 
             PayDetail::insert($data);
         } catch (\Exception $e) {
-            dump(111);
             dump($e->getMessage());
             throw new BusinessException('创建支付记录失败');
         }
@@ -1261,4 +1260,124 @@ class WholeController extends Curd
             return json_fail("数据更新失败");
         }
     }
+
+    public function exportOrder(Request $request)
+    {
+        [$where, $format, $limit, $field, $order] = $this->selectInput($request);
+        if(!empty($request->get('order_ids'))){
+            $where['order_id'] = ['in',$request->get('order_ids')];
+        }
+        if (!empty($where['order_addtimes'])) {
+            $where['order_addtimes'][0] = strtotime($where['order_addtimes'][0]);
+            $where['order_addtimes'][1] = strtotime($where['order_addtimes'][1]);
+        }
+        $order = $request->get('order', 'desc');
+        $field = $field ?? 'order_addtimes';
+
+        if (!empty($where['order_status_system']) && in_array($where['order_status_system'],['PENDING','WAITING','SENDING','RECVING','SIGNED','CONFIRM'])){
+            $where['order_is_complete'] = 'N';
+        }
+
+        if (!empty($where['order_status_system']) && $where['order_status_system'] == 'RETURN') {
+            unset($where['order_status_system']);
+            unset($where['order_is_complete']);
+            $where['order_category'] = 'RETURN';
+        }
+
+        $query = $this->doSelect($where, $field, $order);
+        return $this->exportDoFormat($query, $format, 1000);
+    }
+
+    /**
+     * 执行真正查询,并返回格式化数据
+     * @param $query
+     * @param $format
+     * @param $limit
+     * @return Response
+     */
+    protected function exportDoFormat($query, $format, $limit): Response
+    {
+        $methods = [
+            'select' => 'formatSelect',
+            'tree' => 'formatTree',
+            'table_tree' => 'formatTableTree',
+            'normal' => 'formatNormal',
+        ];
+        $paginator = $query->paginate($limit);
+        $total = $paginator->total();
+        $items = $paginator->items();
+        $items = call_user_func([$this, "exportAfterQuery"], $items);
+        $format_function = $methods[$format] ?? 'formatNormal';
+        return call_user_func([$this, $format_function], $items, $total);
+    }
+
+    protected function exportAfterQuery($items)
+    {
+        $data = [];
+        foreach($items as $key => $item){
+            $goodsClassify = '--';
+            $goodsName = '--';
+            if (!empty($item['sheet'])) {
+                $goods = Goods::where('goods_id', $item['sheet']['join_sheet_goods_id'])->first();
+                $goodsClassify = $goods->goods_classify ?? '';
+                $goodsName = $goods->goods_name ?? '--';
+            }
+            $systemStatus = '';
+            if($item['order_is_complete'] == 'Y'){
+                $systemStatus = '已完成';
+            }elseif ($item['order_is_complete'] == 'R'){
+                $systemStatus = '售后已完成';
+            }
+
+            $data[$key]=[
+                'goods_classify'=>!empty($goods) && isset(self::$goodsClassify[$goods->goods_classify]) ? self::$goodsClassify[$goods->goods_classify] : '其他订单',
+                'order_id'=>$item['order_id'],
+                'member'=> (!empty($item['cert']) ? $item['cert']['member_cert_name'] : substr($item['member']['member_mobile'],-4).'用户') .'-'.$item['member']['member_mobile'],
+                'goods_name' => $goodsName,
+                'nbr'=>!empty($item['sheet']) ? intval($item['sheet']['order_sheet_num']) : '--',
+                'order_amount_total'=>$item['order_amount_total'],
+                'order_amount_pay'=>$item['order_amount_pay'],
+                'order_status_system'=>!empty($systemStatus) ? $systemStatus : self::$systemStatus[$item['order_status_system']],
+                'order_status_payment'=>self::$paymentStatus[$item['order_status_payment']],
+                'order_addtimes'=>date('Y-m-d H:i:s',strtotime($item['order_addtimes']))
+            ];
+        }
+
+        return $data;
+    }
+
+    public static $goodsClassify = [
+        // goodsClassify: {GOODS:"健康产品订单",SERVICE:"服务订单",DEVICE:"设备订单",SPECIAL:"专题业务订单",PACKAGE:"套餐订单",RECHARGE:"充值订单",OTHER:"其他订单"},
+
+        'GOODS'=>"健康产品订单",
+        'SERVICE'=>"服务订单",
+        'DEVICE' => '设备订单',
+        'SPECIAL'=>'专题业务订单',
+        'PACKAGE'=>'套包订单',
+        'RECHARGE'=>'充值订单',
+        'OTHER'=>'其他订单'
+    ];
+
+    //				systemStatus: {BEING:"待生效",PAYING:"待支付",PENDING:"待确认",WAITING:"待受理",SENDING:"待发货",RECVING:"待收货",SIGNED:"已签收",CONFIRM:"确认收货"},
+	//			    paymentStatus: {PENDING:"待支付",CANCEL:"取消支付",SUCCESS:"支付成功"},
+
+    public static $systemStatus = [
+        'BEING'=>'待生效',
+        'PAYING'=>"待支付",
+        'PENDING'=>"待确认",
+        'WAITING'=>"待使用",
+        'SENDING'=>"待发货",
+        'RECVING'=>"待收货",
+        'SIGNED'=>"已签收",
+        'CONFIRM'=>"确认收货",
+        'DONE'=> '已完成',
+        'CANCEL'=>'已取消'
+    ];
+
+    public static $paymentStatus = [
+        'WAITING'=>"待支付",
+        'PENDING'=>"待支付",
+        'CANCEL'=>"取消支付",
+        'SUCCESS'=>"支付成功"
+    ];
 }

+ 1 - 1
route/admin.php

@@ -801,7 +801,7 @@ Route::group('/admin', function () {
             Route::post('/delete', [\app\admin\controller\order\WholeController::class, 'delete']);
             Route::post('/doRefund', [\app\admin\controller\order\WholeController::class, 'doRefund']);
             Route::post('/writeOffDishes', [\app\admin\controller\order\WholeController::class, 'writeOffDishes']);
-
+            Route::get('/exportOrder', [\app\admin\controller\order\WholeController::class, 'exportOrder']);
         })->middleware([
             \app\middleware\AdminAuthCheck::class
         ]);