Commit a43f40e3 authored by xianyang's avatar xianyang

转账优化事务

parent cb8ba775
import math import math
import threading import threading
from sqlalchemy import and_, func from sqlalchemy import and_, func, engine
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from libs.functions import get_now_timestamp, get_now_datetime from libs.functions import get_now_timestamp, get_now_datetime
...@@ -159,6 +159,20 @@ def query_token(db, h_list): ...@@ -159,6 +159,20 @@ def query_token(db, h_list):
return user_info return user_info
def transfer_trigger_task(db, data):
"""转账验证"""
try:
dst = db.query(Account).filter(Account.id == data.dst_id).first() # 转出
transfer = db.query(Account).filter(Account.id == data.transfer_id).first() # 转入
dst.consumable = float(dst.consumable) - data.amount
transfer.consumable = float(transfer.consumable) + data.amount
db.commit()
except Exception as e:
db.rollback()
return False
return True
def transfer_money(db: Session, param, h_list): def transfer_money(db: Session, param, h_list):
"""转账""" """转账"""
user = query_token(db, h_list) user = query_token(db, h_list)
...@@ -183,7 +197,10 @@ def transfer_money(db: Session, param, h_list): ...@@ -183,7 +197,10 @@ def transfer_money(db: Session, param, h_list):
dst_name = out.guild_name if out else "" dst_name = out.guild_name if out else ""
income = db.query(Account).filter(Account.uuid == param.transfer_id).first() income = db.query(Account).filter(Account.uuid == param.transfer_id).first()
transfer_name = income.name if income else "" transfer_name = income.name if income else ""
# 转账
is_success = transfer_trigger_task(db, param)
if not is_success:
return False
try: try:
present = Fitransferlog(dst_id=param.dst_id, dst_name=dst_name, amount=param.amount, type=param.type, present = Fitransferlog(dst_id=param.dst_id, dst_name=dst_name, amount=param.amount, type=param.type,
transfer_id=param.transfer_id, nick_name=param.nick_name, remark=param.remark, transfer_id=param.transfer_id, nick_name=param.nick_name, remark=param.remark,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment