Commit 6ffab4a8 authored by ml's avatar ml

Merge branch 'master' of ssh://gitlab.mytoken.org:10022/zhuangke/ts-api-demo

# Conflicts:
#	package-lock.json
parents 400b5854 83af69c5
'use strict';
const schedule = require('node-schedule');
let { logger, datetimeUtils } = require('@madex/ex-js-public');
import { spotPairs, ormDB, coinType } from "@madex/ex-ts-dao";
import { getPairFromCore, getCoinFromCore } from '../src/utils/coreSystemUtils'
let running = false;
/**
* 每五分钟检查一次
*/
let job = schedule.scheduleJob('*/15 * * * * ?', async function () {
logger.info('setting sync start');
if (!running) {
try {
await syncPair();
await syncCoin();
running = true;
logger.info("coinAndPair sync job finish");
} catch (e) {
logger.info(e)
}
running = false;
}
});
const syncPair = async () => {
let now = new Date();
let res = await spotPairs.prototype.findAll({
where: {
status:1,
updatedAt:{[ormDB.Op.lt]:new Date(now.getTime()-10*1000)} // 10秒之前的
},
raw: true
})
for (const pair of res) {
const { symbol, id } = pair;
let cfg = await getPairFromCore(symbol);
if (cfg) {
await spotPairs.prototype.update({
status: 2,
product_id: cfg.id,
price_scale: cfg["price-scale"],
price_increment: cfg["price-increment"],
quantity_scale: cfg["quantity-scale"],
quantity_increment: cfg["quantity-increment"],
}, {
where: { id, status: 1 }
});
logger.info(symbol, "sync config success")
}
}
}
const syncCoin = async () => {
let now = new Date();
let res = await coinType.prototype.findAll({
where: {
is_main:1,
main_status:1,
updatedAt:{[ormDB.Op.lt]:new Date(now.getTime()-10*1000)} // 10秒之前的
},
raw: true
})
for (const coin of res) {
const { general_name:symbol, id } = coin;
let cfg = await getCoinFromCore(symbol);
if (cfg) {
await coinType.prototype.update({
main_status: 2,
asset_id: cfg["id"],
}, {
where: { id, main_status: 1 }
});
logger.info(symbol, "sync config success")
}
}
}
// job.invoke();
// 计划任务 // 计划任务
require("./coinAndPairSetting.sync");
\ No newline at end of file
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
"express-swagger-generator": "^1.1.17", "express-swagger-generator": "^1.1.17",
"geoip-lite": "^1.4.7", "geoip-lite": "^1.4.7",
"glob": "10.3.10", "glob": "10.3.10",
"image-size": "1.0.2",
"isemail": "^3.2.0", "isemail": "^3.2.0",
"jsonwebtoken": "^7.4.3", "jsonwebtoken": "^7.4.3",
"lodash": "^4.17.21", "lodash": "^4.17.21",
...@@ -106,9 +105,9 @@ ...@@ -106,9 +105,9 @@
} }
}, },
"node_modules/@babel/compat-data": { "node_modules/@babel/compat-data": {
"version": "7.25.4", "version": "7.25.2",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@babel/compat-data/-/compat-data-7.25.4.tgz", "resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@babel/compat-data/-/compat-data-7.25.2.tgz",
"integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
...@@ -164,13 +163,13 @@ ...@@ -164,13 +163,13 @@
} }
}, },
"node_modules/@babel/generator": { "node_modules/@babel/generator": {
"version": "7.25.5", "version": "7.25.0",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@babel/generator/-/generator-7.25.5.tgz", "resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@babel/generator/-/generator-7.25.0.tgz",
"integrity": "sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==", "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@babel/types": "^7.25.4", "@babel/types": "^7.25.0",
"@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25", "@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^2.5.1" "jsesc": "^2.5.1"
...@@ -392,13 +391,13 @@ ...@@ -392,13 +391,13 @@
} }
}, },
"node_modules/@babel/parser": { "node_modules/@babel/parser": {
"version": "7.25.4", "version": "7.25.3",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@babel/parser/-/parser-7.25.4.tgz", "resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@babel/parser/-/parser-7.25.3.tgz",
"integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==", "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@babel/types": "^7.25.4" "@babel/types": "^7.25.2"
}, },
"bin": { "bin": {
"parser": "bin/babel-parser.js" "parser": "bin/babel-parser.js"
...@@ -423,17 +422,17 @@ ...@@ -423,17 +422,17 @@
} }
}, },
"node_modules/@babel/traverse": { "node_modules/@babel/traverse": {
"version": "7.25.4", "version": "7.25.3",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@babel/traverse/-/traverse-7.25.4.tgz", "resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@babel/traverse/-/traverse-7.25.3.tgz",
"integrity": "sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==", "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@babel/code-frame": "^7.24.7", "@babel/code-frame": "^7.24.7",
"@babel/generator": "^7.25.4", "@babel/generator": "^7.25.0",
"@babel/parser": "^7.25.4", "@babel/parser": "^7.25.3",
"@babel/template": "^7.25.0", "@babel/template": "^7.25.0",
"@babel/types": "^7.25.4", "@babel/types": "^7.25.2",
"debug": "^4.3.1", "debug": "^4.3.1",
"globals": "^11.1.0" "globals": "^11.1.0"
}, },
...@@ -452,9 +451,9 @@ ...@@ -452,9 +451,9 @@
} }
}, },
"node_modules/@babel/types": { "node_modules/@babel/types": {
"version": "7.25.4", "version": "7.25.2",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@babel/types/-/types-7.25.4.tgz", "resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@babel/types/-/types-7.25.2.tgz",
"integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==", "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
...@@ -875,7 +874,7 @@ ...@@ -875,7 +874,7 @@
}, },
"node_modules/@madex/ex-js-common": { "node_modules/@madex/ex-js-common": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "git+ssh://git@bitbucket.org/biiigle/ex-js-common.git#a074015198403c5598adea7e0fd4380936a5aa2b", "resolved": "git+ssh://git@bitbucket.org/biiigle/ex-js-common.git#6aa1d7d9264b2a13e13fe6c79d33223205b9cc40",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@madex/ex-js-dao": "git+ssh://git@bitbucket.org/biiigle/ex-js-dao.git#master", "@madex/ex-js-dao": "git+ssh://git@bitbucket.org/biiigle/ex-js-dao.git#master",
...@@ -1069,9 +1068,9 @@ ...@@ -1069,9 +1068,9 @@
} }
}, },
"node_modules/@madex/ex-ts-dao": { "node_modules/@madex/ex-ts-dao": {
"version": "0.0.19", "version": "0.0.17",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@madex/ex-ts-dao/-/@madex/ex-ts-dao-0.0.19.tgz", "resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@madex/ex-ts-dao/-/@madex/ex-ts-dao-0.0.17.tgz",
"integrity": "sha512-53kKxSQOXwHmf2XLooD6xU+EiD9N1wYym5B4De0CQP5NW+pu63DaDsBzQb9IC7cZ9UzYPXUDtYWlv6u10MTgug==", "integrity": "sha512-TDR4FNGVSAv4FLqJQJZ+D8ZeJmBacQIF7AYVECutsL4PWE5LBRP3xylvuL1EB6DRdbDRt/L42k7bdChWn1TN0A==",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@madex/ex-js-public": "git+ssh://git@bitbucket.org/biiigle/ex-js-public.git#master", "@madex/ex-js-public": "git+ssh://git@bitbucket.org/biiigle/ex-js-public.git#master",
...@@ -1697,9 +1696,9 @@ ...@@ -1697,9 +1696,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@types/validator": { "node_modules/@types/validator": {
"version": "13.12.1", "version": "13.12.0",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@types/validator/-/validator-13.12.1.tgz", "resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@types/validator/-/validator-13.12.0.tgz",
"integrity": "sha512-w0URwf7BQb0rD/EuiG12KP0bailHKHP5YVviJG9zw3ykAokL0TuxU2TUqMB7EwZ59bDHYdeTIvjI5m0S7qHfOA==", "integrity": "sha512-nH45Lk7oPIJ1RVOF6JgFI6Dy0QpHEzq4QecZhvguxYPDwT8c93prCMqAtiIttm39voZ+DDR+qkNnMpJmMBRqag==",
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
...@@ -3322,9 +3321,9 @@ ...@@ -3322,9 +3321,9 @@
} }
}, },
"node_modules/caniuse-lite": { "node_modules/caniuse-lite": {
"version": "1.0.30001653", "version": "1.0.30001651",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz", "resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz",
"integrity": "sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==", "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
...@@ -5016,9 +5015,9 @@ ...@@ -5016,9 +5015,9 @@
} }
}, },
"node_modules/eslint-module-utils": { "node_modules/eslint-module-utils": {
"version": "2.8.2", "version": "2.8.1",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/eslint-module-utils/-/eslint-module-utils-2.8.2.tgz", "resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz",
"integrity": "sha512-3XnC5fDyc8M4J2E8pt8pmSVRX2M+5yWMCfI/kDZwauQeFgzQOuhcRBFKjTeJagqgk4sFKxe1mvNVnaWwImx/Tg==", "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
...@@ -6976,21 +6975,6 @@ ...@@ -6976,21 +6975,6 @@
"node": ">= 4" "node": ">= 4"
} }
}, },
"node_modules/image-size": {
"version": "1.0.2",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/image-size/-/image-size-1.0.2.tgz",
"integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==",
"license": "MIT",
"dependencies": {
"queue": "6.0.2"
},
"bin": {
"image-size": "bin/image-size.js"
},
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/imageinfo": { "node_modules/imageinfo": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/imageinfo/-/imageinfo-1.0.4.tgz", "resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/imageinfo/-/imageinfo-1.0.4.tgz",
...@@ -9464,9 +9448,9 @@ ...@@ -9464,9 +9448,9 @@
} }
}, },
"node_modules/micromatch": { "node_modules/micromatch": {
"version": "4.0.8", "version": "4.0.7",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/micromatch/-/micromatch-4.0.8.tgz", "resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/micromatch/-/micromatch-4.0.7.tgz",
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
...@@ -11485,15 +11469,6 @@ ...@@ -11485,15 +11469,6 @@
"license": "MIT", "license": "MIT",
"optional": true "optional": true
}, },
"node_modules/queue": {
"version": "6.0.2",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/queue/-/queue-6.0.2.tgz",
"integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
"license": "MIT",
"dependencies": {
"inherits": "~2.0.3"
}
},
"node_modules/queue-microtask": { "node_modules/queue-microtask": {
"version": "1.2.3", "version": "1.2.3",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/queue-microtask/-/queue-microtask-1.2.3.tgz", "resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/queue-microtask/-/queue-microtask-1.2.3.tgz",
...@@ -13798,9 +13773,9 @@ ...@@ -13798,9 +13773,9 @@
} }
}, },
"node_modules/tslib": { "node_modules/tslib": {
"version": "2.7.0", "version": "2.6.3",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/tslib/-/tslib-2.7.0.tgz", "resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/tslib/-/tslib-2.6.3.tgz",
"integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
"license": "0BSD" "license": "0BSD"
}, },
"node_modules/tsscmp": { "node_modules/tsscmp": {
......
import * as service from "../service/coinType.service"; import * as service from "../service/coinType.service";
import { AddParam, ListParam } from "../service/coinType.service"; import { AddParam, ListParam } from "../service/coinType.service";
let { logger, ResponseUtils, optionalUtils: Optional, apiAssertUtils: ApiAssert } = require('@madex/ex-js-public'); let { logger, Res3Utils, optionalUtils: Optional, apiAssertUtils: ApiAssert } = require('@madex/ex-js-public');
export const list = async (req: any, param: ListParam) => { export const list = async (req: any, param: ListParam) => {
...@@ -11,16 +11,16 @@ export const list = async (req: any, param: ListParam) => { ...@@ -11,16 +11,16 @@ export const list = async (req: any, param: ListParam) => {
param.page = Optional.opt(param, 'page', 1); param.page = Optional.opt(param, 'page', 1);
param.size = Optional.opt(param, 'size', 50); param.size = Optional.opt(param, 'size', 50);
let res = await service.list(param); let res = await service.list(param);
return ResponseUtils.success(cmd, res); return Res3Utils.result(res);
} }
catch (e) { catch (e) {
logger.error(`${func_name} error:${e}`); logger.error(`${func_name} error:${e}`);
return ResponseUtils.error(func_name, cmd, e); return Res3Utils.getErrorResult(e);
} }
}; };
export const add = async (req: any, param: AddParam) => { export const save = async (req: any, param: AddParam) => {
let func_name = "coinTypeCtl.add"; let func_name = "coinTypeCtl.save";
let cmd = req.path; let cmd = req.path;
try { try {
ApiAssert.notNull('3000', param.symbol); ApiAssert.notNull('3000', param.symbol);
...@@ -33,11 +33,26 @@ export const add = async (req: any, param: AddParam) => { ...@@ -33,11 +33,26 @@ export const add = async (req: any, param: AddParam) => {
ApiAssert.isInt('3000', param.deposit_confirm_count); ApiAssert.isInt('3000', param.deposit_confirm_count);
ApiAssert.isInt('3000', param.safe_confirm_count); ApiAssert.isInt('3000', param.safe_confirm_count);
let res = await service.add(param); let res = await service.save(param);
return ResponseUtils.success(cmd, res); return Res3Utils.result(res);
} }
catch (e) { catch (e) {
logger.error(`${func_name} error:${e}`); logger.error(`${func_name} error:${e}`);
return ResponseUtils.error(func_name, cmd, e); return Res3Utils.getErrorResult(e);
}
};
export const pushToCoreSystem = async (req: any, id: any) => {
let func_name = "coinTypeCtl.pushToCoreSystem";
let cmd = req.path;
try {
ApiAssert.notNull('3000', id);
let res = await service.pushToCoreSystem(id);
return Res3Utils.result(res);
}
catch (e) {
logger.error(`${func_name} error:${e}`);
return Res3Utils.getErrorResult(e);
} }
}; };
import * as service from "../service/spotPair.service"; import * as service from "../service/spotPair.service";
import { AddParam, ListParam } from "../service/spotPair.service"; import { AddParam, ListParam } from "../service/spotPair.service";
let { logger, ResponseUtils, optionalUtils: Optional, apiAssertUtils: ApiAssert } = require('@madex/ex-js-public'); let { logger, Res3Utils, optionalUtils: Optional, apiAssertUtils: ApiAssert } = require('@madex/ex-js-public');
export const list = async (req: any, param: ListParam) => { export const list = async (req: any, param: ListParam) => {
...@@ -11,16 +11,16 @@ export const list = async (req: any, param: ListParam) => { ...@@ -11,16 +11,16 @@ export const list = async (req: any, param: ListParam) => {
param.page = Optional.opt(param, 'page', 1); param.page = Optional.opt(param, 'page', 1);
param.size = Optional.opt(param, 'size', 50); param.size = Optional.opt(param, 'size', 50);
let res = await service.list(param); let res = await service.list(param);
return ResponseUtils.success(cmd, res); return Res3Utils.result(res);
} }
catch (e) { catch (e) {
logger.error(`${func_name} error:${e}`); logger.error(`${func_name} error:${e}`);
return ResponseUtils.error(func_name, cmd, e); return Res3Utils.getErrorResult(e);
} }
}; };
export const add = async (req: any, param: AddParam) => { export const save = async (req: any, param: AddParam) => {
let func_name = "spotPairCtl.add"; let func_name = "spotPairCtl.save";
let cmd = req.path; let cmd = req.path;
try { try {
ApiAssert.notNull('3000', param.base); ApiAssert.notNull('3000', param.base);
...@@ -31,11 +31,26 @@ export const add = async (req: any, param: AddParam) => { ...@@ -31,11 +31,26 @@ export const add = async (req: any, param: AddParam) => {
ApiAssert.notNull('3000', param.quantity_scale); ApiAssert.notNull('3000', param.quantity_scale);
ApiAssert.notNull('3000', param.maker_fee); ApiAssert.notNull('3000', param.maker_fee);
ApiAssert.notNull('3000', param.taker_fee); ApiAssert.notNull('3000', param.taker_fee);
let res = await service.add(param); let res = await service.save(param);
return ResponseUtils.success(cmd, res); return Res3Utils.result(res);
} }
catch (e) { catch (e) {
logger.error(`${func_name} error:${e}`); logger.error(`${func_name} error:${e}`);
return ResponseUtils.error(func_name, cmd, e); return Res3Utils.getErrorResult(e);
}
};
export const pushToCoreSystem = async (req: any, id: any) => {
let func_name = "spotPairCtl.pushToCoreSystem";
let cmd = req.path;
try {
ApiAssert.notNull('3000', id);
let res = await service.pushToCoreSystem(id);
return Res3Utils.result(res);
}
catch (e) {
logger.error(`${func_name} error:${e}`);
return Res3Utils.getErrorResult(e);
} }
}; };
// @madex/ex-ts-dao 是 ts 的 dao, 代码在 bitbucket/ex-js-dao 的 ts 分支上 // @madex/ex-ts-dao 是 ts 的 dao, 代码在 bitbucket/ex-js-dao 的 ts 分支上
import { coinType, ormDB } from "@madex/ex-ts-dao"; import { coinType, ormDB, spotPairs } from "@madex/ex-ts-dao";
import { addCoin2Core, addPairToCore } from "../../../utils/coreSystemUtils";
export interface ListParam { export interface ListParam {
...@@ -11,6 +12,8 @@ export interface ListParam { ...@@ -11,6 +12,8 @@ export interface ListParam {
} }
export interface AddParam { export interface AddParam {
id: any,
symbol: string; symbol: string;
is_active: number; is_active: number;
...@@ -60,29 +63,29 @@ export interface AddParam { ...@@ -60,29 +63,29 @@ export interface AddParam {
total_amount?: number; total_amount?: number;
supply_amount?: number ; supply_amount?: number;
circulation_rate?: number ; circulation_rate?: number;
address_num?: number; address_num?: number;
price?: string ; price?: string;
supply_time?:string ; supply_time?: string;
deflation_rate?:number ; deflation_rate?: number;
comment?: string ; comment?: string;
max_transfer_amount?: number ; max_transfer_amount?: number;
tag: string; tag: string;
forbid_info_related?: number ; forbid_info_related?: number;
is_hidden?: number ; is_hidden?: number;
main_status?: number ; main_status?: number;
} }
...@@ -101,8 +104,39 @@ export async function list(param: ListParam) { ...@@ -101,8 +104,39 @@ export async function list(param: ListParam) {
return resList; return resList;
} }
export const add = async (param: AddParam) => { export const save = async (param: AddParam) => {
let id = param.id;
if (id) {
delete param.id
await coinType.prototype.update(param, {
where: { id: id }
})
}
else {
await coinType.prototype.create(param); await coinType.prototype.create(param);
}
return 'ok'; return 'ok';
}; };
export const pushToCoreSystem = async (id: any) => {
let where = { id: id, main_status: 0, is_main: 1 };
let cfg = await coinType.prototype.find({
where: where, raw: true
});
if (cfg) {
let symbol = cfg.general_name;
let optResult = await addCoin2Core(symbol);
if (optResult) {
await coinType.prototype.update({ main_status: 1 }, {
where: where
})
}
}
return 'ok';
};
// @madex/ex-ts-dao 是 ts 的 dao, 代码在 bitbucket/ex-js-dao 的 ts 分支上 // @madex/ex-ts-dao 是 ts 的 dao, 代码在 bitbucket/ex-js-dao 的 ts 分支上
import { spotPairs, ormDB } from "@madex/ex-ts-dao"; import { spotPairs, ormDB, coinType } from "@madex/ex-ts-dao";
import { NUMBER } from "sequelize"; import { NUMBER } from "sequelize";
import { addPairToCore } from "../../../utils/coreSystemUtils";
export interface ListParam { export interface ListParam {
symbol: string | any; symbol: string | any;
page: number; page: number;
size: number; size: number;
} }
export interface AddParam { export interface AddParam {
base:string; id: any;
quote:string;
symbol:string; base: string;
name:string;
price_scale:number; quote: string;
quantity_scale:number;
maker_fee:string; symbol: string;
name: string;
price_scale: number;
quantity_scale: number;
maker_fee: string;
taker_fee: string; taker_fee: string;
} }
...@@ -24,7 +36,7 @@ export interface AddParam { ...@@ -24,7 +36,7 @@ export interface AddParam {
export async function list(param: ListParam) { export async function list(param: ListParam) {
let where = {}; let where = {};
if (param.symbol) { if (param.symbol) {
where["symbol"]= { [ormDB.Op.like]: `%${param.symbol}%` }; where["symbol"] = { [ormDB.Op.like]: `%${param.symbol}%` };
} }
let resList = await spotPairs.prototype.findAndCount({ let resList = await spotPairs.prototype.findAndCount({
where: where, where: where,
...@@ -36,8 +48,44 @@ export async function list(param: ListParam) { ...@@ -36,8 +48,44 @@ export async function list(param: ListParam) {
return resList; return resList;
} }
export const add = async (param: AddParam) => { export const save = async (param: AddParam) => {
let id = param.id;
if (id) {
delete param.id
await spotPairs.prototype.update(param, {
where: { id: id }
})
}
else {
await spotPairs.prototype.create(param); await spotPairs.prototype.create(param);
}
return 'ok';
};
export const pushToCoreSystem = async (id: any) => {
let where = { id: id, status: 0 };
let cfg = await spotPairs.prototype.find({
where: where, raw: true
});
if (cfg) {
let symbol = cfg.symbol;
let sps = symbol.split("_");
let base = sps[0];
let quote = sps[1]
let param = {
"base": base, "quote": quote, "symbol": symbol, "name": symbol,
"price-scale": cfg.price_scale, "quantity-scale": cfg.quantity_scale,
"maker-fee": cfg.maker_fee, "taker-fee": cfg.taker_fee
}
let optResult = await addPairToCore(param);
if (optResult) {
await spotPairs.prototype.update({ status: 1 }, {
where: where
});
}
}
return 'ok'; return 'ok';
}; };
...@@ -36,10 +36,13 @@ const postFunc = { ...@@ -36,10 +36,13 @@ const postFunc = {
'i18n/info/log/list': i18nLogCtrl.list, 'i18n/info/log/list': i18nLogCtrl.list,
'i18n/info/log/revert': i18nLogCtrl.revert, 'i18n/info/log/revert': i18nLogCtrl.revert,
'spotpair/add': spotPairCtrl.add, 'spotPair/add': spotPairCtrl.save,
'spotpair/list': spotPairCtrl.list, 'spotPair/list': spotPairCtrl.list,
'coinType/add': coinTypeCtrl.add, 'spotPair/spotPairCtl': spotPairCtrl.pushToCoreSystem,
'coinType/add': coinTypeCtrl.save,
'coinType/list': coinTypeCtrl.list, 'coinType/list': coinTypeCtrl.list,
'coinType/spotPairCtl': coinTypeCtrl.pushToCoreSystem,
//权限管理 //权限管理
'acl/user/add': aclUserCtrl.add, 'acl/user/add': aclUserCtrl.add,
......
const axios = require("axios");
import configSetting from "./../../config"
const webadmin_endpoint = configSetting.webadmin_endpoint
let { logger } = require('@madex/ex-js-public');
// { id: 1, symbol: 'BTC' }
export const getCoinFromCore = async(symbol)=> {
const url = `${webadmin_endpoint}/asset/by_symbol?symbol=${symbol}`
let { data } = await axios.get(url);
if (data.error) {
logger.error("getCoinFromCore",data);
return null
}
return data[0];
}
// {
// "id": 1,
// "symbol": 'BTC_USDT',
// 'price-scale': 4,
// 'price-increment': 1,
// 'quantity-scale': 2,
// 'quantity-increment': '0'
// }
export const getPairFromCore = async(symbol,market="spot")=> {
const url = `${webadmin_endpoint}/pair/by_symbol?symbol=${symbol}&market=${market}`
let { data } = await axios.get(url);
if (data.error) {
logger.error("getPairFromCore",data);
return null
}
return data[0]
}
export const addCoin2Core = async(symbol)=> {
const url = `${webadmin_endpoint}/asset/add`
let body = {
"symbol":symbol,
}
let { data } = await axios.post(url,body);
if (data.error) {
logger.error(data);
return false;
}
return true;
}
export const addPairToCore = async(body)=> {
const url = `${webadmin_endpoint}/pair/add_product`
let { data } = await axios.post(url,body);
if (data.error) {
logger.error(data);
return false;
}
return true;
}
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