gorden 6 місяців тому
батько
коміт
eadc5b6bea
1 змінених файлів з 47 додано та 13 видалено
  1. 47 13
      app/admin/controller/coupon/CouponController.php

+ 47 - 13
app/admin/controller/coupon/CouponController.php

@@ -6,6 +6,7 @@ use app\admin\validate\coupon\CouponValidate;
 use app\admin\validate\device\DeviceValidate;
 use app\controller\Curd;
 use app\model\Coupon;
+use app\model\CouponDetail;
 use app\model\CouponGoods;
 use app\model\Device;
 use app\model\Member;
@@ -37,10 +38,10 @@ class CouponController extends Curd
      */
     public function select(Request $request): Response
     {
-        $joinCouponCategoryId = $request->get('join_coupon_category_id',[]);
+        $joinCouponCategoryId = $request->get('join_coupon_category_id', []);
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
-        if (!empty($joinCouponCategoryId)){
-            $where['join_coupon_category_id'] = ['in',implode(',',$joinCouponCategoryId)];
+        if (!empty($joinCouponCategoryId)) {
+            $where['join_coupon_category_id'] = ['in', implode(',', $joinCouponCategoryId)];
         }
         $order = $request->get('order', 'desc');
         $field = $field ?? 'coupon_addtimes';
@@ -126,9 +127,9 @@ class CouponController extends Curd
                     $item['premises_range'] = 'all';
                 }
             }
-            if (!empty($item['coupon_validdate_begin']) && !empty($item['coupon_validdate_end'])){
+            if (!empty($item['coupon_validdate_begin']) && !empty($item['coupon_validdate_end'])) {
                 $item['coupon_use_time'] = 'date';
-            }elseif ($item['coupon_validdate_day']){
+            } elseif ($item['coupon_validdate_day']) {
                 $item['coupon_use_time'] = 'day';
             }
         }
@@ -181,6 +182,9 @@ class CouponController extends Curd
             $this->doInsert($data);
             // 关联优惠券和商品、规格
             $this->insertCouponGoods($goods, $data['coupon_id']);
+            if ($data['coupon_number'] > 0) {
+                $this->generateCouponDetail($data['coupon_id'], $data['coupon_number']);
+            }
             Db::commit();
 
             return json_success('success');
@@ -228,11 +232,11 @@ class CouponController extends Curd
         $params = $request->post();
         $data = $this->inputFilter($params);
         $data['coupon_id'] = "CU" . str_pad(SysSerial::getSerial(), 6, '0') . random_string(6, 'up');
