fix: tabulation in marketplace update price and cancel item sale
All checks were successful
Build and Deploy / deploy (push) Successful in 22s

This commit is contained in:
2025-07-21 22:28:51 +05:00
parent 1ae08de28b
commit 8c4db146c9

View File

@ -212,67 +212,67 @@ class MarketplaceService:
"message": "Покупка в обработке. Предмет будет добавлен в ваш инвентарь." "message": "Покупка в обработке. Предмет будет добавлен в ваш инвентарь."
} }
async def cancel_item_sale(self, username: str, item_id: str): async def cancel_item_sale(self, username: str, item_id: str):
"""Снять предмет с продажи""" """Снять предмет с продажи"""
# Находим предмет # Находим предмет
item = await marketplace_collection.find_one({"id": item_id}) item = await marketplace_collection.find_one({"id": item_id})
if not item: if not item:
raise HTTPException(status_code=404, detail="Предмет не найден") raise HTTPException(status_code=404, detail="Предмет не найден")
# Проверяем, что пользователь является владельцем предмета
if item["seller_name"] != username:
raise HTTPException(status_code=403, detail="Вы не можете снять с продажи чужой предмет")
# Проверяем, что пользователь является владельцем предмета # Создаем операцию возврата предмета
if item["seller_name"] != username: operation_id = str(uuid.uuid4())
raise HTTPException(status_code=403, detail="Вы не можете снять с продажи чужой предмет")
operation = {
# Создаем операцию возврата предмета "id": operation_id,
operation_id = str(uuid.uuid4()) "type": "cancel_sale",
"player_name": username,
operation = { "item_id": item_id,
"id": operation_id, "item_data": item["item_data"],
"type": "cancel_sale", "server_ip": item["server_ip"],
"player_name": username, "status": "pending",
"item_id": item_id, "created_at": datetime.utcnow()
"item_data": item["item_data"], }
"server_ip": item["server_ip"],
"status": "pending", await marketplace_operations.insert_one(operation)
"created_at": datetime.utcnow()
} # Удаляем предмет с торговой площадки
await marketplace_collection.delete_one({"id": item_id})
await marketplace_operations.insert_one(operation)
return {
# Удаляем предмет с торговой площадки "status": "pending",
await marketplace_collection.delete_one({"id": item_id}) "operation_id": operation_id,
"message": "Предмет снят с продажи и будет возвращен в ваш инвентарь"
return { }
"status": "pending",
"operation_id": operation_id,
"message": "Предмет снят с продажи и будет возвращен в ваш инвентарь"
}
async def update_item_price(self, username: str, item_id: str, new_price: int): async def update_item_price(self, username: str, item_id: str, new_price: int):
"""Обновить цену предмета на торговой площадке""" """Обновить цену предмета на торговой площадке"""
# Находим предмет # Находим предмет
item = await marketplace_collection.find_one({"id": item_id}) item = await marketplace_collection.find_one({"id": item_id})
if not item: if not item:
raise HTTPException(status_code=404, detail="Предмет не найден") raise HTTPException(status_code=404, detail="Предмет не найден")
# Проверяем, что пользователь является владельцем предмета
if item["seller_name"] != username:
raise HTTPException(status_code=403, detail="Вы не можете изменить цену чужого предмета")
# Проверяем, что пользователь является владельцем предмета # Валидация новой цены
if item["seller_name"] != username: if new_price <= 0:
raise HTTPException(status_code=403, detail="Вы не можете изменить цену чужого предмета") raise HTTPException(status_code=400, detail="Цена должна быть положительным числом")
# Валидация новой цены # Обновляем цену предмета
if new_price <= 0: result = await marketplace_collection.update_one(
raise HTTPException(status_code=400, detail="Цена должна быть положительным числом") {"id": item_id},
{"$set": {"price": new_price}}
# Обновляем цену предмета )
result = await marketplace_collection.update_one(
{"id": item_id}, if result.modified_count == 0:
{"$set": {"price": new_price}} raise HTTPException(status_code=500, detail="Не удалось обновить цену предмета")
)
return {
if result.modified_count == 0: "status": "success",
raise HTTPException(status_code=500, detail="Не удалось обновить цену предмета") "message": f"Цена предмета обновлена на {new_price} монет"
}
return {
"status": "success",
"message": f"Цена предмета обновлена на {new_price} монет"
}