from enum import unique, Enum from pydantic import BaseModel from typing import Union, Optional, List class LoginToAppReq(BaseModel): code: str class LoginToAppRes(BaseModel): email: str # registered: bool # token: str class GetUserInfoReq(BaseModel): code: str class DepartmentInfo(BaseModel): id: int belong: Optional[int] name: str class PostInfo(BaseModel): id: int belong: int name: str class GetUserInfoRes(BaseModel): email: Optional[str] post: Optional[str] phone: Optional[str] post_list: Optional[List[PostInfo]] name: Optional[str] department: Optional[str] manage_departments: Optional[str] department_list: Optional[List[DepartmentInfo]] registered: Optional[bool] auth_data: Optional[str] class TokenData(BaseModel): email: str registered: bool auth_data: Union[str, None] department: Union[str, None] manage_departments: Optional[str] post: Union[str, None] class UserInfoChange(BaseModel): email: str name: Optional[str] post: Optional[str] manage_departments: Optional[str] department: Optional[str] registered: Optional[bool] phone: Optional[str] class UserInfo(BaseModel): email: str name: str post: str phone: Optional[str] manage_departments: Optional[str] department: str registered: bool class UserFullInfo(BaseModel): email: Optional[str] post: Optional[str] post_list: Optional[List[PostInfo]] name: Optional[str] phone: Optional[str] department: Optional[str] manage_departments: Optional[str] department_list: Optional[List[DepartmentInfo]] class ChangeUserInfoReq(UserInfoChange): email_code: str class BindEmailReq(BaseModel): email: str = "xxxx@fecr.com.cn" email_code: str class EmailSendReqBody(BaseModel): email: str = "xxxx@fecr.com.cn" class LoginByPhoneReq(BaseModel): phone: str code: str class GetPhoneVerifyCodeReq(BaseModel): phone: str class GetUserByDepartmentReq(BaseModel): departments: List[int] class GetUserByDepartmentRes(BaseModel): users: List[UserInfo] class GetUserByDepartmentTypeRes(BaseModel): users: List[UserFullInfo] class GetUserByDepartmentTypeReq(BaseModel): department_type: str @unique class DepartmentTypeEnum(Enum): enum01 = "董监高" enum02 = "评级部门" enum03 = "业务部门" enum04 = "研发部门" enum05 = "职能部门" enum06 = "战略部门" enum07 = "子分公司" enum08 = "质量部门"