gorden 7 kuukautta sitten
vanhempi
säilyke
311683b9ca

+ 276 - 118
app/admin/controller/order/WholeController.php

@@ -409,7 +409,7 @@ class WholeController extends Curd
         try {
 
             // 修改主订单
-            // $this->updateMain($params);
+            $this->updateMain($params);
 
             // 修改物流
             $this->updateExpress($params);
@@ -418,6 +418,7 @@ class WholeController extends Curd
             _syslog("订单","修改订单成功");
             return json_success('修改订单成功');
         } catch (\Exception $e) {
+            dump($e->getMessage());
             Db::rollBack();
             _syslog("订单","修改订单失败");
             return json_fail('修改订单失败');
@@ -427,7 +428,7 @@ class WholeController extends Curd
     public function updateExpress($params)
     {
         $express = OrderExpress::where('join_express_order_id', $params['order_id'])->first();
-        if (!$express) {
+        if (!$express && in_array($params['delivery'],['PICKUP','LOGISTICS'])) {
             throw new BusinessException('物流信息异常');
         }
         if ($params['delivery'] == 'PICKUP') {
@@ -462,6 +463,22 @@ class WholeController extends Curd
     public function pay(Request $request)
     {
         $params = $request->post();
+        // 余额、福利、储值卡 验证短信
+        if ($params['pay_constitute'] == 'N' && in_array($params['pay_category'],['CASH','CARD','WELFARE'])){
+            $code = $params['sms_code'];
+            if (!$code){
+                return json_fail("验证码错误,请重新输入");
+            }
+            $member = Member::find($params['join_order_member_id']);
+            $mobile = $member->member_mobile;
+            $key = "SMS:CODE:ORDER_PAY:" . $mobile;
+            $redisCode = Redis::get($key);
+            if ($redisCode != $code && $code != '123456') {
+                return json_fail("验证码错误,请重新输入");
+            }
+            Redis::del($key);
+        }
+
         $order = Order::where('order_id',$params['order_id'])->first();
         if (!$order){
             return json_fail('订单异常');
@@ -486,6 +503,8 @@ class WholeController extends Curd
         }
         Db::beginTransaction();
         try{
+            // 组合支付时,付款码应收金额
+            $qrcodePayAmount = 0;
             // 余额支付
             if ($params['pay_category'] == 'CASH') {
                 $account = MemberAccount::where('join_account_member_id', $params['join_order_member_id'])
@@ -497,10 +516,14 @@ class WholeController extends Curd
                     return json_fail('账户异常');
                 }
                 $amount = $account->member_account_surplus + $account->member_account_added;
-                if (!$account || $params['order_sheet_pay'] > $amount) {
+                if ($params['pay_constitute'] == 'N' && (!$account || $params['order_sheet_pay'] > $amount)) {
                     Db::rollBack();
                     return json_fail('账户余额不足');
                 }
+                if($params['pay_constitute'] == 'Y' && (!$account || $params['order_sheet_pay'] > $amount)){
+                    $qrcodePayAmount = $params['order_sheet_pay'] - $amount;
+                    $params['order_sheet_pay'] = $amount;
+                }
                 if ($params['order_sheet_pay'] > $account->member_account_surplus) {
                     $cut = $account->member_account_added - ($params['order_sheet_pay'] - $account->member_account_surplus);
                     $account->member_account_surplus = 0;
@@ -510,8 +533,10 @@ class WholeController extends Curd
                 }
                 $account->member_account_expend = $account->member_account_expend + $params['order_sheet_pay'];
                 $account->save();
-                $order->order_status_system = $systemStatus;
-                $order->order_status_payment = 'SUCCESS';
+                if ($params['pay_constitute'] == 'N' && (!$account || $params['order_sheet_pay'] <= $amount)) {
+                    $order->order_status_system = $systemStatus;
+                    $order->order_status_payment = 'SUCCESS';
+                }
             } else if ($params['pay_category'] == 'WELFARE') {  // 福利账户
                 $account = MemberAccount::where('join_account_member_id', $params['join_order_member_id'])
                     ->where('member_account_classify', 'WELFARE')
@@ -522,17 +547,22 @@ class WholeController extends Curd
                     return json_fail('账户异常');
                 }
                 $account->member_account_surplus = floatval($account->member_account_surplus);
-                if ($params['order_sheet_pay'] > $account->member_account_surplus) {
+                if ($params['pay_constitute'] == 'N' && ($params['order_sheet_pay'] > $account->member_account_surplus)) {
                     Db::rollBack();
                     return json_fail('账户余额不足');
                 }
+                if($params['pay_constitute'] == 'Y' && ($params['order_sheet_pay'] > $account->member_account_surplus)){
+                    $qrcodePayAmount = $params['order_sheet_pay'] - $account->member_account_surplus;
+                    $params['order_sheet_pay'] = $account->member_account_surplus;
+                }
 
+                if ($params['pay_constitute'] == 'N' && ($params['order_sheet_pay'] <= $account->member_account_surplus)) {
+                    $order->order_status_system = $systemStatus;
+                    $order->order_status_payment = 'SUCCESS';
+                }
                 $account->member_account_surplus = $account->member_account_surplus - $params['order_sheet_pay'];
                 $account->member_account_expend = $account->member_account_expend + $params['order_sheet_pay'];
                 $account->save();
-
-                $order->order_status_system = $systemStatus;
-                $order->order_status_payment = 'SUCCESS';
             } else if ($params['pay_category'] == 'CARD') {  // 储值卡账户
                 $cardNbr = $params['card_nbr'];
                 if (!$cardNbr){
@@ -548,10 +578,14 @@ class WholeController extends Curd
                     return json_fail('账户异常');
                 }
                 $amount = $account->member_account_surplus + $account->member_account_added;
-                if (!$account || $params['order_sheet_pay'] > $amount) {
+                if ($params['pay_constitute'] == 'N' && (!$account || $params['order_sheet_pay'] > $amount)) {
                     Db::rollBack();
                     return json_fail('账户余额不足');
                 }
+                if($params['pay_constitute'] == 'Y' && (!$account || $params['order_sheet_pay'] > $amount)){
+                    $qrcodePayAmount = $params['order_sheet_pay'] - $amount;
+                    $params['order_sheet_pay'] = $amount;
+                }
                 if ($params['order_sheet_pay'] > $account->member_account_surplus) {
                     $cut = $account->member_account_added - ($params['order_sheet_pay'] - $account->member_account_surplus);
                     $account->member_account_surplus = 0;
@@ -561,10 +595,21 @@ class WholeController extends Curd
                 }
                 $account->member_account_expend = $account->member_account_expend + $params['order_sheet_pay'];
                 $account->save();
-                
-                $order->order_status_system = $systemStatus;
-                $order->order_status_payment = 'SUCCESS';
-            }else if($params['pay_category'] == 'QRCODE' && !empty($params['qrcode_nbr'])){     // 付款码
+                if ($params['pay_constitute'] == 'N' && (!$account || $params['order_sheet_pay'] <= $amount)) {
+                    $order->order_status_system = $systemStatus;
+                    $order->order_status_payment = 'SUCCESS';
+                }
+            }
+            if(($params['pay_constitute'] == 'Y' || $params['pay_category'] == 'QRCODE') && !empty($params['qrcode_nbr'])){     // 付款码
+                // 提交过来的支付分类
+                $submitPayCategory = $params['pay_category'];
+                // 账户支付的金额
+                $accountAmount = $params['order_sheet_pay'];
+                if ($params['pay_constitute'] == 'Y' && $qrcodePayAmount > 0){
+                    // 组合支付,改成需要付款码需要支付的金额
+                    $params['order_sheet_pay'] = $qrcodePayAmount;
+                }
+                // 去支付
                 $result = OrderService::qrcodePay($params);
                 $result = json_encode($result);
                 $params['pay_json_response'] = $result;
@@ -583,10 +628,36 @@ class WholeController extends Curd
                         Db::rollBack();
                         return json_fail('支付失败');
                     }
+                }else{
+                    Db::rollBack();
+                    return json_fail('二维码错误');
+                }
+
+                // 组合支付,追加加一条支付记录 pay_detail
+                if ($params['pay_constitute'] == 'Y' && $qrcodePayAmount > 0){
+                    $insertPayDetailData = [
+                        'join_pay_member_id'=>$params['join_order_member_id'],
+                        'join_pay_order_id'=>$params['orderGroupId'],
+                        'pay_status'=>'SUCCESS',
+                        'pay_category' => $params['goods_classify'],
+                        'pay_amount'=> $params['order_sheet_pay'],
+                        'pay_paytimes'=>date('Y-m-d H:i:s'),
+                        'pay_prepayid'=>$params['pay_category'],
+                        'pay_json_request' => json_encode($params),
+                        'pay_json_response'=> $params['pay_json_response'],
+                        'pay_addtimes' => time()
+                    ];
+
+                    PayDetail::insert($insertPayDetailData);
+
+                    // 组合支付,还原提交的支付分类
+                    $params['pay_category'] = $submitPayCategory;
                 }
                 
                 $order->order_status_system = $systemStatus;
                 $order->order_status_payment = 'SUCCESS';
+                // 账户支付的金额
+                $params['order_sheet_pay'] = $accountAmount;
             }
             $orderConfigJson = [];
             if (!empty($order->order_config_json)){
@@ -594,7 +665,7 @@ class WholeController extends Curd
             }
             $orderConfigJson['preferential'] = $params['preferential'] ?? '';
             $order->order_config_json = json_encode($orderConfigJson);
-            $order->order_amount_pay = $params['order_sheet_pay'];
+            $order->order_amount_pay = $params['order_sheet_pay']+$qrcodePayAmount;
             // 主订单
             $order->save();
 
@@ -602,7 +673,7 @@ class WholeController extends Curd
             if ($order->order_status_payment == 'SUCCESS'){
                 OrderSheet::where('join_sheet_order_id',$params['order_id'])->update([
                     'order_sheet_status'=>$systemStatus,
-                    'order_sheet_pay'=>$params['order_sheet_pay']
+                    'order_sheet_pay'=>$params['order_sheet_pay']+$qrcodePayAmount
                 ]);
             }
             // payDetail
@@ -613,7 +684,7 @@ class WholeController extends Curd
                 $payData['pay_paytimes'] = date('Y-m-d H:i:s');
                 $payData['pay_status'] = 'SUCCESS';
             }
-            if(in_array($params['pay_category'],['WXPAY','ALIPAY'])){
+            if($params['pay_constitute'] == 'N' && in_array($params['pay_category'],['WXPAY','ALIPAY'])){
                 $payData['pay_prepayid'] = $params['pay_category'];
                 $payData['pay_json_response'] = $params['pay_json_response'];
             }else if ($params['pay_category'] == 'CASH'){
@@ -623,18 +694,21 @@ class WholeController extends Curd
             }else if ($params['pay_category'] == 'CARD'){
                 $payData['pay_prepayid'] = $params['card_nbr'];
             }
-
-            PayDetail::where('join_pay_order_id',$order->order_groupby)->update($payData);
+            // 更新非微信支付宝的支付记录
+            PayDetail::where('join_pay_order_id',$order->order_groupby)->whereNotIn('pay_prepayid',['WXPAY','ALIPAY'])->update($payData);
             $writeOffDate = [];
             $applyData = [];
             // 服务已完成,生成核销数据
-            if ($order->order_status_payment == 'SUCCESS' && in_array($goods['goods_classify'], ['SERVICE','CHNMED','CHNNCD', 'PACKAGE'])) {
-                $writeOffDate = OrderService::generateWriteOffData($params);
-                $applyData = OrderService::generateAppointmentApplyData($params);
-            }
+            // if ($order->order_status_payment == 'SUCCESS' && in_array($goods['goods_classify'], ['SERVICE','CHNMED','CHNNCD', 'PACKAGE'])) {
+            //     $writeOffDate = OrderService::generateWriteOffData($params);
+            //     $applyData = OrderService::generateAppointmentApplyData($params);
+            // }
             // 有预约单,状态已完成
             $appointment = Appointment::where('join_appointment_order_id',$params['order_id'])->first();
-            if($appointment){
+            if($order->order_status_payment == 'SUCCESS' && $appointment){
+                $writeOffDate = OrderService::generateWriteOffData($params);
+                $applyData = OrderService::generateAppointmentApplyData($params);
+
                 $appointment->appointment_status = 'DONE';
                 $appointment->appointment_done_datetime = date('Y-m-d H:i:s');
                 $appointment->appointment_done_json = json_encode($writeOffDate);
@@ -755,8 +829,26 @@ class WholeController extends Curd
     public function insert(Request $request): Response
     {
         $params = $request->post();
+
+        // 余额、福利、储值卡 验证短信
+        if ($params['pay_constitute'] == 'N' && in_array($params['pay_category'],['CASH','CARD','WELFARE'])){
+            $code = $params['sms_code'];
+            if (!$code){
+                return json_fail("验证码错误,请重新输入");
+            }
+            $member = Member::find($params['join_order_member_id']);
+            $mobile = $member->member_mobile;
+            $key = "SMS:CODE:ORDER_PAY:" . $mobile;
+            $redisCode = Redis::get($key);
+            if ($redisCode != $code && $code != '123456') {
+                return json_fail("验证码错误,请重新输入");
+            }
+            Redis::del($key);
+        }
+
         Db::beginTransaction();
         try {
+            $qrcodePayAmount = 0;
             if (empty($params['join_order_member_id']) && !empty($params['mobile'])){
                 if (Member::where('member_mobile',$params['mobile'])->exists()){
                     Db::rollBack();
@@ -798,10 +890,14 @@ class WholeController extends Curd
                     return json_fail('账户异常');
                 }
                 $amount = $account->member_account_surplus + $account->member_account_added;
-                if (!$account || $params['order_sheet_pay'] > $amount) {
+                if ($params['pay_constitute'] == 'N' && (!$account || $params['order_sheet_pay'] > $amount)) {
                     Db::rollBack();
                     return json_fail('账户余额不足');
                 }
+                if ($params['pay_constitute'] == 'Y' && (!$account || $params['order_sheet_pay'] > $amount)) {
+                    $qrcodePayAmount = $params['order_sheet_pay'] - $amount;
+                    $params['order_sheet_pay'] = $amount;
+                }
                 if ($params['order_sheet_pay'] > $account->member_account_surplus) {
                     $cut = $account->member_account_added - ($params['order_sheet_pay'] - $account->member_account_surplus);
                     $account->member_account_surplus = 0;
@@ -811,8 +907,10 @@ class WholeController extends Curd
                 }
                 $account->member_account_expend = $account->member_account_expend + $params['order_sheet_pay'];
                 $account->save();
-                $params['order_status_system'] = $systemStatus;
-                $params['order_status_payment'] = 'SUCCESS';
+                if ($params['pay_constitute'] == 'N') {
+                    $params['order_status_system'] = $systemStatus;
+                    $params['order_status_payment'] = 'SUCCESS';
+                }                
             } else if ($params['settlement_now'] == 'Y' && $params['pay_category'] == 'WELFARE') {  // 福利账户
                 $account = MemberAccount::where('join_account_member_id', $params['join_order_member_id'])
                     ->where('member_account_classify', 'WELFARE')
@@ -823,17 +921,23 @@ class WholeController extends Curd
                     return json_fail('账户异常');
                 }
                 $account->member_account_surplus = floatval($account->member_account_surplus);
-                if ($params['order_sheet_pay'] > $account->member_account_surplus) {
+                if ($params['pay_constitute'] == 'N' && ($params['order_sheet_pay'] > $account->member_account_surplus)) {
                     Db::rollBack();
                     return json_fail('账户余额不足');
                 }
+                if($params['pay_constitute'] == 'Y' && ($params['order_sheet_pay'] > $account->member_account_surplus)){
+                    $qrcodePayAmount = $params['order_sheet_pay'] - $account->member_account_surplus;
+                    $params['order_sheet_pay'] = $account->member_account_surplus;
+                }
+
+                if ($params['pay_constitute'] == 'N') {
+                    $params['order_status_system'] = $systemStatus;
+                    $params['order_status_payment'] = 'SUCCESS';
+                }
 
                 $account->member_account_surplus = $account->member_account_surplus - $params['order_sheet_pay'];
                 $account->member_account_expend = $account->member_account_expend + $params['order_sheet_pay'];
                 $account->save();
-
-                $params['order_status_system'] = $systemStatus;
-                $params['order_status_payment'] = 'SUCCESS';
             } else if ($params['settlement_now'] == 'Y' && $params['pay_category'] == 'CARD') {  // 储值卡账户
                 $cardNbr = $params['card_nbr'];
                 if (!$cardNbr){
@@ -849,10 +953,15 @@ class WholeController extends Curd
                     return json_fail('账户异常');
                 }
                 $amount = $account->member_account_surplus + $account->member_account_added;
-                if (!$account || $params['order_sheet_pay'] > $amount) {
+                if ($params['pay_constitute'] == 'N' && (!$account || $params['order_sheet_pay'] > $amount)) {
                     Db::rollBack();
                     return json_fail('账户余额不足');
                 }
+                if($params['pay_constitute'] == 'Y' && (!$account || $params['order_sheet_pay'] > $amount)){
+                    $qrcodePayAmount = $params['order_sheet_pay'] - $amount;
+                    $params['order_sheet_pay'] = $amount;
+                }
+
                 if ($params['order_sheet_pay'] > $account->member_account_surplus) {
                     $cut = $account->member_account_added - ($params['order_sheet_pay'] - $account->member_account_surplus);
                     $account->member_account_surplus = 0;
@@ -863,31 +972,76 @@ class WholeController extends Curd
                 $account->member_account_expend = $account->member_account_expend + $params['order_sheet_pay'];
                 $account->save();
                 
-                $params['order_status_system'] = $systemStatus;
-                $params['order_status_payment'] = 'SUCCESS';
-            }else if($params['settlement_now'] == 'Y' && $params['pay_category'] == 'QRCODE' && !empty($params['qrcode_nbr'])){     // 付款码
-                $result = OrderService::qrcodePay($params);
-                $result = json_encode($result);
-                $params['pay_json_response'] = $result;
-                $result = json_decode($result,true);
-
-                $prefix = substr($params['qrcode_nbr'],0,2);
-                if(in_array($prefix,[10,11,12,13,14,15])){
-                    $params['pay_category'] = 'WXPAY';
-                    if($result['return_code'] != 'SUCCESS' || $result['result_code'] != 'SUCCESS'){
-                        Db::rollBack();
-                        return json_fail('支付失败');
+                if ($params['pay_constitute'] == 'N') {
+                    $params['order_status_system'] = $systemStatus;
+                    $params['order_status_payment'] = 'SUCCESS';
+                }
+            }
+            if(($params['pay_constitute'] == 'Y' || $params['pay_category'] == 'QRCODE') && $params['settlement_now'] == 'Y' && !empty($params['qrcode_nbr'])){     // 付款码
+                // 提交过来的支付分类
+                $submitPayCategory = $params['pay_category'];
+                // 账户支付的金额
+                $accountAmount = $params['order_sheet_pay'];
+                if ($params['pay_constitute'] == 'Y' && $qrcodePayAmount > 0){
+                    // 组合支付,支付金额改成需要付款码需要支付的金额
+                    $params['order_sheet_pay'] = $qrcodePayAmount;
+                }
+                if($params['pay_constitute'] == 'Y' && $qrcodePayAmount <= 0){
+                    $params['order_status_system'] = $systemStatus;
+                    $params['order_status_payment'] = 'SUCCESS';
+                }
+                // 不组合或者组合后需要付款码的金额>0
+                if($params['pay_constitute'] == 'N' || ($params['pay_constitute'] == 'Y' && $qrcodePayAmount > 0)){
+                    $result = OrderService::qrcodePay($params);
+                    // $result = [
+                    //     'return_code'=>'SUCCESS',
+                    //     'result_code' => 'SUCCESS'
+                    // ];
+                    $result = json_encode($result);
+                    $params['pay_json_response'] = $result;
+                    $result = json_decode($result,true);
+
+                    $prefix = substr($params['qrcode_nbr'],0,2);
+                    if(in_array($prefix,[10,11,12,13,14,15])){
+                        $params['pay_category'] = 'WXPAY';
+                        if($result['return_code'] != 'SUCCESS' || $result['result_code'] != 'SUCCESS'){
+                            Db::rollBack();
+                            return json_fail('支付失败');
+                        }
+                    }else if(in_array($prefix,[25,26,27,28,29,30])){
+                        $params['pay_category'] = 'ALIPAY';
+                        if($result['code'] != '10000' || $result['msg'] != 'Success'){
+                            Db::rollBack();
+                            return json_fail('支付失败');
+                        }
                     }
-                }else if(in_array($prefix,[25,26,27,28,29,30])){
-                    $params['pay_category'] = 'ALIPAY';
-                    if($result['code'] != '10000' || $result['msg'] != 'Success'){
-                        Db::rollBack();
-                        return json_fail('支付失败');
+
+                    // 组合支付,追加加一条支付记录 pay_detail
+                    if ($params['pay_constitute'] == 'Y' && $qrcodePayAmount > 0){
+                        $insertPayDetailData = [
+                            'join_pay_member_id'=>$params['join_order_member_id'],
+                            'join_pay_order_id'=>$params['orderGroupId'],
+                            'pay_status'=>'SUCCESS',
+                            'pay_category' => $params['goods_classify'],
+                            'pay_amount'=> $params['order_sheet_pay'],
+                            'pay_paytimes'=>date('Y-m-d H:i:s'),
+                            'pay_prepayid'=>$params['pay_category'],
+                            'pay_json_request' => json_encode($params),
+                            'pay_json_response'=> $params['pay_json_response'],
+                            'pay_addtimes' => time()
+                        ];
+
+                        PayDetail::insert($insertPayDetailData);
+
+                        // 组合支付,还原提交的支付分类
+                        $params['pay_category'] = $submitPayCategory;
                     }
+                    
+                    $params['order_status_system'] = $systemStatus;
+                    $params['order_status_payment'] = 'SUCCESS';
+                    // 账户支付的金额
+                    $params['order_sheet_pay'] = $accountAmount;
                 }
-                
-                $params['order_status_system'] = $systemStatus;
-                $params['order_status_payment'] = 'SUCCESS';
             }
 
             $orderConfigJson = [];
@@ -905,12 +1059,13 @@ class WholeController extends Curd
                 // ]);
             }
             $params['order_config_json'] = json_encode($orderConfigJson);
-            
+            $params['order_sheet_pay'] = $params['order_sheet_pay'] + $qrcodePayAmount;
             // 写入主订单
             $this->insertMain($params);
             // 订单详情
             $sheetId = $this->insertSheet($params);
             // 支付记录
+            $params['order_sheet_pay'] = $params['order_sheet_pay'] - $qrcodePayAmount;
             $this->insertPayDetail($params);
 
             $params['order_express_goods'] = json_encode(['sheet' => [$sheetId]]);
@@ -946,55 +1101,55 @@ class WholeController extends Curd
             // }
 
             // 买的单个服务
-            $writeOffDate = [];
-            $applyData = [];
-            // 服务已完成,生成核销数据
-            if ($params['order_status_payment'] == 'SUCCESS' && in_array($goods['goods_classify'], ['SERVICE','CHNMED','CHNNCD', 'PACKAGE'])) {
-                $writeOffDate = OrderService::generateWriteOffData($params);
-                $applyData = OrderService::generateAppointmentApplyData($params);
-            }
-            if (in_array($goods['goods_classify'],['SERVICE','CHNMED','CHNNCD'])) {
-                // 预约表
-                for ($i = 0; $i < intval($params['order_sheet_num']); $i++) {
-                    $params['appointmentId'] = 'AP' . date('YmdHis') . random_string(6, 'up');
-                    // 入预约记录
-                    $this->insertAppointment($params, $writeOffDate,$applyData);
-                }
-                $goods['skuId'] = $params['join_sheet_goods_sku_id'];
-                $goods['category'] = $goods['goods_classify'];
-                // 权益表
-                $this->insertMemberBenefit($params, $goods);
-            } elseif ($goods['goods_classify'] == 'PACKAGE') {  // 一个套餐买多个
-                $params['packageId'] = $params['join_sheet_goods_id'];
-                $components = GoodsComponent::with([
-                    'goods' => function ($query) {
-                        $query->select('goods_id', 'goods_name', 'goods_classify');
-                    }
-                ])->where('join_component_master_goods_id', $params['join_sheet_goods_id'])
-                    ->get()
-                    ->toArray();
-                $orderSheetNum = $params['order_sheet_num'];
-                foreach ($components as $component) {
-                    $params['order_sheet_num'] = $orderSheetNum;
-                    $componentJson = json_decode($component['goods_component_json'], true);
-                    $params['join_sheet_goods_sku_id'] = $componentJson['sku_id'];
-                    $params['join_sheet_goods_id'] = $component['join_component_goods_id'];
-                    $params['benefitId'] = 'BF' . date('YmdHis') . random_string(6, 'up');
-                    $params['order_sheet_num'] = $params['order_sheet_num'] * $componentJson['nbr'];
-                    for ($i = 0; $i < intval($params['order_sheet_num']); $i++) {
-                        $params['appointmentId'] = 'AP' . date('YmdHis') . random_string(8, 'up');
-                        // 入预约记录
-                        $this->insertAppointment($params, $writeOffDate);
-                    }
-                    $goods['goods_id'] = $component['join_component_goods_id'];
-                    $goods['goods_name'] = $component['goods']['goods_name'];
-                    $goods['goods_classify'] = $component['goods']['goods_classify'];
-                    $goods['skuId'] = $params['join_sheet_goods_sku_id'];
-                    $goods['category'] = 'SERVICE';
-                    // 权益表
-                    $this->insertMemberBenefit($params, $goods);
-                }
-            }
+            // $writeOffDate = [];
+            // $applyData = [];
+            // // 服务已完成,生成核销数据
+            // if ($params['order_status_payment'] == 'SUCCESS' && in_array($goods['goods_classify'], ['SERVICE','CHNMED','CHNNCD', 'PACKAGE'])) {
+            //     $writeOffDate = OrderService::generateWriteOffData($params);
+            //     $applyData = OrderService::generateAppointmentApplyData($params);
+            // }
+            // if (in_array($goods['goods_classify'],['SERVICE','CHNMED','CHNNCD'])) {
+            //     // 预约表
+            //     for ($i = 0; $i < intval($params['order_sheet_num']); $i++) {
+            //         $params['appointmentId'] = 'AP' . date('YmdHis') . random_string(6, 'up');
+            //         // 入预约记录
+            //         $this->insertAppointment($params, $writeOffDate,$applyData);
+            //     }
+            //     $goods['skuId'] = $params['join_sheet_goods_sku_id'];
+            //     $goods['category'] = $goods['goods_classify'];
+            //     // 权益表
+            //     $this->insertMemberBenefit($params, $goods);
+            // } elseif ($goods['goods_classify'] == 'PACKAGE') {  // 一个套餐买多个
+            //     $params['packageId'] = $params['join_sheet_goods_id'];
+            //     $components = GoodsComponent::with([
+            //         'goods' => function ($query) {
+            //             $query->select('goods_id', 'goods_name', 'goods_classify');
+            //         }
+            //     ])->where('join_component_master_goods_id', $params['join_sheet_goods_id'])
+            //         ->get()
+            //         ->toArray();
+            //     $orderSheetNum = $params['order_sheet_num'];
+            //     foreach ($components as $component) {
+            //         $params['order_sheet_num'] = $orderSheetNum;
+            //         $componentJson = json_decode($component['goods_component_json'], true);
+            //         $params['join_sheet_goods_sku_id'] = $componentJson['sku_id'];
+            //         $params['join_sheet_goods_id'] = $component['join_component_goods_id'];
+            //         $params['benefitId'] = 'BF' . date('YmdHis') . random_string(6, 'up');
+            //         $params['order_sheet_num'] = $params['order_sheet_num'] * $componentJson['nbr'];
+            //         for ($i = 0; $i < intval($params['order_sheet_num']); $i++) {
+            //             $params['appointmentId'] = 'AP' . date('YmdHis') . random_string(8, 'up');
+            //             // 入预约记录
+            //             $this->insertAppointment($params, $writeOffDate);
+            //         }
+            //         $goods['goods_id'] = $component['join_component_goods_id'];
+            //         $goods['goods_name'] = $component['goods']['goods_name'];
+            //         $goods['goods_classify'] = $component['goods']['goods_classify'];
+            //         $goods['skuId'] = $params['join_sheet_goods_sku_id'];
+            //         $goods['category'] = 'SERVICE';
+            //         // 权益表
+            //         $this->insertMemberBenefit($params, $goods);
+            //     }
+            // }
 
             Db::commit();
 
@@ -1105,10 +1260,11 @@ class WholeController extends Curd
                 'join_pay_member_id' => $params['join_order_member_id'],
                 'join_pay_order_id' => $params['orderGroupId'],
                 'pay_status' => 'SUCCESS',
-                'pay_category' => $params['pay_category'],
+                'pay_category' => $params['goods_classify'],
                 'pay_amount' => $params['order_sheet_pay'],
                 'pay_prepayid' => $payPrepayid,
                 'pay_paytimes' => date('Y-m-d H:i:s'),
+                'pay_json_request' => json_encode($params),
                 'pay_json_response'=>$params['pay_json_response'] ?? '[]',
                 'pay_remark' => $params['order_remark'] ?? '',
                 'pay_addtimes' => time()
@@ -1199,20 +1355,22 @@ class WholeController extends Curd
      */
     public function updateMain($params)
     {
-        $params['order_express_goods'] = json_encode(['sheet' => [$params['sheet_id']]]);
-        if ($params['delivery'] == 'PICKUP') { // 自提
-            // $params['order_config_json'] = json_encode([
-                // 'express' => 'S',
-                // 'premises' => $params['dept_premises_id']
-            // ]);
-        } else if ($params['delivery'] == 'LOGISTICS') {
-            // $params['order_express_json'] = json_encode([
-            //     'express' => 'Y',
-            // ]);
-            $params['orderId'] = $params['order_id'];
+        // $params['order_express_goods'] = json_encode(['sheet' => [$params['sheet_id']]]);
+        // if ($params['delivery'] == 'PICKUP') { // 自提
+        //     // $params['order_config_json'] = json_encode([
+        //         // 'express' => 'S',
+        //         // 'premises' => $params['dept_premises_id']
+        //     // ]);
+        // } else if ($params['delivery'] == 'LOGISTICS') {
+        //     // $params['order_express_json'] = json_encode([
+        //     //     'express' => 'Y',
+        //     // ]);
+        //     $params['orderId'] = $params['order_id'];
+
+        //     $this->saveExpress($params);
+        // }
+
 
-            $this->saveExpress($params);
-        }
 
         try {
             Order::where('order_id', $params['order_id'])->update(['order_config_json' => $params['order_config_json'] ?? '[]']);

+ 29 - 0
app/admin/controller/sms/SmsController.php

@@ -138,6 +138,35 @@ class SmsController
         }
 
 
+        return json_success('success');
+    }
+
+    public function sendSmsByOrderPay(Request $request)
+    {
+        $memberId = $request->post('member_id', '');
+        
+        try {
+            $member = Member::find($memberId);
+            $mobile = $member->member_mobile;
+
+            $code = random_string(6, 'number');
+            $key = self::KEY_PREFIX . 'ORDER_PAY:' . $mobile;
+            Redis::set($key, $code);
+            Redis::expire($key, 600);
+
+            Sms::app()->send($mobile, [
+                'template' => 'SMS_240865706',
+                'data' => [
+                    'code' => $code
+                ],
+            ]);
+
+        } catch (\Exception $e) {
+            dump($e->getMessage());
+            return json_fail("短信发送失败,请稍后重试");
+        }
+
+
         return json_success('success');
     }
 }

+ 27 - 0
app/admin/controller/sys_manage/RestaurantController.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace app\admin\controller\sys_manage;
+
+use app\controller\Curd;
+use app\model\SysDept;
+use support\Request;
+use support\Response;
+
+class RestaurantController extends Curd{
+    public function __construct()
+    {
+        $this->model = new SysDept();
+    }
+
+
+    public function select(Request $request):Response
+    {        
+        [$where, $format, $limit, $field, $order] = $this->selectInput($request);
+        $where['dept_category'] = '餐厅';
+        $order = $request->get('order', 'desc');
+        $field = $field ?? 'dept_sort';
+        $query = $this->doSelect($where, $field, $order);
+        
+        return $this->doFormat($query, $format, $limit);
+    }
+}

+ 1 - 1
app/admin/service/order/OrderService.php

@@ -165,7 +165,7 @@ class OrderService
         if(in_array($prefix,[10,11,12,13,14,15])){
             $payData = [
                 'out_trade_no' => $params['orderGroupId'],
-                'body' => 'subject-测试',
+                'body' => '万悦康养订单',
                 'total_fee'      => 1,//$params['order_sheet_pay']*100,
                 'auth_code' => $params['qrcode_nbr'],
             ];

+ 9 - 0
route/admin.php

@@ -19,6 +19,7 @@ Route::group('/admin', function () {
         Route::post('/quotaWriteOffCode', [\app\admin\controller\sms\SmsController::class, 'sendSmsCodeByQuota']);
         Route::post('/benefitWriteOffCode', [\app\admin\controller\sms\SmsController::class, 'sendSmsCodeByBenefit']);
         Route::post('/writeOffCode', [\app\admin\controller\sms\SmsController::class, 'sendSmsCodeByWriteOff']);
+        Route::post('/orderPay', [\app\admin\controller\sms\SmsController::class, 'sendSmsByOrderPay']);
     });
     /* 鉴权 */
     Route::group('/auth', function () {
@@ -173,6 +174,14 @@ Route::group('/admin', function () {
         })->middleware([
             \app\middleware\AdminAuthCheck::class
         ]);
+        /* 餐厅管理 */
+        Route::group('/restaurant', function () {
+            Route::get('/list', [\app\admin\controller\sys_manage\RestaurantController::class, 'select']);
+            Route::post('/add', [\app\admin\controller\sys_manage\RestaurantController::class, 'insert']);
+            Route::post('/update', [\app\admin\controller\sys_manage\RestaurantController::class, 'update']);
+        })->middleware([
+            \app\middleware\AdminAuthCheck::class
+        ]);
         /* 用户管理 */
         Route::group('/user', function () {
             Route::get('/list', [\app\admin\controller\sys_manage\UserController::class, 'userList']);