fix: tabulation in marketplace update price and cancel item sale
All checks were successful
Build and Deploy / deploy (push) Successful in 22s
All checks were successful
Build and Deploy / deploy (push) Successful in 22s
This commit is contained in:
@ -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:
|
if item["seller_name"] != username:
|
||||||
raise HTTPException(status_code=403, detail="Вы не можете снять с продажи чужой предмет")
|
raise HTTPException(status_code=403, detail="Вы не можете снять с продажи чужой предмет")
|
||||||
|
|
||||||
# Создаем операцию возврата предмета
|
# Создаем операцию возврата предмета
|
||||||
operation_id = str(uuid.uuid4())
|
operation_id = str(uuid.uuid4())
|
||||||
|
|
||||||
operation = {
|
operation = {
|
||||||
"id": operation_id,
|
"id": operation_id,
|
||||||
"type": "cancel_sale",
|
"type": "cancel_sale",
|
||||||
"player_name": username,
|
"player_name": username,
|
||||||
"item_id": item_id,
|
"item_id": item_id,
|
||||||
"item_data": item["item_data"],
|
"item_data": item["item_data"],
|
||||||
"server_ip": item["server_ip"],
|
"server_ip": item["server_ip"],
|
||||||
"status": "pending",
|
"status": "pending",
|
||||||
"created_at": datetime.utcnow()
|
"created_at": datetime.utcnow()
|
||||||
}
|
}
|
||||||
|
|
||||||
await marketplace_operations.insert_one(operation)
|
await marketplace_operations.insert_one(operation)
|
||||||
|
|
||||||
# Удаляем предмет с торговой площадки
|
# Удаляем предмет с торговой площадки
|
||||||
await marketplace_collection.delete_one({"id": item_id})
|
await marketplace_collection.delete_one({"id": item_id})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"status": "pending",
|
"status": "pending",
|
||||||
"operation_id": operation_id,
|
"operation_id": operation_id,
|
||||||
"message": "Предмет снят с продажи и будет возвращен в ваш инвентарь"
|
"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:
|
if item["seller_name"] != username:
|
||||||
raise HTTPException(status_code=403, detail="Вы не можете изменить цену чужого предмета")
|
raise HTTPException(status_code=403, detail="Вы не можете изменить цену чужого предмета")
|
||||||
|
|
||||||
# Валидация новой цены
|
# Валидация новой цены
|
||||||
if new_price <= 0:
|
if new_price <= 0:
|
||||||
raise HTTPException(status_code=400, detail="Цена должна быть положительным числом")
|
raise HTTPException(status_code=400, detail="Цена должна быть положительным числом")
|
||||||
|
|
||||||
# Обновляем цену предмета
|
# Обновляем цену предмета
|
||||||
result = await marketplace_collection.update_one(
|
result = await marketplace_collection.update_one(
|
||||||
{"id": item_id},
|
{"id": item_id},
|
||||||
{"$set": {"price": new_price}}
|
{"$set": {"price": new_price}}
|
||||||
)
|
)
|
||||||
|
|
||||||
if result.modified_count == 0:
|
if result.modified_count == 0:
|
||||||
raise HTTPException(status_code=500, detail="Не удалось обновить цену предмета")
|
raise HTTPException(status_code=500, detail="Не удалось обновить цену предмета")
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"status": "success",
|
"status": "success",
|
||||||
"message": f"Цена предмета обновлена на {new_price} монет"
|
"message": f"Цена предмета обновлена на {new_price} монет"
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user