增加配送地址的性别选择。

This commit is contained in:
aaron 2025-01-06 12:03:00 +08:00
parent 7712456ac2
commit 176d80a73d
2 changed files with 15 additions and 2 deletions

View File

@ -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:

View File

@ -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" # 禁止额外字段