feat(system): 优化删除操作并添加清除在线用户功能

- 重构了多个模块的删除操作,支持批量删除
- 在线监控模块增加了清除所有在线用户的功能
- 优化了前端API接口,提高了可维护性
This commit is contained in:
zhangtao
2025-07-14 00:52:32 +08:00
parent 4d08c96087
commit 90832d0fa2
41 changed files with 301 additions and 265 deletions
@@ -43,7 +43,7 @@ async def get_online_list_controller(
summary="强制下线",
description="强制下线"
)
async def delete__online_controller(
async def delete_online_controller(
session_id: str = Body(..., description="会话编号"),
redis: Redis = Depends(redis_getter),
)->JSONResponse:
@@ -53,4 +53,21 @@ async def delete__online_controller(
return SuccessResponse(msg="强制下线成功")
else:
logger.info("强制下线失败")
return ErrorResponse(msg="强制下线失败")
return ErrorResponse(msg="强制下线失败")
@router.delete(
'/clear',
dependencies=[Depends(AuthPermission(permissions=['monitor:online:delete']))],
summary="清除所有在线用户",
description="清除所有在线用户"
)
async def clear_online_controller(
redis: Redis = Depends(redis_getter),
)->JSONResponse:
is_ok = await OnlineService.clear_online_service(redis=redis)
if is_ok:
logger.info("清除所有在线用户成功")
return SuccessResponse(msg="清除所有在线用户成功")
else:
logger.info("清除所有在线用户失败")
return ErrorResponse(msg="清除所有在线用户失败")
@@ -63,7 +63,7 @@ async def get_new_token_controller(
return SuccessResponse(data=token_dict, msg="刷新成功")
@router.post("/captcha/get", summary="获取验证码", description="获取登录验证码", response_model=CaptchaOutSchema)
@router.get("/captcha/get", summary="获取验证码", description="获取登录验证码", response_model=CaptchaOutSchema)
async def get_captcha_for_login_controller(
redis: Redis = Depends(redis_getter)
) -> JSONResponse:
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from fastapi import APIRouter, Depends, Query, Request, UploadFile
from fastapi import APIRouter, Body, Depends, Query, Request, UploadFile
from fastapi.responses import JSONResponse, StreamingResponse
from aioredis import Redis
@@ -67,10 +67,10 @@ async def update_objs_controller(
@router.delete("/delete", summary="删除系统配置", description="删除系统配置")
async def delete_type_controller(
redis: Redis = Depends(redis_getter),
id: int = Query(..., description="系统配置ID"),
ids: list[int] = Body(..., description="ID列表"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:config:delete"]))
) -> JSONResponse:
await ConfigService.delete_obj_service(auth=auth, redis=redis, id=id)
await ConfigService.delete_obj_service(auth=auth, redis=redis, ids=ids)
logger.info(f"删除系统配置成功: {id}")
return SuccessResponse(msg="删除系统配置成功")
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from fastapi import APIRouter, Depends, Query
from fastapi import APIRouter, Body, Depends, Query
from fastapi.responses import JSONResponse
from app.common.response import SuccessResponse
@@ -66,10 +66,10 @@ async def update_obj_controller(
@router.delete("/delete", summary="删除部门", description="删除部门")
async def delete_obj_controller(
id: int = Query(..., description="部门ID"),
ids: list[int] = Body(..., description="ID列表"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:dept:delete"]))
) -> JSONResponse:
await DeptService.delete_dept_service(id=id, auth=auth)
await DeptService.delete_dept_service(ids=ids, auth=auth)
logger.info(f"删除部门成功: {id}")
return SuccessResponse(msg="删除部门成功")
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
import json
from fastapi import APIRouter, Depends, Query
from fastapi import APIRouter, Body, Depends, Query
from fastapi.responses import JSONResponse, StreamingResponse
from aioredis import Redis
@@ -76,10 +76,10 @@ async def update_type_controller(
@router.delete("/type/delete", summary="删除字典类型", description="删除字典类型")
async def delete_type_controller(
redis: Redis = Depends(redis_getter),
id: int = Query(..., description="字典类型ID"),
ids: list[int] = Body(..., description="ID列表"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:dict_type:delete"]))
) -> JSONResponse:
await DictTypeService.delete_obj_service(auth=auth, redis=redis, id=id)
await DictTypeService.delete_obj_service(auth=auth, redis=redis, ids=ids)
logger.info(f"删除字典类型成功: {id}")
return SuccessResponse(msg="删除字典类型成功")
@@ -144,10 +144,10 @@ async def update_data_controller(
@router.delete("/data/delete", summary="删除字典数据", description="删除字典数据")
async def delete_data_controller(
redis: Redis = Depends(redis_getter),
id: int = Query(..., description="字典数据ID"),
ids: list[int] = Body(..., description="ID列表"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:dict_data:delete"]))
) -> JSONResponse:
await DictDataService.delete_obj_service(auth=auth, redis=redis, id=id)
await DictDataService.delete_obj_service(auth=auth, redis=redis, ids=ids)
logger.info(f"删除字典数据成功: {id}")
return SuccessResponse(msg="删除字典数据成功")
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from fastapi import APIRouter, Depends, Query
from fastapi import APIRouter, Body, Depends, Query
from fastapi.responses import JSONResponse, StreamingResponse
from app.common.response import StreamResponse, SuccessResponse
@@ -62,10 +62,10 @@ async def update_obj_controller(
@router.delete("/delete", summary="删除定时任务", description="删除定时任务")
async def delete_obj_controller(
id: int = Query(..., description="定时任务ID"),
ids: list[int] = Body(..., description="ID列表"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:job:delete"]))
) -> JSONResponse:
await JobService.delete_job_service(auth=auth, id=id)
await JobService.delete_job_service(auth=auth, ids=ids)
logger.info(f"删除定时任务成功: {id}")
return SuccessResponse(msg="删除定时任务成功")
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from fastapi import APIRouter, Depends, Query
from fastapi import APIRouter, Body, Depends, Query
from fastapi.responses import JSONResponse
from app.common.response import SuccessResponse
@@ -67,10 +67,10 @@ async def update_obj_controller(
@router.delete("/delete", summary="删除菜单", description="删除菜单")
async def delete_obj_controller(
id: int = Query(..., description="菜单ID"),
ids: list[int] = Body(..., description="ID列表"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:menu:delete"]))
) -> JSONResponse:
await MenuService.delete_menu_service(id=id, auth=auth)
await MenuService.delete_menu_service(ids=ids, auth=auth)
logger.info(f"删除菜单成功: {id}")
return SuccessResponse(msg="删除菜单成功")
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from fastapi import APIRouter, Depends, Query
from fastapi import APIRouter, Body, Depends, Query
from fastapi.responses import JSONResponse, StreamingResponse
from app.common.response import StreamResponse, SuccessResponse
@@ -62,10 +62,10 @@ async def update_obj_controller(
@router.delete("/delete", summary="删除公告", description="删除公告")
async def delete_obj_controller(
id: int = Query(..., description="公告ID"),
ids: list[int] = Body(..., description="ID列表"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:notice:delete"]))
) -> JSONResponse:
await NoticeService.delete_notice_service(auth=auth, id=id)
await NoticeService.delete_notice_service(auth=auth, ids=ids)
logger.info(f"删除公告成功: {id}")
return SuccessResponse(msg="删除公告成功")
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from fastapi import APIRouter, Depends, Query
from fastapi import APIRouter, Body, Depends, Query
from fastapi.responses import JSONResponse, StreamingResponse
from app.common.request import PaginationService
@@ -32,7 +32,7 @@ async def get_obj_list_controller(
@router.get("/detail", summary="日志详情", description="日志详情")
async def get_obj_detail_controller(
id: int = Query(..., description="操作日志ID"),
id: int = Body(..., description="操作日志ID"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:log:query"]))
) -> JSONResponse:
""" 详情日志 """
@@ -43,11 +43,11 @@ async def get_obj_detail_controller(
@router.delete("/delete", summary="删除日志", description="删除日志")
async def delete_obj_log_controller(
id: int = Query(..., description="操作日志ID"),
ids: list[int] = Query(..., description="ID列表"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:log:delete"]))
) -> JSONResponse:
""" 删除日志 """
await OperationLogService.delete_log_service(id=id, auth=auth)
await OperationLogService.delete_log_service(ids=ids, auth=auth)
logger.info(f"删除日志成功 {id}")
return SuccessResponse(msg="删除日志成功")
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from fastapi import APIRouter, Depends, Query
from fastapi import APIRouter, Body, Depends, Query
from fastapi.responses import JSONResponse, StreamingResponse
from app.common.response import StreamResponse, SuccessResponse
@@ -67,10 +67,10 @@ async def update_obj_controller(
@router.delete("/delete", summary="删除岗位", description="删除岗位")
async def delete_obj_controller(
id: int = Query(..., description="岗位ID"),
ids: list[int] = Body(..., description="ID列表"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:position:delete"])),
) -> JSONResponse:
await PositionService.delete_position_service(id=id, auth=auth)
await PositionService.delete_position_service(ids=ids, auth=auth)
logger.info(f"删除岗位成功: {id}")
return SuccessResponse(msg="删除岗位成功")
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from fastapi import APIRouter, Depends, Query
from fastapi import APIRouter, Body, Depends, Query
from fastapi.responses import JSONResponse, StreamingResponse
from app.common.response import StreamResponse, SuccessResponse
@@ -68,10 +68,10 @@ async def update_obj_controller(
@router.delete("/delete", summary="删除角色", description="删除角色")
async def delete_obj_controller(
id: int = Query(..., description="角色ID"),
ids: list[int] = Body(..., description="ID列表"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:role:delete"])),
) -> JSONResponse:
await RoleService.delete_role_service(id=id, auth=auth)
await RoleService.delete_role_service(ids=ids, auth=auth)
logger.info(f"删除角色成功: {id}")
return SuccessResponse(msg="删除角色成功")
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from fastapi import APIRouter, Depends, Query, UploadFile, Request
from fastapi import APIRouter, Body, Depends, Query, UploadFile, Request
from fastapi.responses import JSONResponse, StreamingResponse
from sqlalchemy.ext.asyncio import AsyncSession
import urllib.parse
@@ -133,10 +133,10 @@ async def update_obj_controller(
@router.delete("/delete", summary="删除用户", description="删除用户")
async def delete_obj_controller(
id: int = Query(..., description="用户ID"),
ids: list[int] = Body(..., description="ID列表"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:user:delete"])),
) -> JSONResponse:
await UserService.delete_user_service(id=id, auth=auth)
await UserService.delete_user_service(ids=ids, auth=auth)
logger.info(f"删除用户成功: {id}")
return SuccessResponse(msg="删除用户成功")