123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- <?php
- namespace App\Http\Controllers\Admin;
- use App\Filters\AdminUserFilter;
- use App\Http\Requests\AdminUserProfileRequest;
- use App\Http\Requests\AdminUserRequest;
- use App\Http\Resources\AdminUserResource;
- use App\Models\AdminMerchant;
- use App\Models\AdminMerchants;
- use App\Models\AdminRole;
- use App\Models\AdminUser;
- use App\Utils\Admin;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Log;
- class AdminUserController extends AdminBaseController
- {
- public function user()
- {
- $user = Admin::user();
- return $this->ok(
- AdminUserResource::make($user)
- ->gatherAllPermissions()
- ->onlyRolePermissionSlugs()
- );
- }
- public function areaAdmin()
- {
- // if(Admin::isAdministrator() || Admin::isNormalAdministrator()){
- // $users = AdminUser::query()->where('type',AdminUser::TYPE_ADMIN)->get();
- // }else{
- //
- // }
- $users = AdminUser::query()->where('type', AdminUser::TYPE_ADMIN)->get();
- // $areaAdmin = AdminUser::getAreaAdmin();
- // if (count($areaAdmin) !== 0) {
- // $data = [];
- // foreach ($areaAdmin as $v) {
- // $data[] = [
- // 'id' => $v->id,
- // 'name' => $v->name];
- // }
- // }
- //$administrator = AdminUser::getAAdmin();
- foreach ($users as $v) {
- $data[] = [
- 'id' => $v->id,
- 'name' => $v->name];
- }
- return $this->ok($data);
- }
- public function editUser()
- {
- $user = Admin::user();
- $user->load(['roles', 'permissions', 'areas']);
- return $this->ok(AdminUserResource::make($user));
- }
- public function updateUser(AdminUserProfileRequest $request)
- {
- $inputs = $request->validated();
- Admin::user()->updateUser($inputs);
- return $this->callAction('user', [])->setStatusCode(201);
- }
- // 管理员列表
- public function index(AdminUserFilter $filter)
- {
- $user = Admin::user();
- ///
- $userQuery = AdminUser::query()
- ->filter($filter)
- ->where('type', AdminUser::TYPE_ADMIN);
- if (Admin::user()->isRole(AdminRole::ADMINISTROTOR)) {
- // 技术管理员
- $userQuery->with(['roles', 'permissions', 'areas']);
- } else if (Admin::user()->isRole(AdminRole::MERCHANTSADMIN)) {
- // 商户管理员
- $userQuery->with(['roles', 'permissions', 'areas']);
- $userQuery->where('merchant_id', AdminMerchant::getMchId());
- }
- /*elseif (Admin::user()->isRole(AdminRole::NORMALADMINISTRATOR)) {
- //超级管理员
- // Log::info('mimiimimimmimi');
- $userQuery->whereNotIn('id', [1, $user->id])
- ->where('merchant_id', $user->merchant_id)
- ->whereHas('roles', function ($q) {
- $q->whereNotIn('slug', [AdminRole::ADMINISTROTOR, AdminRole::MERCHANTSADMIN, AdminRole::NORMALADMINISTRATOR]);
- })
- ->with(['roles', 'permissions', 'areas']);
- } */
- else {
- // 普通管理员
- $userQuery->whereNotIn('id', [1, $user->id])
- ->whereHas('roles', function ($q) {
- $q->whereNotIn('slug', [AdminRole::ADMINISTROTOR, AdminRole::MERCHANTSADMIN]);
- })
- ->where('pid', $user->id)
- ->where('merchant_id', $user->merchant_id)
- ->with(['roles', 'permissions', 'areas']);
- }
- $users = $userQuery->orderByDesc('id')->paginate();
- ///
- return $this->ok(AdminUserResource::collection($users));
- }
- /**
- * 添加管理员
- * @param AdminUserRequest $request
- * @param AdminUser $user
- * @return \Illuminate\Http\JsonResponse
- */
- public function store(AdminUserRequest $request, AdminUser $user)
- {
- $id = Admin::user()->id;
- $inputs = $request->validated();
- $inputs['pid'] = $id;
- $user = $user::createUser($inputs);
- if (!empty($q = $request->post('roles', []))) {
- $user->roles()->attach($q);
- }
- if (!empty($q = $request->post('areas', []))) {
- $user->areas()->attach($q);
- }
- if (!empty($q = $request->post('permissions', []))) {
- $user->permissions()->attach($q);
- }
- $admin_role = AdminRole::query()->find($request->roles[0]);
- if(!$admin_role){
- return $this->error('请先添加角色'); // 商户管理员不能添加商户
- }
- // 超级管理员可以添加商户
- $update_merchant_id = 0;
- if (Admin::user()->isRole(AdminRole::ADMINISTROTOR) and $admin_role->slug == AdminRole::MERCHANTSADMIN) {
- return $this->error('管理员暂时不能添加商户'); // 商户管理员不能添加商户
- // AdminMerchants::create(['admin_id' => $user->id]); // 添加商户
- // AdminUser::query()->where('id', $user->id)->update(['merchant_id' => 0]); // 写入商户
- } else if (Admin::user()->isRole(AdminRole::MERCHANTSADMIN)) {
- // 商户添加用户 绑定
- $update_merchant_id = AdminMerchant::getMchId();
- // AdminUser::query()->where('id', $user->id)->update(['merchant_id' => $id]); // 写入商户
- } else {
- $update_merchant_id = Admin::user()->merchant_id;
- // AdminUser::query()->where('id', $user->id)->update(['merchant_id' => Admin::user()->merchant_id]);
- }
- // 添加商户id
- AdminUser::query()->where('id', $user->id)->update(['merchant_id' => $update_merchant_id]);
- return $this->created(AdminUserResource::make($user));
- }
- public function show(AdminUser $adminUser)
- {
- $adminUser->load(['roles', 'permissions', 'areas']);
- return $this->ok(AdminUserResource::make($adminUser));
- }
- public function update(AdminUserRequest $request, AdminUser $adminUser)
- {
- $inputs = $request->validated();
- //Log::info($inputs);
- $adminUser->updateUser($inputs);
- if (isset($inputs['roles'])) {
- $adminUser->roles()->sync($inputs['roles']);
- }
- if (isset($inputs['areas'])) {
- $adminUser->areas()->sync($inputs['areas']);
- }
- if (isset($inputs['permissions'])) {
- $adminUser->permissions()->sync($inputs['permissions']);
- }
- return $this->created(AdminUserResource::make($adminUser));
- }
- public function destroy(AdminUser $adminUser)
- {
- $adminUser->delete();
- return $this->noContent();
- }
- public function edit(AdminUser $adminUser)
- {
- $adminUser->load(['roles', 'permissions', 'areas']);
- return $this->ok(AdminUserResource::make($adminUser)->onlyRolePermissionIds());
- }
- }
|