# -*- 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)