diff --git a/backend/app/routers/seek.py b/backend/app/routers/seek.py index 826868c..e0080c4 100644 --- a/backend/app/routers/seek.py +++ b/backend/app/routers/seek.py @@ -172,72 +172,6 @@ def create_seek( db.refresh(seek) return seek -@router.get("/{seek_id}", response_model=SeekInfoResponse) -def get_seek( - seek_id: str, - current_user = Depends(get_current_user), - db: Session = Depends(get_db) -): - """获取寻配号详情""" - seek = db.query(SeekInfo).filter(SeekInfo.id == seek_id).first() - if not seek: - raise HTTPException(status_code=404, detail="寻配号不存在") - - # 增加浏览数 - seek.view_count += 1 - db.commit() - - return seek - -@router.put("/{seek_id}", response_model=SeekInfoResponse) -def update_seek( - seek_id: str, - data: SeekInfoUpdate, - current_user = Depends(get_current_user), - db: Session = Depends(get_db) -): - """更新寻配号""" - if not current_user: - raise HTTPException(status_code=401, detail="请先登录") - - seek = db.query(SeekInfo).filter( - SeekInfo.id == seek_id, - SeekInfo.user_id == current_user.f99_90_id - ).first() - - if not seek: - raise HTTPException(status_code=404, detail="寻配号不存在") - - for key, value in data.model_dump(exclude_unset=True).items(): - setattr(seek, key, value) - - db.commit() - db.refresh(seek) - return seek - -@router.delete("/{seek_id}") -def delete_seek( - seek_id: str, - current_user = Depends(get_current_user), - db: Session = Depends(get_db) -): - """删除寻配号""" - if not current_user: - raise HTTPException(status_code=401, detail="请先登录") - - seek = db.query(SeekInfo).filter( - SeekInfo.id == seek_id, - SeekInfo.user_id == current_user.f99_90_id - ).first() - - if not seek: - raise HTTPException(status_code=404, detail="寻配号不存在") - - seek.status = "deleted" - db.commit() - - return {"message": "删除成功"} - # ============ 匹配相关API ============ @router.get("/my-match") @@ -406,3 +340,68 @@ def get_publisher_info( "phone": publisher.phone, "contact": contact, } + + +# ============ 通配路由(必须放最后,避免匹配冲突)============ +@router.get("/{seek_id}", response_model=SeekInfoResponse) +def get_seek( + seek_id: str, + current_user = Depends(get_current_user), + db: Session = Depends(get_db) +): + """获取寻配号详情""" + seek = db.query(SeekInfo).filter(SeekInfo.id == seek_id).first() + if not seek: + raise HTTPException(status_code=404, detail="寻配号不存在") + seek.view_count += 1 + db.commit() + return seek + +@router.put("/{seek_id}", response_model=SeekInfoResponse) +def update_seek( + seek_id: str, + data: SeekInfoUpdate, + current_user = Depends(get_current_user), + db: Session = Depends(get_db) +): + """更新寻配号""" + if not current_user: + raise HTTPException(status_code=401, detail="请先登录") + seek = db.query(SeekInfo).filter(SeekInfo.id == seek_id).first() + if not seek: + raise HTTPException(status_code=404, detail="寻配号不存在") + if seek.user_id != current_user.f99_90_id: + raise HTTPException(status_code=403, detail="无权限") + if data.title is not None: + seek.title = data.title + if data.content is not None: + seek.content = data.content + if data.expect_category is not None: + seek.expect_category = data.expect_category + if data.expect_version is not None: + seek.expect_version = data.expect_version + if data.expect_packaging is not None: + seek.expect_packaging = data.expect_packaging + if data.status is not None: + seek.status = data.status + db.commit() + db.refresh(seek) + return seek + +@router.delete("/{seek_id}") +def delete_seek( + seek_id: str, + current_user = Depends(get_current_user), + db: Session = Depends(get_db) +): + """删除寻配号""" + if not current_user: + raise HTTPException(status_code=401, detail="请先登录") + seek = db.query(SeekInfo).filter(SeekInfo.id == seek_id).first() + if not seek: + raise HTTPException(status_code=404, detail="寻配号不存在") + if seek.user_id != current_user.f99_90_id: + raise HTTPException(status_code=403, detail="无权限") + seek.status = "deleted" + db.commit() + return {"message": "删除成功"}