浏览代码

补字段

gorden 6 月之前
父节点
当前提交
091fae1f93

+ 19 - 3
app/admin/controller/coupon/CouponDetailController.php

@@ -8,6 +8,7 @@ use app\controller\Curd;
 use app\model\Coupon;
 use app\model\CouponDetail;
 use app\model\CouponGoods;
+use app\model\Member;
 use support\Request;
 use support\Response;
 
@@ -184,7 +185,7 @@ class CouponDetailController extends Curd
         }
 
         $detail = CouponDetail::where('coupon_detail_id', $detailId)
-            ->select('coupon_detail_id', 'coupon_detail_extend_json')
+            ->select('coupon_detail_id', 'coupon_detail_extend_json','join_coupon_detail_member_id')
             ->first();
         if (!empty($detail->coupon_detail_extend_json)) {
             $couponDetailExtendJson = json_decode($detail->coupon_detail_extend_json, true);
@@ -193,6 +194,21 @@ class CouponDetailController extends Curd
             }
         }
 
+        $member = Member::with([
+            'info' => function ($query) {
+                $query->select('join_info_member_id', 'member_info_headimg');
+            },
+            'role' => function ($query) {
+                $query->select('member_role_id', 'member_role_name');
+            }
+        ])->where('member_id', $detail->join_coupon_detail_member_id)
+            ->select('member_id', 'join_member_role_id', 'member_is_owner', 'member_is_vip', 'member_is_partner', 'member_is_referrer')
+            ->first();
+
+        $member->info->member_info_headimg = MemberService::getAvatarUrl(!empty($member->info) && !empty($member->info->member_info_headimg) ? $member->info->member_info_headimg : '');
+
+        $detail->member = $member;
+
         return json_success('', $detail);
     }
 
@@ -222,8 +238,8 @@ class CouponDetailController extends Curd
             }
         ])->whereIn('join_detail_coupon_id', $couponIds)
             ->where('join_coupon_detail_member_id', $memberId)
-            ->where('coupon_detail_gain_datetime','<',date('Y-m-d H:i:s'))
-            ->where('coupon_detail_deadline_datetime','>',date('Y-m-d H:i:s'));
+            ->where('coupon_detail_gain_datetime', '<', date('Y-m-d H:i:s'))
+            ->where('coupon_detail_deadline_datetime', '>', date('Y-m-d H:i:s'));
 
         if ($settlementNow == 'Y') {
             $details = $details->whereIn('coupon_detail.coupon_detail_status', ['ACTIVED', 'WAITING']);

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

@@ -368,6 +368,39 @@ class MemberController
         return MemberService::info($memberId);
     }
 
+    /**
+     * @Desc 会员统计
+     * @Author Gorden
+     * @Date 2024/10/21 16:31
+     *
+     * @return \support\Response
+     */
+    public function statistics()
+    {
+        $todayStart = strtotime(date('Y-m-d'));
+        $todayEnd = strtotime(date('Y-m-d 23:59:59'));
+        $todayCount = Member::where('member_addtimes' ,'>=', $todayStart)->where('member_addtimes', '<=', $todayEnd)->count();
+
+        $yesterdayStart = strtotime(date('Y-m-d', strtotime("-1 day")));
+        $yesterdayEnd = strtotime(date('Y-m-d 23:59:59', strtotime("-1 day")));
+        $yesterdayCount = Member::where('member_addtimes' ,'>=', $yesterdayStart)->where('member_addtimes', '<=', $yesterdayEnd)->count();
+
+        $monthStart = strtotime(date('Y-m-01'));
+        $monthEnd = strtotime(date('Y-m-t 23:59:59'));
+        $monthCount = Member::where('member_addtimes', '>=', $monthStart)->where('member_addtimes', '<=', $monthEnd)->count();
+
+        $lastMonthStart = strtotime(date('Y-m-01',strtotime("last day of -1 month")));
+        $lastMonthEnd = strtotime(date('Y-m-t 23:59:59',strtotime("last day of -1 month")));
+        $lastMonthCount = Member::where('member_addtimes', '>=', $lastMonthStart)->where('member_addtimes', '<=', $lastMonthEnd)->count();
+
+        return json_success('',[
+            'todayCount'=>$todayCount,
+            'yesterdayCount' => $yesterdayCount,
+            'monthCount' => $monthCount,
+            'lastMonthCount' => $lastMonthCount
+        ]);
+    }
+
     public function vipInfo(Request $request)
     {
         $memberId = $request->get('member_id', '');

+ 11 - 12
app/admin/service/member/MemberService.php

@@ -257,7 +257,6 @@ class MemberService
         return json_success('', compact('rows', 'page', 'pageSize', 'total'));
     }
 
