Browse Source

完善功能

gorden 9 tháng trước cách đây
mục cha
commit
1b75b8845b

+ 11 - 7
app/admin/controller/member/RuleAddedComponentController.php

@@ -40,11 +40,11 @@ class RuleAddedComponentController extends Curd
             $goodsIds = [];
             if (!empty($item->rule_added_component_goods_json)) {
                 $goodsJson = json_decode($item->rule_added_component_goods_json, true);
-                foreach ($goodsJson as $item2) {
+                foreach ($goodsJson as $key => $item2) {
                     $goodsInfo = [];
                     if (isset($item2['goods_id'])) {
                         $goodsInfo['goods_name'] = $item2['goods_name'];
-                        $sku = GoodsSku::where('goods_sku_id', $item2['goods_sku_id'])->select('goods_sku_specs_json')->first();
+                        $sku = GoodsSku::where('goods_sku_id', $item2['goods_sku_id'])->select('goods_sku_id', 'goods_sku_sales_price', 'goods_sku_specs_json')->first();
                         if (!empty($sku->goods_sku_specs_json)) {
                             $specsJson = json_decode($sku->goods_sku_specs_json, true);
                             $skuTitle = '';
@@ -55,21 +55,25 @@ class RuleAddedComponentController extends Curd
                                 $skuTitle .= $item3 . '-';
                             }
                             $goodsInfo['sku_title'] = rtrim($skuTitle, '-');
+                            $goodsJson[$key]['sku'][] = [
+                                'goods_sku_id' => strval($sku->goods_sku_id),
+                                'goods_sku_sales_price' => $sku->goods_sku_sales_price,
+                                'goods_sku_title' => $goodsInfo['sku_title']
+                            ];
                         }
                     }
-                    if (isset($item2['coupon_id'])){
-                        $coupon = Coupon::where('coupon_id',$item2['coupon_id'])->select('coupon_name')->first();
-                        $goods[] = ['goods_name'=>$coupon->coupon_name];
+                    if (isset($item2['coupon_id'])) {
+                        $coupon = Coupon::where('coupon_id', $item2['coupon_id'])->select('coupon_name')->first();
+                        $goods[] = ['goods_name' => $coupon->coupon_name];
                     }
                     if (!empty($goodsInfo)) {
                         $goods[] = $goodsInfo;
                     }
 
 
-
                     if (isset($item2['goods_id'])) {
                         $goodsIds[] = $item2['goods_id'];
-                    }elseif (isset($item2['coupon_id'])){
+                    } elseif (isset($item2['coupon_id'])) {
                         $goodsIds[] = $item2['coupon_id'];
                     }
                 }

+ 2 - 2
app/admin/service/goods/GoodsService.php

@@ -383,9 +383,9 @@ class GoodsService
                         $skuName = '';
                         foreach ($good['sku'][$key]['goods_sku_specs_json'] as $specsKey => $skuSpecs) {
                             if (is_array($skuSpecs)) {
-                                $skuName = $skuName . ' ' . $specsKey . ' ' . implode(' ', $skuSpecs);
+                                $skuName = $skuName . ' ' . $specsKey . ':' . implode(' ', $skuSpecs) . ';';
                             } else {
-                                $skuName = $skuName . ' ' . $specsKey . ' ' . $skuSpecs;
+                                $skuName = $skuName . ' ' . $specsKey . ':' . $skuSpecs . ';';
                             }
                         }
                         $good['sku'][$key]['sku_name'] = $skuName;

+ 40 - 11
app/admin/service/order/AppointmentService.php

@@ -4,6 +4,7 @@ namespace app\admin\service\order;
 
 use app\model\Appointment;
 use app\model\Goods;
+use app\model\GoodsSku;
 use app\model\Member;
 use app\model\MemberAccount;
 use app\model\MemberBenefit;
@@ -72,6 +73,30 @@ class AppointmentService
                 $row->person = $applyJson['person'] ?? '';
                 $row->appointment_times = $applyJson['times'] ?? '';
             }
+
+            $skus = GoodsSku::where('join_sku_goods_id',$row->join_appointment_goods_id)
+                ->select('goods_sku_id','goods_sku_specs_json','goods_sku_sales_price')
+                ->get();
+            $skuJson = [];
+            foreach ($skus as $key => $sku){
+                if (!empty($sku->goods_sku_specs_json)) {
+                    $specsJson = json_decode($sku->goods_sku_specs_json, true);
+                    $skuTitle = '';
+                    foreach ($specsJson as $item3) {
+                        if (is_array($item3)) {
+                            $item3 = implode(',', $item3);
+                        }
+                        $skuTitle .= $item3 . '-';
+                    }
+                    $skuJson[$key] = [
+                        'goods_sku_id' => $sku->goods_sku_id,
+                        'goods_sku_sales_price' => $sku->goods_sku_sales_price,
+                        'sku_name' => rtrim($skuTitle, '-')
+                    ];
+                }
+            }
+
+            $row->sku = $skuJson;
         }
         return json_success('', compact('rows', 'page', 'pageSize', 'total'));
     }
@@ -176,6 +201,7 @@ class AppointmentService
                 'appointment_id' => "AP" . str_pad(SysSerial::getSerial(), 16, '0') . random_string(6, 'up'),
                 'join_appointment_member_id' => $params['join_appointment_member_id'] ?? '',
                 'join_appointment_goods_id' => $params['join_appointment_goods_id'] ?? '',
