AdminUserController.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  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. } /*elseif (Admin::user()->isRole(AdminRole::NORMALADMINISTRATOR)) {
  78. //超级管理员
  79. // Log::info('mimiimimimmimi');
  80. $userQuery->whereNotIn('id', [1, $user->id])
  81. ->where('merchant_id', $user->merchant_id)
  82. ->whereHas('roles', function ($q) {
  83. $q->whereNotIn('slug', [AdminRole::ADMINISTROTOR, AdminRole::MERCHANTSADMIN, AdminRole::NORMALADMINISTRATOR]);
  84. })
  85. ->with(['roles', 'permissions', 'areas']);
  86. } */
  87. else {
  88. // 普通管理员
  89. $userQuery->whereNotIn('id', [1, $user->id])
  90. ->whereHas('roles', function ($q) {
  91. $q->whereNotIn('slug', [AdminRole::ADMINISTROTOR, AdminRole::MERCHANTSADMIN]);
  92. })
  93. ->where('pid', $user->id)
  94. ->where('merchant_id', $user->merchant_id)
  95. ->with(['roles', 'permissions', 'areas']);
  96. }
  97. $users = $userQuery->orderByDesc('id')->paginate();
  98. ///
  99. return $this->ok(AdminUserResource::collection($users));
  100. }
  101. /**
  102. * 添加管理员
  103. * @param AdminUserRequest $request
  104. * @param AdminUser $user
  105. * @return \Illuminate\Http\JsonResponse
  106. */
  107. public function store(AdminUserRequest $request, AdminUser $user)
  108. {
  109. $id = Admin::user()->id;
  110. $inputs = $request->validated();
  111. $inputs['pid'] = $id;
  112. unset($inputs['roles']);
  113. unset($inputs['areas']);
  114. $user = $user::createUser($inputs);
  115. if (!empty($q = $request->post('roles', []))) {
  116. $user->roles()->attach($q);
  117. }
  118. if (!empty($q = $request->post('areas', []))) {
  119. $user->areas()->attach($q);
  120. }
  121. if (!empty($q = $request->post('permissions', []))) {
  122. $user->permissions()->attach($q);
  123. }
  124. $admin_role = AdminRole::query()->find($request->roles[0]);
  125. if (!$admin_role) {
  126. return $this->error('请先添加角色'); // 商户管理员不能添加商户
  127. }
  128. // 超级管理员可以添加商户
  129. $update_merchant_id = 0;
  130. if (Admin::user()->isRole(AdminRole::ADMINISTROTOR) and $admin_role->slug == AdminRole::MERCHANTSADMIN) {
  131. return $this->error('管理员暂时不能添加商户'); // 商户管理员不能添加商户
  132. // AdminMerchants::create(['admin_id' => $user->id]); // 添加商户
  133. // AdminUser::query()->where('id', $user->id)->update(['merchant_id' => 0]); // 写入商户
  134. } else if (Admin::user()->isRole(AdminRole::MERCHANTSADMIN)) {
  135. // 商户添加用户 绑定
  136. $update_merchant_id = AdminMerchant::getMchId();
  137. // AdminUser::query()->where('id', $user->id)->update(['merchant_id' => $id]); // 写入商户
  138. } else {
  139. $update_merchant_id = Admin::user()->merchant_id;
  140. // AdminUser::query()->where('id', $user->id)->update(['merchant_id' => Admin::user()->merchant_id]);
  141. }
  142. // 添加商户id
  143. AdminUser::query()->where('id', $user->id)->update(['merchant_id' => $update_merchant_id]);
  144. return $this->created(AdminUserResource::make($user));
  145. }
  146. public function show(AdminUser $adminUser)
  147. {
  148. $adminUser->load(['roles', 'permissions', 'areas']);
  149. return $this->ok(AdminUserResource::make($adminUser));
  150. }
  151. public function update(AdminUserRequest $request, AdminUser $adminUser)
  152. {
  153. $inputs = $request->validated();
  154. //Log::info($inputs);
  155. unset($inputs['roles']);
  156. unset($inputs['areas']);
  157. $adminUser->updateUser($inputs);
  158. if (isset($inputs['roles'])) {
  159. $adminUser->roles()->sync($inputs['roles']);
  160. }
  161. if (isset($inputs['areas'])) {
  162. $adminUser->areas()->sync($inputs['areas']);
  163. }
  164. if (isset($inputs['permissions'])) {
  165. $adminUser->permissions()->sync($inputs['permissions']);
  166. }
  167. return $this->created(AdminUserResource::make($adminUser));
  168. }
  169. public function destroy(AdminUser $adminUser)
  170. {
  171. $adminUser->delete();
  172. return $this->noContent();
  173. }
  174. public function edit(AdminUser $adminUser)
  175. {
  176. $adminUser->load(['roles', 'permissions', 'areas']);
  177. return $this->ok(AdminUserResource::make($adminUser)->onlyRolePermissionIds());
  178. }
  179. }