feat(finance): manage token plans and simplify recharge checkout
This commit is contained in:
@@ -28,6 +28,23 @@ def _money(cents):
|
||||
|
||||
|
||||
class FinanceService:
|
||||
@staticmethod
|
||||
def list_token_plans(db):
|
||||
rows = db.execute(text('SELECT id,name,amount,price,badge,"desc",virtual_product_id FROM token_plans ORDER BY price ASC')).fetchall()
|
||||
return [dict(row._mapping) for row in rows]
|
||||
|
||||
@staticmethod
|
||||
def update_token_plan(db, plan_id: str, *, amount: int, price: float, name: str, badge: str, desc: str):
|
||||
if amount <= 0 or price < 0 or not name.strip():
|
||||
raise FinanceServiceError("套餐名称、正数积分和非负价格不正确")
|
||||
result = db.execute(text('''UPDATE token_plans SET name=:name,amount=:amount,price=:price,badge=:badge,"desc"=:desc WHERE id=:id'''), {
|
||||
"id": plan_id, "name": name.strip()[:80], "amount": amount, "price": price,
|
||||
"badge": badge.strip()[:80], "desc": desc.strip()[:200],
|
||||
})
|
||||
if result.rowcount == 0:
|
||||
raise FinanceServiceError("充值套餐不存在", 404)
|
||||
db.commit()
|
||||
|
||||
@staticmethod
|
||||
def _tables_ready(db) -> bool:
|
||||
names = {
|
||||
|
||||
Reference in New Issue
Block a user