Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
T
ts-api-demo
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
wmvm
ts-api-demo
Commits
94108a6a
Commit
94108a6a
authored
Oct 14, 2024
by
ml
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
费率管理调整为VIP管理、相关逻辑调整、增加市商费率逻辑
parent
72108c1a
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
326 additions
and
314 deletions
+326
-314
errorCode.ts
src/constant/errorCode.ts
+6
-4
marketMakerConst.ts
src/constant/marketMakerConst.ts
+14
-15
commonUserFeeSetting.control.ts
src/functional/mvc/control/commonUserFeeSetting.control.ts
+37
-72
commonUserFeeSetting.service.ts
src/functional/mvc/service/commonUserFeeSetting.service.ts
+258
-217
index.ts
src/functional/router/v1/index.ts
+2
-2
access-limit.ts
src/setting/access-limit.ts
+2
-2
feeRateCheckValidUtils.ts
src/utils/feeRateCheckValidUtils.ts
+7
-2
No files found.
src/constant/errorCode.ts
View file @
94108a6a
...
@@ -47,7 +47,7 @@ export const ErrorCode = {
...
@@ -47,7 +47,7 @@ export const ErrorCode = {
LEVEL_NOT_EXIST
:
'30043'
,
//指定等级不存在
LEVEL_NOT_EXIST
:
'30043'
,
//指定等级不存在
ONLY_ONE_FEE
:
'30044'
,
//只能有一条未提交的费率设置
ONLY_ONE_FEE
:
'30044'
,
//只能有一条未提交的费率设置
ONLY_UN_SUBMIT_UPDATE
:
'30045'
,
//只有未提交的记录可以修改
ONLY_UN_SUBMIT_UPDATE
:
'30045'
,
//只有未提交的记录可以修改
UID_TYPE_NOT_UPDATE
:
'30046'
,
//用户ID
和类型
不能修改
UID_TYPE_NOT_UPDATE
:
'30046'
,
//用户ID
、费率类型、交易对
不能修改
DEL_UN_SUBMIT_ACTIVE
:
'30047'
,
//只能删除未提交或未生效的记录
DEL_UN_SUBMIT_ACTIVE
:
'30047'
,
//只能删除未提交或未生效的记录
FEE_USED_NOT_DEL
:
'30048'
,
//费率已生效,不能删除
FEE_USED_NOT_DEL
:
'30048'
,
//费率已生效,不能删除
ONLY_UN_SUBMIT_CAN_SUBMIT
:
'30049'
,
//只有未提交的记录才能提交
ONLY_UN_SUBMIT_CAN_SUBMIT
:
'30049'
,
//只有未提交的记录才能提交
...
@@ -57,8 +57,8 @@ export const ErrorCode = {
...
@@ -57,8 +57,8 @@ export const ErrorCode = {
PWD_ILLEGAL
:
'30053'
,
//密码过短或过长
PWD_ILLEGAL
:
'30053'
,
//密码过短或过长
FIXED_AND_DEFAULT
:
'30054'
,
//固定和默认不能同时为是
FIXED_AND_DEFAULT
:
'30054'
,
//固定和默认不能同时为是
NOT_HIDDEN_TWO
:
'30055'
,
//每种语言非隐藏并且固定的至少要有2个
NOT_HIDDEN_TWO
:
'30055'
,
//每种语言非隐藏并且固定的至少要有2个
COIN_TYPE_NOT_EXIST
:
'30056'
,
//
指定
币种不存在
COIN_TYPE_NOT_EXIST
:
'30056'
,
//币种不存在
PAIR_NOT_EXIST
:
'30057'
,
//
指定
币对不存在
PAIR_NOT_EXIST
:
'30057'
,
//币对不存在
LIMIT_ERROR
:
'30058'
,
//limit参数必须在10-2000之间
LIMIT_ERROR
:
'30058'
,
//limit参数必须在10-2000之间
ADD_PAIR_TO_CORE_ERR
:
'30059'
,
//币种/交易对提交到撮合失败
ADD_PAIR_TO_CORE_ERR
:
'30059'
,
//币种/交易对提交到撮合失败
SUBMIT_STATUS_ERR
:
'30060'
,
//请确认提交状态
SUBMIT_STATUS_ERR
:
'30060'
,
//请确认提交状态
...
@@ -70,7 +70,9 @@ export const ErrorCode = {
...
@@ -70,7 +70,9 @@ export const ErrorCode = {
DEPOSIT_WITHDRAW_TM_EXPIRE
:
'30066'
,
//开放充值时间/开放提现时间过短
DEPOSIT_WITHDRAW_TM_EXPIRE
:
'30066'
,
//开放充值时间/开放提现时间过短
CURRENT_STATUS_NOT_APPLY
:
'30067'
,
//当前状态不可以审核
CURRENT_STATUS_NOT_APPLY
:
'30067'
,
//当前状态不可以审核
CURRENT_COIN_DATA_NOT_EXIST
:
'30068'
,
//币种管理中计价币种不存在
CURRENT_COIN_DATA_NOT_EXIST
:
'30068'
,
//币种管理中计价币种不存在
PAIR_EXIST
:
'30069'
,
//交易对
对
已存在
PAIR_EXIST
:
'30069'
,
//交易对已存在
ACTIVE_TM_EXPIRE
:
'30070'
,
//交易时间过短
ACTIVE_TM_EXPIRE
:
'30070'
,
//交易时间过短
NO_TRIGGER_DEL
:
'30071'
,
//只有未触发的任务可以删除
NO_TRIGGER_DEL
:
'30071'
,
//只有未触发的任务可以删除
EXIST_ACTIVE_PAIR
:
'30072'
,
//已存在生效或即将生效的该交易对费率配置
FEE_EX_OR_DEL
:
'30073'
,
//费率设置已过期或已删除,不可以修改
}
}
src/constant/marketMakerConst.ts
View file @
94108a6a
export
const
FEE_TYPE
=
{
export
const
FEE_TYPE
=
{
/**
* 费率类型: 全部。
*/
FEE_TYPE_ALL
:
0
,
/**
/**
* 费率类型: 币币。
* 费率类型: 币币。
...
@@ -17,20 +13,11 @@ export const FEE_TYPE = {
...
@@ -17,20 +13,11 @@ export const FEE_TYPE = {
* 费率类型: 币本位合约。
* 费率类型: 币本位合约。
*/
*/
FEE_TYPE_BASE_COIN_CONTRACT
:
3
,
FEE_TYPE_BASE_COIN_CONTRACT
:
3
,
/**
* 费率类型: 合约(U本位+币本位)
*/
FEE_TYPE_CONTRACT_ALL
:
5
,
}
}
export
const
FEE_TYPE_LIST
=
[
FEE_TYPE
.
FEE_TYPE_
ALL
,
FEE_TYPE
.
FEE_TYPE_SPOT
,
FEE_TYPE
.
FEE_TYPE_CONTRACT
,
FEE_TYPE
.
FEE_TYPE_BASE_COIN_CONTRACT
,
FEE_TYPE
.
FEE_TYPE_CONTRACT_ALL
,
]
export
const
FEE_TYPE_LIST
=
[
FEE_TYPE
.
FEE_TYPE_
SPOT
,
FEE_TYPE
.
FEE_TYPE_CONTRACT
,
FEE_TYPE
.
FEE_TYPE_BASE_COIN_CONTRACT
]
export
const
FEE_STATUS
=
{
export
const
FEE_STATUS
=
{
/**
* 费率设置纪录状态: 未提交。
*/
STATUS_FEE_SETTING_NEW
:
0
,
/**
/**
* 费率设置纪录状态: 已提交。
* 费率设置纪录状态: 已提交。
*/
*/
...
@@ -52,4 +39,16 @@ export const FEE_STATUS = {
...
@@ -52,4 +39,16 @@ export const FEE_STATUS = {
/**
/**
* 普通用户手续费提交备注。
* 普通用户手续费提交备注。
*/
*/
export
const
COMMENT_USER_FEE_SUBMIT
=
"提交普通用户手续费"
;
export
const
COMMENT_USER_FEE_SUBMIT
=
"提交普通用户手续费"
;
\ No newline at end of file
/**
* 市商手续费提交备注。
*/
export
const
COMMENT_MAKER_FEE_SUBMIT
=
"提交市商手续费"
;
/**
* KOL手续费提交备注。
*/
export
const
COMMENT_KOL_FEE_SUBMIT
=
"提交KOL手续费"
;
\ No newline at end of file
src/functional/mvc/control/commonUserFeeSetting.control.ts
View file @
94108a6a
...
@@ -65,7 +65,11 @@ export const update = async (req: any, commonUserFeeVO: CommonUserFeeVO) => {
...
@@ -65,7 +65,11 @@ export const update = async (req: any, commonUserFeeVO: CommonUserFeeVO) => {
try
{
try
{
let
ip
=
isIp
(
req
.
ip
)
?
req
.
ip
:
'*.*.*.*'
;
let
ip
=
isIp
(
req
.
ip
)
?
req
.
ip
:
'*.*.*.*'
;
let
currentUserId
=
await
getCurrentUserId
(
req
.
cookies
.
session_id
);
let
currentUserId
=
await
getCurrentUserId
(
req
.
cookies
.
session_id
);
await
updateParamValid
(
commonUserFeeVO
);
if
(
!
commonUserFeeVO
.
id
){
throw
ErrorCode
.
PARAM_MISS
;
}
await
addParamValid
(
commonUserFeeVO
);
let
res
=
await
commonUserFeeSettingService
.
update
(
commonUserFeeVO
,
currentUserId
,
ip
);
let
res
=
await
commonUserFeeSettingService
.
update
(
commonUserFeeVO
,
currentUserId
,
ip
);
return
Res3Utils
.
result
(
res
);
return
Res3Utils
.
result
(
res
);
...
@@ -99,27 +103,6 @@ export const del = async (req: any, commonUserFeeVO: CommonUserFeeVO) => {
...
@@ -99,27 +103,6 @@ export const del = async (req: any, commonUserFeeVO: CommonUserFeeVO) => {
};
};
/**
* 提交用户费率
* @param req
* @param authConfigVO
*/
export
const
submit
=
async
(
req
:
any
,
commonUserFeeVO
:
CommonUserFeeVO
)
=>
{
let
func_name
=
"commonUserFeeSetting.control.submit"
;
try
{
let
ip
=
isIp
(
req
.
ip
)
?
req
.
ip
:
'*.*.*.*'
;
let
currentUserId
=
await
getCurrentUserId
(
req
.
cookies
.
session_id
);
if
(
!
commonUserFeeVO
.
id
)
{
throw
ErrorCode
.
PARAM_MISS
}
let
res
=
await
commonUserFeeSettingService
.
submit
(
commonUserFeeVO
.
id
,
currentUserId
,
ip
);
return
Res3Utils
.
result
(
res
);
}
catch
(
e
)
{
logger
.
error
(
`
${
func_name
}
error:
${
e
}
`
);
return
Res3Utils
.
getErrorResult
(
e
);
}
};
/**
/**
* 用户等级费率列表
* 用户等级费率列表
...
@@ -145,11 +128,15 @@ async function addParamValid(commonUserFeeVO: CommonUserFeeVO) {
...
@@ -145,11 +128,15 @@ async function addParamValid(commonUserFeeVO: CommonUserFeeVO) {
let
expireTime
=
commonUserFeeVO
.
expire_time
;
let
expireTime
=
commonUserFeeVO
.
expire_time
;
let
type
=
commonUserFeeVO
.
type
;
let
type
=
commonUserFeeVO
.
type
;
let
levelId
=
commonUserFeeVO
.
level_id
;
let
levelId
=
commonUserFeeVO
.
level_id
;
let
pair
=
commonUserFeeVO
.
pair
;
let
applicant
=
commonUserFeeVO
.
applicant
;
let
makerFee
=
commonUserFeeVO
.
maker_fee
;
let
takerFee
=
commonUserFeeVO
.
taker_fee
;
if
(
!
userId
||
!
beginTime
||
!
expireTime
)
{
if
(
!
userId
||
!
beginTime
||
!
expireTime
||
!
pair
||
!
applicant
||
!
makerFee
||
!
takerFee
)
{
throw
ErrorCode
.
PARAM_MISS
;
throw
ErrorCode
.
PARAM_MISS
;
}
}
await
checkMaker
(
commonUserFeeVO
);
await
paramCheck
(
beginTime
,
expireTime
,
Number
(
type
),
userId
);
await
paramCheck
(
beginTime
,
expireTime
,
Number
(
type
),
userId
);
if
(
levelId
)
{
if
(
levelId
)
{
...
@@ -162,24 +149,17 @@ async function addParamValid(commonUserFeeVO: CommonUserFeeVO) {
...
@@ -162,24 +149,17 @@ async function addParamValid(commonUserFeeVO: CommonUserFeeVO) {
if
(
!
vipLevelSetting
)
{
if
(
!
vipLevelSetting
)
{
throw
ErrorCode
.
LEVEL_NOT_EXIST
;
throw
ErrorCode
.
LEVEL_NOT_EXIST
;
}
}
commonUserFeeVO
.
spot_maker_fee
=
vipLevelSetting
.
spot_maker
;
if
(
type
==
FEE_TYPE
.
FEE_TYPE_SPOT
)
{
commonUserFeeVO
.
spot_taker_fee
=
vipLevelSetting
.
spot_taker
;
commonUserFeeVO
.
maker_fee
=
vipLevelSetting
.
spot_maker
;
commonUserFeeVO
.
contract_maker_fee
=
vipLevelSetting
.
contract_maker
;
commonUserFeeVO
.
taker_fee
=
vipLevelSetting
.
spot_taker
;
commonUserFeeVO
.
contract_taker_fee
=
vipLevelSetting
.
contract_taker
;
}
else
{
commonUserFeeVO
.
maker_fee
=
vipLevelSetting
.
contract_maker
;
commonUserFeeVO
.
taker_fee
=
vipLevelSetting
.
contract_taker
;
}
return
;
return
;
}
}
if
((
type
==
FEE_TYPE
.
FEE_TYPE_ALL
||
type
==
FEE_TYPE
.
FEE_TYPE_SPOT
)
&&
(
!
commonUserFeeVO
.
spot_maker_fee
||
!
commonUserFeeVO
.
spot_taker_fee
))
{
throw
ErrorCode
.
SPOT_FEE_NEED_SET
;
}
if
((
type
==
FEE_TYPE
.
FEE_TYPE_ALL
||
type
==
FEE_TYPE
.
FEE_TYPE_CONTRACT_ALL
||
type
==
FEE_TYPE
.
FEE_TYPE_CONTRACT
||
type
==
FEE_TYPE
.
FEE_TYPE_BASE_COIN_CONTRACT
)
&&
(
!
commonUserFeeVO
.
contract_maker_fee
||
!
commonUserFeeVO
.
contract_taker_fee
))
{
throw
ErrorCode
.
CONTRACT_FEE_NEED_SET
;
}
let
user
=
await
getMUserInfoByUid
(
userId
);
let
user
=
await
getMUserInfoByUid
(
userId
);
if
(
!
user
||
user
.
deleted_flag
==
1
)
{
if
(
!
user
||
user
.
deleted_flag
==
1
)
{
...
@@ -194,22 +174,6 @@ async function addParamValid(commonUserFeeVO: CommonUserFeeVO) {
...
@@ -194,22 +174,6 @@ async function addParamValid(commonUserFeeVO: CommonUserFeeVO) {
}
}
async
function
updateParamValid
(
commonUserFeeVO
:
CommonUserFeeVO
)
{
let
id
=
commonUserFeeVO
.
id
;
let
userId
=
commonUserFeeVO
.
user_id
;
let
beginTime
=
commonUserFeeVO
.
begin_time
;
let
expireTime
=
commonUserFeeVO
.
expire_time
;
let
type
=
commonUserFeeVO
.
type
;
let
makerFee
=
commonUserFeeVO
.
maker_fee
;
let
takerFee
=
commonUserFeeVO
.
taker_fee
;
if
(
!
id
||
!
userId
||
!
beginTime
||
!
expireTime
||
!
makerFee
||
!
takerFee
)
{
throw
ErrorCode
.
PARAM_MISS
;
}
await
paramCheck
(
beginTime
,
expireTime
,
Number
(
type
),
userId
);
}
/**
/**
* 添加和更新校验入参
* 添加和更新校验入参
* @param beginTime
* @param beginTime
...
@@ -242,23 +206,24 @@ async function paramCheck(beginTime: any, expireTime: any, type: number, userId:
...
@@ -242,23 +206,24 @@ async function paramCheck(beginTime: any, expireTime: any, type: number, userId:
throw
ErrorCode
.
COIN_NO_ASSETS
;
throw
ErrorCode
.
COIN_NO_ASSETS
;
}
}
}
}
else
if
(
type
==
FEE_TYPE
.
FEE_TYPE_CONTRACT_ALL
)
{
if
(
!
await
baseUCheck
(
userId
))
{
}
throw
ErrorCode
.
U_NO_ASSETS
;
}
async
function
checkMaker
(
commonUserFeeVO
:
CommonUserFeeVO
)
{
if
(
!
await
baseCoinCheck
(
userId
))
{
let
userChannel
=
commonUserFeeVO
.
user_channel
;
throw
ErrorCode
.
COIN_NO_ASSETS
;
if
(
!
userChannel
)
{
}
throw
ErrorCode
.
PARAM_MISS
}
}
else
if
(
type
==
FEE_TYPE
.
FEE_TYPE_ALL
)
{
//项目方
if
(
!
await
spotCheck
(
userId
))
{
if
(
userChannel
==
2
)
{
throw
ErrorCode
.
SPOT_NO_ASSETS
;
//TODO:校验该用户是不是市商
}
let
statisPeriod
=
commonUserFeeVO
.
statis_period
;
if
(
!
await
baseUCheck
(
userId
))
{
let
amount_require_usdt
=
commonUserFeeVO
.
amount_require_usdt
;
throw
ErrorCode
.
U_NO_ASSETS
;
if
(
!
statisPeriod
||
Number
(
statisPeriod
)
<
0
||
Number
(
statisPeriod
)
>
30
)
{
throw
ErrorCode
.
PARAM_MISS
;
}
}
if
(
!
a
wait
baseCoinCheck
(
userId
)
)
{
if
(
!
a
mount_require_usdt
)
{
throw
ErrorCode
.
COIN_NO_ASSET
S
;
throw
ErrorCode
.
PARAM_MIS
S
;
}
}
}
}
}
}
\ No newline at end of file
src/functional/mvc/service/commonUserFeeSetting.service.ts
View file @
94108a6a
This diff is collapsed.
Click to expand it.
src/functional/router/v1/index.ts
View file @
94108a6a
...
@@ -169,12 +169,12 @@ const postFunc = {
...
@@ -169,12 +169,12 @@ const postFunc = {
'mUser/subscribe/mail/detail'
:
mUserSubscribeCtrl
.
mailDetail
,
//发送详情
'mUser/subscribe/mail/detail'
:
mUserSubscribeCtrl
.
mailDetail
,
//发送详情
'mUser/subscribe/mail/send/group'
:
mUserSubscribeCtrl
.
maiSendGroup
,
//群发邮件
'mUser/subscribe/mail/send/group'
:
mUserSubscribeCtrl
.
maiSendGroup
,
//群发邮件
//运营部-现货-
费率管理-普通用户手续费
//运营部-现货-
VIP管理(普通用户手续费、市商手续费)
'mUser/fee/setting/list'
:
commonUserFeeSettingCtrl
.
list
,
//普通用户手续费列表
'mUser/fee/setting/list'
:
commonUserFeeSettingCtrl
.
list
,
//普通用户手续费列表
'mUser/fee/setting/add'
:
commonUserFeeSettingCtrl
.
add
,
//新增普通用户手续费
'mUser/fee/setting/add'
:
commonUserFeeSettingCtrl
.
add
,
//新增普通用户手续费
'mUser/fee/setting/update'
:
commonUserFeeSettingCtrl
.
update
,
//修改普通用户手续费
'mUser/fee/setting/update'
:
commonUserFeeSettingCtrl
.
update
,
//修改普通用户手续费
'mUser/fee/setting/delete'
:
commonUserFeeSettingCtrl
.
del
,
//删除普通用户手续费
'mUser/fee/setting/delete'
:
commonUserFeeSettingCtrl
.
del
,
//删除普通用户手续费
'mUser/fee/setting/submit'
:
commonUserFeeSettingCtrl
.
submit
,
//提交普通用户手续费
//
'mUser/fee/setting/submit': commonUserFeeSettingCtrl.submit,//提交普通用户手续费
'mUser/fee/vip/level/list'
:
commonUserFeeSettingCtrl
.
vipLevelList
,
//用户等级费率列表
'mUser/fee/vip/level/list'
:
commonUserFeeSettingCtrl
.
vipLevelList
,
//用户等级费率列表
//技术部-App管理-App版本管理
//技术部-App管理-App版本管理
...
...
src/setting/access-limit.ts
View file @
94108a6a
...
@@ -111,12 +111,12 @@ let cmdWhiteList = {
...
@@ -111,12 +111,12 @@ let cmdWhiteList = {
'mUser/subscribe/mail/send'
:
1
,
'mUser/subscribe/mail/send'
:
1
,
'mUser/subscribe/mail/detail'
:
1
,
'mUser/subscribe/mail/detail'
:
1
,
'mUser/subscribe/mail/send/group'
:
1
,
'mUser/subscribe/mail/send/group'
:
1
,
//运营部-现货-
费率管理-普通用户手续费
//运营部-现货-
VIP管理(普通用户手续费、市商手续费)
'mUser/fee/setting/list'
:
1
,
'mUser/fee/setting/list'
:
1
,
'mUser/fee/setting/add'
:
1
,
'mUser/fee/setting/add'
:
1
,
'mUser/fee/setting/update'
:
1
,
'mUser/fee/setting/update'
:
1
,
'mUser/fee/setting/delete'
:
1
,
'mUser/fee/setting/delete'
:
1
,
'mUser/fee/setting/submit'
:
1
,
//
'mUser/fee/setting/submit': 1,
'mUser/fee/vip/level/list'
:
1
,
'mUser/fee/vip/level/list'
:
1
,
//技术部-App管理-App版本管理
//技术部-App管理-App版本管理
'tech/app/version/list'
:
1
,
'tech/app/version/list'
:
1
,
...
...
src/utils/feeRateCheckValidUtils.ts
View file @
94108a6a
import
{
mainUserAsset
}
from
"@madex/ex-ts-dao"
;
let
blockCoin
=
"BIX0"
;
let
blockCoin
=
"BIX0"
;
export
const
spotCheck
=
async
function
(
user_id
:
number
)
{
export
const
spotCheck
=
async
function
(
user_id
:
number
)
{
//TODO:后面补齐查询现货资产逻辑
let
exist
=
await
mainUserAsset
.
prototype
.
findOne
({
let
exist
=
{};
where
:
{
user_id
:
user_id
},
raw
:
true
})
return
exist
;
return
exist
;
}
}
...
...
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