2025-SSF-dotory-manage/services/dotori_service.py
2025-07-09 09:16:59 +09:00

49 lines
1.9 KiB
Python

from models.dotori import UserDotori
from flask import current_app
from db import db
class DotoriService:
@staticmethod
def get_user_dotori(user_id: str):
user_dotori = UserDotori.query.filter_by(user_id=user_id).first()
if user_dotori:
return user_dotori.dotori_count
return None
@staticmethod
def initialize_user_dotori(user_id: str):
user_dotori = UserDotori.query.filter_by(user_id=user_id).first()
if not user_dotori:
user_dotori = UserDotori(user_id=user_id, dotori_count=1000000)
print(f"초기화 완료, {user_id}님의 도토리: {user_dotori.dotori_count}")
db.session.add(user_dotori)
db.session.commit()
return user_dotori.dotori_count
@staticmethod
def buy_product(user_id: str, product_price: int):
user_dotori = UserDotori.query.filter_by(user_id=user_id).first()
if not user_dotori:
return False
if user_dotori.dotori_count < product_price:
return False
print(f"구매 완료, {user_id}님의 도토리: {user_dotori.dotori_count} -> {user_dotori.dotori_count - product_price}")
user_dotori.decrement(product_price)
db.session.commit()
return True
@staticmethod
def add_dotori(user_id: str, amount: int):
user_dotori = UserDotori.query.filter_by(user_id=user_id).first()
if not user_dotori:
user_dotori = UserDotori(user_id=user_id)
db.session.add(user_dotori)
print(f"도토리 추가, {user_id}님의 도토리: {user_dotori.dotori_count} -> {user_dotori.dotori_count + amount}")
user_dotori.increment(amount)
db.session.commit()
return user_dotori.dotori_count
@staticmethod
def get_all_users_dotori():
users = UserDotori.query.all()
return [user.to_dict() for user in users]