Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions api_routes/v1/clean.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from utils.database import get_db # 从database.py中导入get_db函数
from utils.database import add_clean_record, get_clean_records # 导入数据库操作函数
from pydantic import BaseModel
from flask import jsonify, request
from . import api_v1

# 创建 FastAPI 路由器
router = APIRouter()

# 请求体模型 - 用于POST请求,包含"name"和"userid"
class AddCleanRequest(BaseModel):
name: str
userid: str

# 响应模型 - 用于统一结构化响应
class CleanResponse(BaseModel):
code: int
status: str
message: str
data: dict

# POST /api/clean/add - 添加打扫记录
@router.post("/add", response_model=CleanResponse)
def add_clean(request: AddCleanRequest, db: Session = Depends(get_db)):
try:
response = add_clean_record(db, name=request.name, userid=request.userid)
return response
except Exception as e:
raise HTTPException(status_code=500, detail="服务器内部错误")

# GET /api/clean/list - 获取打扫记录列表
class GetCleanRequest(BaseModel):
page: int
size: int

@router.get("/list", response_model=CleanResponse)
def get_clean(request: GetCleanRequest, db: Session = Depends(get_db)):
try:
response = get_clean_records(db, page=request.page, size=request.size)
return response
except Exception as e:
raise HTTPException(status_code=500, detail="服务器内部错误")

22 changes: 22 additions & 0 deletions models/clean.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
from datetime import datetime
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import validates

Base = declarative_base()

class Clean(Base):
__tablename__ = 'clean' # 表名为 'clean'

id = Column(Integer, primary_key=True, autoincrement=True) # 自动递增的主键
record_id = Column(String(50), nullable=False, unique=True) # 记录编号,唯一
name = Column(String(100), nullable=False) # 相关人员名称
userid = Column(String(100), nullable=False) # 相关人员的电子邮件地址
times = Column(Integer, nullable=False) # 打扫次数
created_at = Column(String(20), default=datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')) # 创建时间
updated_at = Column(String(20), default=datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')) # 更新时间

def __repr__(self):
return f"<Clean(id={self.id}, record_id={self.record_id}, name={self.name}, times={self.times})>"


88 changes: 88 additions & 0 deletions utils/database.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,17 @@
import os


from datetime import datetime
import uuid
from models.arrange import Arrange # 引入 Clean 模型
from models.message import Message
from sqlalchemy.orm import Session

load_dotenv()

SQLALCHEMY_DATABASE_URL = os.getenv("DATABASE_URL")
print(os.getenv("DATABASE_URL"))


SQLALCHEMY_DATABASE_URL = os.getenv("DATABASE_URL")
engine = create_engine(SQLALCHEMY_DATABASE_URL)
Expand All @@ -17,6 +26,84 @@
Base = declarative_base()



# 添加安排记录
def add_arrange_record(db: Session, name: str, type: str, order: int):
new_arrange = Arrange(name=name, type=type, order=order)
db.add(new_arrange)
db.commit()
db.refresh(new_arrange)
return new_arrange

# 学年活动记录表
# 获取所有安排记录
def get_arrange_records(db: Session, skip: int = 0, limit: int = 10):
return db.query(Arrange).offset(skip).limit(limit).all()

# 获取某个安排记录
def get_arrange_by_id(db: Session, arrange_id: int):
return db.query(Arrange).filter(Arrange.id == arrange_id).first()

# 更新安排记录
def update_arrange_record(db: Session, arrange_id: int, name: str, type: str, order: int):
arrange = db.query(Arrange).filter(Arrange.id == arrange_id).first()
if arrange:
arrange.name = name
arrange.type = type
arrange.order = order
db.commit()
db.refresh(arrange)
return arrange
return None

# 删除安排记录
def delete_arrange_record(db: Session, arrange_id: int):
arrange = db.query(Arrange).filter(Arrange.id == arrange_id).first()
if arrange:
db.delete(arrange)
db.commit()
return True
return False


# 信息表
# 添加消息记录
def add_message_record(db: Session, message_id: str, sender_id: str, receiver_id: str, content: str, time_stamp: str, state: int):
new_message = Message(message_id=message_id, sender_id=sender_id, receiver_id=receiver_id, content=content, time_stamp=time_stamp, state=state)
db.add(new_message)
db.commit()
db.refresh(new_message)
return new_message

# 获取所有消息记录
def get_message_records(db: Session, skip: int = 0, limit: int = 10):
return db.query(Message).offset(skip).limit(limit).all()

# 获取某个消息记录
def get_message_by_id(db: Session, message_id: int):
return db.query(Message).filter(Message.id == message_id).first()

# 更新消息记录
def update_message_record(db: Session, message_id: int, content: str, state: int):
message = db.query(Message).filter(Message.id == message_id).first()
if message:
message.content = content
message.state = state
db.commit()
db.refresh(message)
return message
return None

# 删除消息记录
def delete_message_record(db: Session, message_id: int):
message = db.query(Message).filter(Message.id == message_id).first()
if message:
db.delete(message)
db.commit()
return True
return False


def get_db():
db = SessionLocal()
try:
Expand Down Expand Up @@ -310,3 +397,4 @@ def delete_stuff_borrow(db: Session, sb_id: str) -> bool:
return True