Bladeren bron

完善功能

gorden 9 maanden geleden
bovenliggende
commit
41a883b6d0
2 gewijzigde bestanden met toevoegingen van 58 en 32 verwijderingen
  1. 23 2
      app/admin/controller/order/WholeController.php
  2. 35 30
      app/admin/service/order/AppointmentService.php

+ 23 - 2
app/admin/controller/order/WholeController.php

@@ -160,6 +160,9 @@ class WholeController extends Curd
             'skus' => function ($query) {
                 $query->where('goods_sku_status', 'ON')
                     ->select('goods_sku_id', 'join_sku_goods_id', 'goods_sku_specs_json', 'goods_sku_sales_price');
+            },
+            'refund'=>function($query){
+                $query->select('join_return_order_id','order_return_status');
             }
         ])->where('join_sheet_order_id', $orderId)
             ->get()
@@ -266,8 +269,26 @@ class WholeController extends Curd
 
         $order = Order::where('order_id', $orderId)->first();
         $payDetail = PayDetail::where('join_pay_order_id', $order->order_groupby)
-            ->select('pay_id', 'pay_category')
+            ->select('pay_id', 'pay_category', 'pay_prepayid')
             ->first();
+
+        if(!empty($payDetail->pay_prepayid)){
+            $categoryArray = explode('-',$payDetail->pay_prepayid);
+            if (isset($categoryArray[1])){
+                $payDetail->pay_category = $categoryArray[1];
+            }else if(in_array($categoryArray[0],['A01','W06'])){
+                $payDetail->pay_category = $categoryArray[0];
+            }else{
+                if (MemberAccount::where('member_account_nbr',$categoryArray[0])->where('member_account_classify','CARD')->exists()){
+                    $payDetail->pay_category = 'CARD';
+                }else{
+                    $payDetail->pay_category = 'CASH';
+                }
+            }
+        }else{
+            $payDetail->pay_category = 'CASH';
+        }
+
         $data = [
             'order' => $order,
             'sheet' => $orderSheet,
@@ -1070,7 +1091,7 @@ class WholeController extends Curd
                 'pay_paytimes' => date('Y-m-d H:i:s'),
                 'pay_json_request' => json_encode($data),
                 'pay_json_response' => $res,
-                'pay_prepayid' => $payType[0],
+                'pay_prepayid' => $payType[0].(!empty($payType[1]) ? '-'.$payType[1] : ''),
                 'pay_addtimes' => time()
             ];
             PayDetail::insert($payDetailData);

+ 35 - 30
app/admin/service/order/AppointmentService.php

