Commit 1b7af35b authored by ml's avatar ml

增加接口、逻辑调整

parent b80e1120
......@@ -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',//添加交易对提交到撮合失败
}
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);
}
};
......@@ -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) => {
......
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';
}
// @madex/ex-ts-dao 是 ts 的 dao, 代码在 bitbucket/ex-js-dao 的 ts 分支上
import { spotPairs, ormDB, coinType } from "@madex/ex-ts-dao";
import { spotPairs, madSpotOrmDB, 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';
};
......
......@@ -36,22 +36,23 @@ 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";
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 +104,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 +135,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 +151,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 +187,10 @@ 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
};
// TODO 这里先和 nodejs 的注册路由方式保持一样,后面在调整。
......
......@@ -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,10 @@ 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,
};
......
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