from typing import List from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from User import crud, models, schemas from User.database import SessionLocal, engine from Utils.AccessControl.AccessUtil import access_interseptor models.Base.metadata.create_all(bind=engine) router = APIRouter( tags=["用户管理"], prefix="/api/user/admin", dependencies=[ Depends(access_interseptor) ] ) def get_db(): try: db = SessionLocal() yield db finally: db.close() @router.post("/create/", summary="新建用户", response_model=schemas.InfoBase) def create_user(body: schemas.UserCreate, db: Session = Depends(get_db)): item = crud.get_user_by_email(db, email=body.email) if item: raise HTTPException(status_code=400, detail="Email already registered") crud.create_user(db=db, body=body) return {"info": "Success"} @router.post("/delete/", summary="删除用户") def delete_user(uid: int, db: Session = Depends(get_db)): crud.delete_user(db=db, _id=uid) return {"info": "Success"} @router.post("/edit", summary="编辑用户") def user_edit(uid: int, body: schemas.UserEdit, db: Session = Depends(get_db)): data = crud.get_user_by_id(db, uid) if not data: raise HTTPException(status_code=400, detail="User Not found") crud.edit_user(db=db, body=body, uid=uid) return {"info": "Success"} @router.post("/reset_pwd", summary="重置用户密码") def user_reset_pwd(uid: int, db: Session = Depends(get_db)): data = crud.get_user_by_id(db, uid) if not data: raise HTTPException(status_code=400, detail="User Not found") passwd = "Fecr1988" crud.reset_user_pwd(db=db, passwd=passwd, uid=uid) return {"info": "Success"} @router.post("/search", summary="查询用户", response_model=List[schemas.User]) def search_users(body: schemas.UserSearch, skip: int = 0, limit: int = 20, db: Session = Depends(get_db)): users = crud.get_users(db, body=body, skip=skip, limit=limit) return users @router.post("/detail", summary="用户详情", response_model=schemas.User) def user_detail(uid: int, db: Session = Depends(get_db)): data = crud.get_user_by_id(db, uid=uid) if data is None: raise HTTPException(status_code=404, detail="User Not found") return data