#!/usr/bin/env python3 # -*- coding: utf-8 -*- from fastapi import APIRouter, Request, Depends, Query, HTTPException, status from common.security import valid_access_token from sqlalchemy.orm import Session from sqlalchemy.sql import func from common.auth_user import * from sqlalchemy import text from pydantic import BaseModel from common.BigDataCenterAPI import * from database import get_db from typing import List from models import * from utils import * from utils.spatial import * import json import traceback router = APIRouter() @router.post("/create") async def create_pattern( user_id=Depends(valid_access_token), body = Depends(remove_xss_json), db: Session = Depends(get_db) ): new_pattern = TpPatternList( pattern_name=body['pattern_name'], content=body['content'], create_dept = user_id ) db.add(new_pattern) db.commit() return {"code": 200, "msg": "创建成功", "data": None} @router.put("/update/{pattern_id}") async def update_pattern( pattern_id :int , user_id=Depends(valid_access_token), body=Depends(remove_xss_json), db: Session = Depends(get_db) ): update_pattern = db.query(TpPatternList).filter(TpPatternList.id == pattern_id).first() if not update_pattern: raise HTTPException(status_code=404, detail="图案不存在") update_pattern.pattern_name = body['pattern_name'] update_pattern.content = body['content'] update_pattern.create_dept = user_id db.commit() return {"code": 200, "msg": "更新成功"} @router.get("/info/{pattern_id}") async def get_pattern_info( pattern_id: int, db: Session = Depends(get_db) ): pattern = db.query(TpPatternList).filter(TpPatternList.id == pattern_id).first() if not pattern: raise HTTPException(status_code=404, detail="图案不存在") return {"code": 200, "msg": "获取成功", "data": {"pattern_name": pattern.pattern_name, "content": pattern.content}} @router.get("/list") async def get_pattern_list( pattern_name: str = Query(None, description='预案名称'), page: int = Query(1, gt=0, description='页码'), pageSize: int = Query(5, gt=0, description='每页条目数量'), db: Session = Depends(get_db) ): query = db.query(TpPatternList) if pattern_name: query = query.filter(TpPatternList.pattern_namelike(f'%{pattern_name}%')) total_items = query.count() # 排序 query = query.order_by(TpPatternList.create_time.desc()) # 执行分页查询 patterns = query.offset((page - 1) * pageSize).limit(pageSize).all() return {"code": 200, "msg": "查询成功", "data": [{"id": p.id, "pattern_name": p.pattern_name, "content": p.content} for p in patterns], "total": total_items, "page": page, "pageSize": pageSize, "totalPages": (total_items + pageSize - 1) // pageSize } @router.delete("/delete/{pattern_id}") async def delete_pattern( pattern_id: int, db: Session = Depends(get_db) ): # 检查图案是否存在 pattern = db.query(TpPatternList).filter(TpPatternList.id == pattern_id).first() if not pattern: raise HTTPException(status_code=404, detail="图案不存在") # 执行删除操作 pattern.del_flag='2' db.commit() return {"code": 200, "msg": "删除成功"}