refactor:用 AdminApiList 统一后台列表类接口的响应格式
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V1\Admin\User;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Lottery\ErrorCode;
|
||||
use App\Models\AdminUser;
|
||||
use App\Services\AuditLogger;
|
||||
use App\Support\AdminUserApiPresenter;
|
||||
use App\Support\ApiResponse;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
/** DELETE /api/v1/admin/admin-users/{admin_user} */
|
||||
final class AdminUserDestroyController extends Controller
|
||||
{
|
||||
public function __invoke(Request $request, AdminUser $admin_user): JsonResponse
|
||||
{
|
||||
/** @var AdminUser $actor */
|
||||
$actor = $request->lotteryAdmin();
|
||||
|
||||
if ((int) $actor->getKey() === (int) $admin_user->getKey()) {
|
||||
return ApiResponse::error(
|
||||
'不能删除当前登录账号',
|
||||
ErrorCode::ValidationFailed->value,
|
||||
null,
|
||||
422,
|
||||
);
|
||||
}
|
||||
|
||||
$admin_user->load('roles');
|
||||
if ($admin_user->isSuperAdmin()) {
|
||||
$hasOther = AdminUser::query()
|
||||
->whereKeyNot($admin_user->getKey())
|
||||
->whereHas('roles', static fn ($q) => $q->where('admin_roles.slug', AdminUser::ROLE_SUPER_ADMIN))
|
||||
->exists();
|
||||
if (! $hasOther) {
|
||||
return ApiResponse::error(
|
||||
'不能删除最后一个超级管理员',
|
||||
ErrorCode::ValidationFailed->value,
|
||||
null,
|
||||
422,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$before = AdminUserApiPresenter::listItem($admin_user);
|
||||
$id = (int) $admin_user->id;
|
||||
$admin_user->delete();
|
||||
|
||||
AuditLogger::recordForAdmin(
|
||||
$actor,
|
||||
$request,
|
||||
'system',
|
||||
'admin_user.delete',
|
||||
'admin_user',
|
||||
(string) $id,
|
||||
$before,
|
||||
null,
|
||||
);
|
||||
|
||||
return ApiResponse::success(['deleted' => true, 'id' => $id]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user