Browse Source

双十一活动

gorden 5 months ago
parent
commit
b26599d74e

+ 35 - 1
app/admin/controller/coupon/CouponDetailController.php

@@ -136,6 +136,7 @@ class CouponDetailController extends Curd
                     $item['member_used'] += 1;
                 }
             }
+            unset($item['detail']);
             if (!empty($item['coupon_detail_extend_json'])) {
                 $couponDetailExtendJson = json_decode($item['coupon_detail_extend_json'], true);
                 if (isset($couponDetailExtendJson['gettype'])) {
@@ -312,6 +313,39 @@ class CouponDetailController extends Curd
         return json_success('', $data);
     }
 
+    public function promotionCoupon(Request $request)
+    {
+        $goods = $request->get('goods', []);
+        $money = $request->get('money', []);
+        $goodsIds = array_column($goods, 'goods_id');
+        $couponIds = CouponGoods::whereIn('join_coupon_goods_id', $goodsIds)->pluck('join_goods_coupon_id')->toArray();
+
+        $coupons = Coupon::where('coupon_category', 'PROMOTION')
+            ->where('coupon_status', 'ACTIVED')
+            ->whereIn('coupon_id', $couponIds)
+            ->where(function ($query) use ($money) {
+                $query->where('coupon_minimum_limit', 0)
+                    ->orWhere('coupon_minimum_limit', '<=', $money);
+            })->select('coupon.coupon_id', 'coupon.coupon_name', 'coupon.coupon_minimum_limit', 'coupon.coupon_classify', 'coupon.coupon_value', 'coupon.coupon_category')
+            ->get()
+            ->toArray();
+        $data = [];
+        foreach ($coupons as $coupon){
+            $classify = CouponService::couponClassifyInfo($coupon['coupon_classify'], $coupon['coupon_category'], $coupon['coupon_value'], $coupon['coupon_minimum_limit']);
+            $data[] = [
+                'coupon_id' => $coupon['coupon_id'],
+                'coupon_name' => $coupon['coupon_name'],
+                'classify' => $classify,
+                'count' => 1,
+                'coupon_classify' => $coupon['coupon_classify'],
+                'coupon_value' => $coupon['coupon_value'] ?? '',
+                'coupon_minimum_limit' => $coupon['coupon_minimum_limit'] ?? '',
+            ];
+        }
+
+        return json_success('', $data);
+    }
+
     /**
      * @Desc 导出优惠券明细
      * @Author Gorden
@@ -437,7 +471,7 @@ class CouponDetailController extends Curd
 
             $data[] = [
                 'cert_name' => $certName,
-                'mobile'=>$mobile,
+                'mobile' => $mobile,
 //                'member_name' => MemberService::getMemberCertName($mobile, $certName, ''),
                 'referrer_name' => $detail['referrer_name'] ?? '',
                 'coupon_name' => $detail['coupon_name'] ?? '',

+ 73 - 140
app/admin/controller/order/PackagesController.php

@@ -30,6 +30,7 @@ use app\model\SysDept;
 use app\model\SysUser;
 use support\Db;
 use support\exception\BusinessException;
+use support\Log;
 use support\Redis;
 use support\Request;
 use support\Response;
@@ -374,17 +375,12 @@ class PackagesController extends Curd
     public function insert(Request $request): Response
     {
         $params = $request->post();
-        // 判断餐品是否连带着服务或实体
-        $goodsClassifys = array_unique(array_column($params['goodsContentList'], 'goods_classify'));
+        // 产品分类
+        $params['goods_classify'] = $params['submit_goods_classify'] = 'PACKAGE';
         $premises = [];
         if (!empty($params['dept_premises_id'])) {
             $premises = SysDept::where('dept_name', $params['dept_premises_id'])->first();
         }
-
-        if (in_array('PACKAGE', $goodsClassifys)) {
-            $params['submit_goods_classify'] = 'PACKAGE';
-        }
-        $params['goods_classify'] = $goodsClassifys[0];
         Db::beginTransaction();
         try {
             // 使用优惠券
@@ -403,19 +399,7 @@ class PackagesController extends Curd
             $params['order_discount_json'] = json_encode($this->discountRecord($couponUseJson, $params));
             // 验证库存
             foreach ($params['goodsContentList'] as $goods) {
-                // 减库存,规格和总库存
-                if (!isset($params['submit_goods_classify']) || !in_array($params['submit_goods_classify'], ['MEALS', 'PACKAGE'])) {
-                    $goodsSku = GoodsSku::where('goods_sku_id', $goods['sku_id'])->first();
-                    $skuStorageJson = json_decode($goodsSku->goods_sku_storage_json, true);
-                    if (isset($skuStorageJson['storage']) && !empty($skuStorageJson['storage'])) {
-                        $skuStorageJson['storage'] = $skuStorageJson['storage'] - $goods['nbr'];
-                    }
-                    if (!isset($skuStorageJson['storage']) || (!empty($skuStorageJson['storage']) && $skuStorageJson['storage'] < 0)) {
-                        throw new BusinessException('库存不足');
-                    }
-                }
-
-
+                // 减库存,总库存
                 $goodsRunning = GoodsRunning::where('join_running_goods_id', $goods['goods_id'])->first();
                 $goodsRunning->goods_running_storage = $goodsRunning->goods_running_storage - $goods['nbr'];
                 if ($goodsRunning->goods_running_storage < 0) {
@@ -459,21 +443,14 @@ class PackagesController extends Curd
                 throw new BusinessException('检查下单账户');
             }
 
-            $qrcodePayAmount = 0;
             $params['orderId'] = 'OD' . date('ymdHi') . random_string(4, 'up');
             $params['orderGroupId'] = 'OD' . date('ymdHi') . random_string(4, 'up');
 
-            $systemStatus = 'SENDING';  // 待发货
+            $systemStatus = 'WAITING';  // 待使用
             // 立即结算
-            if ($params['settlement_now'] == 'Y') {
-                if (in_array($params['goods_classify'], ['MEALS', 'VIP'])) {
-                    $params['order_is_complete'] = 'Y';
-                    $systemStatus = 'DONE';
-                }
-                if (in_array($params['goods_classify'], ['SERVICE', 'CHNMED', 'CHNNCD', 'PACKAGE']) && $params['delivery'] == 'ARRIVAL') {
-                    $params['order_is_complete'] = 'N';
-                    $systemStatus = "WAITING";
-                }
+            if ($params['settlement_now'] == 'Y' && $params['is_complete'] == 'Y') {
+                $params['order_is_complete'] = 'Y';
+                $systemStatus = "DONE";
             }
 
             if ($params['settlement_now'] == 'Y' && ($params['pay_category'] == 'OFFLINE' || $params['pay_category'] == 'MONEY')) {
@@ -491,7 +468,7 @@ class PackagesController extends Curd
                     throw new BusinessException('账户异常');
                 }
                 $amount = $account->member_account_surplus + $account->member_account_added;
-                if ($params['pay_constitute'] == 'N' && (!$account || $params['order_amount_pay'] > $amount)) {
+                if ($params['order_amount_pay'] > $amount) {
                     throw new BusinessException('账户余额不足');
                 }
                 if ($params['order_amount_pay'] > $account->member_account_surplus) {
@@ -507,7 +484,7 @@ class PackagesController extends Curd
                     $params['order_status_system'] = $systemStatus;
                     $params['order_status_payment'] = 'SUCCESS';
                 }
-            } else if ($params['settlement_now'] == 'Y' && $params['pay_category'] == 'VIP') {    // 余额支付
+            } else if ($params['settlement_now'] == 'Y' && $params['pay_category'] == 'VIP') {    // VIP余额支付
                 $account = MemberAccount::where('join_account_member_id', $params['join_order_member_id'])
                     ->where('member_account_classify', 'VIP')
                     ->where('member_account_status', 'ACTIVED')
@@ -516,7 +493,7 @@ class PackagesController extends Curd
                     throw new BusinessException('账户异常');
                 }
                 $amount = $account->member_account_surplus + $account->member_account_added;
-                if ($params['pay_constitute'] == 'N' && (!$account || $params['order_amount_pay'] > $amount)) {
+                if ($params['order_amount_pay'] > $amount) {
                     throw new BusinessException('账户余额不足');
                 }
                 if ($params['order_amount_pay'] > $account->member_account_surplus) {
@@ -549,69 +526,6 @@ class PackagesController extends Curd
                     $params['order_status_system'] = $systemStatus;
                     $params['order_status_payment'] = 'SUCCESS';
                 }
-                // 福利账户 300 、 700
-                if (in_array($params['goods_classify'], ['SERVICE', 'CHNMED', 'CHNNCD', 'MEALS'])) {
-                    $payDetails = PayDetail::where('join_pay_member_id', $params['join_order_member_id'])
-                        ->where('pay_status', 'SUCCESS')
-                        ->where('pay_prepayid', $params['join_order_member_id'] . '-WELFARE')
-                        ->whereIn('pay_category', ['SERVICE', 'CHNMED', 'CHNNCD', 'MEALS', 'DESHES'])
-                        ->get()
-                        ->toArray();
-
-                    $payDetailArray = array_column($payDetails, 'pay_amount', 'join_pay_order_id');
-
-                    $refundPayDetails = PayDetail::where('join_pay_member_id', $params['join_order_member_id'])
-                        ->where('pay_status', 'SUCCESS')
-                        ->where('pay_prepayid', $params['join_order_member_id'] . '-WELFARE')
-                        ->where('pay_category', 'REFUND')
-                        ->get()
-                        ->toArray();
-                    $refundPayDetailArray = array_column($refundPayDetails, 'pay_amount', 'join_pay_order_id');
-                    $paySum = 0;
-                    foreach ($payDetailArray as $key => $item) {
-                        if (isset($refundPayDetailArray[$key])) {
-                            $paySum = $paySum + ($item - $refundPayDetailArray[$key]);
-                            continue;
-                        }
-
-                        $paySum = $paySum + $item;
-                    }
-
-                    if ($params['pay_constitute'] == 'N' && 700 - $paySum < $params['order_amount_pay']) {
-                        Db::rollBack();
-                        return json_fail('超出福利限额');
-                    }
-                } else {
-                    $payDetails = PayDetail::where('join_pay_member_id', $params['join_order_member_id'])
-                        ->where('pay_status', 'SUCCESS')
-                        ->where('pay_prepayid', $params['join_order_member_id'] . '-WELFARE')
-                        ->whereNotIn('pay_category', ['SERVICE', 'CHNMED', 'CHNNCD', 'MEALS', 'DESHES', 'REFUND', 'RECHARGE'])
-                        ->get()
-                        ->toArray();
-
-                    $payDetailArray = array_column($payDetails, 'pay_amount', 'join_pay_order_id');
-
-                    $refundPayDetails = PayDetail::where('join_pay_member_id', $params['join_order_member_id'])
-                        ->where('pay_status', 'SUCCESS')
-                        ->where('pay_prepayid', $params['join_order_member_id'] . '-WELFARE')
-                        ->where('pay_category', 'REFUND')
-                        ->get()
-                        ->toArray();
-                    $refundPayDetailArray = array_column($refundPayDetails, 'pay_amount', 'join_pay_order_id');
-                    $paySum = 0;
-                    foreach ($payDetailArray as $key => $item) {
-                        if (isset($refundPayDetailArray[$key])) {
-                            $paySum = $paySum + ($item - $refundPayDetailArray[$key]);
-                            continue;
-                        }
-
-                        $paySum = $paySum + $item;
-                    }
-
-                    if ($params['pay_constitute'] == 'N' && 300 - $paySum < $params['order_amount_pay']) {
-                        throw new BusinessException('超出福利限额');
-                    }
-                }
 
                 $account->member_account_surplus = $account->member_account_surplus - $params['order_amount_pay'];
                 $account->member_account_expend = $account->member_account_expend + $params['order_amount_pay'];
@@ -649,45 +563,35 @@ class PackagesController extends Curd
                 }
             }
             if (($params['pay_constitute'] == 'Y' || $params['pay_category'] == 'QRCODE') && $params['settlement_now'] == 'Y' && !empty($params['qrcode_nbr'])) {     // 付款码
-                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 = json_encode($result);
-                    $params['pay_json_response'] = $result;
-                    $result = json_decode($result, true);
+                $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 ((!isset($result['return_code']) || $result['return_code'] != 'SUCCESS') || (!isset($result['result_code']) || $result['result_code'] != 'SUCCESS') || (empty($result['trade_state']) || $result['trade_state'] != 'SUCCESS')) {
-                            $params['order_status_system'] = 'PAYING';
-                            $params['order_status_payment'] = 'PENDING';
-                            $params['order_is_complete'] = 'N';
-//                            Db::rollBack();
-//                            return json_fail('支付失败');
-                        } else {
-                            $params['order_status_system'] = $systemStatus;
-                            $params['order_status_payment'] = 'SUCCESS';
-                        }
-                    } else if (in_array($prefix, [25, 26, 27, 28, 29, 30])) {
-                        $params['pay_category'] = 'ALIPAY';
-                        if ((!isset($result['code']) || $result['code'] != '10000') || (empty($result['trade_status']) || $result['trade_status'] != 'TRADE_SUCCESS')) {
-                            $params['order_status_system'] = 'PAYING';
-                            $params['order_status_payment'] = 'PENDING';
-                            $params['order_is_complete'] = 'N';
-//                            Db::rollBack();
-//                            return json_fail('支付失败');
-                        } else {
-                            $params['order_status_system'] = $systemStatus;
-                            $params['order_status_payment'] = 'SUCCESS';
-                        }
+                $prefix = substr($params['qrcode_nbr'], 0, 2);
+                if (in_array($prefix, [10, 11, 12, 13, 14, 15])) {
+                    $params['pay_category'] = 'WXPAY';
+                    if ((!isset($result['return_code']) || $result['return_code'] != 'SUCCESS') || (!isset($result['result_code']) || $result['result_code'] != 'SUCCESS') || (empty($result['trade_state']) || $result['trade_state'] != 'SUCCESS')) {
+                        $params['order_status_system'] = 'PAYING';
+                        $params['order_status_payment'] = 'PENDING';
+                        $params['order_is_complete'] = 'N';
                     } else {
-                        throw new BusinessException('付款码无效');
+                        $params['order_status_system'] = $systemStatus;
+                        $params['order_status_payment'] = 'SUCCESS';
+                    }
+                } else if (in_array($prefix, [25, 26, 27, 28, 29, 30])) {
+                    $params['pay_category'] = 'ALIPAY';
+                    if ((!isset($result['code']) || $result['code'] != '10000') || (empty($result['trade_status']) || $result['trade_status'] != 'TRADE_SUCCESS')) {
+                        $params['order_status_system'] = 'PAYING';
+                        $params['order_status_payment'] = 'PENDING';
+                        $params['order_is_complete'] = 'N';
+                    } else {
+                        $params['order_status_system'] = $systemStatus;
+                        $params['order_status_payment'] = 'SUCCESS';
                     }
+                } else {
+                    throw new BusinessException('付款码无效');
                 }
             }
 
@@ -738,14 +642,12 @@ class PackagesController extends Curd
             return json_success('创建订单成功');
         } catch (BusinessException $e) {
             Db::rollBack();
-            dump($e->getMessage());
-            dump($e->getTrace());
+            Log::error("购买套包失败", ['msg' => $e->getMessage()]);
             _syslog("订单", $e->getMessage());
             return json_fail($e->getMessage());
         } catch (\Exception $e) {
             Db::rollBack();
-            dump($e->getMessage());
-            dump($e->getTrace());
+            Log::error("购买套包失败", ['msg' => $e->getMessage()]);
             _syslog("订单", "创建订单失败");
             return json_fail('创建订单失败');
         }
@@ -2065,7 +1967,7 @@ class PackagesController extends Curd
                 }
                 $orderId = 'OD' . date('ymdHi') . random_string(4, 'up');
                 $amountPay = round((floatval($goods['goods_sales_price']) * $goods['nbr'] / $params['order_amount_total']) * $params['order_amount_pay'], 2);
-//                $amountPay = round(floatval($goods['goods_sales_price']) * $goods['nbr'] * $params['order_ratio'], 2);
+
                 $data = [
                     'order_id' => $orderId,
                     'order_groupby' => $params['orderGroupId'],
@@ -2097,10 +1999,13 @@ class PackagesController extends Curd
                 $params['order_express_goods'] = json_encode(['sheet' => $sheetIds]);
 
                 $this->insertExpressOne($params, $orderId);
-                // 写到权益里
                 if ($params['order_status_payment'] == 'SUCCESS') {
+                    // 写到权益里
                     $this->insertBenefitOne($params, $goods, $orderId);
+                    // 发放卡券
+                    $this->sendCoupon($params, $goods, $orderId);
                 }
+
             }
         } catch (\Exception $e) {
             dump($e->getMessage() . '|' . $e->getLine());
@@ -2171,6 +2076,34 @@ class PackagesController extends Curd
         }
     }
 
+    /**
+     * @Desc 发放卡券
+     * @Author Gorden
+     * @Date 2024/11/4 11:47
+     *
+     * @param $params
+     * @param $goods
+     * @param $orderId
+     * @return void
+     * @throws BusinessException
+     */
+    public function sendCoupon($params, $goods, $orderId)
+    {
+        try {
+            $couponSendParams = [
+                'gettype' => 'PACKAGE',
+                'member_id' => $params['join_order_member_id'],
+                'orderId' => $orderId,
+                'join_sheet_goods_id' => $goods['goods_id']
+            ];
+
+            CouponService::autoSendCouponByGoods($couponSendParams);
+        } catch (\Exception $e) {
+            throw new BusinessException("卡券发放失败");
+        }
+
+    }
+
     /**
      * @Desc 单套包权益
      * @Author Gorden
@@ -2185,7 +2118,6 @@ class PackagesController extends Curd
     {
         $params['orderId'] = $orderId;
         $writeOffDate = [];
-        $applyData = [];
         if (isset($goods['goods_classify']) && $goods['goods_classify'] == 'PACKAGE' && $params['delivery'] == 'ARRIVAL') {  // 一个套餐买多个
             $params['packageId'] = $goods['goods_id'];
             $components = GoodsComponent::with([
@@ -2519,7 +2451,8 @@ class PackagesController extends Curd
             ];
             Appointment::insert($data);
         } catch (\Exception $e) {
-            dump($e->getMessage());
+            Log::error('创建权益记录失败', ['msg' => $e->getMessage()]);
+
             throw new BusinessException("创建权益记录失败");
         }
     }

+ 58 - 0
app/admin/controller/sys_manage/AdvController.php

@@ -100,6 +100,24 @@ class AdvController extends Curd
                     $item->adv_media_json = "";
                 }
             }
+            if (!empty($item->adv_config_json)) {
+                $configJson = json_decode($item->adv_config_json, true);
+                $item->adv_cover_type = 'cover';
+                if (!empty($configJson['sliderList'])) {
+                    $item->adv_cover_type = 'slider';
+                    $sliderList = [];
+                    foreach ($configJson['sliderList'] as $slider) {
+                        $sliderList[] = [
+                            'cover' => getenv('STORAGE_DOMAIN') . $slider['url'],
+                            'href' => $slider['href']
+                        ];
+                    }
+                    $item->slider_list = $sliderList;
+                }
+                if (!empty($configJson['cover'])) {
+                    $item->cover = getenv('STORAGE_DOMAIN') . $configJson['cover'];
+                }
+            }
         }
 
         return $items;
@@ -119,6 +137,8 @@ class AdvController extends Curd
         $type = $request->post('adv_type', 0);
         $advMain = $request->post('adv_main', '');
         $cover = $request->post('cover', '');
+        $advCoverType = $request->post('adv_cover_type');
+        $sliderList = $request->post('slider_list');
 
         $data = $this->inputFilter($request->post());
         $mediaJson = [];
@@ -136,6 +156,21 @@ class AdvController extends Curd
         }
 
         $data['adv_media_json'] = json_encode($mediaJson);
+        $configJson = [];
+        // 轮播
+        if ($advCoverType == 'slider') {
+            $data['adv_href'] = '';
+            foreach ($sliderList as $slider) {
+                $configJson['sliderList'][] = [
+                    'url' => str_replace(getenv('STORAGE_DOMAIN'), '', $slider['cover']),
+                    'href' => $slider['href']
+                ];
+            }
+        } elseif ($advCoverType == 'cover') {
+            $configJson['cover'] = str_replace(getenv('STORAGE_DOMAIN'), '', $cover);
+        }
+
+        $data['adv_config_json'] = json_encode($configJson);
 
         return $data;
     }
@@ -145,12 +180,18 @@ class AdvController extends Curd
         $type = $request->post('adv_type', 0);
         $advMain = $request->post('adv_main', '');
         $cover = $request->post('cover', '');
+        $advCoverType = $request->post('adv_cover_type');
+        $sliderList = $request->post('slider_list');
 
         $primary_key = $this->model->getKeyName();
         $id = $request->post($primary_key);
         $data = $this->inputFilter($request->post());
 
         $model = $this->model->find($id);
+        $configJson = [];
+        if (!empty($model->adv_config_json)) {
+            $configJson = json_decode($model->adv_config_json, true);
+        }
 
         $mediaJson = [];
         if (!empty($model->adv_media_json)) {
@@ -172,6 +213,23 @@ class AdvController extends Curd
 
         $data['adv_media_json'] = json_encode($mediaJson);
 
+        // 轮播
+        if ($advCoverType == 'slider') {
+            $data['adv_href'] = '';
+            unset($configJson['cover']);
+            foreach ($sliderList as $slider) {
+                $configJson['sliderList'][] = [
+                    'url' => str_replace(getenv('STORAGE_DOMAIN'), '', $slider['cover']),
+                    'href' => $slider['href']
+                ];
+            }
+        } elseif ($advCoverType == 'cover') {
+            unset($configJson['sliderList']);
+            $configJson['cover'] = str_replace(getenv('STORAGE_DOMAIN'), '', $cover);
+        }
+
+        $data['adv_config_json'] = json_encode($configJson);
+
         if (!$model) {
             throw new BusinessException('记录不存在', 2);
         }

+ 11 - 12
app/admin/service/goods/GoodsService.php

@@ -628,6 +628,7 @@ class GoodsService
             ->orderBy('goods_addtimes', 'DESC')
             ->get()
             ->toArray();
+
         foreach ($goods as &$good) {
             $good['goods_cover'] = getenv('STORAGE_DOMAIN') . $good['goods_cover'];
             $good['goods_running_storage'] = intval($good['goods_running_storage']);
@@ -1310,13 +1311,15 @@ class GoodsService
                 }
                 $data['goods_detail_slider_json'] = rtrim($slider, ',');
             }
-            $extendJson = [];
             if (!empty($data['goods_attribute_json'])) {
-                $extendJson = json_decode($data['goods_attribute_json'], true);
-                $data['goods_attribute_json'] = $extendJson;
-                if (isset($extendJson['premisses'])) {
-                    $data['goods_premisses'] = $extendJson['premisses'];
-                    $data['goods_premisses_str'] = SysDept::whereIn('dept_id', $extendJson['premisses'])->pluck('dept_name');
+                $goodsAttributeJson = json_decode($data['goods_attribute_json'], true);
+                $data['goods_attribute_json'] = $goodsAttributeJson;
+                if (isset($goodsAttributeJson['premisses'])) {
+                    $data['goods_premisses'] = $goodsAttributeJson['premisses'];
+                    $data['goods_premisses_str'] = SysDept::whereIn('dept_id', $goodsAttributeJson['premisses'])->pluck('dept_name');
+                }
+                if (!empty($goodsAttributeJson['coupon'])) {
+                    $data['coupon_list'] = $goodsAttributeJson['coupon'];
                 }
             }
 
@@ -1488,11 +1491,7 @@ class GoodsService
                 $redis->sAdd(Goods::LISTING_KEY_PREFIX . $key, $params['goods_id']);
             }
             Db::commit();
-        } catch (\PDOException $e) {
-            Db::rollBack();
-            dump($e->getMessage());
-            return json_fail('数据写入失败~');
-        } catch (BusinessException $e) {
+        }  catch (BusinessException $e) {
             Db::rollBack();
             dump($e->getMessage());
             return json_fail($e->getMessage());
@@ -1563,7 +1562,7 @@ class GoodsService
             // 产品运行控制信息表
             self::goodsRunningUpdate($params);
             // sku表
-            self::goodsSkuSet($params, 'update');
+//            self::goodsSkuSet($params, 'update');
 
             Db::commit();
         } catch (BusinessException $e) {

+ 11 - 0
app/event/order/PackageEvent.php

@@ -0,0 +1,11 @@
+<?php
+
+namespace app\event\order;
+
+class PackageEvent
+{
+    public function grant()
+    {
+
+    }
+}

+ 1 - 0
route/admin.php

@@ -1012,6 +1012,7 @@ Route::group('/admin', function () {
             Route::get('/info', [\app\admin\controller\coupon\CouponDetailController::class, 'info']);
             Route::post('/updateStatus', [\app\admin\controller\coupon\CouponDetailController::class, 'updateStatus']);
             Route::get('/myCouponGrouping', [\app\admin\controller\coupon\CouponDetailController::class, 'myCouponGrouping']);
+            Route::get('/promotionCoupon', [\app\admin\controller\coupon\CouponDetailController::class, 'promotionCoupon']);
             Route::get('/export', [\app\admin\controller\coupon\CouponDetailController::class, 'export']);
         })->middleware([
             \app\middleware\AdminAuthCheck::class