update
This commit is contained in:
parent
64ed01f5dc
commit
a26f60df6a
@ -122,10 +122,11 @@ async def create_clothing(
|
|||||||
async def read_clothes(
|
async def read_clothes(
|
||||||
skip: int = Query(0, ge=0),
|
skip: int = Query(0, ge=0),
|
||||||
limit: int = Query(100, ge=1, le=100),
|
limit: int = Query(100, ge=1, le=100),
|
||||||
db: AsyncSession = Depends(get_db)
|
db: AsyncSession = Depends(get_db),
|
||||||
|
current_user: UserModel = Depends(get_current_user)
|
||||||
):
|
):
|
||||||
"""获取所有衣服"""
|
"""获取所有衣服"""
|
||||||
clothes = await clothing_service.get_clothes(db=db, skip=skip, limit=limit)
|
clothes = await clothing_service.get_clothes(db=db, skip=skip, limit=limit, user_id=current_user.id)
|
||||||
# 手动返回标准响应格式
|
# 手动返回标准响应格式
|
||||||
return StandardResponse(code=200, data=[Clothing.model_validate(clothing) for clothing in clothes])
|
return StandardResponse(code=200, data=[Clothing.model_validate(clothing) for clothing in clothes])
|
||||||
|
|
||||||
|
|||||||
@ -12,8 +12,10 @@ from app.services import clothing as clothing_service
|
|||||||
from app.api.deps import get_current_user
|
from app.api.deps import get_current_user
|
||||||
from app.services.dashscope_service import DashScopeService
|
from app.services.dashscope_service import DashScopeService
|
||||||
from app.schemas.response import StandardResponse
|
from app.schemas.response import StandardResponse
|
||||||
from app.models.tryon import TryonHistory
|
from app.models.tryon import TryonHistory, TryonStatus
|
||||||
from app.schemas.tryon import TryonHistoryModel
|
from app.schemas.tryon import TryonHistoryModel
|
||||||
|
from app.core.exceptions import BusinessError
|
||||||
|
from app.services import cos as cos_service
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@ -67,7 +69,8 @@ async def tryon(
|
|||||||
bottom_clothing_id=bottom_clothing_id,
|
bottom_clothing_id=bottom_clothing_id,
|
||||||
top_clothing_url=top_clothing_url,
|
top_clothing_url=top_clothing_url,
|
||||||
bottom_clothing_url=bottom_clothing_url,
|
bottom_clothing_url=bottom_clothing_url,
|
||||||
task_id=task_id
|
task_id=task_id,
|
||||||
|
status=TryonStatus.GENERATING
|
||||||
)
|
)
|
||||||
db.add(tryon_history)
|
db.add(tryon_history)
|
||||||
await db.commit()
|
await db.commit()
|
||||||
@ -87,3 +90,55 @@ async def get_tryon_histories(
|
|||||||
tryon_histories = histories.scalars().all()
|
tryon_histories = histories.scalars().all()
|
||||||
|
|
||||||
return StandardResponse(code=200, message="试穿历史获取成功", data=[TryonHistoryModel.model_validate(history) for history in tryon_histories])
|
return StandardResponse(code=200, message="试穿历史获取成功", data=[TryonHistoryModel.model_validate(history) for history in tryon_histories])
|
||||||
|
|
||||||
|
@router.get("/tryon/history/{history_id}", tags=["tryon"])
|
||||||
|
async def get_tryon_history(
|
||||||
|
history_id: int,
|
||||||
|
db: AsyncSession = Depends(deps.get_db),
|
||||||
|
current_user: User = Depends(get_current_user)
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
获取试穿历史详情
|
||||||
|
"""
|
||||||
|
history = await db.execute(select(TryonHistory).where(TryonHistory.id == history_id, TryonHistory.user_id == current_user.id))
|
||||||
|
tryon_history = history.scalar_one_or_none()
|
||||||
|
if not tryon_history:
|
||||||
|
raise BusinessError(code=404, message="试穿历史不存在")
|
||||||
|
|
||||||
|
return StandardResponse(code=200, message="试穿历史详情获取成功", data=TryonHistoryModel.model_validate(tryon_history))
|
||||||
|
|
||||||
|
@router.get("/tryon/history/{history_id}/check", tags=["tryon"])
|
||||||
|
async def check_tryon_status(
|
||||||
|
history_id: int,
|
||||||
|
db: AsyncSession = Depends(deps.get_db),
|
||||||
|
current_user: User = Depends(get_current_user)
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
检查试穿状态
|
||||||
|
"""
|
||||||
|
history = await db.execute(select(TryonHistory).where(TryonHistory.id == history_id, TryonHistory.user_id == current_user.id))
|
||||||
|
tryon_history = history.scalar_one_or_none()
|
||||||
|
if not tryon_history:
|
||||||
|
raise BusinessError(code=404, message="试穿历史不存在")
|
||||||
|
|
||||||
|
dashscope_service = DashScopeService()
|
||||||
|
completion = await dashscope_service.check_tryon_status(tryon_history.task_id)
|
||||||
|
if completion.get("status") == "SUCCEEDED":
|
||||||
|
completion_url = completion.get("image_url")
|
||||||
|
|
||||||
|
url = await cos_service.upload_file_from_url(completion_url, "tryon", tryon_history.id)
|
||||||
|
tryon_history.status = TryonStatus.COMPLETED
|
||||||
|
tryon_history.completion_url = url
|
||||||
|
await db.commit()
|
||||||
|
|
||||||
|
return StandardResponse(code=200, message="检查试穿状态成功", data={
|
||||||
|
"history_id": tryon_history.id,
|
||||||
|
"status": tryon_history.status,
|
||||||
|
"completion_url": url
|
||||||
|
})
|
||||||
|
else:
|
||||||
|
return StandardResponse(code=200, message="检查试穿状态成功", data={
|
||||||
|
"history_id": tryon_history.id,
|
||||||
|
"status": tryon_history.status,
|
||||||
|
"completion_url": None
|
||||||
|
})
|
||||||
|
|||||||
@ -63,8 +63,8 @@ async def http_exception_handler(request: Request, exc: HTTPException):
|
|||||||
)
|
)
|
||||||
|
|
||||||
return JSONResponse(
|
return JSONResponse(
|
||||||
status_code=200, # 与业务异常一致,返回200状态码
|
status_code=exc.status_code,
|
||||||
content=error_response.model_dump()
|
content=exc.detail
|
||||||
)
|
)
|
||||||
|
|
||||||
def add_exception_handlers(app):
|
def add_exception_handlers(app):
|
||||||
|
|||||||
@ -61,10 +61,11 @@ async def get_clothing(db: AsyncSession, clothing_id: int):
|
|||||||
result = await db.execute(select(Clothing).filter(Clothing.id == clothing_id))
|
result = await db.execute(select(Clothing).filter(Clothing.id == clothing_id))
|
||||||
return result.scalars().first()
|
return result.scalars().first()
|
||||||
|
|
||||||
async def get_clothes(db: AsyncSession, skip: int = 0, limit: int = 100):
|
async def get_clothes(db: AsyncSession, skip: int = 0, limit: int = 100, user_id: int = None):
|
||||||
"""获取所有衣服"""
|
"""获取所有衣服"""
|
||||||
result = await db.execute(
|
result = await db.execute(
|
||||||
select(Clothing)
|
select(Clothing)
|
||||||
|
.filter(Clothing.user_id == user_id)
|
||||||
.order_by(Clothing.create_time.desc())
|
.order_by(Clothing.create_time.desc())
|
||||||
.offset(skip)
|
.offset(skip)
|
||||||
.limit(limit)
|
.limit(limit)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user