14
14
namespace App \Http \Controllers \Admin ;
15
15
16
16
use App \Exceptions \BusinessException ;
17
+ use App \Exports \UserMemberExport ;
17
18
use App \Http \Controllers \Controller ;
18
19
use App \Libs \Parameter ;
19
20
use App \Libs \QueryWhere ;
25
26
use Illuminate \Support \Facades \DB ;
26
27
use Illuminate \Support \Facades \Hash ;
27
28
use Illuminate \Support \Facades \View ;
29
+ use Maatwebsite \Excel \Facades \Excel ;
28
30
use Spatie \Permission \Models \Role ;
29
31
30
32
class UserMemberController extends Controller
@@ -52,31 +54,7 @@ public function index (Request $request)
52
54
return auth_error_return ();
53
55
}
54
56
if (request ()->wantsJson ()) {
55
- $ limit = $ request ->input ('limit ' , 15 );
56
- QueryWhere::defaultOrderBy ('users.id ' , 'DESC ' )->setRequest ($ request ->all ());
57
- $ M = $ this ->repository ->makeModel ()->select ('user_members.* ' , 'users.name ' ,'users.login_count ' ,'users.last_login_at ' ,
58
- 'user_infos.real_name ' , 'user_infos.gender ' , 'user_infos.telephone ' , 'user_infos.address ' );
59
- $ M ->join ('user_members ' , 'users.id ' , '= ' , 'user_members.user_id ' );
60
- $ M ->leftJoin ('user_infos ' , 'user_infos.user_id ' , '= ' , 'users.id ' );
61
- QueryWhere::eq ($ M , 'user_members.status ' );
62
- QueryWhere::like ($ M , 'users.name ' );
63
- QueryWhere::like ($ M , 'user_infos.real_name ' );
64
- QueryWhere::orderBy ($ M );
65
-
66
- $ roleId = QueryWhere::input ('role_id ' );
67
- if ($ roleId ) {
68
- $ role = Role::find ($ roleId );
69
- $ usersid = $ role ->users ()->pluck ('model_id ' );
70
- QueryWhere::in ($ M , 'users.id ' , $ usersid );
71
- }
72
-
73
- $ M = $ M ->paginate ($ limit );
74
- $ count = $ M ->total ();
75
- $ data = $ M ->items ();
76
- foreach ($ data as $ key => $ item ) {
77
- $ data [ $ key ]['gender ' ] = Parameter::genderItem ($ item ->gender );
78
- $ data [ $ key ]['status ' ] = Parameter::userStatusItem ($ item ->status );
79
- }
57
+ list ($ data , $ count ) = $ this ->getData ($ request , false );
80
58
$ result = [
81
59
'count ' => $ count ,
82
60
'data ' => $ data
@@ -93,6 +71,42 @@ public function index (Request $request)
93
71
}
94
72
}
95
73
74
+ private function getData (Request $ request , bool $ export = false )
75
+ {
76
+ $ limit = $ request ->input ('limit ' , 15 );
77
+ QueryWhere::defaultOrderBy ('users.id ' , 'DESC ' )->setRequest ($ request ->all ());
78
+ $ M = $ this ->repository ->makeModel ()->select ('user_members.* ' , 'users.name ' ,'users.email ' , 'users.login_count ' , 'users.last_login_at ' ,
79
+ 'user_infos.real_name ' , 'user_infos.gender ' , 'user_infos.telephone ' , 'user_infos.address ' );
80
+ $ M ->join ('user_members ' , 'users.id ' , '= ' , 'user_members.user_id ' );
81
+ $ M ->leftJoin ('user_infos ' , 'user_infos.user_id ' , '= ' , 'users.id ' );
82
+ QueryWhere::eq ($ M , 'user_members.status ' );
83
+ QueryWhere::like ($ M , 'users.name ' );
84
+ QueryWhere::like ($ M , 'user_infos.real_name ' );
85
+ QueryWhere::orderBy ($ M );
86
+
87
+ $ roleId = QueryWhere::input ('role_id ' );
88
+ if ($ roleId ) {
89
+ $ role = Role::find ($ roleId );
90
+ $ usersid = $ role ->users ()->pluck ('model_id ' );
91
+ QueryWhere::in ($ M , 'users.id ' , $ usersid );
92
+ }
93
+ if ($ export ) {
94
+ $ data = $ M ->get ();
95
+ $ count = count ($ data );
96
+ } else {
97
+ $ M = $ M ->paginate ($ limit );
98
+ $ count = $ M ->total ();
99
+ $ data = $ M ->items ();
100
+ }
101
+
102
+ foreach ($ data as $ key => $ item ) {
103
+ $ data [ $ key ]['gender ' ] = Parameter::genderItem ($ item ->gender );
104
+ $ data [ $ key ]['status ' ] = Parameter::userStatusItem ($ item ->status );
105
+ }
106
+
107
+ return [$ data , $ count ];
108
+ }
109
+
96
110
/**
97
111
* Show the form for creating a new resource.
98
112
*
@@ -272,4 +286,14 @@ public function destroy (UserMember $userMember)
272
286
{
273
287
//
274
288
}
289
+
290
+ public function export (Request $ request )
291
+ {
292
+ if (!check_admin_auth ($ this ->module_name . '_export ' )) {
293
+ return auth_error_return ();
294
+ }
295
+ list ($ data , $ count ) = $ this ->getData ($ request , true );
296
+
297
+ return Excel::download (new UserMemberExport ($ data ), date ('Y-m-d ' ) . '会员账号记录.xlsx ' );
298
+ }
275
299
}
0 commit comments