+                'join_appointment_goods_sku_id' => $params['join_appointment_goods_sku_id'] ?? '',
                 'appointment_status' => $params['appointment_status'] ?? '',
                 'appointment_datetime' => isset($params['appointment_datetime']) ? date('Y-m-d', strtotime($params['appointment_datetime'])) : '',
                 'appointment_apply_datetime' => isset($params['appointment_apply_datetime']) ? date('Y-m-d H:i:s', strtotime($params['appointment_apply_datetime'])) : '',
@@ -211,13 +237,14 @@ class AppointmentService
 
             // 如果预约成功,生成订单
             if ($params['appointment_status'] == 'PENDING') {
+                $sku = GoodsSku::find($params['join_appointment_goods_sku_id']);
                 $orderId = 'OD' . date('YmdHis') . random_string(6, 'up');
                 $order = [
                     'order_id' => $orderId,
                     'join_order_member_id' => $params['join_appointment_member_id'],
                     'order_name' => "预约-" . $goods->goods_name,
-                    'order_amount_total' => $goods->goods_sales_price * $params['person'],
-                    'order_amount_pay' => $goods->goods_sales_price * $params['person'],
+                    'order_amount_total' => $sku->goods_sku_sales_price * $params['person'],
+                    'order_amount_pay' => $sku->goods_sku_sales_price * $params['person'],
                     'order_is_complete' => 'N',
                     'order_category' => 'OTHER',
                     'order_status_system' => 'PAYING',
@@ -235,9 +262,9 @@ class AppointmentService
                     'order_sheet_category' => 'APPOINTMENT',
                     'order_sheet_unit' => '套',
                     'order_sheet_num' => $params['person'],
-                    'order_sheet_price' => $goods->goods_sales_price,
-                    'order_sheet_amount' => $goods->goods_sales_price * $params['person'],
-                    'order_sheet_pay' => $goods->goods_sales_price * $params['person'],
+                    'order_sheet_price' => $sku->goods_sku_sales_price,
+                    'order_sheet_amount' => $sku->goods_sku_sales_price * $params['person'],
+                    'order_sheet_pay' => $sku->goods_sku_sales_price * $params['person'],
                     'order_sheet_task_status' => 'NONE',
                     'order_sheet_addtimes' => time()
                 ];
@@ -342,6 +369,7 @@ class AppointmentService
             }
             $data = [
                 'appointment_status' => $params['appointment_status'],
+//                'join_appointment_goods_sku_id' => $params['join_appointment_goods_sku_id'] ?? '',
                 'appointment_datetime' => $params['appointment_datetime'] ? date('Y-m-d', strtotime($params['appointment_datetime'])) : null,
                 'appointment_apply_datetime' => $params['appointment_apply_datetime'] ? date('Y-m-d H:i:s', strtotime($params['appointment_apply_datetime'])) : null,
                 'appointment_doing_datetime' => $params['appointment_doing_datetime'] ? date('Y-m-d H:i:s', strtotime($params['appointment_doing_datetime'])) : null,
@@ -380,13 +408,14 @@ class AppointmentService
 
             // 如果预约成功,没有生成过订单,生成订单
             if ($params['appointment_status'] == 'PENDING' && empty($appointment->join_appointment_order_id)) {
+                $sku = GoodsSku::find($params['join_appointment_goods_sku_id']);
                 $orderId = 'OD' . date('YmdHis') . random_string(6, 'up');
                 $order = [
                     'order_id' => $orderId,
                     'join_order_member_id' => $params['join_appointment_member_id'],
                     'order_name' => "预约-" . $goods->goods_name,
-                    'order_amount_total' => $goods->goods_sales_price * $params['person'],
-                    'order_amount_pay' => $goods->goods_sales_price * $params['person'],
+                    'order_amount_total' => $sku->goods_sku_sales_price * $params['person'],
+                    'order_amount_pay' => $sku->goods_sku_sales_price * $params['person'],
                     'order_is_complete' => 'N',
                     'order_category' => 'OTHER',
                     'order_status_system' => 'PAYING',
@@ -404,9 +433,9 @@ class AppointmentService
                     'order_sheet_category' => 'APPOINTMENT',
                     'order_sheet_unit' => '套',
                     'order_sheet_num' => $params['person'],
-                    'order_sheet_price' => $goods->goods_sales_price,
-                    'order_sheet_amount' => $goods->goods_sales_price * $params['person'],
-                    'order_sheet_pay' => $goods->goods_sales_price * $params['person'],
+                    'order_sheet_price' => $sku->goods_sku_sales_price,
+                    'order_sheet_amount' => $sku->goods_sku_sales_price * $params['person'],
+                    'order_sheet_pay' => $sku->goods_sku_sales_price * $params['person'],
                     'order_sheet_task_status' => 'NONE',
                     'order_sheet_addtimes' => time()
                 ];
@@ -464,7 +493,7 @@ class AppointmentService
             return json_success("数据更新成功");
         } catch (\Exception $e) {
             Db::rollBack();
-            dump($e->getTrace());
+            dump($e->getMessage());
             return json_fail("数据更新失败");
         }
     }

+ 5 - 0
app/model/Appointment.php

@@ -90,4 +90,9 @@ class Appointment extends Model
     {
         return $this->hasOne(MemberBenefit::class, 'member_benefit_id', 'join_appointment_member_benefit_id');
     }
+
+    public function sku(){
+        return $this->hasMany(GoodsSku::class,'join_sku_goods_id','join_appointment_goods_id')
+            ->select('goods_sku_id','goods_sku_specs_json','goods_sku_sales_price');
+    }
 }