Commit 16dc092d authored by confusion's avatar confusion

1.基金查询添加机构id

2.添加删除基金接口
parent 800eadd2
import datetime import datetime
from typing import Union from typing import Union, Optional
from apscheduler.schedulers.asyncio import AsyncIOScheduler from apscheduler.schedulers.asyncio import AsyncIOScheduler
from fastapi import APIRouter, Depends from fastapi import APIRouter, Depends, Query
from motor.core import AgnosticCollection from motor.core import AgnosticCollection
from pymongo import ReturnDocument from pymongo import ReturnDocument
...@@ -10,7 +10,7 @@ from exception.db import NotFundError ...@@ -10,7 +10,7 @@ from exception.db import NotFundError
from model import Response, PageResponse, Page from model import Response, PageResponse, Page
from model.fund import FundType, CreateFund, StakingFund, NormalFund, UpdateFund, FundStatus from model.fund import FundType, CreateFund, StakingFund, NormalFund, UpdateFund, FundStatus
from dependencies import get_current_user, get_fund_collect, get_scheduler from dependencies import get_current_user, get_fund_collect, get_scheduler
from service.scheduler import calculate_nav_task from service.scheduler import calculate_nav_task, delete_nav_task
from tools.jwt_tools import User from tools.jwt_tools import User
router = APIRouter() router = APIRouter()
...@@ -41,6 +41,21 @@ async def create( ...@@ -41,6 +41,21 @@ async def create(
return Response[response_model](data=response_model(**data)) return Response[response_model](data=response_model(**data))
@router.delete('/{fund_id}/',
response_model=Response,
summary='删除基金',
description='删除基金')
async def delete_fund(
fund_id: str,
user: User = Depends(get_current_user),
fund_collect: AgnosticCollection = Depends(get_fund_collect),
scheduler: AsyncIOScheduler = Depends(get_scheduler)
):
await fund_collect.delete_one({'id': fund_id, 'user_id': user.id})
await delete_nav_task(fund_id, scheduler)
return Response()
@router.put('/{fund_id}/', response_model=Union[Response[StakingFund], Response[NormalFund]], summary='更新基金', @router.put('/{fund_id}/', response_model=Union[Response[StakingFund], Response[NormalFund]], summary='更新基金',
description='更新基金') description='更新基金')
async def update( async def update(
...@@ -81,6 +96,7 @@ async def get( ...@@ -81,6 +96,7 @@ async def get(
description='查询所有基金') description='查询所有基金')
async def get( async def get(
page: Page = Depends(Page), page: Page = Depends(Page),
org_id: Optional[int] = Query(default=None, description='机构id'),
fund_type: FundType = FundType.staking, fund_type: FundType = FundType.staking,
fund_status: FundStatus = None, fund_status: FundStatus = None,
user: User = Depends(get_current_user), user: User = Depends(get_current_user),
...@@ -89,6 +105,8 @@ async def get( ...@@ -89,6 +105,8 @@ async def get(
query = {"user_id": user.id, "fund_type": fund_type} query = {"user_id": user.id, "fund_type": fund_type}
if fund_status: if fund_status:
query.update({"fund_status": fund_status}) query.update({"fund_status": fund_status})
if org_id is not None:
query.update({"org_id": org_id})
skip = (page.page - 1) * page.page_size skip = (page.page - 1) * page.page_size
cursor = fund_collect.find(query) cursor = fund_collect.find(query)
cursor = cursor.skip(skip).sort([('create_time', -1)]).limit(page.page_size) cursor = cursor.skip(skip).sort([('create_time', -1)]).limit(page.page_size)
......
...@@ -7,18 +7,23 @@ from exception.schecular import TaskExistError ...@@ -7,18 +7,23 @@ from exception.schecular import TaskExistError
from service.nav import calculate_nav from service.nav import calculate_nav
async def delete_task(job_id, schedular): async def delete_task(job_id, scheduler):
if schedular.get_job(job_id): if scheduler.get_job(job_id):
schedular.remove_job(job_id) scheduler.remove_job(job_id)
else: else:
raise NotFundError() raise NotFundError()
schedular.print_jobs() scheduler.print_jobs()
async def calculate_nav_task(fund_id, schedular, fund_collect: AgnosticCollection, user_id=None): async def delete_nav_task(fund_id, scheduler):
job_id = f'calculate_nav_{fund_id}'
await delete_task(job_id, scheduler)
async def calculate_nav_task(fund_id, scheduler, fund_collect: AgnosticCollection, user_id=None):
""" """
创建净值计算任务 创建净值计算任务
:param schedular: :param scheduler:
:param fund_id: :param fund_id:
:param fund_collect: :param fund_collect:
:param user_id: :param user_id:
...@@ -31,10 +36,10 @@ async def calculate_nav_task(fund_id, schedular, fund_collect: AgnosticCollectio ...@@ -31,10 +36,10 @@ async def calculate_nav_task(fund_id, schedular, fund_collect: AgnosticCollectio
assert res, NotFundError() assert res, NotFundError()
job_id = f'calculate_nav_{fund_id}' job_id = f'calculate_nav_{fund_id}'
if schedular.get_job(job_id): if scheduler.get_job(job_id):
raise TaskExistError raise TaskExistError
schedular.add_job(func=calculate_nav, id=job_id, args=(fund_id,), scheduler.add_job(func=calculate_nav, id=job_id, args=(fund_id,),
trigger=interval.IntervalTrigger(seconds=5, timezone=pytz.UTC), trigger=interval.IntervalTrigger(seconds=5, timezone=pytz.UTC),
misfire_grace_time=10) misfire_grace_time=10)
schedular.print_jobs() scheduler.print_jobs()
return job_id return job_id
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