UserController.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Models\Area;
  4. use App\Models\Role;
  5. use App\Models\User;
  6. use App\Repositories\UserRepository;
  7. use Illuminate\Http\Request;
  8. use App\Http\Requests;
  9. use Illuminate\Support\Facades\Config;
  10. use Illuminate\Support\Facades\File;
  11. use Illuminate\Support\Facades\Storage;
  12. use Intervention\Image\Facades\Image;
  13. class UserController extends AdminController
  14. {
  15. /*权限验证规则*/
  16. protected $validateRules = [
  17. 'name' => 'required|max:100',
  18. 'email' => 'required|email|max:255|unique:users',
  19. 'password' => 'required|min:6|max:20',
  20. ];
  21. /**
  22. * 用户管理首页
  23. */
  24. public function index(Request $request)
  25. {
  26. $filter = $request->all();
  27. $query = User::query();
  28. if(isset($filter['user_id']) && $filter['user_id'] > 0){
  29. $query->where("id","=",$filter['user_id']);
  30. }
  31. /*关键词过滤*/
  32. if( isset($filter['word']) && $filter['word'] ){
  33. $query->where(function($subQuery) use ($filter) {
  34. return $subQuery->where('name','like',$filter['word'].'%')
  35. ->orWhere('email','like',$filter['word'].'%')
  36. ->orWhere('mobile','like',$filter['word'].'%');
  37. });
  38. }
  39. /*注册时间过滤*/
  40. if( isset($filter['date_range']) && $filter['date_range'] ){
  41. $query->whereBetween('created_at',explode(" - ",$filter['date_range']));
  42. }
  43. /*状态过滤*/
  44. if( isset($filter['status']) && $filter['status'] > -2 ){
  45. $query->where('status','=',$filter['status']);
  46. }
  47. $users = $query->orderBy('created_at','desc')->paginate(Config::get('tipask.admin.page_size'));
  48. return view('admin.user.index')->with('users',$users)->with('filter',$filter);
  49. }
  50. /**
  51. * 显示用户添加页面
  52. */
  53. public function create()
  54. {
  55. $roles = Role::orderby('name','asc')->get();
  56. return view('admin.user.create')->with(compact('roles'));
  57. }
  58. /**
  59. * 保存创建用户信息
  60. */
  61. public function store(Request $request,UserRepository $userRepository)
  62. {
  63. $request->flash();
  64. $this->validate($request,$this->validateRules);
  65. $formData = $request->all();
  66. $formData['status'] = 1;
  67. $formData['visit_ip'] = $request->getClientIp();
  68. $user = $userRepository->register($formData);
  69. $user->attachRole($request->input('role_id'));
  70. return $this->success(route('admin.user.index'),'用户添加成功!');
  71. }
  72. /**
  73. * 显示用户编辑页面
  74. */
  75. public function edit($id)
  76. {
  77. $user = User::find($id);
  78. $roles = Role::orderby('name','asc')->get();
  79. $provinces = Area::provinces();
  80. $cities = Area::cities($user->province);
  81. $data = [
  82. 'provinces' => $provinces,
  83. 'cities' => $cities,
  84. ];
  85. return view('admin.user.edit')->with(compact('user','roles','data'));
  86. }
  87. /**
  88. * 保存用户修改
  89. */
  90. public function update(Request $request, $id)
  91. {
  92. $request->flash();
  93. $user = User::find($id);
  94. if(!$user){
  95. abort(404);
  96. }
  97. $this->validateRules['name'] = 'required|email|max:255|unique:users,name,'.$user->id;
  98. $this->validateRules['email'] = 'required|email|max:255|unique:users,email,'.$user->id;
  99. $this->validateRules['password'] = 'sometimes|min:6';
  100. $password = $request->input('password');
  101. if($password)
  102. {
  103. $user->password = bcrypt($password);
  104. }
  105. $user->name = $request->input('name');
  106. $user->email = $request->input('email');
  107. $user->title = $request->input('title','');
  108. $user->gender = $request->input('gender',0);
  109. $user->province = $request->input('province',0);
  110. $user->city = $request->input('city',0);
  111. $user->description = $request->input('description');
  112. $user->status = $request->input('status',0);
  113. if($request->hasFile('avatar')){
  114. $user_id = $user->id;
  115. $file = $request->file('avatar');
  116. $avatarDir = User::getAvatarDir($user_id);
  117. $extension = $file->getClientOriginalExtension();
  118. File::delete(storage_path('app/'.User::getAvatarPath($user_id,'big')));
  119. File::delete(storage_path('app/'.User::getAvatarPath($user_id,'middle')));
  120. File::delete(storage_path('app/'.User::getAvatarPath($user_id,'small')));
  121. Storage::disk('local')->put($avatarDir.'/'.User::getAvatarFileName($user_id,'origin').'.'.$extension,File::get($file));
  122. Image::make(storage_path('app/'.User::getAvatarPath($user_id,'origin',$extension)))->resize(128,128)->save(storage_path('app/'.User::getAvatarPath($user_id,'big')));
  123. Image::make(storage_path('app/'.User::getAvatarPath($user_id,'origin',$extension)))->resize(64,64)->save(storage_path('app/'.User::getAvatarPath($user_id,'middle')));
  124. Image::make(storage_path('app/'.User::getAvatarPath($user_id,'origin',$extension)))->resize(24,24)->save(storage_path('app/'.User::getAvatarPath($user_id,'small')));
  125. }
  126. $user->save();
  127. $user->detachAllRoles();
  128. $user->attachRole($request->input('role_id'));
  129. return $this->success(route('admin.user.index'),'用户修改成功');
  130. }
  131. /*用户审核*/
  132. public function verify(Request $request)
  133. {
  134. $userIds = $request->input('id');
  135. User::whereIn('id',$userIds)->update(['status'=>1]);
  136. return $this->success(route('admin.user.index').'?status=0','用户审核成功');
  137. }
  138. /**
  139. * 删除用户
  140. */
  141. public function destroy(Request $request)
  142. {
  143. $userIds = $request->input('id');
  144. User::destroy($userIds);
  145. return $this->success(route('admin.user.index'),'用户删除成功');
  146. }
  147. }