# -*- 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="用户信息")