Commit 0d260465 authored by 陈涛's avatar 陈涛

修改解绑节点账单

parent 3e3e20dc
...@@ -8,7 +8,8 @@ from model import Response, Page, PageResponse, SortParams, FilterTime ...@@ -8,7 +8,8 @@ from model import Response, Page, PageResponse, SortParams, FilterTime
from model.bill import PCFBill, ExchangeBill, AdjustBill, StakingBill from model.bill import PCFBill, ExchangeBill, AdjustBill, StakingBill
from model.node import BaseNode from model.node import BaseNode
from schema.bill import CreatePCFBill, PCFBillType, CreateExchangeBill, CreateAdjustBill, CreateStakingBill, \ from schema.bill import CreatePCFBill, PCFBillType, CreateExchangeBill, CreateAdjustBill, CreateStakingBill, \
UpdatePCFBill, UpdateExchangeBill, UpdateStakingBill, UpdateAdjustBill, AllBillType, StakingDirection, BillType UpdatePCFBill, UpdateExchangeBill, UpdateStakingBill, UpdateAdjustBill, AllBillType, StakingDirection, BillType, \
StakingBillStatus
from schema.fund import FundStatus from schema.fund import FundStatus
from schema.node import BindNode from schema.node import BindNode
from service.beacon import BeaconChaService from service.beacon import BeaconChaService
...@@ -194,7 +195,7 @@ async def create_staking_api( ...@@ -194,7 +195,7 @@ async def create_staking_api(
fund_id=create_staking_bill.fund_id, fund_id=create_staking_bill.fund_id,
fund_status=FundStatus.active fund_status=FundStatus.active
) )
assets, pending_assets, nodes = fund_data["assets"], fund_data["pending_assets"], fund_data["nodes"] assets, pending_assets, nodes, staking_assets = fund_data["assets"], fund_data["pending_assets"], fund_data["nodes"], fund_data["staking_assets"]
if create_staking_bill.direction == StakingDirection.bind: if create_staking_bill.direction == StakingDirection.bind:
assert assets.get(create_staking_bill.currency, 0) >= create_staking_bill.volume + create_staking_bill.fee, '余额不足' assert assets.get(create_staking_bill.currency, 0) >= create_staking_bill.volume + create_staking_bill.fee, '余额不足'
assets[create_staking_bill.currency] -= create_staking_bill.volume + create_staking_bill.fee assets[create_staking_bill.currency] -= create_staking_bill.volume + create_staking_bill.fee
...@@ -210,15 +211,22 @@ async def create_staking_api( ...@@ -210,15 +211,22 @@ async def create_staking_api(
else: else:
nodes[bind_node.pub_key] = db_data.dict() nodes[bind_node.pub_key] = db_data.dict()
else: else:
# 将所有该基金pubkey的账单置为finish
await bill_collect.update_many(
{"fund_id": create_staking_bill.fund_id, "pub_key": create_staking_bill.pub_key},
{"$set": {"status": StakingBillStatus.finish}}
)
assets[create_staking_bill.currency] += create_staking_bill.volume - create_staking_bill.fee assets[create_staking_bill.currency] += create_staking_bill.volume - create_staking_bill.fee
# 检查pending_assets里面的值 # 检查pending_assets里面的值
for key, value in pending_assets.items(): for key, value in pending_assets.items():
assets.setdefault(key, 0) assets.setdefault(key, 0)
assets[key] += value assets[key] += value
pending_assets[key] -= value pending_assets[key] -= value
for key, value in staking_assets.items():
staking_assets[key] -= value
del nodes[create_staking_bill.pub_key] del nodes[create_staking_bill.pub_key]
await update_fund(fund_collect, create_staking_bill.fund_id, pending_assets=pending_assets, assets=assets, await update_fund(fund_collect, create_staking_bill.fund_id, pending_assets=pending_assets, assets=assets,
nodes=nodes) nodes=nodes, staking_assets=staking_assets)
# 添加账目 # 添加账目
staking_bill = StakingBill(user_id=user.id, **create_staking_bill.dict()) staking_bill = StakingBill(user_id=user.id, **create_staking_bill.dict())
......
...@@ -69,7 +69,7 @@ async def calculate_nav_task(fund_id=None): ...@@ -69,7 +69,7 @@ async def calculate_nav_task(fund_id=None):
async def update_staking_node_status_task(beacon_service: BeaconChaService, mongodb_manager: AioMongodbManager): async def update_staking_node_status_task(beacon_service: BeaconChaService, mongodb_manager: AioMongodbManager):
bill_collect = get_bill_collect(mongodb_manager) bill_collect = get_bill_collect(mongodb_manager)
data = bill_collect.find({'bill_type': AllBillType.staking, "status": StakingBillStatus.pending}) data = bill_collect.find({'bill_type': AllBillType.staking, "status": StakingBillStatus.pending, "direction": "bind"})
staking_bill_list = await data.to_list(length=None) staking_bill_list = await data.to_list(length=None)
for bill_item in staking_bill_list: for bill_item in staking_bill_list:
bill_item = StakingBill(**bill_item) bill_item = StakingBill(**bill_item)
......
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