feat(user): 新增用户信息上传接口

This commit is contained in:
xingc
2025-04-22 18:27:34 +08:00
parent b843e02039
commit ad83a47e6b
2 changed files with 22 additions and 1 deletions

View File

@@ -18,6 +18,7 @@ from core.routers.auth.schema import LoginUser
from core.routers.auth.services import get_current_user_form_http from core.routers.auth.services import get_current_user_form_http
from . import schema from . import schema
from .schema import UpdateUserIn
user_router = APIRouter(prefix='/user', tags=['用户模块']) user_router = APIRouter(prefix='/user', tags=['用户模块'])
@@ -100,6 +101,20 @@ async def get_all_followers(
} }
@user_router.post('/me/update', summary='更新用户信息', response_model=base_schema.BaseResponse[schema.User])
async def update_me(
payload: schema.UpdateUserIn,
login_user: LoginUser = Depends(get_current_user_form_http),
db_session: AsyncSession = Depends(get_async_session)
):
db_crud = CRUD(db_session, User)
result = await db_crud.update(payload.model_dump(exclude_none=True), filters={'user_id': login_user.user_id})
if result is None:
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail='无法操作')
return {'data': result}
@user_router.post('/follow/{user_id}/', summary='新增/取消关注用户', response_model=base_schema.BaseResponse) @user_router.post('/follow/{user_id}/', summary='新增/取消关注用户', response_model=base_schema.BaseResponse)
async def follow_user( async def follow_user(
user_id: int, user_id: int,

View File

@@ -8,7 +8,7 @@ from datetime import date
from typing import Optional from typing import Optional
from fastapi.openapi.models import Schema from fastapi.openapi.models import Schema
from pydantic import BaseModel from pydantic import BaseModel, constr
class User(BaseModel): class User(BaseModel):
@@ -38,3 +38,9 @@ class UserFollows(BaseModel):
user_id: int user_id: int
gender: Optional[int] = None gender: Optional[int] = None
avatar_url: Optional[int] = None avatar_url: Optional[int] = None
class UpdateUserIn(BaseModel):
nickname: Optional[constr(max_length=20)] = None
gender: Optional[int] = None
avatar_url: Optional[constr(pattern='^http[a-zA-Z0-9:/\.]+')] = None