Commit c1500f8b authored by 陈涛's avatar 陈涛

修改重新计算净值bug

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