-
     public static function exportMember(Request $request)
     {
         $memberIds = $request->get('member_id', '');
@@ -1111,12 +1110,12 @@ class MemberService
             } else if (mb_substr($item['goods_category'], 0, 7) == '会员合伙人产品') {
                 $item['goods_category'] = '会员合伙人充值';
             }
-            if (in_array($item['pay_category'], ['RECHARGE', 'REFUND', 'GIVE','CROWN_CONTINUE', 'PARTNER', 'IN'])) {
+            if (in_array($item['pay_category'], ['RECHARGE', 'REFUND', 'GIVE', 'CROWN_CONTINUE', 'PARTNER', 'IN'])) {
                 $item['balance_type'] = 'add';
             } else {
                 $item['balance_type'] = 'cut';
             }
-            if ($key == 0 && in_array($item['pay_category'], ['RECHARGE', 'REFUND', 'GIVE','CROWN_CONTINUE'])) {
+            if ($key == 0 && in_array($item['pay_category'], ['RECHARGE', 'REFUND', 'GIVE', 'CROWN_CONTINUE'])) {
                 if (!empty($item['pay_extend_json']) && !in_array($item['join_pay_order_id'], ['PARTNER', 'COMBINE'])) {
                     $extendJson = json_decode($item['pay_extend_json'], true);
                     if (!isset($extendJson['added_amount'])) {
@@ -1128,9 +1127,9 @@ class MemberService
 //                    }
                     if (isset($extendJson['added_amount']) && floatval($extendJson['added_amount']) > 0) {
                         $payCategory = 'ADDED';
-                        if ($item['pay_category'] == 'GIVE'){
+                        if ($item['pay_category'] == 'GIVE') {
                             $payCategory = 'GIVE';
-                        }elseif ($item['pay_category'] == 'CROWN_CONTINUE'){
+                        } elseif ($item['pay_category'] == 'CROWN_CONTINUE') {
                             $payCategory = 'CROWN_CONTINUE';
                         }
                         $data[] = [
@@ -1165,21 +1164,21 @@ class MemberService
 
                 $item['balance'] = number_format($balance, 2, '.', '');
                 $balance = $balance - $item['pay_amount'];
-                if (!in_array($item['pay_category'],['GIVE','CROWN_CONTINUE']) ) {
+                if (!in_array($item['pay_category'], ['GIVE', 'CROWN_CONTINUE'])) {
                     $data[] = $item;
                 }
 
                 continue;
             }
 
-            if (in_array($item['pay_category'], ['RECHARGE', 'REFUND', 'GIVE','CROWN_CONTINUE', 'PARTNER', 'COMBINE', 'IN'])) {
+            if (in_array($item['pay_category'], ['RECHARGE', 'REFUND', 'GIVE', 'CROWN_CONTINUE', 'PARTNER', 'COMBINE', 'IN'])) {
                 if (!empty($item['pay_extend_json']) && !in_array($item['join_pay_order_id'], ['PARTNER', 'COMBINE'])) {
                     $extendJson = json_decode($item['pay_extend_json'], true);
                     if (isset($extendJson['added_amount']) && floatval($extendJson['added_amount']) > 0) {
                         $payCategory = 'ADDED';
-                        if ($item['pay_category'] == 'GIVE'){
+                        if ($item['pay_category'] == 'GIVE') {
                             $payCategory = 'GIVE';
-                        }elseif ($item['pay_category'] == 'CROWN_CONTINUE'){
+                        } elseif ($item['pay_category'] == 'CROWN_CONTINUE') {
                             $payCategory = 'CROWN_CONTINUE';
                         }
                         $data[] = [
@@ -1218,7 +1217,7 @@ class MemberService
                 $balance = $balance + $item['pay_amount'];
             }
 
-            if (!in_array($item['pay_category'],['GIVE','CROWN_CONTINUE']) ) {
+            if (!in_array($item['pay_category'], ['GIVE', 'CROWN_CONTINUE'])) {
                 $data[] = $item;
             }
         }
@@ -1916,7 +1915,7 @@ class MemberService
     {
         $members = Member::where('join_member_role_id', '<>', '')->get()->toArray();
         foreach ($members as $member) {
-            if (empty($member['member_role_begintime'])){
+            if (empty($member['member_role_begintime'])) {
                 continue;
             }
             $endDateTime = date('Y-m-d 23:59:59', strtotime($member['member_role_begintime'] . ' +364 days'));
@@ -1926,7 +1925,7 @@ class MemberService
             $memberUpdate = [
                 'join_member_role_id' => '',
                 'member_role_begintime' => '',
-                'member_role_config_json'=>'[]'
+                'member_role_config_json' => '[]'
             ];
             if (!empty($member['member_role_config_json'])) {
                 $roleConfigJson = json_decode($member['member_role_config_json'], true);

+ 12 - 6
app/admin/service/order/AppointmentService.php

@@ -14,6 +14,7 @@ use app\model\MemberBenefit;
 use app\model\MemberCert;
 use app\model\MemberInfo;
 use app\model\MemberQuota;
+use app\model\MemberRole;
 use app\model\Order;
 use app\model\OrderSheet;
 use app\model\PayDetail;
@@ -36,7 +37,7 @@ class AppointmentService
         $premisesName = $request->get('premises', '');
         $appointmentMode = $request->get('appointment_mode', '');
         $type = $request->get('type', '');
-        $memberId = $request->get('join_appointment_member_id','');
+        $memberId = $request->get('join_appointment_member_id', '');
 
         $rows = Db::table('appointment')
             ->leftJoin('member', 'member.member_id', '=', 'appointment.join_appointment_member_id')
@@ -65,8 +66,8 @@ class AppointmentService
                 } else {
                     $query->where('appointment_mode', $appointmentMode);
                 }
-            })->when(!empty($memberId),function ($query) use ($memberId){
-                $query->where('join_appointment_member_id',$memberId);
+            })->when(!empty($memberId), function ($query) use ($memberId) {
+                $query->where('join_appointment_member_id', $memberId);
             })->when(!empty($type), function ($query) use ($type) {
                 if ($type == 'todayDONE') {
                     $query->where('appointment_status', 'DONE');
@@ -78,11 +79,11 @@ class AppointmentService
 
         $total = $rows->count('member.member_id');
         $rows = $rows->select('appointment.*',
-            'member.member_mobile',
+            'member.member_mobile', 'member.join_member_role_id', 'member.member_is_owner', 'member.member_is_vip', 'member.member_is_partner', 'member.member_is_referrer',
             'member_cert.member_cert_name',
-            'member_info.member_info_nickname',
+            'member_info.member_info_nickname','member_info.member_info_headimg',
             'goods.goods_name', 'goods.goods_cover', 'goods.goods_sales_price',
-            'order.order_id', 'order.order_name', 'goods_sku.goods_sku_specs_json', 'order.order_amount_total', 'order.order_amount_pay',
+            'order.order_id', 'order.order_groupby', 'order.order_name', 'goods_sku.goods_sku_specs_json', 'order.order_amount_total', 'order.order_amount_pay',
             'order.order_category', 'order.order_status_system', 'order.order_status_payment', 'order.order_status_storage', 'order.order_is_complete',
             'order.order_addtimes', 'order_return.order_return_status',
             'member_benefit.member_benefit_name', 'member_benefit.member_benefit_id as benefit_id'
@@ -134,6 +135,11 @@ class AppointmentService
             }
 
             $row->sku = $skuJson;
+            // 会员等级
+            if (!empty($row->join_member_role_id)) {
+                $row->role_name = MemberRole::where('member_role_id', $row->join_member_role_id)->value('member_role_name');
+            }
+            $row->member_info_headimg = MemberService::getAvatarUrl($row->member_info_headimg ?? '');
         }
         return json_success('', compact('rows', 'page', 'pageSize', 'total'));
     }

+ 7 - 1
app/model/MemberAccountList.php

@@ -2,6 +2,7 @@
 
 namespace app\model;
 
+use DateTimeInterface;
 use support\Model;
 
 class MemberAccountList extends Model
@@ -17,6 +18,11 @@ class MemberAccountList extends Model
 
     const UPDATED_AT = null;
 
+    public function serializeDate(DateTimeInterface $date)
+    {
+        return $date->format('Y-m-d H:i:s');
+    }
+
     public function member()
     {
         return $this->hasOne(Member::class, 'member_id', 'join_member_account_list_member_id');
@@ -29,6 +35,6 @@ class MemberAccountList extends Model
 
     public function memberCert()
     {
-        return $this->hasOne(MemberCert::class,'join_cert_member_id','join_member_account_list_member_id');
+        return $this->hasOne(MemberCert::class, 'join_cert_member_id', 'join_member_account_list_member_id');
     }
 }

+ 1 - 0
route/admin.php

@@ -787,6 +787,7 @@ Route::group('/admin', function () {
             Route::get('/pointInfo', [\app\admin\controller\member\MemberController::class, 'pointInfo']);
             Route::get('/list', [\app\admin\controller\member\MemberController::class, 'list']);
             Route::get('/info', [\app\admin\controller\member\MemberController::class, 'info']);
+            Route::get('/statistics', [\app\admin\controller\member\MemberController::class, 'statistics']);
             Route::post('/add', [\app\admin\controller\member\MemberController::class, 'add']);
             Route::post('/update', [\app\admin\controller\member\MemberController::class, 'update']);
             Route::get('/exportMember', [\app\admin\controller\member\MemberController::class, 'exportMember']);