Commit d2c4f160 authored by ml's avatar ml

费率、现货数据折线图

parent 0e5fee07
...@@ -10,10 +10,11 @@ import { ...@@ -10,10 +10,11 @@ import {
feeRateSpotLog, feeRateSpotLog,
feeRateContractLog, feeRateContractLog,
commonUserFeeSetting, commonUserFeeSetting,
feeRateBaseCoinContractLog, spotPairs, contractPairs feeRateBaseCoinContractLog, spotPairs, contractPairs,
userProductFee
} from "@madex/ex-ts-dao"; } from "@madex/ex-ts-dao";
import { FEE_RATE_LOG_STATUS } from "../../src/constant/feeRateLogConst"; import { FEE_RATE_LOG_STATUS } from "../../src/constant/feeRateLogConst";
import { changeTradingFee, getPairFromCore } from "../../src/utils/coreSystemUtils"; import { changeTradingFee, getPairFromCore, getUserAccountFromCore } from "../../src/utils/coreSystemUtils";
let BigNumber = require('bignumber.js'); let BigNumber = require('bignumber.js');
...@@ -113,10 +114,16 @@ let checkFeeRate = async function (fee_rate) { ...@@ -113,10 +114,16 @@ let checkFeeRate = async function (fee_rate) {
}; };
export const changeUserSpotFee = async function (user_id, symbol, fee_model, maker_fee, taker_fee, logId) { export const changeUserSpotFee = async function (user_id, symbol, fee_model, maker_fee, taker_fee, logId) {
let pair = symbol === 'all' ? '' : symbol;
let is_success = true; let is_success = true;
await checkFeeModel(fee_model); await checkFeeModel(fee_model);
let product_type = pair == 'all' ? 'spot' : 'single';
//生效的费率 与要设置的费率 比对做校验 现在分不开 现货 合约 先不校验 之后分开了 再校验
/* let feeExist = await cancelIfFeeExist(user_id, product_type, symbol, maker_fee, taker_fee);
if (feeExist) {
return is_success;
}*/
let asset = await mainUserAsset.prototype.findOne({ let asset = await mainUserAsset.prototype.findOne({
where: { where: {
user_id user_id
...@@ -134,28 +141,43 @@ export const changeUserSpotFee = async function (user_id, symbol, fee_model, mak ...@@ -134,28 +141,43 @@ export const changeUserSpotFee = async function (user_id, symbol, fee_model, mak
logger.warn(' task.fee.rate.log.model.changeUserSpotFee ', ` taker_fee fee_rate error ${taker_fee}`); logger.warn(' task.fee.rate.log.model.changeUserSpotFee ', ` taker_fee fee_rate error ${taker_fee}`);
throw '3000'; throw '3000';
} }
await checkPair(symbol, 1); if (pair) {
await checkPair(symbol, 1);
}
await checkUser(user_id); await checkUser(user_id);
await sleep(1000); await sleep(1000);
//请求撮合 修改费率 //请求撮合 修改费率
let res = await changeTradingFee(symbol, user_id, maker_fee, taker_fee);
let res = await changeTradingFee(pair, user_id, maker_fee, taker_fee);
return res.is_success; return res.is_success;
}; };
export const changeUserContractFee = async function (user_id, symbol, fee_model, maker_fee, taker_fee, logId) { export const changeUserContractFee = async function (user_id, symbol, fee_model, maker_fee, taker_fee, logId) {
let _func_name_ = 'task.fee.rate.log.model.changeUserContractFee'; let _func_name_ = 'task.fee.rate.log.model.changeUserContractFee';
let pair = symbol === 'all' ? '' : symbol;
let is_success = true; let is_success = true;
await checkPair(symbol, 2); let product_type = pair == 'all' ? 'lpc' : 'single';
let asset = await mainUserAsset.prototype.findOne({ //生效的费率 与要设置的费率 比对做校验 现在分不开 现货 合约 先不校验 之后分开了 再校验
where: { /*let feeExist = await cancelIfFeeExist(user_id, product_type, symbol, maker_fee, taker_fee);
user_id if (feeExist) {
}, return is_success;
raw: true }*/
}) if (pair) {
if (!asset) { await checkPair(symbol, 2);
}
//查询交易账户资产
let asset: any;
try {
asset = await getUserAccountFromCore(user_id);
}
catch (e) {
logger.error('changeUserContractFee.getUserAccountFromCore.error:' + e);
}
if (!asset || !asset.length) {
return is_success; return is_success;
} }
if (maker_fee < -0.0003) { // 最大返0.0003 if (maker_fee < -0.0003) { // 最大返0.0003
...@@ -172,7 +194,7 @@ export const changeUserContractFee = async function (user_id, symbol, fee_model, ...@@ -172,7 +194,7 @@ export const changeUserContractFee = async function (user_id, symbol, fee_model,
await sleep(1000); await sleep(1000);
//请求撮合 修改费率 //请求撮合 修改费率
let res = await changeTradingFee(symbol, user_id, maker_fee, taker_fee); let res = await changeTradingFee(pair, user_id, maker_fee, taker_fee);
return res.is_success; return res.is_success;
}; };
...@@ -194,3 +216,30 @@ async function getMainAccountUserId(user_id: number) { ...@@ -194,3 +216,30 @@ async function getMainAccountUserId(user_id: number) {
let father_id = dbSon ? dbSon.father_id : user_id; let father_id = dbSon ? dbSon.father_id : user_id;
return father_id; return father_id;
} }
async function cancelIfFeeExist(user_id, product_type, pair, maker_fee, taker_fee) {
let condition = {
user_id,
product: pair == 'all' ? '' : pair,
product_type
}
let dbFee = await userProductFee.prototype.findOne({
where: condition,
raw: true
});
if (dbFee && dbFee.maker_fee == maker_fee && dbFee.taker_fee == taker_fee) {
return true;
}
//现货默认费率
if (product_type == 'spot' && maker_fee == 0.001 && taker_fee == 0.002) {
return true;
}
//合约默认费率
if (product_type == 'lpc' && maker_fee == 0.0004 && taker_fee == 0.0006) {
return true;
}
return false;
}
...@@ -21,15 +21,7 @@ const oneMonth = oneDay * 30; ...@@ -21,15 +21,7 @@ const oneMonth = oneDay * 30;
let inJob = false; let inJob = false;
let limit = 3000; let limit = 3000;
/**
* 注意:
* fee_rate_spot_log
* fee_rate_contract_log
* fee_rate_base_coin_contract_log
* 相关表中不支持 all 或 ALL 交易对
* 管理后台配置用户费率的 all 交易对也是分多个交易对来处理的
* 即(common_user_fee_setting 中的 all 分多个交易对 设置到 fee_rate_log 表中)
*/
let setFeeRateJob = schedule.scheduleJob('*/30 * * * * *', function () { let setFeeRateJob = schedule.scheduleJob('*/30 * * * * *', function () {
if (inJob) { if (inJob) {
......
...@@ -23,15 +23,7 @@ const oneMonth = oneDay * 30; ...@@ -23,15 +23,7 @@ const oneMonth = oneDay * 30;
let inJob = false; let inJob = false;
let limit = 3000; let limit = 3000;
/**
* 注意:
* fee_rate_spot_log
* fee_rate_contract_log
* fee_rate_base_coin_contract_log
* 相关表中不支持 all 或 ALL 交易对
* 管理后台配置用户费率的 all 交易对也是分多个交易对来处理的
* 即(common_user_fee_setting 中的 all 分多个交易对 设置到 fee_rate_log 表中)
*/
let setFeeRateJob = schedule.scheduleJob('*/30 * * * * *', function () { let setFeeRateJob = schedule.scheduleJob('*/30 * * * * *', function () {
if (inJob) { if (inJob) {
......
...@@ -22,15 +22,7 @@ const oneMonth = oneDay * 30; ...@@ -22,15 +22,7 @@ const oneMonth = oneDay * 30;
let inJob = false; let inJob = false;
let limit = 3000; let limit = 3000;
/**
* 注意:
* fee_rate_spot_log
* fee_rate_contract_log
* fee_rate_base_coin_contract_log
* 相关表中不支持all 或 ALL 交易对
* 管理后台配置用户费率的 all 交易对也是分多个交易对来处理的
* 即(common_user_fee_setting 中的 all 分多个交易对 设置到 fee_rate_log 表中)
*/
let setFeeRateJob = schedule.scheduleJob('*/30 * * * * *', function () { let setFeeRateJob = schedule.scheduleJob('*/30 * * * * *', function () {
if (inJob) { if (inJob) {
...@@ -240,7 +232,7 @@ async function setExpiredDefault() { ...@@ -240,7 +232,7 @@ async function setExpiredDefault() {
raw: true, raw: true,
}); });
let defaultFeeObj = {}, max_maker_rate = 0.001, max_taker_rate = 0.002; // 2020.5.9 let defaultFeeObj = {}, max_maker_rate = 0.001, max_taker_rate = 0.002; // 2020.5.9
let activePairs: any = []; let activePairs: any = ['all'];
for (let i = 0; i < defaultPairFee.length; i++) { for (let i = 0; i < defaultPairFee.length; i++) {
let { symbol, maker_fee, taker_fee } = defaultPairFee[i]; let { symbol, maker_fee, taker_fee } = defaultPairFee[i];
......
...@@ -77,4 +77,5 @@ export const ErrorCode = { ...@@ -77,4 +77,5 @@ export const ErrorCode = {
FEE_EX_OR_DEL:'30073',//费率设置已过期或已删除,不可以修改 FEE_EX_OR_DEL:'30073',//费率设置已过期或已删除,不可以修改
PAIR_FORMAT_ERR:'30074',//交易对格式错误 PAIR_FORMAT_ERR:'30074',//交易对格式错误
PAIR_NOT_SUPPORT:'30075',//暂不支持此交易对 PAIR_NOT_SUPPORT:'30075',//暂不支持此交易对
FEE_TOO_LOW_OR_HIGH:'30076',//设置的费率过高/过低
} }
...@@ -140,6 +140,16 @@ async function addParamValid(commonUserFeeVO: CommonUserFeeVO) { ...@@ -140,6 +140,16 @@ async function addParamValid(commonUserFeeVO: CommonUserFeeVO) {
if (pair != 'all'){ if (pair != 'all'){
throw ErrorCode.PAIR_NOT_SUPPORT; throw ErrorCode.PAIR_NOT_SUPPORT;
} }
//校验费率范围
if (type == FEE_TYPE.FEE_TYPE_SPOT){
if (Number(makerFee) < 0.0002 || Number(takerFee) < 0.0005){
throw ErrorCode.FEE_TOO_LOW_OR_HIGH;
}
}else {
if (Number(makerFee) < -0.00015 || Number(takerFee) < 0.00035){
throw ErrorCode.FEE_TOO_LOW_OR_HIGH;
}
}
await checkMaker(commonUserFeeVO); await checkMaker(commonUserFeeVO);
await paramCheck(beginTime, expireTime, Number(type), userId); await paramCheck(beginTime, expireTime, Number(type), userId);
......
...@@ -108,7 +108,7 @@ export async function dealReturnData(resList: any) { ...@@ -108,7 +108,7 @@ export async function dealReturnData(resList: any) {
for (let item of resList.rows) { for (let item of resList.rows) {
let symbol = item.coin_symbol; let symbol = item.coin_symbol;
let amount = item.amount; let amount = item.amount;
let usdt = usdtTickerMap[symbol] ? usdtTickerMap[symbol] : await tickerUtils._rateCoin2USDT(symbol); let usdt = usdtTickerMap[symbol] ? usdtTickerMap[symbol] : await tickerUtils.rateCoin2USDT(symbol);
usdtTickerMap[symbol] = usdt; usdtTickerMap[symbol] = usdt;
item.equal_usdt = new BigNumber(usdt).mul(amount); item.equal_usdt = new BigNumber(usdt).mul(amount);
} }
......
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