Browse Source

套包订单用优惠券

gorden 6 months ago
parent
commit
de22247bb0

+ 1 - 1
app/admin/controller/member/MemberController.php

@@ -530,7 +530,7 @@ class MemberController
             ->where('join_coupon_detail_member_id', $memberId)
             ->where('coupon.coupon_classify', $classify);
         $total = $coupons->count();
-        $rows = $coupons->select('coupon_detail.*', 'coupon.coupon_name', 'coupon.coupon_classify')
+        $rows = $coupons->select('coupon_detail.*', 'coupon.coupon_name', 'coupon.coupon_classify','coupon_value')
             ->forPage($page, $pageSize)
             ->get()
             ->toArray();

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

@@ -246,7 +246,7 @@ class WholeController extends Curd
             } else {
                 $item['payWay'] = null;
             }
-            if (count($payDetails) > 0){
+            if (count($payDetails) > 0) {
                 $payDetail0 = $payDetails[0];
                 $item['pay_times'] = $payDetail0['pay_paytimes'];
             }
@@ -502,7 +502,7 @@ class WholeController extends Curd
         if (!empty($order->order_extend_json)) {
             $orderExtendJson = json_decode($order->order_extend_json, true);
             $order->referee = $orderExtendJson['referee'] ?? '';
-            if (isset($orderExtendJson['cancel_times'])){
+            if (isset($orderExtendJson['cancel_times'])) {
                 $order->cancel_times = $orderExtendJson['cancel_times'];
             }
         }
@@ -521,7 +521,11 @@ class WholeController extends Curd
                     $discount['coupon_name'] .= $coupon->coupon_classify . ':' . $coupon->coupon_name . '(优惠¥' . $discountItem['coupon_value'] . '), ';
                 }
                 if (empty($discountItem['coupon_id']) && !empty($discountItem['coupon_classify'])) {
-                    $discount['classify'] .= $discountItem['coupon_classify'] . '(¥' . round($discountItem['coupon_value'], 2) . '), ';
+                    if (!empty($discountItem['coupon_detail_id'])) {
+                        $discount['classify'] .= $discountItem['coupon_detail_id'][0] . '(优惠¥' . round($discountItem['coupon_value'], 2) . '), ';
+                    } else {
+                        $discount['classify'] .= $discountItem['coupon_classify'] . '(优惠¥' . round($discountItem['coupon_value'], 2) . '), ';
+                    }
                 }
                 if (!empty($discountItem['coupon_value'])) {
                     $discount['value'] += $discountItem['coupon_value'];
@@ -797,7 +801,7 @@ class WholeController extends Curd
                     throw new BusinessException("计算优惠后,实付金额错误!");
                 }
                 // 组装优惠券使用数据,存主表优惠里
-                if (!empty($couponResult['use_coupon_json'])){
+                if (!empty($couponResult['use_coupon_json'])) {
                     $couponUseJson = $couponResult['use_coupon_json'];
                     if (!empty($order->order_discount_json)) {
                         $orderDiscountJson = json_decode($order->order_discount_json, true);
@@ -1147,32 +1151,52 @@ class WholeController extends Curd
             }
 
             // // 买的单个服务
-            // $writeOffDate = [];
-            // // 服务已完成,生成核销数据
-            // if ($order->order_status_payment == 'SUCCESS' && in_array($goods['goods_classify'], ['SERVICE','CHNMED','CHNNCD', 'PACKAGE'])) {
-            //     $writeOffDate = OrderService::generateWriteOffData($params);
-            // }
-            // if (in_array($goods['goods_classify'],['SERVICE','CHNMED','CHNNCD'])) {
-            //     // 订单状态已完成
-            //     Order::where('order_id',$params['orderId'])->update([
-            //         'order_status_system'=>'DONE'
-            //     ]);
-            //     // 权益用完
-            //     $benefits = MemberBenefit::where('join_benefit_order_id',$params['orderId'])->get();
-            //     foreach($benefits as $benefit){
-            //         MemberBenefit::where('member_benefit_id',$benefit->member_benefit_id)->update([
-            //             'member_benefit_used_count'=>$benefit->member_benefit_limit_count,
-            //             'member_benefit_status'=>'DONE'
-            //         ]);
-            //         dump($writeOffDate);
-            //         // 核销记录
-            //         Appointment::where('join_appointment_member_benefit_id',$benefit->member_benefit_id)->update([
-            //             'appointment_status'=>'DONE',
-            //             'appointment_done_datetime'=>date('Y-m-d H:i:s'),
-            //             'appointment_done_json' => json_encode($writeOffDate)
-            //         ]);
-            //     }
-            // }
+            if ($order->order_status_payment == 'SUCCESS') {
+                foreach ($params['goodsContentList'] as $goods) {
+                    $params['join_sheet_goods_id'] = $goods['goods_id'];
+                    if (in_array($goods['goods_classify'], ['SERVICE', 'CHNMED', 'CHNNCD'])) {
+                        $params['benefitId'] = 'BF' . date('YmdHis') . random_string(6, 'up');
+                        $params['order_sheet_num'] = $goods['nbr'];
+                        // 预约表
+                        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'] = $goods['sku_id'];
+                        $goods['category'] = $goods['goods_classify'];
+                        // 权益表
+                        $this->insertMemberBenefit($params, $goods);
+                    } elseif ($goods['goods_classify'] == 'PACKAGE') {  // 一个套餐买多个
+                        $params['packageId'] = $goods['goods_id'];
+                        $components = GoodsComponent::with([
+                            'goods' => function ($query) {
+                                $query->select('goods_id', 'goods_name', 'goods_classify');
+                            }
+                        ])->where('join_component_master_goods_id', $params['packageId'])
+                            ->get()
+                            ->toArray();
+                        foreach ($components as $component) {
+                            $componentJson = json_decode($component['goods_component_json'], true);
+                            $params['join_sheet_goods_sku_id'] = $componentJson['sku_id'];
+                            $params['benefitId'] = 'BF' . date('YmdHis') . random_string(6, 'up');
+                            $params['order_sheet_num'] = $goods['nbr'] * $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'] = $goods['sku_id'];
+                            $goods['category'] = 'SERVICE';
+                            // 权益表
+                            $this->insertMemberBenefit($params, $goods);
+                        }
+                    }
+                }
+            }
 
             // 2.4W 康养城
             if ($params['goods_classify'] == 'VIP' && $order->order_status_payment == 'SUCCESS') {
@@ -1254,11 +1278,11 @@ class WholeController extends Curd
                 }
                 $couponClassifyDesc = $couponClassify = '餐厅前台优惠';
             } else if (!empty($params['preferential']) && intval($params['preferential'][0]) < 100 && intval($params['preferential'][0]) >= 50) {
-                if (($params['order_amount_total'] * intval($params['preferential'])) / 100 !== $params['order_amount_pay']) {
+                if (($params['order_amount_total'] * intval($params['preferential'][0])) / 100 != $params['order_amount_pay']) {
                     throw new BusinessException("折扣后实际支付金额错误");
                 }
                 $couponClassify = '折扣';
-                $couponClassifyDesc = $params['preferential'] . '折';
+                $couponClassifyDesc = intval($params['preferential'][0]) / 10 . '折';
                 $params['order_discount_amount'] = $params['order_amount_total'] - $params['order_amount_pay'];
             } else {
                 return $json;
@@ -1843,7 +1867,6 @@ class WholeController extends Curd
             $qrcodePayAmount = 0;
             $params['orderId'] = 'OD' . date('YmdHis') . random_string(6, 'up');
             $params['orderGroupId'] = 'OD' . date('YmdHis') . random_string(6, 'up');
-            $params['benefitId'] = 'BF' . date('YmdHis') . random_string(6, 'up');
 
             $systemStatus = 'SENDING';  // 待发货
             // 立即结算
@@ -2192,55 +2215,61 @@ 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 ($params['order_status_payment'] == 'SUCCESS') {
+                foreach ($params['goodsContentList'] as $goods) {
+                    $params['join_sheet_goods_id'] = $goods['goods_id'];
+                    if (in_array($goods['goods_classify'], ['SERVICE', 'CHNMED', 'CHNNCD'])) {
+                        $params['benefitId'] = 'BF' . date('YmdHis') . random_string(6, 'up');
+                        $params['join_sheet_goods_sku_id'] = $goods['sku_id'];
+                        $params['goods_id'] = $goods['goods_id'];
+                        $params['order_sheet_num'] = $goods['nbr'];
+                        // 预约表
+                        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'] = $goods['sku_id'];
+                        $goods['category'] = $goods['goods_classify'];
+                        // 权益表
+                        $this->insertMemberBenefit($params, $goods);
+                    } elseif ($goods['goods_classify'] == 'PACKAGE') {  // 一个套餐买多个
+                        $params['packageId'] = $goods['goods_id'];
+                        $components = GoodsComponent::with([
+                            'goods' => function ($query) {
+                                $query->select('goods_id', 'goods_name', 'goods_classify');
+                            }
+                        ])->where('join_component_master_goods_id', $params['packageId'])
+                            ->get()
+                            ->toArray();
+                        foreach ($components as $component) {
+                            $componentJson = json_decode($component['goods_component_json'], true);
+                            $params['join_sheet_goods_sku_id'] = $componentJson['sku_id'];
+                            $params['benefitId'] = 'BF' . date('YmdHis') . random_string(6, 'up');
+                            $params['order_sheet_num'] = $goods['nbr'] * $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'] = $goods['sku_id'];
+                            $goods['category'] = 'SERVICE';
+                            // 权益表
+                            $this->insertMemberBenefit($params, $goods);
+                        }
+                    }
+                }
+            }
 
             // 2.4W 康养城
             if ($params['goods_classify'] == 'VIP' && $params['order_status_payment'] == 'SUCCESS') {
@@ -3035,16 +3064,16 @@ class WholeController extends Curd
                 'join_appointment_order_id' => $params['orderId'],
                 'join_appointment_member_benefit_id' => $params['benefitId'],
                 'appointment_classify' => $params['goods_classify'],
-                'appointment_status' => $params['order_status_system'] == 'DONE' ? 'DONE' : 'INIT',
+                'appointment_status' => 'INIT',
                 'appointment_category' => 'NORMAL',
                 'appointment_platform' => 'SYSTEM',
                 'appointment_addtimes' => time(),
-                'appointment_datetime' => $params['order_status_system'] == 'DONE' ? date('Y-m-d') : '',
-                'appointment_apply_datetime' => $params['order_status_system'] == 'DONE' ? date('Y-m-d H:i:s') : '',
-                'appointment_apply_json' => $params['order_status_system'] == 'DONE' && $applyData ? json_encode($applyData) : '[]',
-                'appointment_done_datetime' => $params['order_status_system'] == 'DONE' ? date('Y-m-d H:i:s') : '',
+                'appointment_datetime' => '',
+                'appointment_apply_datetime' => '',
+                'appointment_apply_json' => '[]',
+                'appointment_done_datetime' => '',
                 'appointment_remark' => $params['order_remark'] ?? '',
-                'appointment_done_json' => $params['order_status_system'] == 'DONE' && $writeOffDate ? json_encode($writeOffDate) : '[]'
+                'appointment_done_json' => '[]'
             ];
             Appointment::insert($data);
         } catch (\Exception $e) {
@@ -3077,7 +3106,7 @@ class WholeController extends Curd
                 'member_benefit_category' => $goods['category'],
                 'member_benefit_name' => $goods['goods_name'],
                 'member_benefit_limit_count' => $params['order_sheet_num'],
-                'member_benefit_used_count' => $params['order_status_system'] == 'DONE' ? $params['order_sheet_num'] : 0,
+                'member_benefit_used_count' => 0,
                 'member_benefit_remark' => $params['order_remark'] ?? '',
                 'member_benefit_addtimes' => time()
             ];

+ 3 - 1
app/admin/service/member/MemberService.php

@@ -55,7 +55,9 @@ class MemberService
             })->when($level != '', function ($query) use ($level) {
                 if ($level == 'other') {
                     $query->where('member.join_member_role_id', NULL)->orWhere('member.join_member_role_id', '');
-                } else {
+                } else if($level == 'VIP'){
+                    $query->where('member.member_is_vip', 'Y');
+                }else {
                     $query->where('member_role.member_role_id', $level);
                 }
             })->when($isAuth != '', function ($query) use ($isAuth) {