UserController.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Role;
  4. use App\User;
  5. use App\UserWorkgroup;
  6. use Exception;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Http\Response;
  9. use Illuminate\Support\Facades\Auth;
  10. use Illuminate\Support\Facades\Gate;
  11. use Illuminate\Support\Facades\Validator;
  12. class UserController extends Controller
  13. {
  14. /**
  15. * Display a listing of the resource.
  16. *
  17. * @param Request $request
  18. * @return Response
  19. */
  20. public function index(Request $request)
  21. {
  22. if(!Gate::allows('用户-查询')){ return redirect(url('/')); }
  23. $query = User::with(['roles','logistics','userWorkgroups']);
  24. if($request->has('user')){
  25. $query->where('name','like',$request->input('user'));
  26. }
  27. if($request->has('role')){
  28. $role = $request->input('role');
  29. $query->whereHas('roles',function($query) use ($role){
  30. $query->where('name','like',$role);
  31. });
  32. }
  33. $users = $query->orderBy('id','desc')->paginate($request->paginate ?? 50);
  34. $users->each(function (User $user){
  35. $user['isSuperAdmin']=$user->isSuperAdmin();
  36. });
  37. return view('maintenance.user.index',['users'=>$users]);
  38. }
  39. /**
  40. * Show the form for creating a new resource.
  41. *
  42. * @return Response
  43. */
  44. public function create()
  45. {
  46. if(!Gate::allows('用户-录入')){ return redirect(url('/')); }
  47. $roles=Role::all();
  48. $logistics=app('LogisticService')->getSelection(["id","name"],"物流");
  49. $userWorkgroups=UserWorkgroup::query()->get();
  50. return view('maintenance.user.create',['rolesAll'=>$roles,'logistics'=>$logistics,'userWorkgroups'=>$userWorkgroups]);
  51. }
  52. protected function validatorCreate(array $data)
  53. {
  54. return Validator::make($data, [
  55. 'name' => ['required', 'string', 'max:50', 'unique:users'],
  56. ]);
  57. }
  58. protected function validatorUpdate(array $data)
  59. {
  60. return Validator::make($data, [
  61. 'name' => ['required', 'string', 'max:50'],
  62. ]);
  63. }
  64. /**
  65. * Show the form for editing the specified resource.
  66. *
  67. * @param User $user
  68. * @return Response
  69. */
  70. public function edit(User $user)
  71. {
  72. if(!Gate::allows('用户-编辑')){ return redirect(url('/')); }
  73. $rolesAll=Role::all();
  74. $roles=$user->roles()->get();
  75. $logistics=app('LogisticService')->getSelection(["id","name"],"物流");
  76. $logisticUser=$user->logistics()->get();
  77. $userWorkgroups=UserWorkgroup::query()->get();
  78. $userWorkgroup=$user->userWorkgroups()->first();
  79. return view('maintenance.user.edit',compact('user','rolesAll','roles','logistics','logisticUser','userWorkgroups','userWorkgroup'));
  80. }
  81. /**
  82. * Update the specified resource in storage.
  83. *
  84. * @param Request $request
  85. * @param User $user
  86. * @return Response
  87. */
  88. public function update(Request $request, User $user)
  89. {
  90. if(!Gate::allows('用户-编辑')){ return redirect(url('/')); }
  91. $this->validatorUpdate($request->all())->validate();
  92. $user->fill($request->all());
  93. $user->update();
  94. $rolesIds=$request->input('role')??'';
  95. if($rolesIds){
  96. $roleIdArr=explode(',',$rolesIds);
  97. $user->roles()->sync($roleIdArr);
  98. }else{
  99. $user->roles()->sync([]);
  100. }
  101. $carrierIds=$request->input('logistic')??'';
  102. if($carrierIds){
  103. $carrierIds=explode(',',$carrierIds);
  104. $user->logistics()->sync($carrierIds);
  105. }else{
  106. $user->logistics()->sync([]);
  107. }
  108. $userWorkgroupId=$request->input('userWorkgroupID');
  109. if($userWorkgroupId){
  110. $user->userWorkgroups()->sync([$userWorkgroupId]);
  111. }else{
  112. $user->userWorkgroups()->sync([]);
  113. }
  114. app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
  115. return redirect('maintenance/user/')->with('successTip',"成功修改用户“{$user['name']}”!");
  116. }
  117. /**
  118. * Remove the specified resource from storage.
  119. *
  120. * @param User $user
  121. * @return array|Response
  122. * @throws Exception
  123. */
  124. public function destroy(User $user)
  125. {
  126. if(!Gate::allows('用户-删除')){ return redirect(url('/')); }
  127. app('LogService')->log(__METHOD__,__FUNCTION__,$user->toJson(),Auth::user()['id']);
  128. $re=$user->delete();
  129. return ['success'=>$re];
  130. }
  131. }