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
1a309e92
Commit
1a309e92
authored
Sep 26, 2024
by
1486327116
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
434126bf
dfed33d2
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
876 additions
and
50 deletions
+876
-50
errorCode.ts
src/constant/errorCode.ts
+1
-0
contractLimitTrade.control.ts
src/functional/mvc/control/contractLimitTrade.control.ts
+126
-0
contractMarketMaker.control.ts
src/functional/mvc/control/contractMarketMaker.control.ts
+97
-0
contractPair.control.ts
src/functional/mvc/control/contractPair.control.ts
+68
-0
spotMarketMaker.control.ts
src/functional/mvc/control/spotMarketMaker.control.ts
+96
-0
spotPair.control.ts
src/functional/mvc/control/spotPair.control.ts
+15
-1
userAuthConfig.control.ts
src/functional/mvc/control/userAuthConfig.control.ts
+0
-1
aclRoleAuth.service.ts
src/functional/mvc/service/aclRoleAuth.service.ts
+2
-2
contractMarketMaker.service.ts
src/functional/mvc/service/contractMarketMaker.service.ts
+94
-0
contractPair.service.ts
src/functional/mvc/service/contractPair.service.ts
+106
-0
spotMarketMaker.service.ts
src/functional/mvc/service/spotMarketMaker.service.ts
+93
-0
spotPair.service.ts
src/functional/mvc/service/spotPair.service.ts
+109
-20
userAuthConfig.service.ts
src/functional/mvc/service/userAuthConfig.service.ts
+5
-4
index.ts
src/functional/router/v1/index.ts
+31
-10
access-limit.ts
src/setting/access-limit.ts
+30
-12
login-filter.ts
src/setting/login-filter.ts
+3
-0
No files found.
src/constant/errorCode.ts
View file @
1a309e92
...
...
@@ -60,4 +60,5 @@ export const ErrorCode = {
COIN_TYPE_NOT_EXIST
:
'30056'
,
//指定币种不存在
PAIR_NOT_EXIST
:
'30057'
,
//指定币对不存在
LIMIT_ERROR
:
'30058'
,
//limit参数必须在10-2000之间
ADD_PAIR_TO_CORE_ERR
:
'30059'
,
//添加交易对提交到撮合失败
}
src/functional/mvc/control/contractLimitTrade.control.ts
0 → 100644
View file @
1a309e92
import
{
addOptLog
}
from
"../service/userOptLog.service"
;
let
{
logger
,
Res3Utils
,
optionalUtils
:
Optional
,
apiAssertUtils
:
ApiAssert
,
datetimeUtils
}
=
require
(
'@madex/ex-js-public'
);
import
{
ErrorCode
}
from
"../../../constant/errorCode"
;
import
{
getCurrentUserId
}
from
"../../../utils/aclUserUtils"
;
import
{
it
}
from
"node:test"
;
let
isIp
=
require
(
'is-ip'
);
let
{
authCommon
:
AuthCommon
,
redisUtilsCommon
:
RedisClient
,
}
=
require
(
'@madex/ex-js-common'
);
interface
LimitTradeVO
{
type
?:
number
,
//1U本位,2币本位
status
?:
number
//1限制交易,2限制开仓,3取消限制交易,4取消限制开仓
user_id
?:
number
pair
?:
string
}
/**
* 金融部-其他管理-合约交易限制配置列表
* @param req
* @param infoVO
*/
export
const
list
=
async
(
req
:
any
,
limitTradeVO
:
LimitTradeVO
)
=>
{
let
func_name
=
"contractLimitTrade.control.list"
;
try
{
let
redisKey
=
'contractLimitTrade.list'
;
let
cacheMap
=
await
RedisClient
.
getSync
(
redisKey
);
let
list
:
any
=
[];
if
(
cacheMap
)
{
let
keys
=
Object
.
keys
(
cacheMap
);
for
(
let
key
of
keys
)
{
let
splitArr
=
key
.
split
(
"."
);
let
item
=
{
type
:
splitArr
[
0
]
==
"baseu"
?
1
:
2
,
status
:
splitArr
[
2
]
==
"trade"
?
1
:
2
,
pair
:
splitArr
[
3
],
user_id
:
splitArr
[
4
],
}
list
.
push
(
item
)
}
}
let
status
=
limitTradeVO
.
status
;
let
pair
=
limitTradeVO
.
pair
;
let
userId
=
limitTradeVO
.
user_id
;
if
(
pair
)
{
list
=
list
.
filter
(
item
=>
item
.
pair
==
pair
);
}
if
(
status
)
{
list
=
list
.
filter
(
item
=>
item
.
status
==
status
);
}
if
(
userId
||
userId
===
0
)
{
list
=
list
.
filter
(
item
=>
item
.
user_id
==
userId
);
}
return
Res3Utils
.
result
(
list
);
}
catch
(
e
)
{
logger
.
error
(
`
${
func_name
}
error:
${
e
}
`
);
return
Res3Utils
.
getErrorResult
(
e
);
}
};
/**
* 金融部-其他管理-合约交易限制配置
* @param req
* @param authConfigVO
*/
export
const
set
=
async
(
req
:
any
,
limitTradeVO
:
LimitTradeVO
)
=>
{
let
func_name
=
"contractLimitTrade.control.set"
;
try
{
let
ip
=
isIp
(
req
.
ip
)
?
req
.
ip
:
'*.*.*.*'
;
let
currentUserId
=
await
getCurrentUserId
(
req
.
cookies
.
session_id
);
//1U本位,2币本位
let
type
=
Number
(
limitTradeVO
.
type
);
//1限制交易,2限制开仓,3取消限制交易,4取消限制开仓
let
status
=
Number
(
limitTradeVO
.
status
);
let
pair
=
String
(
limitTradeVO
.
pair
);
let
userId
=
Number
(
limitTradeVO
.
user_id
);
await
writeCacheData
(
type
,
status
,
pair
,
userId
);
//管理后台操作日志
addOptLog
(
currentUserId
,
0
,
'合约限制交易配置-设置'
,
ip
,
JSON
.
stringify
(
limitTradeVO
),
'合约限制交易配置'
);
return
Res3Utils
.
result
(
"ok"
);
}
catch
(
e
)
{
logger
.
error
(
`
${
func_name
}
error:
${
e
}
`
);
return
Res3Utils
.
getErrorResult
(
e
);
}
};
async
function
writeCacheData
(
type
:
number
,
status
:
number
,
pair
:
string
,
user_id
:
number
)
{
let
redisKey
=
'contractLimitTrade.list'
;
if
(
!
type
||
!
status
)
{
throw
ErrorCode
.
PARAM_MISS
}
if
(
!
user_id
)
{
user_id
=
0
}
if
(
!
pair
)
{
pair
=
"all"
;
}
let
typeStr
=
type
==
1
?
"baseu.limit"
:
"basecoin.limit"
;
let
statusStr
=
status
==
1
||
status
==
3
?
"trade"
:
"open"
;
let
mapKey
=
`
${
typeStr
}
.
${
statusStr
}
.
${
pair
}
.
${
user_id
}
`
;
let
cacheMap
=
await
RedisClient
.
getSync
(
redisKey
);
if
(
status
==
1
||
status
==
2
)
{
cacheMap
=
cacheMap
?
cacheMap
:
{};
cacheMap
[
mapKey
]
=
1
}
else
{
if
(
cacheMap
)
{
delete
cacheMap
[
mapKey
]
}
}
await
RedisClient
.
writeSync
(
redisKey
,
cacheMap
);
}
src/functional/mvc/control/contractMarketMaker.control.ts
0 → 100644
View file @
1a309e92
import
*
as
contractMarketMakerService
from
"../service/contractMarketMaker.service"
;
import
{
MakerPairPageVO
,
MakerPairVO
}
from
"../service/contractMarketMaker.service"
;
let
{
logger
,
Res3Utils
,
optionalUtils
:
Optional
,
apiAssertUtils
:
ApiAssert
,
datetimeUtils
}
=
require
(
'@madex/ex-js-public'
);
import
{
ErrorCode
}
from
"../../../constant/errorCode"
;
import
{
getCurrentUserId
}
from
"../../../utils/aclUserUtils"
;
let
isIp
=
require
(
'is-ip'
);
/**
* 金融部-其他管理-合约做市参数配置列表
* @param req
* @param infoVO
*/
export
const
list
=
async
(
req
:
any
,
pageVO
:
MakerPairPageVO
)
=>
{
let
func_name
=
"contractMarketMaker.control.list"
;
try
{
pageVO
.
page
=
Optional
.
opt
(
pageVO
,
'page'
,
1
);
pageVO
.
size
=
Optional
.
opt
(
pageVO
,
'size'
,
20
);
let
res
=
await
contractMarketMakerService
.
list
(
pageVO
);
return
Res3Utils
.
result
(
res
);
}
catch
(
e
)
{
logger
.
error
(
`
${
func_name
}
error:
${
e
}
`
);
return
Res3Utils
.
getErrorResult
(
e
);
}
};
/**
* 金融部-其他管理-合约做市参数配置-交易对
* @param req
* @param authConfigVO
*/
export
const
set
=
async
(
req
:
any
,
makerPairVO
:
MakerPairVO
)
=>
{
let
func_name
=
"contractMarketMaker.control.set"
;
try
{
let
ip
=
isIp
(
req
.
ip
)
?
req
.
ip
:
'*.*.*.*'
;
let
currentUserId
=
await
getCurrentUserId
(
req
.
cookies
.
session_id
);
if
(
!
makerPairVO
.
pair
||
!
makerPairVO
.
user_id
)
{
throw
ErrorCode
.
PARAM_MISS
}
let
res
=
await
contractMarketMakerService
.
set
(
makerPairVO
,
currentUserId
,
ip
);
return
Res3Utils
.
result
(
res
);
}
catch
(
e
)
{
logger
.
error
(
`
${
func_name
}
error:
${
e
}
`
);
return
Res3Utils
.
getErrorResult
(
e
);
}
};
/**
* 金融部-其他管理-合约做市参数配置-做市参数配置
* @param req
* @param authConfigVO
*/
export
const
paramSet
=
async
(
req
:
any
,
makerPairVO
:
MakerPairVO
)
=>
{
let
func_name
=
"contractMarketMaker.control.paramSet"
;
try
{
let
ip
=
isIp
(
req
.
ip
)
?
req
.
ip
:
'*.*.*.*'
;
let
currentUserId
=
await
getCurrentUserId
(
req
.
cookies
.
session_id
);
if
(
!
makerPairVO
.
pair
||
!
makerPairVO
.
data
)
{
throw
ErrorCode
.
PARAM_MISS
}
let
res
=
await
contractMarketMakerService
.
paramSet
(
makerPairVO
.
pair
,
makerPairVO
.
data
,
currentUserId
,
ip
);
return
Res3Utils
.
result
(
res
);
}
catch
(
e
)
{
logger
.
error
(
`
${
func_name
}
error:
${
e
}
`
);
return
Res3Utils
.
getErrorResult
(
e
);
}
};
/**
* 金融部-其他管理-合约做市参数配置-做市参数查询
* @param req
* @param authConfigVO
*/
export
const
paramGet
=
async
(
req
:
any
,
makerPairVO
:
MakerPairVO
)
=>
{
let
func_name
=
"contractMarketMaker.control.paramGet"
;
try
{
if
(
!
makerPairVO
.
pair
)
{
throw
ErrorCode
.
PARAM_MISS
}
let
res
=
await
contractMarketMakerService
.
paramGet
(
makerPairVO
.
pair
);
return
Res3Utils
.
result
(
res
);
}
catch
(
e
)
{
logger
.
error
(
`
${
func_name
}
error:
${
e
}
`
);
return
Res3Utils
.
getErrorResult
(
e
);
}
};
src/functional/mvc/control/contractPair.control.ts
0 → 100644
View file @
1a309e92
import
*
as
contractPairService
from
"../service/contractPair.service"
;
import
{
ContractPairPageVO
,
ContractPairVO
}
from
"../service/contractPair.service"
;
let
{
logger
,
Res3Utils
,
optionalUtils
:
Optional
,
apiAssertUtils
:
ApiAssert
,
datetimeUtils
}
=
require
(
'@madex/ex-js-public'
);
import
{
ErrorCode
}
from
"../../../constant/errorCode"
;
import
{
getCurrentUserId
}
from
"../../../utils/aclUserUtils"
;
let
isIp
=
require
(
'is-ip'
);
/**
* 金融部-交易管理-合约查询交易对
* @param req
* @param infoVO
*/
export
const
query
=
async
(
req
:
any
,
pageVO
:
ContractPairPageVO
)
=>
{
let
func_name
=
"contractPair.control.query"
;
try
{
pageVO
.
page
=
Optional
.
opt
(
pageVO
,
'page'
,
1
);
pageVO
.
size
=
Optional
.
opt
(
pageVO
,
'size'
,
20
);
let
res
=
await
contractPairService
.
query
(
pageVO
);
return
Res3Utils
.
result
(
res
);
}
catch
(
e
)
{
logger
.
error
(
`
${
func_name
}
error:
${
e
}
`
);
return
Res3Utils
.
getErrorResult
(
e
);
}
};
/**
* 金融部-交易管理-合约设置交易对
* @param req
* @param authConfigVO
*/
export
const
set
=
async
(
req
:
any
,
contractPairVO
:
ContractPairVO
)
=>
{
let
func_name
=
"contractPair.control.set"
;
try
{
let
ip
=
isIp
(
req
.
ip
)
?
req
.
ip
:
'*.*.*.*'
;
let
currentUserId
=
await
getCurrentUserId
(
req
.
cookies
.
session_id
);
let
res
=
await
contractPairService
.
set
(
contractPairVO
,
currentUserId
,
ip
);
return
Res3Utils
.
result
(
res
);
}
catch
(
e
)
{
logger
.
error
(
`
${
func_name
}
error:
${
e
}
`
);
return
Res3Utils
.
getErrorResult
(
e
);
}
};
/**
* 金融部-交易管理-合约更新交易对
* @param req
* @param authConfigVO
*/
export
const
update
=
async
(
req
:
any
,
contractPairVO
:
ContractPairVO
)
=>
{
let
func_name
=
"contractPair.control.update"
;
try
{
let
ip
=
isIp
(
req
.
ip
)
?
req
.
ip
:
'*.*.*.*'
;
let
currentUserId
=
await
getCurrentUserId
(
req
.
cookies
.
session_id
);
let
res
=
await
contractPairService
.
update
(
contractPairVO
,
currentUserId
,
ip
);
return
Res3Utils
.
result
(
res
);
}
catch
(
e
)
{
logger
.
error
(
`
${
func_name
}
error:
${
e
}
`
);
return
Res3Utils
.
getErrorResult
(
e
);
}
};
src/functional/mvc/control/spotMarketMaker.control.ts
0 → 100644
View file @
1a309e92
import
*
as
spotMarketMakerService
from
"../service/spotMarketMaker.service"
;
import
{
MakerPairPageVO
,
MakerPairVO
}
from
"../service/spotMarketMaker.service"
;
let
{
logger
,
Res3Utils
,
optionalUtils
:
Optional
,
apiAssertUtils
:
ApiAssert
,
datetimeUtils
}
=
require
(
'@madex/ex-js-public'
);
import
{
ErrorCode
}
from
"../../../constant/errorCode"
;
import
{
getCurrentUserId
}
from
"../../../utils/aclUserUtils"
;
let
isIp
=
require
(
'is-ip'
);
/**
* 金融部-其他管理-现货做市参数配置列表
* @param req
* @param infoVO
*/
export
const
list
=
async
(
req
:
any
,
pageVO
:
MakerPairPageVO
)
=>
{
let
func_name
=
"spotMarketMaker.control.list"
;
try
{
pageVO
.
page
=
Optional
.
opt
(
pageVO
,
'page'
,
1
);
pageVO
.
size
=
Optional
.
opt
(
pageVO
,
'size'
,
20
);
let
res
=
await
spotMarketMakerService
.
list
(
pageVO
);
return
Res3Utils
.
result
(
res
);
}
catch
(
e
)
{
logger
.
error
(
`
${
func_name
}
error:
${
e
}
`
);
return
Res3Utils
.
getErrorResult
(
e
);
}
};
/**
* 金融部-其他管理-现货做市参数配置-交易对
* @param req
* @param authConfigVO
*/
export
const
set
=
async
(
req
:
any
,
makerPairVO
:
MakerPairVO
)
=>
{
let
func_name
=
"spotMarketMaker.control.set"
;
try
{
let
ip
=
isIp
(
req
.
ip
)
?
req
.
ip
:
'*.*.*.*'
;
let
currentUserId
=
await
getCurrentUserId
(
req
.
cookies
.
session_id
);
if
(
!
makerPairVO
.
pair
||
!
makerPairVO
.
user_id
)
{
throw
ErrorCode
.
PARAM_MISS
}
let
res
=
await
spotMarketMakerService
.
set
(
makerPairVO
,
currentUserId
,
ip
);
return
Res3Utils
.
result
(
res
);
}
catch
(
e
)
{
logger
.
error
(
`
${
func_name
}
error:
${
e
}
`
);
return
Res3Utils
.
getErrorResult
(
e
);
}
};
/**
* 金融部-其他管理-现货做市参数配置-做市参数配置
* @param req
* @param authConfigVO
*/
export
const
paramSet
=
async
(
req
:
any
,
makerPairVO
:
MakerPairVO
)
=>
{
let
func_name
=
"spotMarketMaker.control.paramSet"
;
try
{
let
ip
=
isIp
(
req
.
ip
)
?
req
.
ip
:
'*.*.*.*'
;
let
currentUserId
=
await
getCurrentUserId
(
req
.
cookies
.
session_id
);
if
(
!
makerPairVO
.
pair
||
!
makerPairVO
.
data
)
{
throw
ErrorCode
.
PARAM_MISS
}
let
res
=
await
spotMarketMakerService
.
paramSet
(
makerPairVO
.
pair
,
makerPairVO
.
data
,
currentUserId
,
ip
);
return
Res3Utils
.
result
(
res
);
}
catch
(
e
)
{
logger
.
error
(
`
${
func_name
}
error:
${
e
}
`
);
return
Res3Utils
.
getErrorResult
(
e
);
}
};
/**
* 金融部-其他管理-现货做市参数配置-做市参数查询
* @param req
* @param authConfigVO
*/
export
const
paramGet
=
async
(
req
:
any
,
makerPairVO
:
MakerPairVO
)
=>
{
let
func_name
=
"spotMarketMaker.control.paramGet"
;
try
{
if
(
!
makerPairVO
.
pair
)
{
throw
ErrorCode
.
PARAM_MISS
}
let
res
=
await
spotMarketMakerService
.
paramGet
(
makerPairVO
.
pair
);
return
Res3Utils
.
result
(
res
);
}
catch
(
e
)
{
logger
.
error
(
`
${
func_name
}
error:
${
e
}
`
);
return
Res3Utils
.
getErrorResult
(
e
);
}
};
src/functional/mvc/control/spotPair.control.ts
View file @
1a309e92
...
...
@@ -18,7 +18,7 @@ export const list = async (req: any, param: ListParam) => {
return
Res3Utils
.
getErrorResult
(
e
);
}
};
//新增
export
const
save
=
async
(
req
:
any
,
param
:
AddParam
)
=>
{
let
func_name
=
"spotPairCtl.save"
;
let
cmd
=
req
.
path
;
...
...
@@ -39,6 +39,20 @@ export const save = async (req: any, param: AddParam) => {
return
Res3Utils
.
getErrorResult
(
e
);
}
};
//修改
export
const
update
=
async
(
req
:
any
,
param
:
AddParam
)
=>
{
let
func_name
=
"spotPairCtl.save"
;
let
cmd
=
req
.
path
;
try
{
ApiAssert
.
notNull
(
'3000'
,
param
.
id
);
let
res
=
await
service
.
update
(
param
);
return
Res3Utils
.
result
(
res
);
}
catch
(
e
)
{
logger
.
error
(
`
${
func_name
}
error:
${
e
}
`
);
return
Res3Utils
.
getErrorResult
(
e
);
}
};
export
const
pushToCoreSystem
=
async
(
req
:
any
,
id
:
any
)
=>
{
...
...
src/functional/mvc/control/userAuthConfig.control.ts
View file @
1a309e92
...
...
@@ -14,7 +14,6 @@ export const resetTotp = async (req: any, authConfigVO: AuthConfigVO) => {
let
func_name
=
"userAuthConfigCtrl.resetTotp"
;
let
cmd
=
req
.
path
;
try
{
ApiAssert
.
notNull
(
ErrorCode
.
PARAM_MISS
,
authConfigVO
.
user_id
);
let
res
=
await
userAuthConfigService
.
resetTotp
(
authConfigVO
.
user_id
);
return
Res3Utils
.
result
(
res
);
}
...
...
src/functional/mvc/service/aclRoleAuth.service.ts
View file @
1a309e92
...
...
@@ -165,7 +165,7 @@ export const saveAuth = async (aclAuthVO: AclAuthVO, session_id: any) => {
}
else
{
await
_checkUrl
(
aclAuthVO
.
url
);
if
(
!
aclAuthVO
.
opt_type
){
if
(
!
aclAuthVO
.
opt_type
)
{
aclAuthVO
.
opt_type
=
4
;
}
aclAuth
.
prototype
.
create
(
aclAuthVO
);
...
...
@@ -329,7 +329,7 @@ export const delRole = async (id: number | any, currentUserId: number) => {
throw
ErrorCode
.
ROLE_NOT_EXIST
}
let
isSuperUser
=
await
_isSuper
(
currentUserId
);
if
(
isSuperUser
||
Number
(
exist
.
creator
)
===
Number
(
currentUserId
)
)
{
if
(
!
isSuperUser
)
{
throw
ErrorCode
.
NO_PERMISSION
}
let
roleUser
=
await
aclUserRole
.
prototype
.
find
({
...
...
src/functional/mvc/service/contractMarketMaker.service.ts
0 → 100644
View file @
1a309e92
import
{
userApikeyStrict
,
}
from
"@madex/ex-ts-dao"
;
import
{
ErrorCode
}
from
"../../../constant/errorCode"
;
import
{
addOptLog
}
from
"./userOptLog.service"
;
let
_
=
require
(
'lodash'
);
let
{
logger
}
=
require
(
'@madex/ex-js-public'
);
let
{
authCommon
:
AuthCommon
,
redisUtilsCommon
:
RedisClient
,
}
=
require
(
'@madex/ex-js-common'
);
export
interface
MakerPairVO
{
id
?:
number
,
pair
?:
string
;
user_id
?:
number
;
enable
?:
number
;
data
?:
string
createdAt
?:
Date
|
any
,
updatedAt
?:
Date
|
any
,
}
export
interface
MakerPairPageVO
extends
MakerPairVO
{
page
?:
number
,
size
?:
number
,
}
export
async
function
list
(
pageVO
:
MakerPairPageVO
)
{
let
key
=
'contractMarketMaker.service.list'
;
//TODO:目前在缓存里 方便调试 后期撮合搞定之后再修改
let
list
=
await
RedisClient
.
getSync
(
key
);
let
res
=
{
count
:
list
?
list
.
length
:
0
,
rows
:
list
?
list
:
[]
}
return
res
;
}
export
async
function
set
(
makerPairVO
:
MakerPairVO
,
currentUserId
:
any
,
ip
:
string
|
undefined
)
{
//TODO:目前在缓存里 方便调试 后期撮合搞定之后再修改
makerPairVO
.
createdAt
=
new
Date
();
makerPairVO
.
updatedAt
=
new
Date
();
let
key
=
'contractMarketMaker.service.list'
;
let
list
=
await
RedisClient
.
getSync
(
key
);
if
(
list
)
{
makerPairVO
.
id
=
list
.
length
+
1
;
list
.
push
(
makerPairVO
);
}
else
{
makerPairVO
.
id
=
1
;
list
=
[];
list
.
push
(
makerPairVO
);
}
await
RedisClient
.
writeSync
(
key
,
list
);
//管理后台操作日志
addOptLog
(
currentUserId
,
0
,
'合约做市参数配置-交易对新增'
,
ip
,
JSON
.
stringify
(
makerPairVO
),
'合约做市参数配置'
);
return
'success'
;
}
export
async
function
paramGet
(
pair
:
string
)
{
//TODO:目前在缓存里 方便调试 后期撮合搞定之后再修改
let
key
=
'contractMarketMaker.service.paramGet'
;
let
map
=
await
RedisClient
.
getSync
(
key
);
let
res
=
map
?
map
[
pair
]
:
""
return
res
;
}
export
async
function
paramSet
(
pair
:
string
,
data_json
:
string
,
currentUserId
:
any
,
ip
:
any
)
{
//TODO:目前在缓存里 方便调试 后期撮合搞定之后再修改
let
key
=
'contractMarketMaker.service.paramGet'
;
let
map
=
await
RedisClient
.
getSync
(
key
);
if
(
!
map
)
{
map
=
{}
}
map
[
pair
]
=
JSON
.
parse
(
data_json
);
await
RedisClient
.
writeSync
(
key
,
map
);
//管理后台操作日志
addOptLog
(
currentUserId
,
0
,
'合约做市参数配置-做市参数设置'
,
ip
,
`pair:
${
pair
}
,data:
${
data_json
}
`
,
'合约做市参数配置'
);
return
"ok"
;
}
src/functional/mvc/service/contractPair.service.ts
0 → 100644
View file @
1a309e92
import
{
userApikeyStrict
,
}
from
"@madex/ex-ts-dao"
;
import
{
ErrorCode
}
from
"../../../constant/errorCode"
;
import
{
addOptLog
}
from
"./userOptLog.service"
;
let
_
=
require
(
'lodash'
);
let
{
logger
}
=
require
(
'@madex/ex-js-public'
);
let
{
authCommon
:
AuthCommon
,
redisUtilsCommon
:
RedisClient
,
}
=
require
(
'@madex/ex-js-common'
);
export
interface
ContractPairVO
{
id
?:
number
,
symbol
?:
string
;
base
?:
string
;
quote
?:
string
;
leverage_init
?:
number
;
leverage_min
?:
number
;
leverage_max
?:
number
;
margin_rate_maintain
?:
string
,
margin_rate_init
?:
string
,
risk_level_base
?:
number
,
maker_fee
?:
string
,
taker_fee
?:
string
,
createdAt
?:
Date
|
any
,
updatedAt
?:
Date
|
any
,
}
export
interface
ContractPairPageVO
extends
ContractPairVO
{
page
?:
number
,
size
?:
number
,
}
export
async
function
query
(
pageVO
:
ContractPairPageVO
)
{
let
key
=
'contract.pair.query'
;
//TODO:目前在缓存里 方便调试 后期撮合搞定之后再修改
let
list
=
await
RedisClient
.
getSync
(
key
);
let
res
=
{
count
:
list
?
list
.
length
:
0
,
rows
:
list
?
list
:
[]
}
return
res
;
}
export
async
function
set
(
contractPairVO
:
ContractPairVO
,
currentUserId
:
any
,
ip
:
string
|
undefined
)
{
//TODO:目前在缓存里 方便调试 后期撮合搞定之后再修改
contractPairVO
.
createdAt
=
new
Date
();
contractPairVO
.
updatedAt
=
new
Date
();
let
key
=
'contract.pair.query'
;
let
list
=
await
RedisClient
.
getSync
(
key
);
if
(
list
)
{
contractPairVO
.
id
=
list
.
length
+
1
;
list
.
push
(
contractPairVO
);
}
else
{
contractPairVO
.
id
=
1
;
list
=
[];
list
.
push
(
contractPairVO
);
}
await
RedisClient
.
writeSync
(
key
,
list
);
//管理后台操作日志
addOptLog
(
currentUserId
,
0
,
'新增合约交易对'
,
ip
,
JSON
.
stringify
(
contractPairVO
),
'交易管理'
);
return
'success'
;
}
export
async
function
update
(
contractPairVO
:
ContractPairVO
,
currentUserId
:
any
,
ip
:
string
|
undefined
)
{
//TODO:目前在缓存里 方便调试 后期撮合搞定之后再修改
let
key
=
'contract.pair.query'
;
let
list
=
await
RedisClient
.
getSync
(
key
);
let
nList
:
any
[]
=
[];
for
(
let
item
of
list
)
{
let
one
=
item
;
if
(
item
.
id
==
contractPairVO
.
id
){
one
=
contractPairVO
;
}
nList
.
push
(
one
);
}
await
RedisClient
.
writeSync
(
key
,
nList
);
//管理后台操作日志
addOptLog
(
currentUserId
,
0
,
'修改合约交易对'
,
ip
,
JSON
.
stringify
(
contractPairVO
),
'交易管理'
);
return
'success'
;
}
src/functional/mvc/service/spotMarketMaker.service.ts
0 → 100644
View file @
1a309e92
import
{
userApikeyStrict
,
}
from
"@madex/ex-ts-dao"
;
import
{
ErrorCode
}
from
"../../../constant/errorCode"
;
import
{
addOptLog
}
from
"./userOptLog.service"
;
let
_
=
require
(
'lodash'
);
let
{
logger
}
=
require
(
'@madex/ex-js-public'
);
let
{
authCommon
:
AuthCommon
,
redisUtilsCommon
:
RedisClient
,
}
=
require
(
'@madex/ex-js-common'
);
export
interface
MakerPairVO
{
id
?:
number
,
pair
?:
string
;
user_id
?:
number
;
enable
?:
number
;
data
?:
string
createdAt
?:
Date
|
any
,
updatedAt
?:
Date
|
any
,
}
export
interface
MakerPairPageVO
extends
MakerPairVO
{
page
?:
number
,
size
?:
number
,
}
export
async
function
list
(
pageVO
:
MakerPairPageVO
)
{
let
key
=
'spotMarketMaker.service.list'
;
//TODO:目前在缓存里 方便调试 后期撮合搞定之后再修改
let
list
=
await
RedisClient
.
getSync
(
key
);
let
res
=
{
count
:
list
?
list
.
length
:
0
,
rows
:
list
?
list
:
[]
}
return
res
;
}
export
async
function
set
(
makerPairVO
:
MakerPairVO
,
currentUserId
:
any
,
ip
:
string
|
undefined
)
{
//TODO:目前在缓存里 方便调试 后期撮合搞定之后再修改
makerPairVO
.
createdAt
=
new
Date
();
makerPairVO
.
updatedAt
=
new
Date
();
let
key
=
'spotMarketMaker.service.list'
;
let
list
=
await
RedisClient
.
getSync
(
key
);
if
(
list
)
{
makerPairVO
.
id
=
list
.
length
+
1
;
list
.
push
(
makerPairVO
);
}
else
{
makerPairVO
.
id
=
1
;
list
=
[];
list
.
push
(
makerPairVO
);
}
await
RedisClient
.
writeSync
(
key
,
list
);
//管理后台操作日志
addOptLog
(
currentUserId
,
0
,
'现货做市参数配置-交易对新增'
,
ip
,
JSON
.
stringify
(
makerPairVO
),
'现货做市参数配置'
);
return
'success'
;
}
export
async
function
paramGet
(
pair
:
string
)
{
//TODO:目前在缓存里 方便调试 后期撮合搞定之后再修改
let
key
=
'spotMarketMaker.service.paramGet'
;
let
map
=
await
RedisClient
.
getSync
(
key
);
let
res
=
map
?
map
[
pair
]
:
""
return
res
;
}
export
async
function
paramSet
(
pair
:
string
,
data
:
string
,
currentUserId
:
any
,
ip
:
any
)
{
//TODO:目前在缓存里 方便调试 后期撮合搞定之后再修改
let
key
=
'spotMarketMaker.service.paramGet'
;
let
map
=
await
RedisClient
.
getSync
(
key
);
if
(
!
map
)
{
map
=
{}
}
map
[
pair
]
=
JSON
.
parse
(
data
);
await
RedisClient
.
writeSync
(
key
,
map
);
//管理后台操作日志
addOptLog
(
currentUserId
,
0
,
'现货做市参数配置-做市参数设置'
,
ip
,
`pair:
${
pair
}
,data:
${
data
}
`
,
'现货做市参数配置'
);
return
"ok"
;
}
src/functional/mvc/service/spotPair.service.ts
View file @
1a309e92
// @madex/ex-ts-dao 是 ts 的 dao, 代码在 bitbucket/ex-js-dao 的 ts 分支上
import
{
spotPairs
,
o
rmDB
,
coinType
}
from
"@madex/ex-ts-dao"
;
import
{
spotPairs
,
madSpotO
rmDB
,
coinType
}
from
"@madex/ex-ts-dao"
;
import
{
NUMBER
}
from
"sequelize"
;
import
{
addPairToCore
}
from
"../../../utils/coreSystemUtils"
;
import
{
ErrorCode
}
from
"../../../constant/errorCode"
;
let
{
logger
,
datetimeUtils
}
=
require
(
'@madex/ex-js-public'
);
export
interface
ListParam
{
symbol
:
string
|
any
;
symbol
?
:
string
|
any
;
page
:
number
;
size
:
number
;
status
?:
number
from_time
?:
Date
|
any
to_time
?:
Date
|
any
}
export
interface
AddParam
{
id
:
any
;
id
?:
number
;
symbol
?:
string
;
product_id
?:
number
;
base
?:
string
;
quote
?:
string
;
name
?:
string
;
price_scale
?:
number
;
base
:
string
;
quantity_scale
?:
number
;
quote
:
string
;
maker_fee
?
:
string
;
symbol
:
string
;
taker_fee
?
:
string
;
name
:
string
;
price_increment
?:
number
;
price_scale
:
number
;
quantity_increment
?
:
number
;
quantity_scale
:
number
;
status
?:
number
maker_fee
:
string
;
view_precision
?:
number
taker_fee
:
string
;
createdAt
?:
Date
|
any
,
updatedAt
?:
Date
|
any
,
}
export
async
function
list
(
param
:
ListParam
)
{
let
where
=
{};
if
(
param
.
symbol
)
{
where
[
"symbol"
]
=
{
[
ormDB
.
Op
.
like
]:
`%
${
param
.
symbol
}
%`
};
where
[
"symbol"
]
=
{
[
madSpotOrmDB
.
Op
.
like
]:
`%
${
param
.
symbol
}
%`
};
}
if
(
param
.
status
||
param
.
status
===
0
)
{
where
[
"status"
]
=
param
.
status
}
if
(
param
.
from_time
&&
param
.
to_time
)
{
where
[
'createdAt'
]
=
{
[
madSpotOrmDB
.
Op
.
between
]:
[
param
.
from_time
,
param
.
to_time
]
}
}
let
resList
=
await
spotPairs
.
prototype
.
findAndCount
({
where
:
where
,
...
...
@@ -49,16 +77,77 @@ export async function list(param: ListParam) {
}
export
const
save
=
async
(
param
:
AddParam
)
=>
{
let
id
=
param
.
id
;
if
(
id
)
{
delete
param
.
id
await
spotPairs
.
prototype
.
update
(
param
,
{
where
:
{
id
:
id
}
})
param
.
updatedAt
=
new
Date
();
param
.
createdAt
=
new
Date
();
let
tx
;
try
{
tx
=
await
madSpotOrmDB
.
transaction
();
//数据库新增
let
insertInfo
=
await
spotPairs
.
prototype
.
create
(
param
,
{
transaction
:
tx
});
//提交到撮合
let
symbol
=
insertInfo
.
symbol
;
let
sps
=
symbol
.
split
(
"_"
);
let
base
=
sps
[
0
];
let
quote
=
sps
[
1
]
let
toCoreParam
=
{
"base"
:
base
,
"quote"
:
quote
,
"symbol"
:
symbol
,
"name"
:
symbol
,
"price_scale"
:
insertInfo
.
price_scale
,
"quantity_scale"
:
insertInfo
.
quantity_scale
,
"maker_fee"
:
insertInfo
.
maker_fee
,
"taker_fee"
:
insertInfo
.
taker_fee
}
let
optResult
=
await
addPairToCore
(
toCoreParam
);
if
(
!
optResult
)
{
throw
ErrorCode
.
ADD_PAIR_TO_CORE_ERR
;
}
if
(
!
insertInfo
.
id
)
{
throw
ErrorCode
.
DATA_NOT_EXIST
}
await
spotPairs
.
prototype
.
update
({
status
:
1
},
{
where
:
{
id
:
insertInfo
.
id
},
transaction
:
tx
});
await
tx
.
commit
();
}
catch
(
e
)
{
logger
.
error
(
'spotPairService.save.error:'
+
e
);
if
(
tx
)
{
await
tx
.
rollback
();
}
throw
e
;
}
return
'ok'
;
};
export
const
update
=
async
(
param
:
AddParam
)
=>
{
let
dbInfo
=
await
spotPairs
.
prototype
.
findOne
({
where
:
{
id
:
param
.
id
},
raw
:
true
});
if
(
!
dbInfo
)
{
throw
ErrorCode
.
DATA_NOT_EXIST
}
let
updateInfo
=
{
updatedAt
:
new
Date
()
};
if
(
param
.
view_precision
||
param
.
view_precision
===
0
)
{
updateInfo
[
'view_precision'
]
=
param
.
view_precision
}
if
(
param
.
price_increment
||
param
.
price_increment
===
0
)
{
updateInfo
[
'price_increment'
]
=
param
.
price_increment
}
else
{
await
spotPairs
.
prototype
.
create
(
param
);
if
(
param
.
quantity_increment
||
param
.
quantity_increment
===
0
)
{
updateInfo
[
'quantity_increment'
]
=
param
.
quantity_increment
}
await
spotPairs
.
prototype
.
update
(
updateInfo
,
{
where
:
{
id
:
Number
(
param
.
id
)
}
});
return
'ok'
;
};
...
...
src/functional/mvc/service/userAuthConfig.service.ts
View file @
1a309e92
...
...
@@ -44,12 +44,13 @@ export interface AuthConfigPageVO extends AuthConfigVO {
export
async
function
resetTotp
(
userId
:
number
|
undefined
)
{
let
userInfo
=
await
getOneAclUserByUid
(
Number
(
userId
));
ApiAssert
.
isNotEmpty
(
ErrorCode
.
USER_NOT_EXIST
,
userInfo
);
if
(
userId
)
{
let
userInfo
=
await
getOneAclUserByUid
(
Number
(
userId
));
ApiAssert
.
isNotEmpty
(
ErrorCode
.
USER_NOT_EXIST
,
userInfo
);
}
//生成新的密钥
let
totpEncrypt
=
Otplib
.
authenticator
.
generateSecret
();
let
email
=
userId
+
'-'
+
totpEncrypt
.
slice
(
0
,
3
)
let
email
=
userId
?
userId
:
0
+
'-'
+
totpEncrypt
.
slice
(
0
,
3
)
let
uri
=
'otpauth://totp/'
+
email
+
'?secret='
+
totpEncrypt
+
'&issuer=team888'
;
return
{
uri
:
uri
,
totpEncrypt
:
totpEncrypt
};
}
...
...
src/functional/router/v1/index.ts
View file @
1a309e92
...
...
@@ -36,22 +36,26 @@ import * as appSpecialModelCtrl from "../../mvc/control/appSpecialModel.control"
import
*
as
appFeatureCtrl
from
"../../mvc/control/appFeature.control"
;
import
*
as
systemTriggerCtrl
from
"../../mvc/control/systemTrigger.control"
;
import
*
as
apikeyStrictCtrl
from
"../../mvc/control/apikeyStrict.control"
;
import
{
systemTrigger
}
from
"@madex/ex-ts-dao"
;
import
*
as
contractPairCtrl
from
"../../mvc/control/contractPair.control"
;
import
*
as
spotMarketMakerCtrl
from
"../../mvc/control/spotMarketMaker.control"
;
import
*
as
contractMarketMakerCtrl
from
"../../mvc/control/contractMarketMaker.control"
;
import
*
as
contractLimitTradeCtrl
from
"../../mvc/control/contractLimitTrade.control"
;
const
getFunc
=
{
'user/info'
:
userController
.
getUserInfo
,
};
const
postFunc
=
{
//
国际化
//
技术部-国际化管理
'i18n/info/list'
:
i18nCtrl
.
list
,
'i18n/info/add'
:
i18nCtrl
.
add
,
'i18n/info/update'
:
i18nCtrl
.
update
,
'i18n/info/del'
:
i18nCtrl
.
del
,
'i18n/info/log/list'
:
i18nLogCtrl
.
list
,
'i18n/info/log/revert'
:
i18nLogCtrl
.
revert
,
'spotPair/save'
:
spotPairCtrl
.
save
,
//金融部-交易管理-交易对配置
'spotPair/save'
:
spotPairCtrl
.
save
,
//新增
'spotPair/update'
:
spotPairCtrl
.
update
,
//修改
'spotPair/list'
:
spotPairCtrl
.
list
,
'spotPair/pushToCoreSystem'
:
spotPairCtrl
.
pushToCoreSystem
,
'spotPair/getAllSubmitSuccess'
:
spotPairCtrl
.
getAllSubmitSuccess
,
...
...
@@ -103,19 +107,19 @@ const postFunc = {
'user/bind/totp/confirm'
:
userOptCtrl
.
bindTotpConfirm
,
'user/auth/reset/totp'
:
userAuthConfigCtrl
.
resetTotp
,
//热门交易对搜索
//
运营部-
热门交易对搜索
'hot/pair/config/list'
:
hotPairConfigCtrl
.
list
,
'hot/pair/config/add'
:
hotPairConfigCtrl
.
add
,
'hot/pair/config/update'
:
hotPairConfigCtrl
.
update
,
'hot/pair/config/del'
:
hotPairConfigCtrl
.
del
,
//消息通知
//
运营部-
消息通知
'notice/list'
:
noticeCtrl
.
list
,
'notice/add'
:
noticeCtrl
.
add
,
'notice/update'
:
noticeCtrl
.
update
,
//
Madex
用户管理
//
客服部-
用户管理
'mUser/manage/userList'
:
mUserManageCtrl
.
userList
,
//Madex 用户管理 ->用户列表
'mUser/manage/oneUserDetail'
:
mUserManageCtrl
.
oneUserDetail
,
//Madex 用户管理 ->单个用户详情
'mUser/manage/updateUserEmail'
:
mUserManageCtrl
.
updateUserEmail
,
//Madex 用户管理 ->修改用户邮箱
...
...
@@ -134,14 +138,14 @@ const postFunc = {
'mUser/manage/order/history/list'
:
orderPendingAndHistoryCtrl
.
historyList
,
//Madex 用户管理 ->历史委托
'mUser/manage/order/detail/list'
:
orderPendingAndHistoryCtrl
.
detailList
,
//Madex 用户管理 ->成交记录
//资源位管理
//
运营部-
资源位管理
'link/useful/list'
:
usefulLinkCtrl
.
list
,
//链接记录列表
'link/useful/add'
:
usefulLinkCtrl
.
add
,
//添加链接记录
'link/useful/delete'
:
usefulLinkCtrl
.
del
,
//删除链接记录
'link/useful/update'
:
usefulLinkCtrl
.
update
,
//修改链接记录
'link/useful/detail'
:
usefulLinkCtrl
.
detail
,
//链接记录详情
//邮件订阅
//
运营部-其他管理-
邮件订阅
'mUser/subscribe/list'
:
mUserSubscribeCtrl
.
list
,
//订阅列表
'mUser/subscribe/delete'
:
mUserSubscribeCtrl
.
del
,
//删除订阅
'mUser/subscribe/count'
:
mUserSubscribeCtrl
.
count
,
//订阅统计
...
...
@@ -150,7 +154,7 @@ const postFunc = {
'mUser/subscribe/mail/detail'
:
mUserSubscribeCtrl
.
mailDetail
,
//发送详情
'mUser/subscribe/mail/send/group'
:
mUserSubscribeCtrl
.
maiSendGroup
,
//群发邮件
//普通用户手续费
//
运营部-费率管理-
普通用户手续费
'mUser/fee/setting/list'
:
commonUserFeeSettingCtrl
.
list
,
//普通用户手续费列表
'mUser/fee/setting/add'
:
commonUserFeeSettingCtrl
.
add
,
//新增普通用户手续费
'mUser/fee/setting/update'
:
commonUserFeeSettingCtrl
.
update
,
//修改普通用户手续费
...
...
@@ -186,6 +190,23 @@ const postFunc = {
'tech/other/apikey/strict/add'
:
apikeyStrictCtrl
.
add
,
'tech/other/apikey/strict/update'
:
apikeyStrictCtrl
.
update
,
'tech/other/apikey/strict/del'
:
apikeyStrictCtrl
.
del
,
//金融部-交易管理-合约代码配置
'finance/trade/contract/pair/set'
:
contractPairCtrl
.
set
,
'finance/trade/contract/pair/update'
:
contractPairCtrl
.
update
,
'finance/trade/contract/pair/query'
:
contractPairCtrl
.
query
,
//金融部-其他管理-现货做市参数配置
'fiance/other/spot/market/maker/set'
:
spotMarketMakerCtrl
.
set
,
'fiance/other/spot/market/maker/list'
:
spotMarketMakerCtrl
.
list
,
'fiance/other/spot/market/maker/param/get'
:
spotMarketMakerCtrl
.
paramGet
,
'fiance/other/spot/market/maker/param/set'
:
spotMarketMakerCtrl
.
paramSet
,
//金融部-其他管理-合约做市参数配置
'fiance/other/contract/market/maker/set'
:
contractMarketMakerCtrl
.
set
,
'fiance/other/contract/market/maker/list'
:
contractMarketMakerCtrl
.
list
,
'fiance/other/contract/market/maker/param/get'
:
contractMarketMakerCtrl
.
paramGet
,
'fiance/other/contract/market/maker/param/set'
:
contractMarketMakerCtrl
.
paramSet
,
//金融部-其他管理-合约限制交易配置
'fiance/other/contract/limit/trade/set'
:
contractLimitTradeCtrl
.
set
,
'fiance/other/contract/limit/trade/list'
:
contractLimitTradeCtrl
.
list
,
};
// TODO 这里先和 nodejs 的注册路由方式保持一样,后面在调整。
...
...
src/setting/access-limit.ts
View file @
1a309e92
...
...
@@ -8,22 +8,23 @@ const {
let
cmdWhiteList
=
{
//
国际化
//
技术部-国际化管理
'i18n/info/list'
:
1
,
'i18n/info/add'
:
1
,
'i18n/info/update'
:
1
,
'i18n/info/del'
:
1
,
'i18n/info/log/list'
:
1
,
'i18n/info/log/revert'
:
1
,
'spotPair/add'
:
1
,
//金融部-交易管理-交易对配置
'spotPair/save'
:
1
,
'spotPair/update'
:
1
,
'spotPair/list'
:
1
,
'spotPair/
spotPairCtl
'
:
1
,
'spotPair/
pushToCoreSystem
'
:
1
,
'spotPair/getAllSubmitSuccess'
:
1
,
'coinType/
add
'
:
1
,
'coinType/
save
'
:
1
,
'coinType/list'
:
1
,
'coinType/
spotPairCtl
'
:
1
,
'coinType/
pushToCoreSystem
'
:
1
,
//权限管理 - 我的权限
'user/getInfo'
:
1
,
...
...
@@ -66,16 +67,16 @@ let cmdWhiteList = {
'user/bind/totp/confirm'
:
1
,
'user/auth/reset/totp'
:
1
,
//热门交易对搜索
//
运营部-
热门交易对搜索
'hot/pair/config/list'
:
1
,
'hot/pair/config/add'
:
1
,
'hot/pair/config/update'
:
1
,
'hot/pair/config/del'
:
1
,
//消息通知
//
运营部-
消息通知
'notice/list'
:
1
,
'notice/add'
:
1
,
'notice/update'
:
1
,
//
Madex
用户管理
//
客服部-
用户管理
'mUser/manage/userList'
:
1
,
'mUser/manage/oneUserDetail'
:
1
,
'mUser/manage/updateUserEmail'
:
1
,
...
...
@@ -93,13 +94,13 @@ let cmdWhiteList = {
'mUser/manage/order/pending/list'
:
1
,
'mUser/manage/order/history/list'
:
1
,
'mUser/manage/order/detail/list'
:
1
,
//资源位管理
//
运营部-
资源位管理
'link/useful/list'
:
1
,
'link/useful/add'
:
1
,
'link/useful/delete'
:
1
,
'link/useful/update'
:
1
,
'link/useful/detail'
:
1
,
//邮件订阅
//
运营部-其他管理-
邮件订阅
'mUser/subscribe/list'
:
1
,
'mUser/subscribe/delete'
:
1
,
'mUser/subscribe/count'
:
1
,
...
...
@@ -107,7 +108,7 @@ let cmdWhiteList = {
'mUser/subscribe/mail/send'
:
1
,
'mUser/subscribe/mail/detail'
:
1
,
'mUser/subscribe/mail/send/group'
:
1
,
//普通用户手续费
//
运营部-费率管理-
普通用户手续费
'mUser/fee/setting/list'
:
1
,
'mUser/fee/setting/add'
:
1
,
'mUser/fee/setting/update'
:
1
,
...
...
@@ -142,6 +143,23 @@ let cmdWhiteList = {
'tech/other/apikey/strict/add'
:
1
,
'tech/other/apikey/strict/update'
:
1
,
'tech/other/apikey/strict/del'
:
1
,
//金融部-交易管理-合约代码配置
'finance/trade/contract/pair/set'
:
1
,
'finance/trade/contract/pair/update'
:
1
,
'finance/trade/contract/pair/query'
:
1
,
//金融部-其他管理-现货做市参数配置
'fiance/other/spot/market/maker/set'
:
1
,
'fiance/other/spot/market/maker/list'
:
1
,
'fiance/other/spot/market/maker/param/get'
:
1
,
'fiance/other/spot/market/maker/param/set'
:
1
,
//金融部-其他管理-合约做市参数配置
'fiance/other/contract/market/maker/set'
:
1
,
'fiance/other/contract/market/maker/list'
:
1
,
'fiance/other/contract/market/maker/param/get'
:
1
,
'fiance/other/contract/market/maker/param/set'
:
1
,
//金融部-其他管理-合约限制交易配置
'fiance/other/contract/limit/trade/set'
:
1
,
'fiance/other/contract/limit/trade/list'
:
1
,
};
...
...
src/setting/login-filter.ts
View file @
1a309e92
...
...
@@ -16,6 +16,9 @@ const ExcludeApi = {
"user/login/confirm"
:
1
,
"mUser/fee/vip/level/list"
:
1
,
"spotPair/getAllSubmitSuccess"
:
1
,
'acl/role/getAll'
:
1
,
'position/allList'
:
1
,
'department/allList'
:
1
,
};
//管理员需要强制绑定,该位置做特殊处理
const
AdminExcludeApi
=
{
...
...
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