72 lines
1.8 KiB
Python
72 lines
1.8 KiB
Python
from typing import Optional, List
|
||
from pydantic import BaseModel, constr
|
||
|
||
from AppUser.Schemas.DepartmentSchema import DepartmentIDRegex
|
||
from AppUser.Schemas.RoleSchema import RoleIDRegex
|
||
|
||
EMailRegex = constr(regex="^[a-zA-Z0-9_-]+@fecr.com.cn$")
|
||
PasswdRegex = constr(regex="^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)^.{8,}$")
|
||
|
||
|
||
class CreateReqBody(BaseModel):
|
||
email: EMailRegex = "xxxx@fecr.com.cn"
|
||
name: str
|
||
role_id: RoleIDRegex = "ROLE01"
|
||
department_id: DepartmentIDRegex = "D001"
|
||
|
||
|
||
class FullUserResBody(BaseModel):
|
||
|
||
id: str
|
||
email: EMailRegex = "xxxx@fecr.com.cn"
|
||
name: str = "用户"
|
||
avatar: str
|
||
role: str = "guest"
|
||
department: str
|
||
is_active: bool
|
||
|
||
|
||
class EditReqBody(BaseModel):
|
||
name: Optional[str]
|
||
role_id: Optional[RoleIDRegex]
|
||
department_id: Optional[DepartmentIDRegex]
|
||
is_active: Optional[bool]
|
||
|
||
def del_null_value(self):
|
||
_dict = self.dict()
|
||
for key in list(_dict.keys()):
|
||
if not _dict.get(key):
|
||
del _dict[key]
|
||
return _dict
|
||
|
||
|
||
class ResetPwdReqBody(BaseModel):
|
||
passwd: PasswdRegex = "包含大小写字母和数字,长度8-16位"
|
||
|
||
|
||
class LoginReqBody(BaseModel):
|
||
email: EMailRegex = "xxxx@fecr.com.cn"
|
||
passwd: PasswdRegex = "包含大小写字母和数字,长度8-16位"
|
||
verify_code: str
|
||
|
||
|
||
class DetailResBody(BaseModel):
|
||
id: str
|
||
email: EMailRegex = "xxxx@fecr.com.cn"
|
||
name: str = "用户"
|
||
avatar: str
|
||
role: str = "guest"
|
||
department: str
|
||
|
||
|
||
class SearchReqBody(BaseModel):
|
||
email: Optional[str] = None
|
||
name: Optional[str] = None
|
||
role_id: Optional[RoleIDRegex] = None
|
||
department_id: Optional[DepartmentIDRegex] = None
|
||
|
||
|
||
class SearchResultResBody(BaseModel):
|
||
result: List[FullUserResBody]
|
||
total: int
|