|
|
@@ -110,6 +110,7 @@ def get_next_card_details(card_id: int, db_conn: PooledMySQLConnection = db_depe
|
|
|
if isinstance(e, HTTPException): raise e
|
|
|
raise HTTPException(status_code=500, detail="服务器内部错误,查询数据库失败。")
|
|
|
|
|
|
+
|
|
|
@router.get("/card_list_filter", response_model=CardListResponseWrapper, summary="获取卡牌列表和总数")
|
|
|
def card_list_filter(
|
|
|
card_id: Optional[int] = Query(None, description="筛选:卡牌ID"),
|
|
|
@@ -117,6 +118,8 @@ def card_list_filter(
|
|
|
card_name: Optional[str] = Query(None, description="筛选:卡牌名称"),
|
|
|
card_type: Optional[CardType] = Query(None, description="筛选:卡牌类型"),
|
|
|
is_edited: Optional[bool] = Query(None, description="筛选:是否已编辑"),
|
|
|
+ review_state: Optional[int] = Query(None, ge=1, le=4,
|
|
|
+ description="筛选:审核状态(1待复检, 2已复检, 3审核未通过, 4审核通过)"),
|
|
|
|
|
|
min_detection_score: Optional[float] = Query(None, ge=0, le=10),
|
|
|
max_detection_score: Optional[float] = Query(None, ge=0, le=10),
|
|
|
@@ -140,12 +143,12 @@ def card_list_filter(
|
|
|
结构: { "data": { "total": 100, "list": [...] } }
|
|
|
"""
|
|
|
if page_num is not None:
|
|
|
- skip = (page_num-1) * limit
|
|
|
+ skip = (page_num - 1) * limit
|
|
|
|
|
|
try:
|
|
|
result = crud_card.get_card_list_and_count(
|
|
|
db_conn,
|
|
|
- card_id, cardNo, card_name, card_type, is_edited,
|
|
|
+ card_id, cardNo, card_name, card_type, is_edited, review_state,
|
|
|
min_detection_score, max_detection_score,
|
|
|
min_modified_score, max_modified_score,
|
|
|
created_start, created_end,
|
|
|
@@ -212,3 +215,40 @@ def delete_card(id: int, db_conn: PooledMySQLConnection = db_dependency):
|
|
|
logger.error(f"删除卡牌失败 ({id}): {e}")
|
|
|
if isinstance(e, HTTPException): raise e
|
|
|
raise HTTPException(status_code=500, detail="删除卡牌失败。")
|
|
|
+
|
|
|
+
|
|
|
+@router.put("/review_state/{id}", status_code=200, summary="修改卡牌的审核状态")
|
|
|
+def update_review_state(
|
|
|
+ id: int,
|
|
|
+ review_state: int = Query(..., ge=1, le=4, description="审核状态 (1待复检, 2已复检, 3审核未通过, 4审核通过)"),
|
|
|
+ db_conn: PooledMySQLConnection = db_dependency
|
|
|
+):
|
|
|
+ """
|
|
|
+ 修改某张卡牌的审核状态。
|
|
|
+
|
|
|
+ review_state 参数说明:
|
|
|
+ - 1: 待复检 (默认状态)
|
|
|
+ - 2: 已复检
|
|
|
+ - 3: 审核未通过
|
|
|
+ - 4: 审核通过
|
|
|
+ """
|
|
|
+ try:
|
|
|
+ with db_conn.cursor() as cursor:
|
|
|
+ # 更新指定 card_id 的 review_state 字段
|
|
|
+ query_update = f"UPDATE {settings.DB_CARD_TABLE_NAME} SET review_state = %s WHERE id = %s"
|
|
|
+ cursor.execute(query_update, (review_state, id))
|
|
|
+
|
|
|
+ if cursor.rowcount == 0:
|
|
|
+ raise HTTPException(status_code=404, detail=f"ID为 {id} 的卡牌未找到。")
|
|
|
+
|
|
|
+ db_conn.commit()
|
|
|
+ logger.info(f"卡牌 ID {id} 的审核状态已成功修改为 {review_state}。")
|
|
|
+
|
|
|
+ return {"message": f"成功修改卡牌 ID {id} 的审核状态为 {review_state}"}
|
|
|
+
|
|
|
+ except Exception as e:
|
|
|
+ db_conn.rollback()
|
|
|
+ logger.error(f"修改卡牌 {id} 审核状态失败: {e}")
|
|
|
+ if isinstance(e, HTTPException):
|
|
|
+ raise e
|
|
|
+ raise HTTPException(status_code=500, detail="修改审核状态失败,数据库操作错误。")
|