Browse Source

康养城会员

gorden 6 months ago
parent
commit
e3a70d6bbf

+ 87 - 15
app/admin/controller/member/MemberController.php

@@ -4,6 +4,7 @@ namespace app\admin\controller\member;
 
 use app\admin\service\member\MemberService;
 use app\admin\validate\member\MemberValidate;
+use app\model\Coupon;
 use app\model\CouponDetail;
 use app\model\Family;
 use app\model\FamilyMember;
@@ -473,31 +474,31 @@ class MemberController
             ->select('coupon.coupon_name', 'coupon.coupon_classify')
             ->get()
             ->toArray();
-        $data = ['manjian'=>0,'diyong'=>0,'zhekou'=>0,'lijian'=>0,'zengpin'=>0,'fuli'=>0,'nianka'=>0,'jika'=>0,'yueka'=>0];
+        $data = ['manjian' => 0, 'diyong' => 0, 'zhekou' => 0, 'lijian' => 0, 'zengpin' => 0, 'fuli' => 0, 'nianka' => 0, 'jika' => 0, 'yueka' => 0];
         foreach ($coupons as $item) {
-            if ($item['coupon_classify'] == '满减券'){
+            if ($item['coupon_classify'] == '满减券') {
                 $data['manjian'] += 1;
-            }elseif ($item['coupon_classify'] == '抵用券'){
+            } elseif ($item['coupon_classify'] == '抵用券') {
                 $data['diyong'] += 1;
-            }elseif ($item['coupon_classify'] == '折扣券'){
+            } elseif ($item['coupon_classify'] == '折扣券') {
                 $data['zhekou'] += 1;
-            }elseif ($item['coupon_classify'] == '立减券'){
+            } elseif ($item['coupon_classify'] == '立减券') {
                 $data['lijian'] += 1;
-            }elseif ($item['coupon_classify'] == '赠品券'){
+            } elseif ($item['coupon_classify'] == '赠品券') {
                 $data['zengpin'] += 1;
-            }elseif ($item['coupon_classify'] == '福利券'){
+            } elseif ($item['coupon_classify'] == '福利券') {
                 $data['fuli'] += 1;
-            }elseif ($item['coupon_classify'] == '年卡'){
+            } elseif ($item['coupon_classify'] == '年卡') {
                 $data['nianka'] += 1;
-            }elseif ($item['coupon_classify'] == '季卡'){
+            } elseif ($item['coupon_classify'] == '季卡') {
                 $data['jika'] += 1;
-            }elseif ($item['coupon_classify'] == '月卡'){
+            } elseif ($item['coupon_classify'] == '月卡') {
                 $data['yueka'] += 1;
             }
         }
-        $data['total'] = $data['manjian']+$data['diyong']+$data['zhekou']+$data['lijian']+$data['zengpin']+$data['fuli']+$data['nianka']+$data['jika']+$data['yueka'];
+        $data['total'] = $data['manjian'] + $data['diyong'] + $data['zhekou'] + $data['lijian'] + $data['zengpin'] + $data['fuli'] + $data['nianka'] + $data['jika'] + $data['yueka'];
 
-        return json_success('',$data);
+        return json_success('', $data);
     }
 
     /**
@@ -528,9 +529,16 @@ class MemberController
         ])
             ->leftJoin('coupon', 'coupon.coupon_id', '=', 'coupon_detail.join_detail_coupon_id')
             ->where('join_coupon_detail_member_id', $memberId)
-            ->where('coupon.coupon_classify', $classify);
+            ->where('coupon.coupon_classify', $classify)
+            ->groupBy('join_coupon_detail_member_id', 'join_detail_coupon_id');
         $total = $coupons->count();
-        $rows = $coupons->select('coupon_detail.*', 'coupon.coupon_name', 'coupon.coupon_classify','coupon_value')
+        $rows = $coupons->select('coupon_detail.join_coupon_detail_member_id', 'coupon_detail.join_detail_coupon_id'
+            , 'coupon.coupon_name', 'coupon.coupon_classify', 'coupon.coupon_value')
+            ->selectRaw('COUNT(1) as total, 
+                COUNT(IF(app_coupon_detail.coupon_detail_status="USED",1,NULL)) as used_total, 
+                COUNT(IF(app_coupon_detail.coupon_detail_status="ACTIVED" or app_coupon_detail.coupon_detail_status="WAITING",1,NULL)) as unused_total,
+                MAX(app_coupon_detail.coupon_detail_deadline_datetime) as deadline_datetime')
+            ->orderBy('deadline_datetime','DESC')
             ->forPage($page, $pageSize)
             ->get()
             ->toArray();
@@ -549,7 +557,71 @@ class MemberController
             $item['member_name'] = MemberService::getMemberName($mobile, $certName, $nickname);
             unset($item['member'], $item['cert'], $item['info']);
 
-            $data[$item['coupon_classify']][] = $item;
+            $item['invalid_total'] = $item['total'] - $item['used_total'] - $item['unused_total'];
+            // 优惠券分类
+            $coupon = Coupon::with('category')->where('coupon_id', $item['join_detail_coupon_id'])
+                ->select('coupon_id', 'join_coupon_category_id')
+                ->first();
+            if (!empty($coupon) && !empty($coupon->category)) {
+                $item['category_name'] = $coupon->category->category_name;
+            }
+        }
+
+        return json_success('', compact('rows', 'page', 'pageSize', 'total'));
+    }
+
+    /**
+     * @Desc 我的卡券 领取记录
+     * @Author Gorden
+     * @Date 2024/8/22 18:45
+     *
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function couponDetail(Request $request)
+    {
+        $memberId = $request->get('member_id', '');
+        $couponId = $request->get('coupon_id', '');
+        $page = $request->get('page', 1);
+        $pageSize = $request->get('pageSize', 20);
+
+        $coupons = CouponDetail::with([
+            'member' => function ($query) {
+                $query->select('member_id', 'member_mobile');
+            },
+            'cert' => function ($query) {
+                $query->select('join_cert_member_id', 'member_cert_name');
+            },
+            'info' => function ($query) {
+                $query->select('join_info_member_id', 'member_info_nickname');
+            }
+        ])
+            ->leftJoin('coupon', 'coupon.coupon_id', '=', 'coupon_detail.join_detail_coupon_id')
+            ->where('join_coupon_detail_member_id', $memberId)
+            ->where('coupon.coupon_id', $couponId);
+        $total = $coupons->count();
+        $rows = $coupons->select('coupon_detail.*', 'coupon.coupon_name', 'coupon.coupon_classify', 'coupon.coupon_value')
+            ->orderBy('coupon_detail_deadline_datetime', 'desc')
+            ->forPage($page, $pageSize)
+            ->get()
+            ->toArray();
+
+        foreach ($rows as &$item) {
+            $mobile = $certName = $nickname = '';
+            if (!empty($item['member']) && !empty($item['member']['member_mobile'])) {
+                $mobile = $item['member']['member_mobile'];
+            }
+            if (!empty($item['cert']) && !empty($item['cert']['member_cert_name'])) {
+                $certName = $item['cert']['member_cert_name'];
+            }
+            if (!empty($item['info']) && !empty($item['info']['member_info_nickname'])) {
+                $nickname = $item['info']['member_info_nickname'];
+            }
+            $item['member_name'] = MemberService::getMemberName($mobile, $certName, $nickname);
+            unset($item['member'], $item['cert'], $item['info']);
+            if (!empty($coupon) && !empty($coupon->category)) {
+                $item['category_name'] = $coupon->category->category_name;
+            }
         }
 
         return json_success('', compact('rows', 'page', 'pageSize', 'total'));

+ 5 - 1
app/admin/controller/order/KangyangCityController.php

@@ -361,6 +361,11 @@ class KangyangCityController extends Curd{
 
             Db::commit();
 
+            // 会员升级
+            if (!empty($params['order_is_complete']) && $params['order_is_complete'] == 'Y' && $params['order_status_payment'] == 'SUCCESS') {
+                Event::dispatch('order.complete', $params);
+            }
+
             if ($params['settlement_now'] == 'Y' && $params['order_status_payment'] != 'SUCCESS') {
                 _syslog("订单", "支付异常,检查是否有轮询");
                 return json_throw(2001, '支付异常', ['order_id' => $params['orderId']]);
@@ -586,7 +591,6 @@ class KangyangCityController extends Curd{
 
             Db::commit();
 
-            // 会员升级
             if ($order->order_is_complete == 'Y' && $order->order_status_payment == 'SUCCESS') {
                 Event::dispatch('order.complete', $params);
             }

+ 2 - 2
app/admin/controller/order/WholeController.php

@@ -1160,7 +1160,7 @@ class WholeController extends Curd
             }
 
             // // 买的单个服务
-            if ($order->order_status_payment == 'SUCCESS') {
+            if ($order->order_status_payment == 'SUCCESS' && empty($appointment)) {
                 foreach ($params['goodsContentList'] as $goods) {
                     $params['join_sheet_goods_id'] = $goods['goods_id'];
                     if (isset($goods['goods_classify']) && in_array($goods['goods_classify'], ['SERVICE', 'CHNMED', 'CHNNCD'])) {
@@ -1605,7 +1605,7 @@ class WholeController extends Curd
                 $appointment->save();
             }
             // 买单个服务
-            if ($order->order_status_payment == 'SUCCESS') {
+            if ($order->order_status_payment == 'SUCCESS' && empty($appointment)) {
                 foreach ($params['goodsContentList'] as $goods) {
                     $params['join_sheet_goods_id'] = $goods['goods_id'];
                     if (isset($goods['goods_classify']) && in_array($goods['goods_classify'], ['SERVICE', 'CHNMED', 'CHNNCD'])) {

+ 2 - 0
app/admin/service/member/MemberService.php

@@ -3,6 +3,7 @@
 namespace app\admin\service\member;
 
 use app\model\ClientPoints;
+use app\model\CouponDetail;
 use app\model\Device;
 use app\model\Family;
 use app\model\FamilyMember;
@@ -94,6 +95,7 @@ class MemberService
             ->toArray();
 
         foreach ($rows as &$row) {
+            $row['coupon_count'] = CouponDetail::where('join_coupon_detail_member_id',$row['member_id'])->count();
             $row['member_mobile'] = substr($row['member_mobile'], 0, 3) . '****' . substr($row['member_mobile'], 7);
             $row['info'] = [
                 'member_info_nickname' => !empty($row['member_info_nickname']) ? $row['member_info_nickname'] : substr($row['member_mobile'], -4, 4) . '用户',

+ 1 - 0
route/admin.php

@@ -685,6 +685,7 @@ Route::group('/admin', function () {
             Route::get('/vipInfo', [\app\admin\controller\member\MemberController::class, 'vipInfo']);
             Route::get('/coupon', [\app\admin\controller\member\MemberController::class, 'coupon']);
             Route::get('/couponCount', [\app\admin\controller\member\MemberController::class, 'couponCount']);
+            Route::get('/couponDetail', [\app\admin\controller\member\MemberController::class, 'couponDetail']);
             Route::get('/balanceInfo', [\app\admin\controller\member\MemberController::class, 'balanceInfo']);
             Route::get('/pointInfo', [\app\admin\controller\member\MemberController::class, 'pointInfo']);
             Route::get('/list', [\app\admin\controller\member\MemberController::class, 'list']);