UserController.php 5.5 KB

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