Browse Source

完善功能

gorden 9 months ago
parent
commit
ce5ab468b9
1 changed files with 22 additions and 6 deletions
  1. 22 6
      app/admin/controller/member/QuotaController.php

+ 22 - 6
app/admin/controller/member/QuotaController.php

@@ -16,6 +16,7 @@ use support\Redis;
 use support\exception\BusinessException;
 use support\Request;
 use support\Response;
+use support\view\Raw;
 
 class QuotaController extends Curd
 {
@@ -30,8 +31,8 @@ class QuotaController extends Curd
     {
         $page = $request->get('page', 1);
         $pageSize = $request->get('pageSize', 20);
-
         $keywords = $request->get('keywords', '');
+        $memberId = $request->get('member_id', '');
         $memberIds = [];
         if (!empty($keywords)) {
             $memberIds = Member::leftJoin('member_cert', 'member_cert.join_cert_member_id', '=', 'member.member_id')
@@ -44,16 +45,30 @@ class QuotaController extends Curd
             }
         }
 
-        $rows = MemberQuota::select('join_quota_member_id', 'join_member_rule_added_component_id', 'member_quota_addtimes')
+        if (!empty($memberId)) {
+            $memberIds = $memberId;
+        }
+
+        foreach ($memberIds as &$id){
+            $id = "'".$id."'";
+        }
+
+        $rows = MemberQuota::select('join_quota_member_id', 'join_member_rule_added_component_id', Db::raw('MAX(member_quota_addtimes) as new_addtimes'))
+
+//            ->when(!empty($memberIds), function ($query) use ($placeholders,$pars) {
+//                $query->whereRaw("join_quota_member_id in ($placeholders))", $pars);
+//            })
             ->when(!empty($memberIds), function ($query) use ($memberIds) {
                 $query->whereIn('join_quota_member_id', $memberIds);
             })
-            ->groupBy('join_quota_member_id', 'join_member_rule_added_component_id', 'member_quota_addtimes');
+            ->groupBy('join_member_rule_added_component_id', 'join_quota_member_id');
 
-        $total = $rows->count();
+        $bindings = $rows->getBindings();
+        $sql = str_replace('?', '%s', $rows->toSql());
+        $sql = sprintf($sql, ...$bindings);
+        $total = MemberQuota::from(Db::raw("({$sql}) t"))->count();
 
-        $rows = $rows->orderBy('member_quota_addtimes', 'DESC')
-            ->forPage($page, $pageSize)
+        $rows = MemberQuota::from(Db::raw("({$sql}) t"))->orderByDesc('new_addtimes')->forPage($page, $pageSize)
             ->get()
             ->toArray();
         foreach ($rows as &$row) {
@@ -88,6 +103,7 @@ class QuotaController extends Curd
 
             $row = $quota;
         }
+
         return json_success('', compact('rows', 'page', 'pageSize', 'total'));
     }