Parcourir la source

添加会员返回

gorden il y a 7 mois
Parent
commit
015cc47059

+ 10 - 0
app/admin/controller/member/MemberController.php

@@ -346,6 +346,16 @@ class MemberController
         return MemberService::info($memberId);
     }
 
+    public function vipInfo(Request $request)
+    {
+        $memberId = $request->get('member_id', '');
+        if (!$memberId) {
+            return json_fail("参数错误");
+        }
+
+        return MemberService::vipInfo($request);
+    }
+
     public function welfareInfo(Request $request)
     {
         $memberId = $request->get('member_id', '');

+ 11 - 1
app/admin/controller/order/WholeController.php

@@ -1091,6 +1091,12 @@ class WholeController extends Curd
             //         ]);
             //     }
             // }
+            
+            // 2.4W 康养城
+            if ($params['goods_classify'] == 'VIP' && intval($params['order_amount_pay']) == 24000 && $order->order_status_payment == 'SUCCESS'){
+                $params['member_id'] = $params['join_order_member_id'];
+                Event::dispatch('order.kangyangCityVIP.grant',$params);
+            }
 
             Db::commit();
             
@@ -1652,7 +1658,11 @@ class WholeController extends Curd
             //     }
             // }
 
-            
+            // 2.4W 康养城
+            if ($params['goods_classify'] == 'VIP' && intval($params['order_amount_pay']) == 24000 && $params['order_status_payment'] == 'SUCCESS'){
+                $params['member_id'] = $params['join_order_member_id'];
+                Event::dispatch('order.kangyangCityVIP.grant',$params);
+            }
 
             Db::commit();
             

+ 0 - 1
app/admin/service/goods/GoodsService.php

@@ -567,7 +567,6 @@ class GoodsService
             ->orderBy('goods_addtimes','DESC')
             ->get()
             ->toArray();
-            dump($goods);
         foreach ($goods as &$good) {
             if (!empty($good['sku'])) {
                 foreach ($good['sku'] as $key => $sku) {

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

@@ -77,7 +77,7 @@ class MemberService
                 }
                 $query->whereBetween('member.member_addtimes', $addtime);
             })
-            ->select('member_id', 'member_is_owner', 'member_classify', 'member_status', 'member_mobile', 'member_from', 'member_addtimes', 'member_extend_json',
+            ->select('member_id','member_is_vip', 'member_is_owner', 'member_classify', 'member_status', 'member_mobile', 'member_from', 'member_addtimes', 'member_extend_json',
                 'member_info.member_info_nickname', 'member_info.member_info_headimg',
                 'member_role.member_role_id', 'member_role.member_role_name',
                 'member_cert.member_cert_birth', 'member_cert.member_cert_gender', 'member_cert.member_cert_name', 'member_cert.member_cert_nbr', 'member_cert.member_cert_province', 'member_cert.member_cert_addr', 'member_cert.member_cert_face', 'member_cert.member_cert_photo', 'member_cert.member_cert_nation',
@@ -142,6 +142,14 @@ class MemberService
                             'member_account_surplus' => $item['member_account_surplus'],
                             'member_account_added' => $item['member_account_added'],
                         ];
+                    } else if ($item['member_account_classify'] == 'VIP') {
+                        $account['vip'] = [
+                            'member_account_name' => $item['member_account_name'],
+                            'member_account_income' => $item['member_account_income'],
+                            'member_account_expend' => $item['member_account_expend'],
+                            'member_account_surplus' => $item['member_account_surplus'],
+                            'member_account_added' => $item['member_account_added'],
+                        ];
                     }
                 }
             }
@@ -336,6 +344,120 @@ class MemberService
         return json_success('', $member);
     }
 
