Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
PyFund
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陈涛
PyFund
Commits
4073c450
Commit
4073c450
authored
Mar 25, 2023
by
陈涛
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加更新bill账目,fund增加绑定机构id
parent
bc1d2dc2
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
143 additions
and
22 deletions
+143
-22
bill.py
api/bill.py
+98
-13
bill.py
model/bill.py
+22
-9
fund.py
model/fund.py
+1
-0
bill.py
service/bill.py
+22
-0
No files found.
api/bill.py
View file @
4073c450
import
datetime
from
loguru
import
logger
from
fastapi
import
APIRouter
,
Depends
from
motor.core
import
AgnosticCollection
from
pymongo
import
ReturnDocument
from
pymongo.operations
import
UpdateOne
from
dependencies
import
get_current_user
,
get_fund_collect
,
get_bill_collect
from
exception.db
import
NotFundError
from
model
import
Response
,
Page
,
PageResponse
from
model.bill
import
PCFBill
,
ExchangeBill
,
BillType
,
CreatePCFBill
,
CreateExchangeBill
,
StakingBill
,
CreateStaking
,
\
AdjustBill
,
CreateAdjustBill
AdjustBill
,
CreateAdjustBill
,
UpdatePCFBill
,
UpdateExchangeBill
,
UpdateStakingBill
,
UpdateAdjustBill
from
service.bill
import
update_bill
from
tools.jwt_tools
import
User
router
=
APIRouter
()
...
...
@@ -182,14 +184,97 @@ async def query_adjust(
return
response
# @router.put('/{fund_id}/',
# response_model=PageResponse[AdjustBill],
# summary='更新调整记录',
# description='')
# async def update_bill(
# bill_id: str,
# update_item: str,
# user: User = Depends(get_current_user),
# bill_collect: AgnosticCollection = Depends(get_bill_collect),
# ):
# pass
\ No newline at end of file
@
router
.
put
(
'/{fund_id}/pcf/'
,
response_model
=
Response
[
PCFBill
],
summary
=
'更新申购赎回记录'
,
description
=
''
)
async
def
update_pcf_bill
(
bill_id
:
str
,
fund_id
:
str
,
update_item
:
UpdatePCFBill
,
user
:
User
=
Depends
(
get_current_user
),
fund_collect
:
AgnosticCollection
=
Depends
(
get_fund_collect
),
bill_collect
:
AgnosticCollection
=
Depends
(
get_bill_collect
),
):
response
=
await
update_bill
(
bill_id
=
bill_id
,
fund_id
=
fund_id
,
user_id
=
user
.
id
,
update_data
=
update_item
,
fund_collect
=
fund_collect
,
bill_collect
=
bill_collect
,
res_model
=
PCFBill
)
return
response
@
router
.
put
(
'/{fund_id}/exchange/'
,
response_model
=
Response
[
ExchangeBill
],
summary
=
'更新置换记录'
,
description
=
''
)
async
def
update_exchange_bill
(
bill_id
:
str
,
fund_id
:
str
,
update_item
:
UpdateExchangeBill
,
user
:
User
=
Depends
(
get_current_user
),
fund_collect
:
AgnosticCollection
=
Depends
(
get_fund_collect
),
bill_collect
:
AgnosticCollection
=
Depends
(
get_bill_collect
),
):
response
=
await
update_bill
(
bill_id
=
bill_id
,
fund_id
=
fund_id
,
user_id
=
user
.
id
,
update_data
=
update_item
,
fund_collect
=
fund_collect
,
bill_collect
=
bill_collect
,
res_model
=
ExchangeBill
)
return
response
@
router
.
put
(
'/{fund_id}/staking/'
,
response_model
=
Response
[
StakingBill
],
summary
=
'更新申购赎回调整记录'
,
description
=
''
)
async
def
update_staking_bill
(
bill_id
:
str
,
fund_id
:
str
,
update_item
:
UpdateStakingBill
,
user
:
User
=
Depends
(
get_current_user
),
fund_collect
:
AgnosticCollection
=
Depends
(
get_fund_collect
),
bill_collect
:
AgnosticCollection
=
Depends
(
get_bill_collect
),
):
response
=
await
update_bill
(
bill_id
=
bill_id
,
fund_id
=
fund_id
,
user_id
=
user
.
id
,
update_data
=
update_item
,
fund_collect
=
fund_collect
,
bill_collect
=
bill_collect
,
res_model
=
StakingBill
)
return
response
@
router
.
put
(
'/{fund_id}/adjust/'
,
response_model
=
Response
[
AdjustBill
],
summary
=
'更新调整记录'
,
description
=
''
)
async
def
update_adjust_bill
(
bill_id
:
str
,
fund_id
:
str
,
update_item
:
UpdateAdjustBill
,
user
:
User
=
Depends
(
get_current_user
),
fund_collect
:
AgnosticCollection
=
Depends
(
get_fund_collect
),
bill_collect
:
AgnosticCollection
=
Depends
(
get_bill_collect
),
):
response
=
await
update_bill
(
bill_id
=
bill_id
,
fund_id
=
fund_id
,
user_id
=
user
.
id
,
update_data
=
update_item
,
fund_collect
=
fund_collect
,
bill_collect
=
bill_collect
,
res_model
=
AdjustBill
)
return
response
model/bill.py
View file @
4073c450
...
...
@@ -87,27 +87,40 @@ class AdjustBill(CreateAdjustBill, BaseCreateModel):
class
UpdatePCFBill
(
BaseModel
):
email
:
Optional
[
str
]
=
Field
(
None
,
description
=
'客户邮箱'
)
currency
:
Optional
[
str
]
=
Field
(
None
,
description
=
'币种'
)
volume
:
Optional
[
float
]
=
Field
(
...
,
description
=
'资产数量'
)
volume
:
Optional
[
float
]
=
Field
(
None
,
description
=
'资产数量'
)
price
:
Optional
[
float
]
=
Field
(
None
,
description
=
"价格"
)
fund_share
:
Optional
[
float
]
=
Field
(
None
,
description
=
"基金份额"
)
market_value
:
Optional
[
float
]
=
Field
(
None
,
description
=
"市值"
)
class
Config
:
orm_mode
=
True
class
UpdateExchangeBill
(
BaseModel
):
input_currency
:
Optional
[
str
]
=
Field
(
...
,
description
=
"投入币种"
)
input_price
:
Optional
[
float
]
=
Field
(
...
,
description
=
"投入币种价格"
)
input_volume
:
Optional
[
float
]
=
Field
(
...
,
description
=
"投入数量"
)
output_currency
:
Optional
[
str
]
=
Field
(
...
,
description
=
"输出币种"
)
output_price
:
Optional
[
float
]
=
Field
(
...
,
description
=
"输出币种价格"
)
output_volume
:
Optional
[
float
]
=
Field
(
...
,
description
=
"输出数量"
)
input_currency
:
Optional
[
str
]
=
Field
(
None
,
description
=
"投入币种"
)
input_price
:
Optional
[
float
]
=
Field
(
None
,
description
=
"投入币种价格"
)
input_volume
:
Optional
[
float
]
=
Field
(
None
,
description
=
"投入数量"
)
output_currency
:
Optional
[
str
]
=
Field
(
None
,
description
=
"输出币种"
)
output_price
:
Optional
[
float
]
=
Field
(
None
,
description
=
"输出币种价格"
)
output_volume
:
Optional
[
float
]
=
Field
(
None
,
description
=
"输出数量"
)
class
Config
:
orm_mode
=
True
class
UpdateStakingBill
(
BaseModel
):
currency
:
Optional
[
str
]
=
Field
(
default
=
"ETH"
,
description
=
'币种'
)
volume
:
Optional
[
float
]
=
Field
(
...
,
description
=
'数量'
)
volume
:
Optional
[
float
]
=
Field
(
None
,
description
=
'数量'
)
price
:
float
=
Field
(
None
,
description
=
"价格"
)
class
Config
:
orm_mode
=
True
class
UpdateAdjustBill
(
BaseModel
):
currency
:
Optional
[
str
]
=
Field
(
None
,
description
=
'币种'
)
volume
:
Optional
[
float
]
=
Field
(
...
,
description
=
'资产数量'
)
volume
:
Optional
[
float
]
=
Field
(
None
,
description
=
'资产数量'
)
price
:
Optional
[
float
]
=
Field
(
None
,
description
=
"价格"
)
class
Config
:
orm_mode
=
True
model/fund.py
View file @
4073c450
...
...
@@ -20,6 +20,7 @@ class FundStatus(str, Enum):
class
BaseFundItem
(
BaseModel
):
org_id
:
int
=
Field
(
...
,
description
=
"机构id"
)
name
:
str
=
Field
(
...
,
description
=
'基金名称'
)
fund_type
:
FundType
=
Field
(
default
=
FundType
.
staking
,
description
=
'基金类型'
)
fund_status
:
FundStatus
=
Field
(
default
=
FundStatus
.
active
,
description
=
'基金状态'
)
...
...
service/bill.py
View file @
4073c450
import
datetime
from
typing
import
TypeVar
,
Generic
,
Type
from
motor.core
import
AgnosticCollection
from
pymongo
import
ReturnDocument
from
exception.db
import
NotFundError
from
model
import
Response
from
model.bill
import
CreateStaking
,
StakingBill
DataT
=
TypeVar
(
'DataT'
)
async
def
create_staking
(
item
:
CreateStaking
,
...
...
@@ -25,3 +32,18 @@ async def create_staking(
return
staking_bill
async
def
update_bill
(
bill_id
:
str
,
fund_id
:
str
,
user_id
:
str
,
update_data
:
[],
fund_collect
,
bill_collect
,
res_model
:
Type
[
DataT
]
)
->
Response
[
DataT
]:
fund
=
await
fund_collect
.
find_one
({
'id'
:
fund_id
,
'user_id'
:
user_id
})
assert
fund
,
NotFundError
()
db_update_data
=
update_data
.
dict
(
exclude_unset
=
True
)
db_update_data
.
update
({
"update_time"
:
int
(
datetime
.
datetime
.
utcnow
()
.
timestamp
())
})
data
=
await
bill_collect
.
find_one_and_update
({
'id'
:
bill_id
,
"fund_id"
:
fund_id
},
{
'$set'
:
db_update_data
},
return_document
=
ReturnDocument
.
AFTER
)
assert
data
,
NotFundError
()
response
=
Response
[
DataT
](
data
=
res_model
(
**
data
))
return
response
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment