64 lines
2.5 KiB
Python
64 lines
2.5 KiB
Python
from fastapi import APIRouter, Query, Body
|
||
from typing import Optional
|
||
from app.models.marketplace import BuyItemRequest
|
||
|
||
router = APIRouter(
|
||
prefix="/api/marketplace",
|
||
tags=["Marketplace"]
|
||
)
|
||
|
||
@router.get("/items")
|
||
async def get_marketplace_items(
|
||
server_ip: Optional[str] = None,
|
||
page: int = Query(1, ge=1),
|
||
limit: int = Query(20, ge=1, le=100)
|
||
):
|
||
"""Получить список предметов на торговой площадке"""
|
||
from app.services.marketplace import MarketplaceService
|
||
return await MarketplaceService().list_items(server_ip, page, limit)
|
||
|
||
@router.get("/items/{item_id}")
|
||
async def get_marketplace_item(item_id: str):
|
||
"""Получить информацию о конкретном предмете"""
|
||
from app.services.marketplace import MarketplaceService
|
||
return await MarketplaceService().get_item(item_id)
|
||
|
||
@router.post("/items/sell")
|
||
async def sell_item(
|
||
username: str = Body(...),
|
||
slot_index: int = Body(...),
|
||
amount: int = Body(...),
|
||
price: int = Body(...),
|
||
server_ip: str = Body(...)
|
||
):
|
||
"""Выставить предмет на продажу"""
|
||
from app.services.marketplace import MarketplaceService
|
||
return await MarketplaceService().add_item(username, slot_index, amount, price, server_ip)
|
||
|
||
@router.post("/items/buy/{item_id}")
|
||
async def buy_item(
|
||
item_id: str,
|
||
request: BuyItemRequest
|
||
):
|
||
"""Купить предмет"""
|
||
from app.services.marketplace import MarketplaceService
|
||
return await MarketplaceService().buy_item(request.username, item_id)
|
||
|
||
@router.get("/operations")
|
||
async def get_marketplace_operations(server_ip: str):
|
||
"""Получить список операций для выполнения на сервере"""
|
||
from app.services.marketplace import MarketplaceService
|
||
return await MarketplaceService().get_pending_operations(server_ip)
|
||
|
||
@router.post("/operations/confirm")
|
||
async def confirm_marketplace_operation(data: dict):
|
||
"""Подтвердить выполнение операции"""
|
||
from app.services.marketplace import MarketplaceService
|
||
return await MarketplaceService().confirm_operation(data["operation_id"], data.get("status"), data.get("error"))
|
||
|
||
@router.post("/items/details")
|
||
async def submit_item_details(data: dict):
|
||
"""Получить подробные данные о предмете"""
|
||
from app.services.marketplace import MarketplaceService
|
||
return await MarketplaceService().update_item_details(data["operation_id"], data["item_data"])
|