Browse Source

优惠券明细

gorden 6 months ago
parent
commit
7d709e784c
1 changed files with 37 additions and 9 deletions
  1. 37 9
      app/admin/controller/coupon/CouponController.php

+ 37 - 9
app/admin/controller/coupon/CouponController.php

@@ -133,15 +133,17 @@ class CouponController extends Curd
             } elseif ($item['coupon_validdate_day']) {
                 $item['coupon_use_time'] = 'day';
             }
-            $item['member_count'] = $item['pending_count'] = $item['used_count'] = 0;
+            $item['member_count'] = 0;
+            $item['pending_count'] = 0;
+            $item['used_count'] = 0;
             if (!empty($item['detail'])) {
                 foreach ($item['detail'] as $detail) {
-                    if (!empty($detail['join_coupon_detail_member_id'])){
+                    if (!empty($detail['join_coupon_detail_member_id'])) {
                         $item['member_count'] += 1;
                     }
-                    if ($detail['coupon_detail_status'] == 'PENDING'){
+                    if ($detail['coupon_detail_status'] == 'PENDING') {
                         $item['pending_count'] += 1;
-                    }elseif ($detail['coupon_detail_status'] == 'USED'){
+                    } elseif ($detail['coupon_detail_status'] == 'USED') {
                         $item['used_count'] += 1;
                     }
                 }
@@ -197,7 +199,7 @@ class CouponController extends Curd
             // 关联优惠券和商品、规格
             $this->insertCouponGoods($goods, $data['coupon_id']);
             if ($data['coupon_number'] > 0) {
-                $this->generateCouponDetail($data['coupon_id'], $data['coupon_number']);
+                $this->generateCouponDetail($data['coupon_id'], $data['coupon_status'], $data['coupon_number']);
             }
             Db::commit();
 
@@ -314,16 +316,22 @@ class CouponController extends Curd
                 // 查已领取多少了
                 $detailCount = CouponDetail::where('join_detail_coupon_id', $id)->count();
                 if ($detailCount < $data['coupon_number']) {
-                    $this->generateCouponDetail($id, $data['coupon_number'] - $detailCount);
+                    $this->generateCouponDetail($id, $data['coupon_status'], $data['coupon_number'] - $detailCount);
                 }
             } else if ($originCouponNumber < $data['coupon_number']) {
-                $this->generateCouponDetail($id, $data['coupon_number'] - $originCouponNumber);
+                $this->generateCouponDetail($id, $data['coupon_status'], $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();
             }
+            // 激活状态,初始改为待领取
+            if ($data['coupon_status'] == 'ACTIVED') {
+                CouponDetail::where('join_detail_coupon_id', $id)->where('coupon_detail_status', 'INIT')->update(['coupon_detail_status' => 'PENDING']);
+            } elseif ($data['coupon_status'] == 'DISABLED') {   // 禁用状态,未领取未使用的都是禁用
+                CouponDetail::where('join_detail_coupon_id', $id)->where('coupon_detail_status', '<>', 'USED')->update(['coupon_detail_status' => 'DISABLED']);
+            }
             Db::commit();
 
             return json_success('success');
@@ -575,24 +583,44 @@ class CouponController extends Curd
         try {
             // 删除优惠券关联的产品
             foreach ($ids as $id) {
+                $couponDetail = CouponDetail::with([
+                    'coupon'=>function($query){
+                        $query->select('coupon_id','coupon_name');
+                    }
+                ])->where('join_detail_coupon_id',$id)
+                    ->where('join_coupon_detail_member_id','<>','')
+                    ->first();
+                if (!empty($couponDetail)){
+                    Db::rollBack();
+
+                    return json_fail($couponDetail->coupon && $couponDetail->coupon->coupon_name ? $couponDetail->coupon->coupon_name."已被领取,无法删除,请禁用" : "删除的优惠券中有已被领取的,无法删除,请禁用");
+                }
                 CouponGoods::where('join_goods_coupon_id', $id)->delete();
+
+//                CouponDetail::where('join_detail_coupon_id', $id)
+//                    ->whereIn('coupon_detail_status',['INIT','PENDING','ACTIVED'])
+//                    ->delete();
+//                CouponDetail::where('join_detail_coupon_id', $id)
+//                    ->where('coupon_detail_status','WAITING')
+//                    ->update(['coupon_detail_status'=>'DISABLED']);
             }
             $this->doDelete($ids);
             Db::commit();
             return json_success('success');
         } catch (\Exception $e) {
+            dump($e->getMessage());
             Db::rollBack();
             return json_fail('删除失败');
         }
     }
 
-    private function generateCouponDetail($couponId, $nbr)
+    private function generateCouponDetail($couponId, $couponStatus, $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' => 'INIT',
+                'coupon_detail_status' => $couponStatus == 'ACTIVED' ? 'PENDING' : 'INIT',
                 'coupon_detail_addtimes' => time()
             ]);
         }