-        if (!empty($params['coupon_use_time']) && $params['coupon_use_time'] == 'date'){
+        if (!empty($params['coupon_use_time']) && $params['coupon_use_time'] == 'date') {
             $data['coupon_validdate_day'] = null;
             $data['coupon_validdate_begin'] = date("Y-m-d H:i:s", strtotime($data['coupon_validdate_begin']));
             $data['coupon_validdate_end'] = date("Y-m-d H:i:s", strtotime($data['coupon_validdate_end']));
-        }elseif (!empty($params['coupon_use_time']) && $params['coupon_use_time'] == 'day'){
+        } elseif (!empty($params['coupon_use_time']) && $params['coupon_use_time'] == 'day') {
             $data['coupon_validdate_begin'] = null;
             $data['coupon_validdate_end'] = null;
         }
@@ -288,8 +292,24 @@ class CouponController extends Curd
         Db::beginTransaction();
         try {
             [$id, $data] = $this->updateInput($request);
+            $originCouponNumber = $data['origin_coupon_number'];
+            unset($data['origin_coupon_number']);
             $this->updateCouponGoods($request->post('goodsContentList'), $id);
             $this->doUpdate($id, $data);
+            if ($originCouponNumber == 0 && $data['coupon_number'] != 0) {
+                // 查已领取多少了
+                $detailCount = CouponDetail::where('join_detail_coupon_id', $id)->count();
+                if ($detailCount < $data['coupon_number']) {
+                    $this->generateCouponDetail($id, $data['coupon_number'] - $detailCount);
+                }
+            }else if($originCouponNumber < $data['coupon_number']){
+                $this->generateCouponDetail($id, $data['coupon_number'] - $originCouponNumber);
+            }else if($originCouponNumber > $data['coupon_number']){
+                CouponDetail::where('join_detail_coupon_id',$id)
+                    ->where('join_coupon_detail_member_id','')
+                    ->limit($originCouponNumber-$data['coupon_number'])
+                    ->delete();
+            }
             Db::commit();
 
             return json_success('success');
@@ -344,15 +364,17 @@ class CouponController extends Curd
         $primary_key = $this->model->getKeyName();
         $id = $request->post($primary_key);
         $data = $this->inputFilter($params);
-        if (!empty($params['coupon_use_time']) && $params['coupon_use_time'] == 'date'){
+        if (!empty($params['coupon_use_time']) && $params['coupon_use_time'] == 'date') {
             $data['coupon_validdate_day'] = null;
             $data['coupon_validdate_begin'] = date("Y-m-d H:i:s", strtotime($data['coupon_validdate_begin']));
             $data['coupon_validdate_end'] = date("Y-m-d H:i:s", strtotime($data['coupon_validdate_end']));
-        }elseif (!empty($params['coupon_use_time']) && $params['coupon_use_time'] == 'day'){
+        } elseif (!empty($params['coupon_use_time']) && $params['coupon_use_time'] == 'day') {
             $data['coupon_validdate_begin'] = null;
             $data['coupon_validdate_end'] = null;
         }
         $model = $this->model->find($id);
+        // 原数量
+        $data['origin_coupon_number'] = $model->coupon_number;
         if (!$model) {
             throw new BusinessException('记录不存在', 2);
         }
@@ -363,10 +385,10 @@ class CouponController extends Curd
         if ($params['coupon_use_member'] == 'member' && isset($params['member_list'])) {
             $couponJson['member']['list'] = $params['member_list'];
 //            if (isset($couponJson['member']['range'])) {
-                $couponJson['member']['range'] = '';
+            $couponJson['member']['range'] = '';
 //            }
 //            if (isset($couponJson['member']['where'])) {
-                $couponJson['member']['where'] = '';
+            $couponJson['member']['where'] = '';
 //            }
         } else if ($params['coupon_use_member'] == 'condition') {
             if (isset($params['condition']) && $params['condition'] == 'is_vip') {
@@ -380,7 +402,7 @@ class CouponController extends Curd
                 $couponJson['member']['where'] = urlencode(" `member_classify` = 'MEMBER'");
             }
 //            if (isset($couponJson['member']['list'])) {
-                $couponJson['member']['list'] = [];
+            $couponJson['member']['list'] = [];
 //            }
         } else if ($params['coupon_use_member'] == 'all') {
             $couponJson['member']['list'] = [];
@@ -440,7 +462,7 @@ class CouponController extends Curd
             if (isset($couponGood['goods'])) {
                 $content['goods_name'] = $couponGood['goods']['name'];
                 $content['goods_classify'] = $couponGood['goods']['goods_classify'];
-                $content['goods_cover'] = getenv('STORAGE_DOMAIN').$couponGood['goods']['goods_cover'];
+                $content['goods_cover'] = getenv('STORAGE_DOMAIN') . $couponGood['goods']['goods_cover'];
             }
             if (isset($couponGood['sku']) && isset($couponGood['sku']['goods_sku_specs_json'])) {
 //                $skuSpecsJson = json_decode($couponGood['sku']['goods_sku_specs_json'], true);
@@ -549,4 +571,16 @@ class CouponController extends Curd
             return json_fail('删除失败');
         }
     }
+
+    private function generateCouponDetail($couponId, $nbr)
+    {
+        for ($i = 0; $i < intval($nbr); $i++) {
+            CouponDetail::insert([
+                'coupon_detail_id' => 'CUDT' . str_pad(SysSerial::getSerial(), 6, '0') . random_string(6, 'up'),
+                'join_detail_coupon_id' => $couponId,
+                'coupon_detail_status' => 'PENDING',
+                'coupon_detail_addtimes' => time()
+            ]);
+        }
+    }
 }