From d226adeba7ac7c2847aa3b20722941210a0fceee Mon Sep 17 00:00:00 2001 From: martsforever Date: Fri, 22 Aug 2025 18:36:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=94=A8=E6=88=B7=E8=A1=A8=E7=9A=84?= =?UTF-8?q?=E5=A2=9E=E5=88=A0=E6=94=B9=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controller/add_user_route.py | 37 ++++-------------------------- app/model/UserModel.py | 39 ++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 33 deletions(-) create mode 100644 app/model/UserModel.py diff --git a/app/controller/add_user_route.py b/app/controller/add_user_route.py index 1fc88b1..77c4d40 100644 --- a/app/controller/add_user_route.py +++ b/app/controller/add_user_route.py @@ -1,51 +1,22 @@ from datetime import timedelta -from enum import Enum from fastapi import FastAPI, Depends, HTTPException from fastapi.security import OAuth2PasswordRequestForm, OAuth2PasswordBearer from jwt import InvalidTokenError -from pydantic import BaseModel -from sqlmodel import select, Field +from sqlmodel import select from starlette import status from app.config.env import env -from app.model.BasicModel import BasicModel +from app.model.UserModel import RegistryUser, UserModel, UserValidate, PublicUser, UserService from app.utils.CrpyUtils import CryptUtils, TokenInfo from app.utils.db_utils import AsyncSessionDep from app.utils.next_id import next_id -class UserValidate(str, Enum): - Y = 'Y' - N = 'N' - - -# 公共的,也是最后返回给前端的一个用户信息数据类型 -class PublicUser(BasicModel): - username: str = Field(..., description="用户名") - email: str = Field(..., description="邮箱") - full_name: str = Field(..., description="用户全名") - valid: UserValidate = Field(default=UserValidate.N, description="用户账号是否已经激活") - - -# 注册的时候,客户端传入的用户信息,需要包含这个明文密码字段 -class RegistryUser(PublicUser): - password: str - - -# 对pl_user表进行增删改查时的这个model类 -class UserModel(PublicUser, table=True): - __tablename__ = "pl_user" - hash_password: str - - -class Token(BaseModel): - token: str - token_type: str - - # 添加用户相关的端点接口 def add_user_route(app: FastAPI): + UserService.add_route(app=app, path="/user") + # 用户注册接口 @app.post("/registry") async def _registry(registry_user: RegistryUser, session: AsyncSessionDep): diff --git a/app/model/UserModel.py b/app/model/UserModel.py new file mode 100644 index 0000000..3c83200 --- /dev/null +++ b/app/model/UserModel.py @@ -0,0 +1,39 @@ +from enum import Enum + +from sqlmodel import Field + +from app.model.BasicModel import BasicModel +from app.utils.create_module_service import create_model_service + + +class UserValidate(str, Enum): + Y = 'Y' + N = 'N' + + +# 公共的,也是最后返回给前端的一个用户信息数据类型 +class PublicUser(BasicModel): + username: str = Field(..., description="用户名") + email: str = Field(..., description="邮箱") + full_name: str = Field(..., description="用户全名") + valid: UserValidate = Field(default=UserValidate.N, description="用户账号是否已经激活") + + +# 注册的时候,客户端传入的用户信息,需要包含这个明文密码字段 +class RegistryUser(PublicUser): + password: str + + +# 对pl_user表进行增删改查时的这个model类 +class UserModel(PublicUser, table=True): + __tablename__ = "pl_user" + hash_password: str + + +# 对pl_user表进行增删改查时的这个model类 +class UserServiceModel(PublicUser, table=True): + __tablename__ = "pl_user" + __table_args__ = {'extend_existing': True} + + +UserService = create_model_service(UserServiceModel)