Files

45 lines
1.8 KiB
Python

from sqlalchemy.orm import Session
from app.common.errors.app_error import NotFoundAppError
from app.modules.growth_rules.repository import GrowthRulesRepository
class GrowthRulesService:
def __init__(self, db: Session) -> None:
self.db = db
self.repository = GrowthRulesRepository(db)
def get_rules(self) -> dict:
signup = self.repository.get_rule("signup_reward")
invite = self.repository.get_rule("invite_reward")
return {
"signupRewardEnabled": bool(signup.enabled) if signup else False,
"signupRewardPoints": signup.reward_points if signup else 0,
"inviteRewardEnabled": bool(invite.enabled) if invite else False,
"inviteRewardPoints": invite.reward_points if invite else 0,
"inviteRewardTrigger": invite.trigger_condition if invite else "on_first_consume",
"inviteRewardMinConsumePoints": invite.min_consume_points if invite else 0,
}
def update_signup_rule(self, payload) -> dict:
rule = self.repository.get_rule("signup_reward")
if not rule:
raise NotFoundAppError("signup rule not found", code=70010)
rule.enabled = payload.enabled
rule.reward_points = payload.reward_points
rule.remark = payload.remark
self.db.commit()
return self.get_rules()
def update_invite_rule(self, payload) -> dict:
rule = self.repository.get_rule("invite_reward")
if not rule:
raise NotFoundAppError("invite rule not found", code=70011)
rule.enabled = payload.enabled
rule.reward_points = payload.reward_points
rule.min_consume_points = payload.min_consume_points
rule.remark = payload.remark
self.db.commit()
return self.get_rules()