Browse Source

手动发优惠券

gorden 6 months ago
parent
commit
2e4d99264a

+ 62 - 3
app/admin/controller/coupon/CouponController.php

@@ -2,6 +2,7 @@
 
 namespace app\admin\controller\coupon;
 
+use app\admin\service\coupon\CouponDetailService;
 use app\admin\validate\coupon\CouponValidate;
 use app\admin\validate\device\DeviceValidate;
 use app\controller\Curd;
@@ -157,7 +158,7 @@ class CouponController extends Curd
     {
         $coupons = Coupon::where('coupon_status', 'ACTIVED')
             ->select('coupon_id', 'coupon_name')
-            ->orderBy('coupon_addtimes','DESC')
+            ->orderBy('coupon_addtimes', 'DESC')
             ->get()
             ->toArray();
 
@@ -276,7 +277,7 @@ class CouponController extends Curd
             }
         } else if ($params['coupon_use_member'] == 'all') {
             $couponJson['member']['list'] = [];
-            $couponJson['member']['range'] = '全部员';
+            $couponJson['member']['range'] = '全部员';
             $couponJson['member']['where'] = '';
         }
 
@@ -292,6 +293,64 @@ class CouponController extends Curd
         return $data;
     }
 
+    public function customSend(Request $request)
+    {
+        $chooseCoupons = $request->post('chooseCoupons', []);
+        $couponUseMember = $request->post('coupon_use_member', '');
+        $memberList = $request->post('member_list', []);
+        $condition = $request->post('condition', '');
+        if ($couponUseMember == 'condition') {
+            if ($condition == 'is_employ') {
+                $memberList = Member::where('member_classify', 'EMPLOY')->pluck('member_id')->toArray();
+            } elseif ($condition == 'is_member') {
+                $memberList = Member::where('member_classify', 'MEMBER')->pluck('member_id')->toArray();
+            } elseif ($condition == 'is_vip') {
+                $memberList = Member::where('member_is_vip', 'Y')->pluck('member_id')->toArray();
+            }
+        }
+
+        Db::beginTransaction();
+        try {
+            $couponIds = array_column($chooseCoupons, 'id');
+            $coupons = Coupon::whereIn('coupon_id', $couponIds)->get()->toArray();
+            foreach ($coupons as $coupon) {
+                foreach ($chooseCoupons as $chooseCoupon) {
+                    if ($chooseCoupon['id'] == $coupon['coupon_id']) {
+                        if (empty($chooseCoupon['gain_datetime'])) {
+                            $chooseCoupon['gain_datetime'] = date('Y-m-d H:i:s');
+                        }
+                        $params['coupon_id'] = $coupon['coupon_id'];
+                        $params['coupon_detail_gain_datetime'] = date('Y-m-d H:i:s', strtotime($chooseCoupon['gain_datetime']));
+                        if (($coupon['coupon_validdate_day'] == 0 || $coupon['coupon_validdate_day'] == '') && !empty($coupon['coupon_validdate_end'])) {
+                            $params['coupon_detail_deadline_datetime'] = $coupon['coupon_validdate_end'];
+                        } elseif ($coupon['coupon_validdate_day'] > 0) {
+                            $endUnix = strtotime($chooseCoupon['gain_datetime']);
+                            $params['coupon_detail_deadline_datetime'] = date('Y-m-d H:i:s', $endUnix + ($coupon['coupon_validdate_day'] * 24 * 3600));
+                        }
+                        foreach ($memberList as $item) {
+                            $params['member_id'] = $item;
+                            if ($chooseCoupon['nbr'] > 0) {
+                                for ($i = 0; $i < $chooseCoupon['nbr']; $i++) {
+                                    CouponDetailService::customSendCoupon($params);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+
+            Db::commit();
+            return json_success("发放成功");
+        } catch (BusinessException $e) {
+            return json_fail($e->getMessage());
+        } catch (\Exception $e) {
+            Db::rollBack();
+            return json_fail('优惠券发放失败');
+
+        }
+
+    }
+
     /**
      * @Desc 修改优惠券
      * @Author Gorden
@@ -490,7 +549,7 @@ class CouponController extends Curd
 //            }
         } else if ($params['coupon_use_member'] == 'all') {
             $couponJson['member']['list'] = [];
-            $couponJson['member']['range'] = '全部员';
+            $couponJson['member']['range'] = '全部员';
             $couponJson['member']['where'] = '';
 
             if (isset($couponJson['member']['list'])) {

+ 28 - 0
app/admin/service/coupon/CouponDetailService.php

@@ -0,0 +1,28 @@
+<?php
+
+namespace app\admin\service\coupon;
+
+use app\model\CouponDetail;
+use app\model\SysSerial;
+use support\exception\BusinessException;
+
+class CouponDetailService
+{
+    public static function customSendCoupon($params)
+    {
+        try {
+            CouponDetail::insert([
+                'coupon_detail_id' => 'CUDT' . str_pad(SysSerial::getSerial(), 6, '0') . random_string(6, 'up'),
+                'join_detail_coupon_id' => $params['coupon_id'],
+                'join_coupon_detail_member_id' => $params['member_id'],
+                'coupon_detail_status' => 'ACTIVED',
+                'coupon_detail_gain_datetime' => $params['coupon_detail_gain_datetime'],
+                'coupon_detail_deadline_datetime' => $params['coupon_detail_deadline_datetime'],
+                'coupon_detail_extend_json'=>json_encode(['gettype'=>'SEND']),
+                'coupon_detail_addtimes' => time(),
+            ]);
+        } catch (\Exception $e) {
+            throw new BusinessException('写入优惠券失败');
+        }
+    }
+}

+ 1 - 0
route/admin.php

@@ -870,6 +870,7 @@ Route::group('/admin', function () {
             Route::get('/selectList', [\app\admin\controller\coupon\CouponController::class, 'selectList']);
             Route::get('/info', [\app\admin\controller\coupon\CouponController::class, 'info']);
             Route::post('/add', [\app\admin\controller\coupon\CouponController::class, 'insert']);
+            Route::post('/customSend', [\app\admin\controller\coupon\CouponController::class, 'customSend']);
             Route::post('/update', [\app\admin\controller\coupon\CouponController::class, 'update']);
             Route::delete('/delete', [\app\admin\controller\coupon\CouponController::class, 'delete']);
         })->middleware([