编写管理端接口
This commit is contained in:
parent
11875d46a1
commit
4ceb73e96a
|
@ -224,6 +224,8 @@ class CertWorkNode(Base, SalBase):
|
||||||
status: Mapped[NodeState] = mapped_column(Enum(NodeState),
|
status: Mapped[NodeState] = mapped_column(Enum(NodeState),
|
||||||
default=NodeState.incomplete, comment="服务状态")
|
default=NodeState.incomplete, comment="服务状态")
|
||||||
remark: Mapped[str] = mapped_column(TEXT, nullable=True, comment="备注")
|
remark: Mapped[str] = mapped_column(TEXT, nullable=True, comment="备注")
|
||||||
|
cert_create_time: Mapped[datetime] = mapped_column(DateTime, nullable=True,
|
||||||
|
comment='证书创建时间')
|
||||||
create_time: Mapped[datetime] = mapped_column(DateTime, server_default=func.now(), nullable=True,
|
create_time: Mapped[datetime] = mapped_column(DateTime, server_default=func.now(), nullable=True,
|
||||||
comment='创建时间')
|
comment='创建时间')
|
||||||
finish_time: Mapped[datetime] = mapped_column(DateTime, nullable=True, comment='完成时间')
|
finish_time: Mapped[datetime] = mapped_column(DateTime, nullable=True, comment='完成时间')
|
||||||
|
|
|
@ -4,6 +4,7 @@ from utils.pydantic_utils import AllOptional
|
||||||
from utils.sqlalchemy_common_utils import QueryParams, QueryInclude
|
from utils.sqlalchemy_common_utils import QueryParams, QueryInclude
|
||||||
from datetime import date, datetime
|
from datetime import date, datetime
|
||||||
from ...schemas import NodeState
|
from ...schemas import NodeState
|
||||||
|
from ..upload_file.schemas import UploadFileInfo
|
||||||
|
|
||||||
|
|
||||||
class CertWorkNodeId(BaseModel):
|
class CertWorkNodeId(BaseModel):
|
||||||
|
@ -13,10 +14,11 @@ class CertWorkNodeId(BaseModel):
|
||||||
class CertWorkNodeAdd(BaseModel):
|
class CertWorkNodeAdd(BaseModel):
|
||||||
serve_id: str
|
serve_id: str
|
||||||
file_id: Optional[str] = None
|
file_id: Optional[str] = None
|
||||||
file: Optional[dict] = None
|
file: Optional[UploadFileInfo] = None
|
||||||
status: Optional[NodeState] = NodeState.incomplete
|
status: Optional[NodeState] = NodeState.incomplete
|
||||||
remark: Optional[str] = None
|
remark: Optional[str] = None
|
||||||
create_time: Optional[datetime] = None
|
create_time: Optional[datetime] = None
|
||||||
|
cert_create_time: Optional[datetime] = None
|
||||||
finish_time: Optional[datetime] = None
|
finish_time: Optional[datetime] = None
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ from pydantic import BaseModel
|
||||||
from utils.pydantic_utils import AllOptional
|
from utils.pydantic_utils import AllOptional
|
||||||
from utils.sqlalchemy_common_utils import QueryParams, QueryInclude
|
from utils.sqlalchemy_common_utils import QueryParams, QueryInclude
|
||||||
from datetime import date, datetime
|
from datetime import date, datetime
|
||||||
|
from ..company_index.schemas import CompanyIndexInfo
|
||||||
|
|
||||||
|
|
||||||
class CompanyUserId(BaseModel):
|
class CompanyUserId(BaseModel):
|
||||||
|
@ -11,7 +12,7 @@ class CompanyUserId(BaseModel):
|
||||||
|
|
||||||
class CompanyUserAdd(BaseModel):
|
class CompanyUserAdd(BaseModel):
|
||||||
name: str
|
name: str
|
||||||
company: Optional[dict] = None
|
company: Optional[CompanyIndexInfo] = None
|
||||||
email: Optional[str] = None
|
email: Optional[str] = None
|
||||||
phone: Optional[str] = None
|
phone: Optional[str] = None
|
||||||
passwd: str
|
passwd: str
|
||||||
|
|
|
@ -5,6 +5,7 @@ from ...schemas import NodeState
|
||||||
from utils.pydantic_utils import AllOptional
|
from utils.pydantic_utils import AllOptional
|
||||||
from utils.sqlalchemy_common_utils import QueryParams, QueryInclude
|
from utils.sqlalchemy_common_utils import QueryParams, QueryInclude
|
||||||
from datetime import date, datetime
|
from datetime import date, datetime
|
||||||
|
from ..upload_file.schemas import UploadFileInfo
|
||||||
|
|
||||||
|
|
||||||
class RatePostDataCheckNodeId(BaseModel):
|
class RatePostDataCheckNodeId(BaseModel):
|
||||||
|
@ -13,14 +14,14 @@ class RatePostDataCheckNodeId(BaseModel):
|
||||||
|
|
||||||
class RatePostDataCheckNodeAdd(BaseModel):
|
class RatePostDataCheckNodeAdd(BaseModel):
|
||||||
serve_id: str
|
serve_id: str
|
||||||
data: Optional[dict] = {}
|
data: Optional[dict] = {}
|
||||||
file: Optional[dict] = None
|
file: Optional[UploadFileInfo] = None
|
||||||
file_id: Optional[str] = None
|
file_id: Optional[str] = None
|
||||||
parsed_data: Optional[dict] = {}
|
parsed_data: Optional[dict] = {}
|
||||||
status: Optional[NodeState] = NodeState.incomplete
|
status: Optional[NodeState] = NodeState.incomplete
|
||||||
remark: Optional[str] = None
|
remark: Optional[str] = None
|
||||||
create_time: Optional[datetime] = None
|
create_time: Optional[datetime] = None
|
||||||
finish_time: Optional[datetime] = None
|
finish_time: Optional[datetime] = None
|
||||||
|
|
||||||
|
|
||||||
class RatePostDataCheckNodeAddOptional(RatePostDataCheckNodeAdd, metaclass=AllOptional):
|
class RatePostDataCheckNodeAddOptional(RatePostDataCheckNodeAdd, metaclass=AllOptional):
|
||||||
|
|
|
@ -50,3 +50,6 @@ def make_rate_serve_id(db: Session):
|
||||||
if db.query(RateServe).filter(RateServe.serve_id == new_id).first():
|
if db.query(RateServe).filter(RateServe.serve_id == new_id).first():
|
||||||
raise HTTPException(status_code=303, detail='创建服务ID失败')
|
raise HTTPException(status_code=303, detail='创建服务ID失败')
|
||||||
return f"XP{time_str}{''.join(choices(string.ascii_uppercase, k=5))}"
|
return f"XP{time_str}{''.join(choices(string.ascii_uppercase, k=5))}"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -32,21 +32,21 @@ def rate_serve_get(req: schemas.RateServeGetReq, db: Session = Depends(get_db)):
|
||||||
item = crud.rate_serve_get(db, req)
|
item = crud.rate_serve_get(db, req)
|
||||||
if not item:
|
if not item:
|
||||||
raise HTTPException(detail="未查询到信息", status_code=404)
|
raise HTTPException(detail="未查询到信息", status_code=404)
|
||||||
data = item.to_dict()
|
data = item.to_full_dict()
|
||||||
for key in rate_flow_nodes:
|
# for key in rate_flow_nodes:
|
||||||
node = getattr(item, key)
|
# node = getattr(item, key)
|
||||||
if node:
|
# if node:
|
||||||
# 每个节点有一个to_lite_dict方法
|
# # 每个节点有一个to_lite_dict方法
|
||||||
data[key] = node.to_lite_dict()
|
# data[key] = node.to_lite_dict()
|
||||||
return schemas.RateServeGetRes(**data)
|
return schemas.RateServeGetRes(**data)
|
||||||
|
|
||||||
|
|
||||||
@router.post("/query", summary="查询评级服务", response_model=schemas.RateServeQueryRes)
|
@router.post("/query", summary="查询评级服务", response_model=schemas.RateServeQueryRes)
|
||||||
def rate_serve_query(req: schemas.RateServeQueryReq, db: Session = Depends(get_db)):
|
def rate_serve_query(req: schemas.RateServeQueryReq, db: Session = Depends(get_db)):
|
||||||
count, query = crud.rate_serve_query(db, req)
|
count, query = crud.rate_serve_query(db, req)
|
||||||
items = [schemas.RateServeInfo(**item.to_full_dict(include=req.include,
|
items = [schemas.RateServeInfoLite(**item.to_full_dict(include=req.include,
|
||||||
ex_include=req.ex_include,
|
ex_include=req.ex_include,
|
||||||
relation_use_id=req.relation_use_id)) for item in query]
|
relation_use_id=req.relation_use_id)) for item in query]
|
||||||
return schemas.RateServeQueryRes(count=count, items=items)
|
return schemas.RateServeQueryRes(count=count, items=items)
|
||||||
|
|
||||||
#########
|
#########
|
||||||
|
|
|
@ -4,6 +4,13 @@ from utils.pydantic_utils import AllOptional
|
||||||
from utils.sqlalchemy_common_utils import QueryParams, QueryInclude
|
from utils.sqlalchemy_common_utils import QueryParams, QueryInclude
|
||||||
from datetime import date, datetime
|
from datetime import date, datetime
|
||||||
from ...schemas import RateServeState, NodeState
|
from ...schemas import RateServeState, NodeState
|
||||||
|
from ..rate_post_data_check_node.schemas import RatePostDataCheckNodeInfo
|
||||||
|
from ..rate_data_preparation_node.schemas import RateDataPreparationNodeInfo
|
||||||
|
from ..rate_work_node.schemas import RateWorkNodeInfo
|
||||||
|
from ..report_work_node.schemas import ReportWorkNodeInfo
|
||||||
|
from ..cert_work_node.schemas import CertWorkNodeInfo
|
||||||
|
from ..company_index.schemas import CompanyIndexInfo
|
||||||
|
from ..company_user.schemas import CompanyUserInfo
|
||||||
|
|
||||||
|
|
||||||
class RateServeId(BaseModel):
|
class RateServeId(BaseModel):
|
||||||
|
@ -11,10 +18,10 @@ class RateServeId(BaseModel):
|
||||||
|
|
||||||
|
|
||||||
class RateServeAddWithoutNode(BaseModel):
|
class RateServeAddWithoutNode(BaseModel):
|
||||||
# apply_user: Optional[dict] = None
|
# apply_user: Optional[CompanyUserInfo] = None
|
||||||
apply_user_id: str
|
apply_user_id: str
|
||||||
company_id: str
|
company_id: str
|
||||||
company: Optional[Dict] = None
|
company: Optional[CompanyIndexInfo] = None
|
||||||
project: Optional[str] = None
|
project: Optional[str] = None
|
||||||
status: Optional[RateServeState] = RateServeState.examining
|
status: Optional[RateServeState] = RateServeState.examining
|
||||||
create_time: Optional[datetime] = None
|
create_time: Optional[datetime] = None
|
||||||
|
@ -29,11 +36,11 @@ class LiteNode(BaseModel):
|
||||||
|
|
||||||
|
|
||||||
class RateServeAdd(RateServeAddWithoutNode):
|
class RateServeAdd(RateServeAddWithoutNode):
|
||||||
rate_post_data_check_node: Optional[dict] = None
|
rate_post_data_check_node: Optional[RatePostDataCheckNodeInfo] = None
|
||||||
rate_data_preparation_node: Optional[dict] = None
|
rate_data_preparation_node: Optional[RateDataPreparationNodeInfo] = None
|
||||||
rate_work_node: Optional[dict] = None
|
rate_work_node: Optional[RateWorkNodeInfo] = None
|
||||||
report_work_node: Optional[dict] = None
|
report_work_node: Optional[ReportWorkNodeInfo] = None
|
||||||
cert_work_node: Optional[dict] = None
|
cert_work_node: Optional[CertWorkNodeInfo] = None
|
||||||
|
|
||||||
|
|
||||||
class RateServeAddLite(RateServeAddWithoutNode):
|
class RateServeAddLite(RateServeAddWithoutNode):
|
||||||
|
@ -114,7 +121,7 @@ class RateServeQueryReq(RateServeQuery):
|
||||||
|
|
||||||
class RateServeQueryRes(BaseModel):
|
class RateServeQueryRes(BaseModel):
|
||||||
count: int
|
count: int
|
||||||
items: List[RateServeInfo]
|
items: List[RateServeInfoLite]
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
class RateServeFlow:
|
||||||
|
@staticmethod
|
||||||
|
def pass_node(node_name):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class RateServeFlowNodeCheck:
|
||||||
|
@staticmethod
|
||||||
|
def rate_post_data_check_node(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def rate_data_preparation_node(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def rate_work_node(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def report_work_node(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def cert_work_node(self):
|
||||||
|
pass
|
|
@ -5,6 +5,7 @@ from mods.rate.schemas import NodeState
|
||||||
from utils.pydantic_utils import AllOptional
|
from utils.pydantic_utils import AllOptional
|
||||||
from utils.sqlalchemy_common_utils import QueryParams, QueryInclude
|
from utils.sqlalchemy_common_utils import QueryParams, QueryInclude
|
||||||
from datetime import date, datetime
|
from datetime import date, datetime
|
||||||
|
from ..upload_file.schemas import UploadFileInfo
|
||||||
|
|
||||||
|
|
||||||
class ReportWorkNodeId(BaseModel):
|
class ReportWorkNodeId(BaseModel):
|
||||||
|
@ -14,11 +15,11 @@ class ReportWorkNodeId(BaseModel):
|
||||||
class ReportWorkNodeAdd(BaseModel):
|
class ReportWorkNodeAdd(BaseModel):
|
||||||
serve_id: str
|
serve_id: str
|
||||||
origin_file_id: Optional[str] = None
|
origin_file_id: Optional[str] = None
|
||||||
origin_file: Optional[dict] = None
|
origin_file: Optional[UploadFileInfo] = None
|
||||||
origin_create_time: Optional[datetime] = None
|
origin_create_time: Optional[datetime] = None
|
||||||
create_time: Optional[datetime] = None
|
create_time: Optional[datetime] = None
|
||||||
final_file_id: Optional[str] = None
|
final_file_id: Optional[str] = None
|
||||||
final_file: Optional[dict] = None
|
final_file: Optional[UploadFileInfo] = None
|
||||||
final_create_time: Optional[datetime] = None
|
final_create_time: Optional[datetime] = None
|
||||||
status: Optional[NodeState] = NodeState.incomplete
|
status: Optional[NodeState] = NodeState.incomplete
|
||||||
remark: Optional[str] = None
|
remark: Optional[str] = None
|
||||||
|
|
|
@ -22,3 +22,6 @@ def sheet_parse(sheet_file, wb_config=rate_wb_config):
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
return wb_data
|
return wb_data
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ from .mods.post.router import router as post_router
|
||||||
from .mods.department.router import router as department_router
|
from .mods.department.router import router as department_router
|
||||||
from .mods.auth_rule.router import router as auth_rule_router
|
from .mods.auth_rule.router import router as auth_rule_router
|
||||||
from . import schemas
|
from . import schemas
|
||||||
|
from .mods.user.schemas import UserInfo
|
||||||
|
|
||||||
router = APIRouter(prefix="/user")
|
router = APIRouter(prefix="/user")
|
||||||
router.include_router(user_router)
|
router.include_router(user_router)
|
||||||
|
@ -19,7 +20,7 @@ router.include_router(department_router)
|
||||||
router.include_router(auth_rule_router)
|
router.include_router(auth_rule_router)
|
||||||
|
|
||||||
|
|
||||||
@router.post("/get_login_verify_code", tags=["用户登录"], summary="获取登录验证码")
|
@router.post("/get_login_verify_code", tags=["用户登录"], summary="获取登录验证码接口")
|
||||||
def get_login_verify_code(body: schemas.GetLoginVerifyCodeReq, db: Session = Depends(get_db)):
|
def get_login_verify_code(body: schemas.GetLoginVerifyCodeReq, db: Session = Depends(get_db)):
|
||||||
try:
|
try:
|
||||||
account = body.account
|
account = body.account
|
||||||
|
@ -44,7 +45,7 @@ def get_login_verify_code(body: schemas.GetLoginVerifyCodeReq, db: Session = Dep
|
||||||
return {"msg": f"验证码已发送至{'邮箱' if account_type == 'email' else '手机'},请查看", "state": 1}
|
return {"msg": f"验证码已发送至{'邮箱' if account_type == 'email' else '手机'},请查看", "state": 1}
|
||||||
|
|
||||||
|
|
||||||
@router.post('/login_by_verify_code', tags=["用户登录"], summary='验证码登录')
|
@router.post('/login_by_verify_code', tags=["用户登录"], summary='验证码登录接口')
|
||||||
def login_by_verify_code(req: schemas.LoginByVerifyCode,
|
def login_by_verify_code(req: schemas.LoginByVerifyCode,
|
||||||
db: Session = Depends(get_db)):
|
db: Session = Depends(get_db)):
|
||||||
account = req.account
|
account = req.account
|
||||||
|
@ -70,7 +71,7 @@ def login_by_verify_code(req: schemas.LoginByVerifyCode,
|
||||||
return {'token': token, 'user_info': user_data}
|
return {'token': token, 'user_info': user_data}
|
||||||
|
|
||||||
|
|
||||||
@router.post('/refresh_token', tags=["用户登录"], summary='刷新token')
|
@router.post('/refresh_token', tags=["用户登录"], summary='token刷新接口')
|
||||||
def refresh_token(token: AdminUserTokenDataModel = Depends(auth_util.token_data_depend), db: Session = Depends(get_db)):
|
def refresh_token(token: AdminUserTokenDataModel = Depends(auth_util.token_data_depend), db: Session = Depends(get_db)):
|
||||||
user = db.query(User).filter(User.id == token.id).first()
|
user = db.query(User).filter(User.id == token.id).first()
|
||||||
if not user:
|
if not user:
|
||||||
|
@ -81,3 +82,14 @@ def refresh_token(token: AdminUserTokenDataModel = Depends(auth_util.token_data_
|
||||||
token_data = auth_util.tokenDataModel(**user_data).dict()
|
token_data = auth_util.tokenDataModel(**user_data).dict()
|
||||||
token = auth_util.create_token(token_data)
|
token = auth_util.create_token(token_data)
|
||||||
return {'token': token, 'user_info': user_data}
|
return {'token': token, 'user_info': user_data}
|
||||||
|
|
||||||
|
|
||||||
|
@router.post('/get_user_info', tags=["用户登录"], summary='用户信息获取接口', response_model=UserInfo)
|
||||||
|
def func(token: AdminUserTokenDataModel = Depends(auth_util.token_data_depend), db: Session = Depends(get_db)):
|
||||||
|
user = db.query(User).filter(User.id == token.id).first()
|
||||||
|
if not user:
|
||||||
|
raise HTTPException(detail="账号未录入系统", status_code=303)
|
||||||
|
auth_data = user_crud.get_user_auth(user)
|
||||||
|
user_data = user.to_full_dict(relation_use_id=True)
|
||||||
|
user_data["auth_data"] = auth_data
|
||||||
|
return user_data
|
||||||
|
|
Loading…
Reference in New Issue