Commit c1500f8b authored by 陈涛's avatar 陈涛

修改重新计算净值bug

parent 04239b59
...@@ -100,14 +100,14 @@ async def recalculate_nav( ...@@ -100,14 +100,14 @@ async def recalculate_nav(
start: datetime.datetime = Query(..., title="开始时间"), start: datetime.datetime = Query(..., title="开始时间"),
end: datetime.datetime = Query(None, title="结束时间"), end: datetime.datetime = Query(None, title="结束时间"),
fund_collect: AgnosticCollection = Depends(get_fund_collect), fund_collect: AgnosticCollection = Depends(get_fund_collect),
# user: User = Depends(get_current_user), user: User = Depends(get_current_user),
# permission_user_collect: AgnosticCollection = Depends(get_permission_user_collect), permission_user_collect: AgnosticCollection = Depends(get_permission_user_collect),
# permission_role_collect: AgnosticCollection = Depends(get_permission_role_collect) permission_role_collect: AgnosticCollection = Depends(get_permission_role_collect)
): ):
# await check_permission(['data_permission.nav.recalculate'], await check_permission(['data_permission.nav.recalculate'],
# fund_id, fund_id,
# user.email, permission_user_collect, user.email, permission_user_collect,
# permission_role_collect) permission_role_collect)
fund_data = await fund_collect.find_one({"id": fund_id}) fund_data = await fund_collect.find_one({"id": fund_id})
end = end or datetime.datetime.utcnow() end = end or datetime.datetime.utcnow()
delta = end - start delta = end - start
......
...@@ -5,7 +5,7 @@ import uuid ...@@ -5,7 +5,7 @@ import uuid
import pytz import pytz
from loguru import logger from loguru import logger
from pymongo import ReturnDocument from pymongo import ReturnDocument, UpdateOne
from dependencies import get_fund_collect, get_cmc_price_redis, get_hour_price_collect, get_bill_collect, \ from dependencies import get_fund_collect, get_cmc_price_redis, get_hour_price_collect, get_bill_collect, \
get_nav_collect get_nav_collect
...@@ -57,8 +57,8 @@ async def calculate_nav(fund_id, calc_time: datetime.datetime = None, beach_serv ...@@ -57,8 +57,8 @@ async def calculate_nav(fund_id, calc_time: datetime.datetime = None, beach_serv
amount[key] += value amount[key] += value
# 查询节点收益, 如果是重新计算净值,则不查询收益 # 查询节点收益, 如果是重新计算净值,则不查询收益
node_income_assets = fund_data.get("node_income_assets", {})
if update_fund: if update_fund:
node_income_assets = fund_data.get("node_income_assets", {})
for key, value in fund_data["nodes"].items(): for key, value in fund_data["nodes"].items():
if value["status"] == "active": if value["status"] == "active":
income = beach_service.get_rewards(key) income = beach_service.get_rewards(key)
...@@ -66,7 +66,7 @@ async def calculate_nav(fund_id, calc_time: datetime.datetime = None, beach_serv ...@@ -66,7 +66,7 @@ async def calculate_nav(fund_id, calc_time: datetime.datetime = None, beach_serv
node_income_assets["ETH"] += income.total_rewards.total if income else 0 node_income_assets["ETH"] += income.total_rewards.total if income else 0
fund_data["node_income_assets"] = node_income_assets fund_data["node_income_assets"] = node_income_assets
else: else:
pass fund_data["node_income_assets"] = node_income_assets
for key, value in fund_data["node_income_assets"].items(): for key, value in fund_data["node_income_assets"].items():
amount.setdefault(key, 0) amount.setdefault(key, 0)
amount[key] += value amount[key] += value
...@@ -134,17 +134,38 @@ async def query_nav_record(nav_collect, fund_id, record_time, settlement_time): ...@@ -134,17 +134,38 @@ async def query_nav_record(nav_collect, fund_id, record_time, settlement_time):
return nav_result return nav_result
# async def update_history_records(): async def build_nav_bulk_list(nav_collect, fund_id, record_time, settlement_time, *, asset_changed=None,
# nav_record = await query_nav_record( adjust_assets_changed=None, pending_assets_changed=None, staking_assets_changed=None,
# nav_collect=nav_collect, fund_id=create_adjust_bill.fund_id, nodes_changed=None):
# record_time=create_adjust_bill.record_time, settlement_time=fund_data["settlement_time"]
# ) def build_update_data(nav):
# bulk_list = [] update_data = {}
# for nav in nav_record: if asset_changed:
# nav["assets"].setdefault(create_adjust_bill.currency, 0) for key, value in asset_changed.items():
# nav["assets"][create_adjust_bill.currency] += create_adjust_bill.volume nav["assets"].setdefault(key, 0)
# bulk_list.append(UpdateOne({"_id": nav["_id"]}, {"$set": {"assets": nav["assets"]}})) nav["assets"][key] += value
# update_data.update({"assets": nav["assets"]})
# await update_fund(fund_collect, create_adjust_bill.fund_id, adjust_assets=adjust_assets) if adjust_assets_changed:
# if bulk_list: for key, value in adjust_assets_changed.item():
# await nav_collect.bulk_write(bulk_list) nav["adjust_assets"].setdefault(key, 0)
nav["adjust_assets"][key] += value
update_data.update({"adjust_assets": nav["adjust_assets"]})
if pending_assets_changed:
for key, value in adjust_assets_changed.item():
nav["pending_assets"].setdefault(key, 0)
nav["pending_assets"][key] += value
update_data.update({"pending_assets": nav["pending_assets"]})
if staking_assets_changed:
for key, value in adjust_assets_changed.item():
nav["staking_assets"].setdefault(key, 0)
nav["staking_assets"][key] += value
update_data.update({"staking_assets": nav["staking_assets"]})
return UpdateOne({"_id": nav["_id"]}, {"$set": update_data})
nav_record = await query_nav_record(
nav_collect=nav_collect, fund_id=fund_id,
record_time=record_time, settlement_time=settlement_time
)
bulk_list = [build_update_data(nav) for nav in nav_record]
return bulk_list
# bulk_list.append(UpdateOne({"_id": nav["_id"]}, {"$set": {"assets": nav["assets"]}}))
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