37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
from app.core.base_schema import BaseSchema
|
|
|
|
|
|
class MiniappLoginSchema(BaseModel):
|
|
"""小程序登录请求"""
|
|
code: str = Field(..., min_length=1, description="微信登录code")
|
|
|
|
|
|
class MiniappUserCreateSchema(BaseModel):
|
|
"""小程序用户创建"""
|
|
openid: str = Field(..., max_length=64, description="微信openid")
|
|
unionid: str | None = Field(default=None, max_length=64, description="微信unionid")
|
|
session_key: str | None = Field(default=None, max_length=64, description="会话密钥")
|
|
nickname: str | None = Field(default=None, max_length=64, description="昵称")
|
|
avatar: str | None = Field(default=None, max_length=512, description="头像URL")
|
|
|
|
|
|
class MiniappUserUpdateSchema(MiniappUserCreateSchema):
|
|
"""小程序用户更新"""
|
|
phone: str | None = Field(default=None, max_length=20, description="手机号")
|
|
|
|
|
|
class MiniappUserOutSchema(MiniappUserUpdateSchema, BaseSchema):
|
|
"""小程序用户响应"""
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
class MiniappLoginOutSchema(BaseModel):
|
|
"""小程序登录响应"""
|
|
access_token: str = Field(..., description="访问令牌")
|
|
token_type: str = Field(default="Bearer", description="令牌类型")
|
|
expires_in: int = Field(..., description="过期时间(秒)")
|
|
user: MiniappUserOutSchema = Field(..., description="用户信息")
|