You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.3 KiB
88 lines
2.3 KiB
# -*- coding:utf-8 -*-
|
|
"""
|
|
@Created on : 2023/7/26 9:58
|
|
@Author: hxl
|
|
@Des: 科室管理
|
|
"""
|
|
from fastapi import APIRouter, Query
|
|
from pydantic import BaseModel
|
|
|
|
from helper import respond_to
|
|
from models import Department, User
|
|
|
|
router = APIRouter(prefix='/department')
|
|
|
|
|
|
class CreateDepartment(BaseModel):
|
|
name: str
|
|
code: str | None
|
|
phone: str | None
|
|
comment: str | None
|
|
|
|
|
|
class UpdateDepartment(BaseModel):
|
|
name: str | None
|
|
code: str | None
|
|
phone: str | None
|
|
comment: str | None
|
|
|
|
|
|
@router.post('', summary='新增科室')
|
|
async def create_dep(post: CreateDepartment):
|
|
"""
|
|
新增科室
|
|
:param post: CreateDepartment
|
|
:return:
|
|
"""
|
|
get_department = await Department.get_or_none(name=post.name)
|
|
if get_department:
|
|
return respond_to(code=400, desc=f'科室{post.name}已经存在')
|
|
await Department.create(**post.dict())
|
|
return respond_to(desc=f"科室{post.name}创建成功")
|
|
|
|
|
|
@router.delete('/{department_id}', summary='删除科室')
|
|
async def del_dep(department_id: str):
|
|
"""
|
|
删除科室
|
|
:param department_id: str
|
|
:return:
|
|
"""
|
|
users = await User.filter(department_id=department_id)
|
|
if users:
|
|
return respond_to(code=400, desc='科室下有用户,不能删除')
|
|
await Department.filter(id=department_id).delete()
|
|
return respond_to(desc='删除成功')
|
|
|
|
|
|
@router.put('/{department_id}', summary='编辑科室')
|
|
async def update_dep(department_id: str, post: UpdateDepartment):
|
|
"""
|
|
编辑科室
|
|
:param department_id: str
|
|
:param post: UpdateDepartment
|
|
:return:
|
|
"""
|
|
department_check = await Department.get_or_none(id=department_id)
|
|
if not department_check:
|
|
return respond_to(code=400, desc='科室不存在')
|
|
if department_check.name != post.name:
|
|
check_name = await Department.get_or_none(name=post.name)
|
|
if check_name:
|
|
return respond_to(code=400, desc=f'科室{post.name}已经存在')
|
|
|
|
data = post.dict()
|
|
await Department.filter(pk=department_id).update(**data)
|
|
return respond_to(desc='更新成功')
|
|
|
|
|
|
@router.get('', summary='科室列表')
|
|
async def index(name: str = Query(None)):
|
|
"""
|
|
科室列表
|
|
:param
|
|
:return:
|
|
"""
|
|
data = await Department.all()
|
|
return respond_to(data=data)
|