| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- from fastapi import APIRouter, Request
- from starlette.responses import JSONResponse, FileResponse
- from core.current_user import CurrentUserProvider
- from core.decorators import LoginLog, Authorize, OperationLog
- from core.enums import BusinessTypeEnum
- from domain.services import SysUserService, get_user_service
- account_router = APIRouter(prefix="/account", tags=["用户账户管理"])
- @account_router.post("/login", summary="用户登录")
- @LoginLog("用户登录")
- async def login(request: Request, user_service: SysUserService = get_user_service()):
- data = await request.json()
- username = data.get("username")
- password = data.get("password")
- await user_service.login(username, password)
- @account_router.post("/logout", summary="用户登出")
- @LoginLog("用户登出")
- @Authorize()
- async def logout(request: Request):
- request.state.user_id = None
- await CurrentUserProvider.clear_current_user()
- # @router.post("/register", summary="用户注册")
- # @LoginLog("用户注册")
- # async def register(request: Request, user_service: SysUserService = get_user_service()):
- # data = await request.json()
- # username = data.get("username")
- # password = data.get("password")
- # await user_service.register(username, password)
- @account_router.post("/update-password", summary="更新用户密码")
- @OperationLog("更新用户密码", business_type=BusinessTypeEnum.UPDATE)
- @Authorize()
- async def update_password(
- request: Request, user_service: SysUserService = get_user_service()
- ):
- data = await request.json()
- current_user = CurrentUserProvider.get_current_user()
- old_password = data.get("old_password")
- new_password = data.get("new_password")
- await user_service.change_password(current_user.user_id, old_password, new_password)
- @account_router.get("/test/{id:int}", summary="TEST")
- async def test(request: Request):
- id = int(request.path_params.get("id"))
- from utils import ResponseUtil
- import os
- if id >= 10:
- return {"id_10": id}
- elif id >= 9:
- return JSONResponse(content={"id_9": id})
- elif id >= 8:
- return ResponseUtil.success(data={"id_8": id})
- elif id >= 7:
- return ResponseUtil.error()
- elif id >= 6:
- return ResponseUtil.failure()
- elif id >= 5:
- return ResponseUtil.forbidden()
- elif id >= 4:
- return ResponseUtil.unauthorized()
- elif id >= 3:
- return ResponseUtil.json({"id_json": id})
- elif id >= 2:
- base_dir = os.path.dirname(os.path.abspath(__file__))
- print(f"base_dir:{base_dir}")
- # 修改路径构建逻辑,使用绝对路径定位
- project_root = os.path.dirname(
- os.path.dirname(base_dir)
- ) # 上两级定位到项目根目录
- print(f"project_root:{project_root}")
- image_path = os.path.join(
- project_root, "vapy_admin", "download_files", "300_7.jpg"
- )
- print(f"image_path:{image_path}")
- return FileResponse(image_path, media_type="image/jpeg") # 返回图片文件
- elif id >= 1:
- return str(id)
- else:
- return None
- # 新增路由来返回图片文件
- @account_router.get("/image", summary="返回图片文件")
- async def get_image():
- image_path = "BACKEND/vapy_admin/download_files/300_7.jpg" # 图片文件路径
- return FileResponse(image_path, media_type="image/jpeg") # 返回图片文件
|