增加配送地址的性别选择。
This commit is contained in:
parent
7712456ac2
commit
176d80a73d
@ -1,8 +1,9 @@
|
||||
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, Boolean
|
||||
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, Boolean, Enum
|
||||
from sqlalchemy.sql import func
|
||||
from pydantic import BaseModel, Field
|
||||
from .database import Base
|
||||
from typing import Optional
|
||||
from app.models.user import Gender # 复用用户模型中的性别枚举
|
||||
|
||||
# 数据库模型
|
||||
class AddressDB(Base):
|
||||
@ -16,6 +17,7 @@ class AddressDB(Base):
|
||||
address_detail = Column(String(200))
|
||||
name = Column(String(50))
|
||||
phone = Column(String(11))
|
||||
gender = Column(Enum(Gender), nullable=False, default=Gender.UNKNOWN)
|
||||
is_default = Column(Boolean, default=False)
|
||||
create_time = Column(DateTime(timezone=True), server_default=func.now())
|
||||
update_time = Column(DateTime(timezone=True), onupdate=func.now())
|
||||
@ -28,6 +30,7 @@ class AddressCreate(BaseModel):
|
||||
address_detail: str = Field(..., max_length=200)
|
||||
name: str = Field(..., max_length=50)
|
||||
phone: str = Field(..., pattern="^1[3-9]\d{9}$")
|
||||
gender: Gender = Gender.UNKNOWN
|
||||
is_default: bool = False
|
||||
|
||||
class AddressUpdate(BaseModel):
|
||||
@ -37,6 +40,7 @@ class AddressUpdate(BaseModel):
|
||||
address_detail: Optional[str] = Field(None, max_length=200)
|
||||
name: Optional[str] = Field(None, max_length=50)
|
||||
phone: Optional[str] = Field(None, pattern="^1[3-9]\d{9}$")
|
||||
gender: Optional[Gender] = None
|
||||
is_default: Optional[bool] = None
|
||||
|
||||
class AddressInfo(BaseModel):
|
||||
@ -47,6 +51,7 @@ class AddressInfo(BaseModel):
|
||||
address_detail: str
|
||||
name: str
|
||||
phone: str
|
||||
gender: Gender
|
||||
is_default: bool
|
||||
|
||||
class Config:
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from sqlalchemy import Column, String, DateTime,Integer, Boolean
|
||||
from sqlalchemy import Column, String, DateTime, Integer, Boolean, Enum
|
||||
from sqlalchemy.sql import func
|
||||
from sqlalchemy.dialects.mysql import JSON
|
||||
from pydantic import BaseModel, Field
|
||||
@ -11,6 +11,11 @@ class UserRole(str, enum.Enum):
|
||||
DELIVERYMAN = "deliveryman"
|
||||
ADMIN = "admin"
|
||||
|
||||
class Gender(str, enum.Enum):
|
||||
MALE = "male"
|
||||
FEMALE = "female"
|
||||
UNKNOWN = "unknown"
|
||||
|
||||
# 数据库模型
|
||||
class UserDB(Base):
|
||||
__tablename__ = "users"
|
||||
@ -20,6 +25,7 @@ class UserDB(Base):
|
||||
phone = Column(String(11), unique=True, index=True)
|
||||
password = Column(String(128), nullable=True) # 加密后的密码
|
||||
avatar = Column(String(200), nullable=True) # 头像URL地址
|
||||
gender = Column(Enum(Gender), nullable=False, default=Gender.UNKNOWN)
|
||||
roles = Column(JSON, default=lambda: [UserRole.USER]) # 存储角色列表
|
||||
create_time = Column(DateTime(timezone=True), server_default=func.now())
|
||||
update_time = Column(DateTime(timezone=True), onupdate=func.now())
|
||||
@ -34,6 +40,7 @@ class UserInfo(BaseModel):
|
||||
username: str
|
||||
phone: str
|
||||
avatar: Optional[str] = None
|
||||
gender: Gender
|
||||
roles: List[UserRole]
|
||||
|
||||
class Config:
|
||||
@ -45,6 +52,7 @@ class VerifyCodeRequest(BaseModel):
|
||||
class UserUpdate(BaseModel):
|
||||
username: Optional[str] = Field(None, min_length=2, max_length=50)
|
||||
avatar: Optional[str] = Field(None, max_length=200)
|
||||
gender: Optional[Gender] = None
|
||||
|
||||
class Config:
|
||||
extra = "forbid" # 禁止额外字段
|
||||
|
||||
Loading…
Reference in New Issue
Block a user