AdminUserController.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Filters\AdminUserFilter;
  4. use App\Http\Requests\AdminUserProfileRequest;
  5. use App\Http\Requests\AdminUserRequest;
  6. use App\Http\Resources\AdminUserResource;
  7. use App\Models\AdminMerchant;
  8. use App\Models\AdminMerchants;
  9. use App\Models\AdminRole;
  10. use App\Models\AdminUser;
  11. use App\Utils\Admin;
  12. use Illuminate\Http\Request;
  13. use Illuminate\Support\Facades\Log;
  14. class AdminUserController extends AdminBaseController
  15. {
  16. public function user()
  17. {
  18. $user = Admin::user();
  19. return $this->ok(
  20. AdminUserResource::make($user)
  21. ->gatherAllPermissions()
  22. ->onlyRolePermissionSlugs()
  23. );
  24. }
  25. public function areaAdmin()
  26. {
  27. // if(Admin::isAdministrator() || Admin::isNormalAdministrator()){
  28. // $users = AdminUser::query()->where('type',AdminUser::TYPE_ADMIN)->get();
  29. // }else{
  30. //
  31. // }
  32. $users = AdminUser::query()->where('type', AdminUser::TYPE_ADMIN)->get();
  33. // $areaAdmin = AdminUser::getAreaAdmin();
  34. // if (count($areaAdmin) !== 0) {
  35. // $data = [];
  36. // foreach ($areaAdmin as $v) {
  37. // $data[] = [
  38. // 'id' => $v->id,
  39. // 'name' => $v->name];
  40. // }
  41. // }
  42. //$administrator = AdminUser::getAAdmin();
  43. foreach ($users as $v) {
  44. $data[] = [
  45. 'id' => $v->id,
  46. 'name' => $v->name];
  47. }
  48. return $this->ok($data);
  49. }
  50. public function editUser()
  51. {
  52. $user = Admin::user();
  53. $user->load(['roles', 'permissions', 'areas']);
  54. return $this->ok(AdminUserResource::make($user));
  55. }
  56. public function updateUser(AdminUserProfileRequest $request)
  57. {
  58. $inputs = $request->validated();
  59. Admin::user()->updateUser($inputs);
  60. return $this->callAction('user', [])->setStatusCode(201);
  61. }
  62. // 管理员列表
  63. public function index(AdminUserFilter $filter)
  64. {
  65. $user = Admin::user();
  66. ///
  67. $userQuery = AdminUser::query()
  68. ->filter($filter)
  69. ->where('type', AdminUser::TYPE_ADMIN);
  70. if (Admin::user()->isRole(AdminRole::ADMINISTROTOR)) {
  71. // 技术管理员
  72. $userQuery->with(['roles', 'permissions', 'areas']);
  73. } else if (Admin::user()->isRole(AdminRole::MERCHANTSADMIN)) {
  74. // 商户管理员
  75. $userQuery->with(['roles', 'permissions', 'areas']);
  76. $userQuery->where('merchant_id', AdminMerchant::getMchId());
  77. }
  78. /*elseif (Admin::user()->isRole(AdminRole::NORMALADMINISTRATOR)) {
  79. //超级管理员
  80. // Log::info('mimiimimimmimi');
  81. $userQuery->whereNotIn('id', [1, $user->id])
  82. ->where('merchant_id', $user->merchant_id)
  83. ->whereHas('roles', function ($q) {
  84. $q->whereNotIn('slug', [AdminRole::ADMINISTROTOR, AdminRole::MERCHANTSADMIN, AdminRole::NORMALADMINISTRATOR]);
  85. })
  86. ->with(['roles', 'permissions', 'areas']);
  87. } */
  88. else {
  89. // 普通管理员
  90. $userQuery->whereNotIn('id', [1, $user->id])
  91. ->whereHas('roles', function ($q) {
  92. $q->whereNotIn('slug', [AdminRole::ADMINISTROTOR, AdminRole::MERCHANTSADMIN]);
  93. })
  94. ->where('pid', $user->id)
  95. ->where('merchant_id', $user->merchant_id)
  96. ->with(['roles', 'permissions', 'areas']);
  97. }
  98. $users = $userQuery->orderByDesc('id')->paginate();
  99. ///
  100. return $this->ok(AdminUserResource::collection($users));
  101. }
  102. /**
  103. * 添加管理员
  104. * @param AdminUserRequest $request
  105. * @param AdminUser $user
  106. * @return \Illuminate\Http\JsonResponse
  107. */
  108. public function store(AdminUserRequest $request, AdminUser $user)
  109. {
  110. $id = Admin::user()->id;
  111. $inputs = $request->validated();
  112. $inputs['pid'] = $id;
  113. $user = $user::createUser($inputs);
  114. if (!empty($q = $request->post('roles', []))) {
  115. $user->roles()->attach($q);
  116. }
  117. if (!empty($q = $request->post('areas', []))) {
  118. $user->areas()->attach($q);
  119. }
  120. if (!empty($q = $request->post('permissions', []))) {
  121. $user->permissions()->attach($q);
  122. }
  123. $admin_role = AdminRole::query()->find($request->roles[0]);
  124. if(!$admin_role){
  125. return $this->error('请先添加角色'); // 商户管理员不能添加商户
  126. }
  127. // 超级管理员可以添加商户
  128. $update_merchant_id = 0;
  129. if (Admin::user()->isRole(AdminRole::ADMINISTROTOR) and $admin_role->slug == AdminRole::MERCHANTSADMIN) {
  130. return $this->error('管理员暂时不能添加商户'); // 商户管理员不能添加商户
  131. // AdminMerchants::create(['admin_id' => $user->id]); // 添加商户
  132. // AdminUser::query()->where('id', $user->id)->update(['merchant_id' => 0]); // 写入商户
  133. } else if (Admin::user()->isRole(AdminRole::MERCHANTSADMIN)) {
  134. // 商户添加用户 绑定
  135. $update_merchant_id = AdminMerchant::getMchId();
  136. // AdminUser::query()->where('id', $user->id)->update(['merchant_id' => $id]); // 写入商户
  137. } else {
  138. $update_merchant_id = Admin::user()->merchant_id;
  139. // AdminUser::query()->where('id', $user->id)->update(['merchant_id' => Admin::user()->merchant_id]);
  140. }
  141. // 添加商户id
  142. AdminUser::query()->where('id', $user->id)->update(['merchant_id' => $update_merchant_id]);
  143. return $this->created(AdminUserResource::make($user));
  144. }
  145. public function show(AdminUser $adminUser)
  146. {
  147. $adminUser->load(['roles', 'permissions', 'areas']);
  148. return $this->ok(AdminUserResource::make($adminUser));
  149. }
  150. public function update(AdminUserRequest $request, AdminUser $adminUser)
  151. {
  152. $inputs = $request->validated();
  153. //Log::info($inputs);
  154. $adminUser->updateUser($inputs);
  155. if (isset($inputs['roles'])) {
  156. $adminUser->roles()->sync($inputs['roles']);
  157. }
  158. if (isset($inputs['areas'])) {
  159. $adminUser->areas()->sync($inputs['areas']);
  160. }
  161. if (isset($inputs['permissions'])) {
  162. $adminUser->permissions()->sync($inputs['permissions']);
  163. }
  164. return $this->created(AdminUserResource::make($adminUser));
  165. }
  166. public function destroy(AdminUser $adminUser)
  167. {
  168. $adminUser->delete();
  169. return $this->noContent();
  170. }
  171. public function edit(AdminUser $adminUser)
  172. {
  173. $adminUser->load(['roles', 'permissions', 'areas']);
  174. return $this->ok(AdminUserResource::make($adminUser)->onlyRolePermissionIds());
  175. }
  176. }