+    /**
+     * VIP账户明细
+     */
+    public static function vipInfo(Request $request)
+    {
+        $memberId = $request->get('member_id', '');
+        $page = $request->get('page', 1);
+        $pageSize = $request->get('pageSize', 20);
+
+        $account = MemberAccount::where('join_account_member_id', $memberId)
+            ->where('member_account_classify', 'VIP')
+            ->first();
+        $balance = $account->member_account_surplus + $account->member_account_added;
+
+        $info = PayDetail::where(function ($query) use ($memberId) {
+            $query->where('join_pay_member_id', $memberId)
+                // ->whereIn('pay_prepayid', ['W06', 'A01'])
+                ->where('pay_category', 'VIP')
+                ->where('pay_status', 'SUCCESS');
+        })->orWhere(function ($query) use ($memberId) {
+            $query->where('join_pay_member_id', $memberId)
+                ->where('pay_prepayid','like', '%VIP%')
+                ->where('pay_status', 'SUCCESS');
+        })->orderByDesc('pay_addtimes')
+            ->get()
+            ->toArray();
+        $data = [];
+        foreach ($info as $key => $item) {
+            $categoryIds = [];
+            if(!empty($item['join_pay_order_id'])){
+                $orderIds = Order::where('order_groupby', $item['join_pay_order_id'])->pluck('order_id');
+                $goodsIds = OrderSheet::whereIn('join_sheet_order_id', $orderIds)->pluck('join_sheet_goods_id');
+                $categoryIds = Goods::whereIn('goods_id', $goodsIds)->pluck('join_goods_category_id');
+            }
+            
+
+            $categoryName = [];
+            foreach ($categoryIds as $id) {
+                $category = SysCategory::where('category_id', $id)->first();
+                if (!empty($category->category_super_path)) {
+                    $path = explode('#', $category->category_super_path);
+                    $ids = array_filter($path);
+                    $categoryName[] = SysCategory::where('category_id', current($ids))->value('category_name');
+                } else {
+                    $categoryName[] = $category->category_name;
+                }
+            }
+            $item['goods_category'] = implode(',', array_unique($categoryName));
+            if(mb_substr($item['goods_category'],0,7) == '自定义金额充值'){
+                $item['goods_category'] = '自定义金额充值';
+            }
+
+            if (in_array($item['pay_category'], ['VIP', 'REFUND'])) {
+                $item['balance_type'] = 'add';
+            } else {
+                $item['balance_type'] = 'cut';
+            }
+            if ($key == 0 && in_array($item['pay_category'], ['VIP', 'REFUND'])) {
+                if (!empty($item['pay_extend_json'])) {
+                    $extendJson = json_decode($item['pay_extend_json'], true);
+                    if (!isset($extendJson['added_amount'])) {
+                        $extendJson['added_amount'] = 0;
+                    }
+                    if (isset($extendJson['added_amount']) && floatval($extendJson['added_amount']) > 0) {
+                        $data[] = [
+                            'join_pay_member_id' => $item['join_pay_member_id'],
+                            'pay_addtimes' => $item['pay_addtimes'],
+                            'pay_amount' => $extendJson['added_amount'],
+                            'pay_category' => 'ADDED',
+                            'balance' => number_format($balance, 2, '.', ''),
+                            'balance_type' => 'add',
+                        ];
+                    }
+                    $balance = $balance - $extendJson['added_amount'];
+                }
+
+                $item['balance'] = number_format($balance, 2, '.', '');
+                $balance = $balance - $item['pay_amount'];
+                $data[] = $item;
+                continue;
+            }
+
+            if (in_array($item['pay_category'], ['VIP', 'REFUND'])) {
+                if (!empty($item['pay_extend_json'])) {
+                    $extendJson = json_decode($item['pay_extend_json'], true);
+                    if (isset($extendJson['added_amount']) && floatval($extendJson['added_amount']) > 0) {
+                        $data[] = [
+                            'join_pay_member_id' => $item['join_pay_member_id'],
+                            'pay_addtimes' => $item['pay_addtimes'],
+                            'pay_amount' => $extendJson['added_amount'],
+                            'pay_category' => 'ADDED',
+                            'balance' => number_format($balance, 2, '.', ''),
+                            'balance_type' => 'add',
+                        ];
+                        $balance = $balance - $extendJson['added_amount'];
+                    }
+                }
+                $item['balance'] = number_format($balance, 2, '.', '');
+                $balance = $balance - $item['pay_amount'];
+            } else {
+                $item['balance'] = number_format($balance, 2, '.', '');
+                $balance = $balance + $item['pay_amount'];
+            }
+
+            $data[] = $item;
+        }
+
+        $total = count($data);
+        $start = ($page-1)*$pageSize;
+        $rows = array_slice($data,$start,$pageSize);
+
+        return json_success('', compact('rows', 'page', 'pageSize', 'total'));
+    }
+
     public static function welfareInfo(Request $request)
     {
         $memberId = $request->get('member_id', '');
@@ -719,7 +841,7 @@ class MemberService
             return json_fail("数据添加失败");
         }
 
-        return json_success('数据添加成功');
+        return json_success('数据添加成功',['member_id'=>$memberId]);
     }
 
     /**

+ 0 - 10
app/event/order/KangyangCityEvent

@@ -1,10 +0,0 @@
-<?php
-
-namespace app\event\order;
-
-class KangyangCityEvent{
-    public function grant($params)
-    {
-        
-    }
-}

+ 31 - 0
app/event/order/KangyangCityEvent.php

@@ -0,0 +1,31 @@
+<?php
+
+namespace app\event\order;
+
+use app\model\Member;
+use app\model\MemberAccount;
+
+class KangyangCityEvent{
+    public function grant($params)
+    {
+        dump("进入event");
+        // 会员VIP 标识
+        Member::where('member_id',$params['member_id'])->update(['member_is_vip'=>'Y']);
+        // 康养城VIP账户
+        if (!MemberAccount::where('join_account_member_id',$params['member_id'])->where('member_account_classify','VIP')->exists()){
+            $account = [
+                'join_account_member_id' => $params['member_id'],
+                'member_account_classify' => 'VIP',
+                'member_account_status' => 'ACTIVED',
+                'member_account_category'=>'NORMAL',
+                'member_account_nbr' => $params['member_id'].'-VIP',
+                'member_account_name' => 'VIP账户',
+                'member_account_income'=>24000,
+                'member_account_surplus' => 24000,
+                'member_account_addtimes'=>time(),
+            ];
+
+            MemberAccount::insert($account);
+        }   
+    }
+}

+ 3 - 0
config/event.php

@@ -10,4 +10,7 @@ return [
     'client_message.return_status' => [
         [\app\event\ClientMessageEvent::class, 'returnStatus']
     ],
+    'order.kangyangCityVIP.grant' => [
+        [\app\event\order\KangyangCityEvent::class, 'grant']
+    ]
 ];

+ 1 - 0
route/admin.php

@@ -645,6 +645,7 @@ Route::group('/admin', function () {
             Route::get('/selectMemberAllQuota', [\app\admin\controller\member\MemberController::class, 'selectMemberAllQuota']);
             Route::get('/selectMemberAllQuotaByAppointment', [\app\admin\controller\member\MemberController::class, 'selectMemberAllQuotaByAppointment']);
             Route::get('/welfareInfo', [\app\admin\controller\member\MemberController::class, 'welfareInfo']);
+            Route::get('/vipInfo', [\app\admin\controller\member\MemberController::class, 'vipInfo']);
             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']);