@@ -244,8 +244,10 @@ class AppointmentService
             if ($params['appointment_status'] == 'DONE') {
                 $sku = GoodsSku::find($params['join_appointment_goods_sku_id']);
                 $orderId = 'OD' . date('YmdHis') . random_string(6, 'up');
+                $groupBy = 'OD' . date('YmdHis') . random_string(6, 'up');
                 $order = [
                     'order_id' => $orderId,
+                    'order_groupby' => $groupBy,
                     'join_order_member_id' => $params['join_appointment_member_id'],
                     'order_name' => "预约-" . $goods->goods_name,
                     'order_amount_total' => $sku->goods_sku_sales_price * $params['person'],
@@ -279,7 +281,7 @@ class AppointmentService
                 // 支付数据
                 $pay = [
                     'join_pay_member_id' => $params['join_appointment_member_id'],
-                    'join_pay_order_id' => $orderId,
+                    'join_pay_order_id' => $groupBy,
                     'pay_amount' => $sheet['order_sheet_pay'],
                     'pay_remark' => '预约单',
                     'pay_addtimes' => time(),
@@ -411,11 +413,13 @@ class AppointmentService
             Appointment::where('appointment_id', $appointmentId)->update($data);
 
             // 如果服务结束,没有生成过订单,生成订单
-            if ($params['appointment_status'] == 'DONE' && empty($appointment->join_appointment_order_id)) {
+            if ($params['appointment_status'] == 'DONE' && empty($appointment->join_appointment_order_id) && $params['settlement_mode'] != 'QUOTA') {
                 $sku = GoodsSku::find($params['join_appointment_goods_sku_id']);
                 $orderId = 'OD' . date('YmdHis') . random_string(6, 'up');
+                $groupBy = 'OD' . date('YmdHis') . random_string(6, 'up');
                 $order = [
                     'order_id' => $orderId,
+                    'order_groupby' => $groupBy,
                     'join_order_member_id' => $params['join_appointment_member_id'],
                     'order_name' => "预约-" . $goods->goods_name,
                     'order_amount_total' => $sku->goods_sku_sales_price * $params['person'],
@@ -450,12 +454,13 @@ class AppointmentService
                 // 支付数据
                 $pay = [
                     'join_pay_member_id' => $params['join_appointment_member_id'],
-                    'join_pay_order_id' => $orderId,
+                    'join_pay_order_id' => $groupBy,
                     'pay_amount' => $sheet['order_sheet_pay'],
                     'pay_remark' => '预约单',
                     'pay_addtimes' => time(),
                     'pay_prepayid' => $params['join_appointment_member_id'].'-'.$params['settlement_mode'],
-                    'pay_paytimes' => date('Y-m-d H:i:s')
+                    'pay_paytimes' => date('Y-m-d H:i:s'),
+                    'pay_category'=>$goods->goods_classify
                 ];
                 // 现金余额结算
                 if ($params['settlement_mode'] == 'CASH') {
@@ -481,40 +486,40 @@ class AppointmentService
                         Order::where('order_id', $orderId)->update(['order_status_system' => 'CONFIRM', 'order_status_payment' => 'SUCCESS']);
                         OrderSheet::where('join_sheet_order_id', $orderId)->update(['order_sheet_status' => 'CONFIRM']);
                     }
-                    $pay['pay_category'] = 'CASH';
+                    // $pay['pay_category'] = 'CASH';
                     PayDetail::insert($pay);
                 } elseif ($params['settlement_mode'] == 'QRCODE' && empty($appointment->join_appointment_order_id)) {
-                    $pay['pay_category'] = 'QRCODE';
+                    // $pay['pay_category'] = 'QRCODE';
                     $pay['pay_status'] = 'SUCCESS';
                     PayDetail::insert($pay);
                     // 更新订单状态
                     Order::where('order_id', $orderId)->update(['order_status_system' => 'CONFIRM', 'order_status_payment' => 'SUCCESS']);
                     OrderSheet::where('join_sheet_order_id', $orderId)->update(['order_sheet_status' => 'CONFIRM']);
-                } else if($params['settlement_mode'] == 'QUOTA' && !empty($params['quota_id'])){
-                    $premisesName = SysDept::where('dept_id',$params['premises'])->value('dept_name');
-                    $paramsData = [
-                        'member_id'=>$params['join_appointment_member_id'],
-                        'nbr'=>$params['person'],
-                        'times'=>date('Y-m-d H:i:s'),
-                        'write_off_member_id' => $params['write_off_member_id'],
-                        'remark'=>$params['appointment_remark'],
-                        'dept_premises_id'=>$premisesName
-                    ];
-                    $quotaType = substr($params['quota_id'],0,2);
-                    if($quotaType == 'MQ'){
-                        $quota = MemberQuota::where('member_quota_id',$params['quota_id'])
-                        ->select('member_quota_id','join_member_rule_added_component_id')
-                        ->first()
-                        ->toArray();
-                        $paramsData['component_id'] = $quota['join_member_rule_added_component_id'];
-
-                        QuotaController::doWriteOff($paramsData);
-                    }else if($quotaType == 'BF'){
-                        $paramsData['benefit_id'] = $params['quota_id'];
+                }
+            }
+            // 已有服务核销
+            if($params['appointment_status'] == 'DONE' && $params['settlement_mode'] == 'QUOTA' && !empty($params['quota_id'])){
+                $premisesName = SysDept::where('dept_id',$params['premises'])->value('dept_name');
+                $paramsData = [
+                    'member_id'=>$params['join_appointment_member_id'],
+                    'nbr'=>$params['person'],
+                    'times'=>date('Y-m-d H:i:s'),
+                    'write_off_member_id' => $params['write_off_member_id'],
+                    'remark'=>$params['appointment_remark'],
+                    'dept_premises_id'=>$premisesName
+                ];
+                $quotaType = substr($params['quota_id'],0,2);
+                if($quotaType == 'MQ'){
+                    $quota = MemberQuota::where('member_quota_id',$params['quota_id'])
+                    ->select('member_quota_id','join_member_rule_added_component_id')
+                    ->first()
+                    ->toArray();
+                    $paramsData['component_id'] = $quota['join_member_rule_added_component_id'];
 
-                        // dump($paramsData);
-                        BenefitController::doWriteOff($paramsData);
-                    }
+                    QuotaController::doWriteOff($paramsData);
+                }else if($quotaType == 'BF'){
+                    $paramsData['benefit_id'] = $params['quota_id'];
+                    BenefitController::doWriteOff($paramsData);
                 }
             }