Commit e55f4298 authored by ml's avatar ml

增加交易区相关接口、部分接口调整

parent d41ae882
import * as exBusinessAreaService from "../service/exBusinessArea.service";
import { BusinessAreaVO, BusinessAreaPageVO, AreaRouterVO } from "../service/exBusinessArea.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: BusinessAreaPageVO) => {
let func_name = "exBusinessArea.control.list";
try {
let res = await exBusinessAreaService.list(pageVO);
return Res3Utils.result(res);
}
catch (e) {
logger.error(`${func_name} error:${e}`);
return Res3Utils.getErrorResult(e);
}
};
/**
* 运营部-其他管理-添加交易区设置
* @param req
* @param authConfigVO
*/
export const add = async (req: any, businessAreaVO: BusinessAreaVO) => {
let func_name = "exBusinessArea.control.add";
try {
let ip = isIp(req.ip) ? req.ip : '*.*.*.*';
let currentUserId = await getCurrentUserId(req.cookies.session_id);
await paramValid(businessAreaVO);
let res = await exBusinessAreaService.add(businessAreaVO, 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, businessAreaVO: BusinessAreaVO) => {
let func_name = "exBusinessArea.control.update";
try {
let ip = isIp(req.ip) ? req.ip : '*.*.*.*';
let currentUserId = await getCurrentUserId(req.cookies.session_id);
if (!businessAreaVO.id) {
throw ErrorCode.PARAM_MISS
}
await paramValid(businessAreaVO);
let res = await exBusinessAreaService.update(businessAreaVO, currentUserId, ip);
return Res3Utils.result(res);
}
catch (e) {
logger.error(`${func_name} error:${e}`);
return Res3Utils.getErrorResult(e);
}
};
/**
* 运营部-其他管理-添加交易区设置删除
* @param req
* @param authConfigVO
*/
export const del = async (req: any, businessAreaVO: BusinessAreaVO) => {
let func_name = "exBusinessArea.control.del";
try {
let ip = isIp(req.ip) ? req.ip : '*.*.*.*';
let currentUserId = await getCurrentUserId(req.cookies.session_id);
if (!businessAreaVO.id) {
throw ErrorCode.PARAM_MISS
}
let res = await exBusinessAreaService.del(businessAreaVO.id, currentUserId, ip);
return Res3Utils.result(res);
}
catch (e) {
logger.error(`${func_name} error:${e}`);
return Res3Utils.getErrorResult(e);
}
};
/**
* 运营部-其他管理-交易区设置树状结构
* @param req
* @param infoVO
*/
export const getTree = async (req: any, pageVO: BusinessAreaPageVO) => {
let func_name = "exBusinessArea.control.getTree";
try {
let res = await exBusinessAreaService.getTree();
return Res3Utils.result(res);
}
catch (e) {
logger.error(`${func_name} error:${e}`);
return Res3Utils.getErrorResult(e);
}
};
/**
* 运营部-其他管理-币种所属交易区设置列表
* @param req
* @param infoVO
*/
export const routerList = async (req: any, pageVO: BusinessAreaPageVO) => {
let func_name = "exBusinessArea.control.routerList";
try {
pageVO.page = Optional.opt(pageVO, 'page', 1);
pageVO.size = Optional.opt(pageVO, 'size', 20);
let res = await exBusinessAreaService.routerList(pageVO);
return Res3Utils.result(res);
}
catch (e) {
logger.error(`${func_name} error:${e}`);
return Res3Utils.getErrorResult(e);
}
};
/**
* 运营部-其他管理-币种所属交易区设置添加
* @param req
* @param authConfigVO
*/
export const routerAdd = async (req: any, areaRouterVO: AreaRouterVO) => {
let func_name = "exBusinessArea.control.routerAdd";
try {
let ip = isIp(req.ip) ? req.ip : '*.*.*.*';
let currentUserId = await getCurrentUserId(req.cookies.session_id);
await routerParamValid(areaRouterVO);
let res = await exBusinessAreaService.routerAdd(areaRouterVO, currentUserId, ip);
return Res3Utils.result(res);
}
catch (e) {
logger.error(`${func_name} error:${e}`);
return Res3Utils.getErrorResult(e);
}
};
/**
* 运营部-其他管理-币种所属交易区设置修改
* @param req
* @param authConfigVO
*/
export const routerUpdate = async (req: any, areaRouterVO: AreaRouterVO) => {
let func_name = "exBusinessArea.control.routerUpdate";
try {
let ip = isIp(req.ip) ? req.ip : '*.*.*.*';
let currentUserId = await getCurrentUserId(req.cookies.session_id);
if (!areaRouterVO.id) {
throw ErrorCode.PARAM_MISS
}
await routerParamValid(areaRouterVO);
let res = await exBusinessAreaService.routerUpdate(areaRouterVO, currentUserId, ip);
return Res3Utils.result(res);
}
catch (e) {
logger.error(`${func_name} error:${e}`);
return Res3Utils.getErrorResult(e);
}
};
/**
* 运营部-其他管理-币种所属交易区设置删除
* @param req
* @param authConfigVO
*/
export const routerDel = async (req: any, areaRouterVO: AreaRouterVO) => {
let func_name = "exBusinessArea.control.routerDel";
try {
let ip = isIp(req.ip) ? req.ip : '*.*.*.*';
let currentUserId = await getCurrentUserId(req.cookies.session_id);
if (!areaRouterVO.id) {
throw ErrorCode.PARAM_MISS
}
let res = await exBusinessAreaService.routerDel(areaRouterVO.id, currentUserId, ip);
return Res3Utils.result(res);
}
catch (e) {
logger.error(`${func_name} error:${e}`);
return Res3Utils.getErrorResult(e);
}
};
async function paramValid(businessAreaVO: BusinessAreaVO) {
let name = businessAreaVO.name;
let icon_url = businessAreaVO.icon_url;
if (!name || !icon_url) {
throw ErrorCode.PARAM_MISS
}
}
async function routerParamValid(areaRouterVO: AreaRouterVO) {
let pair = areaRouterVO.pair;
let area_id = areaRouterVO.area_id;
let weight = areaRouterVO.weight;
if (!pair || !area_id) {
throw ErrorCode.PARAM_MISS
}
if (!weight) {
areaRouterVO.weight = 0
}
}
...@@ -316,22 +316,12 @@ async function getDpUserPageData(dIds: string, page: number, size: number, uids: ...@@ -316,22 +316,12 @@ async function getDpUserPageData(dIds: string, page: number, size: number, uids:
} }
async function getAclUserPageData(account: string, page: number, size: number) { async function getAclUserPageData(account: string, page: number, size: number) {
let where = {} let where = {
if (!isNaN(Number(account))) { [madAdminOrmDB.Op.or]: {
where = { phone: { [madAdminOrmDB.Op.like]: `${account}%` },
[madAdminOrmDB.Op.or]: { account: { [madAdminOrmDB.Op.like]: `${account}%` },
user_id: Number(account), email: { [madAdminOrmDB.Op.like]: `${account}%` },
account: { [madAdminOrmDB.Op.like]: `${account}%` }, remark: { [madAdminOrmDB.Op.like]: `${account}%` },
email: { [madAdminOrmDB.Op.like]: `${account}%` },
}
}
}
else {
where = {
[madAdminOrmDB.Op.or]: {
account: { [madAdminOrmDB.Op.like]: `${account}%` },
email: { [madAdminOrmDB.Op.like]: `${account}%` },
}
} }
} }
let resList = await aclUserInfo.prototype.findAndCount({ let resList = await aclUserInfo.prototype.findAndCount({
...@@ -386,22 +376,12 @@ async function getAllUserDepartmentPositionMap() { ...@@ -386,22 +376,12 @@ async function getAllUserDepartmentPositionMap() {
async function getAclUserData(account: string) { async function getAclUserData(account: string) {
let where: {}; let where = {
if (!isNaN(Number(account))) { [madAdminOrmDB.Op.or]: {
where = { phone: { [madAdminOrmDB.Op.like]: `${account}%` },
[madAdminOrmDB.Op.or]: { account: { [madAdminOrmDB.Op.like]: `${account}%` },
user_id: Number(account), email: { [madAdminOrmDB.Op.like]: `${account}%` },
account: { [madAdminOrmDB.Op.like]: `${account}%` }, remark: { [madAdminOrmDB.Op.like]: `${account}%` },
email: { [madAdminOrmDB.Op.like]: `${account}%` },
}
}
}
else {
where = {
[madAdminOrmDB.Op.or]: {
account: { [madAdminOrmDB.Op.like]: `${account}%` },
email: { [madAdminOrmDB.Op.like]: `${account}%` },
}
} }
} }
let resList = await aclUserInfo.prototype.findAll({ let resList = await aclUserInfo.prototype.findAll({
......
import { exBusinessAreaRouter, exBusinessArea, ormDB, 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');
export interface BusinessAreaVO {
id?: number;
is_active?: number;
symbol?: string;
name?: string;
level?: number;
father_area_id?: number;
weight?: number;
comment?: string;
path?: string;
icon_url?: string;
createdAt?: Date | any,
updatedAt?: Date | any,
}
export interface AreaRouterVO {
id?: number;
area_id?: string,
pair?: string;
weight?: number;
createdAt?: Date | any,
updatedAt?: Date | any,
}
export interface BusinessAreaPageVO extends BusinessAreaVO, AreaRouterVO {
page?: number,
size?: number,
}
export async function list(pageVO: BusinessAreaPageVO) {
let where = {};
if (pageVO.symbol) {
where['symbol'] = pageVO.symbol
}
if (pageVO.is_active || pageVO.is_active === 0) {
where['is_active'] = pageVO.is_active
}
if (pageVO.level) {
where['level'] = pageVO.level
}
if (pageVO.father_area_id) {
where['father_area_id'] = pageVO.father_area_id
}
let resList = await exBusinessArea.prototype.findAll({
order: [["id", "asc"]],
raw: true
});
return resList;
}
export async function add(businessAreaVO: BusinessAreaVO, currentUserId: any, ip: string | undefined) {
businessAreaVO.createdAt = new Date();
businessAreaVO.updatedAt = new Date();
await exBusinessArea.prototype.create(businessAreaVO);
//管理后台操作日志
addOptLog(currentUserId, 0, '新增交易区配置', ip, JSON.stringify(businessAreaVO), '交易区配置');
return 'success';
}
export async function update(businessAreaVO: BusinessAreaVO, currentUserId: any, ip: string | undefined) {
let exist = await exBusinessArea.prototype.findOne({
where: {
id: businessAreaVO.id
},
raw: true
});
if (!exist) {
throw ErrorCode.DATA_NOT_EXIST
}
businessAreaVO.updatedAt = new Date();
await exBusinessArea.prototype.update(businessAreaVO, {
where: {
id: Number(businessAreaVO.id)
}
})
//管理后台操作日志
addOptLog(currentUserId, 0, '修改交易区配置', ip, JSON.stringify(businessAreaVO), '交易区配置');
return 'success';
}
export async function del(id: number, currentUserId: any, ip: string | undefined) {
let exist = await exBusinessArea.prototype.findOne({
where: {
id: id
},
raw: true
});
if (!exist) {
throw ErrorCode.DATA_NOT_EXIST
}
await exBusinessArea.prototype.destroy({
where: {
id: id
}
})
//管理后台操作日志
addOptLog(currentUserId, 0, '删除交易区配置', ip, `id:${id}`, '交易区配置');
return 'success';
}
export async function getTree() {
let dbList = await exBusinessArea.prototype.findAll({
where: {
level: { [ormDB.Op.in]: [1, 2, 3] }
},
order: [["level", "asc"], ['father_area_id', 'asc'], ['weight', 'desc']],
raw: true
});
let m = {};
let treeList: any = [] // 需要返回给前端tree 数组
for (let item of dbList) {
m[item.id] = item;
let pid = item.father_area_id;
let level = item.level;
if (Number(level) === 1) {
treeList.push(item)
}
else {
let pAuth = m[pid];
if (!pAuth) {
logger.warn("上级交易区被删除或者不存在");
continue
}
if (!pAuth['childList']) {
pAuth['childList'] = [];
}
pAuth['childList'].push(item);
}
}
return treeList;
}
export async function routerList(pageVO: BusinessAreaPageVO) {
let where = {};
if (pageVO.area_id) {
where['area_id'] = pageVO.area_id
}
if (pageVO.pair) {
where['pair'] = pageVO.pair
}
let resList = await exBusinessAreaRouter.prototype.findAndCount({
where: where,
limit: pageVO.size,
offset: (Number(pageVO.page) - 1) * Number(pageVO.size),
order: [["area_id", "asc"]],
raw: true
});
return resList;
}
export async function routerAdd(areaRouterVO: AreaRouterVO, currentUserId: any, ip: string | undefined) {
let areaIdsStr = String(areaRouterVO.area_id);
let areaIdsArr = areaIdsStr.split(',');
let dbList = await exBusinessAreaRouter.prototype.findAll({
where: {
area_id: { [ormDB.Op.in]: areaIdsArr }
},
raw: true
});
let dbAreaIds = dbList.map(item => item.area_id);
let filterAreaIds = areaIdsArr.filter(item => !dbAreaIds.includes(item));
let insertList: any = [];
let now = new Date();
for (let areaId of filterAreaIds) {
let item = {
pair: areaRouterVO.pair,
area_id: areaId,
weight: areaRouterVO.weight,
createdAt: now,
updatedAt: now,
}
insertList.push(item);
}
await exBusinessAreaRouter.prototype.bulkCreate(insertList);
//管理后台操作日志
addOptLog(currentUserId, 0, '新增币种所属交易区配置', ip, JSON.stringify(areaRouterVO), '币种所属交易区配置');
return 'success';
}
export async function routerUpdate(areaRouterVO: AreaRouterVO, currentUserId: any, ip: string | undefined) {
let exist = await exBusinessAreaRouter.prototype.findOne({
where: {
id: areaRouterVO.id
},
raw: true
});
if (!exist) {
throw ErrorCode.DATA_NOT_EXIST
}
areaRouterVO.updatedAt = new Date();
await exBusinessAreaRouter.prototype.update(areaRouterVO, {
where: {
id: Number(areaRouterVO.id)
}
})
//管理后台操作日志
addOptLog(currentUserId, 0, '修改币种所属交易区配置', ip, JSON.stringify(areaRouterVO), '币种所属交易区配置');
return 'success';
}
export async function routerDel(id: number, currentUserId: any, ip: string | undefined) {
let exist = await exBusinessAreaRouter.prototype.findOne({
where: {
id: id
},
raw: true
});
if (!exist) {
throw ErrorCode.DATA_NOT_EXIST
}
await exBusinessAreaRouter.prototype.destroy({
where: {
id: id
}
})
//管理后台操作日志
addOptLog(currentUserId, 0, '删除币种所属交易区配置', ip, `id:${id}`, '币种所属交易区配置');
return 'success';
}
...@@ -46,6 +46,7 @@ import * as coinTypeApplyCtrl from "../../mvc/control/coinTypeApply.control"; ...@@ -46,6 +46,7 @@ import * as coinTypeApplyCtrl from "../../mvc/control/coinTypeApply.control";
import * as pairApplyCtrl from "../../mvc/control/pairApply.control"; import * as pairApplyCtrl from "../../mvc/control/pairApply.control";
import * as cronApplyCtrl from "../../mvc/control/cronApply.control"; import * as cronApplyCtrl from "../../mvc/control/cronApply.control";
import * as spotDataCtrl from "../../mvc/control/spotData.control"; import * as spotDataCtrl from "../../mvc/control/spotData.control";
import * as exBusinessAreaCtrl from "../../mvc/control/exBusinessArea.control";
const getFunc = { const getFunc = {
'user/info': userController.getUserInfo, 'user/info': userController.getUserInfo,
...@@ -264,12 +265,24 @@ const postFunc = { ...@@ -264,12 +265,24 @@ const postFunc = {
'tech/apply/new/cron/coin/add/withdraw': cronApplyCtrl.addWithdraw,//增加新币提现定时器 'tech/apply/new/cron/coin/add/withdraw': cronApplyCtrl.addWithdraw,//增加新币提现定时器
//运营部-现货-现货数据 //运营部-现货-现货数据
'operate/spot/data/increase/user/list': spotDataCtrl.increaseUserList, 'operate/spot/data/increase/user/list': spotDataCtrl.increaseUserList,
'operate/spot/data/trade/user/list':spotDataCtrl.tradeUserList,//TODO 'operate/spot/data/trade/user/list': spotDataCtrl.tradeUserList,//TODO
'operate/spot/data/active/user/list':spotDataCtrl.activeUserList, 'operate/spot/data/active/user/list': spotDataCtrl.activeUserList,
'operate/spot/data/user/deposit/list':spotDataCtrl.userDepositList, 'operate/spot/data/user/deposit/list': spotDataCtrl.userDepositList,
'operate/spot/data/user/withdraw/list':spotDataCtrl.userWithdrawList, 'operate/spot/data/user/withdraw/list': spotDataCtrl.userWithdrawList,
'operate/spot/data/user/depositAndWithdraw/list':spotDataCtrl.userDepositAndWithdrawList, 'operate/spot/data/user/depositAndWithdraw/list': spotDataCtrl.userDepositAndWithdrawList,
'operate/spot/data/user/gatherData':spotDataCtrl.gatherData, 'operate/spot/data/user/gatherData': spotDataCtrl.gatherData,
//运营部-其他管理-交易区设置
'operate/other/business/area/add': exBusinessAreaCtrl.add,
'operate/other/business/area/update': exBusinessAreaCtrl.update,
'operate/other/business/area/delete': exBusinessAreaCtrl.del,
'operate/other/business/area/list': exBusinessAreaCtrl.list,
'operate/other/business/area/getTree': exBusinessAreaCtrl.getTree,
//币种所属交易区设置
'operate/other/business/area/router/add': exBusinessAreaCtrl.routerAdd,
'operate/other/business/area/router/update': exBusinessAreaCtrl.routerUpdate,
'operate/other/business/area/router/delete': exBusinessAreaCtrl.routerDel,
'operate/other/business/area/router/list': exBusinessAreaCtrl.routerList,
}; };
// TODO 这里先和 nodejs 的注册路由方式保持一样,后面在调整。 // TODO 这里先和 nodejs 的注册路由方式保持一样,后面在调整。
......
...@@ -213,6 +213,17 @@ let cmdWhiteList = { ...@@ -213,6 +213,17 @@ let cmdWhiteList = {
'operate/spot/data/user/withdraw/list': 1, 'operate/spot/data/user/withdraw/list': 1,
'operate/spot/data/user/depositAndWithdraw/list': 1, 'operate/spot/data/user/depositAndWithdraw/list': 1,
'operate/spot/data/user/gatherData': 1, 'operate/spot/data/user/gatherData': 1,
//运营部-其他管理-交易区设置
'operate/other/business/area/add': 1,
'operate/other/business/area/update': 1,
'operate/other/business/area/delete': 1,
'operate/other/business/area/list': 1,
'operate/other/business/area/getTree': 1,
//币种所属交易区设置
'operate/other/business/area/router/add': 1,
'operate/other/business/area/router/update': 1,
'operate/other/business/area/router/delete': 1,
'operate/other/business/area/router/list': 1,
}; };
......
...@@ -20,6 +20,7 @@ const ExcludeApi = { ...@@ -20,6 +20,7 @@ const ExcludeApi = {
'acl/role/getAll': 1, 'acl/role/getAll': 1,
'position/allList': 1, 'position/allList': 1,
'department/allList': 1, 'department/allList': 1,
'operate/other/business/area/list': 1,
}; };
//管理员需要强制绑定,该位置做特殊处理 //管理员需要强制绑定,该位置做特殊处理
const AdminExcludeApi = { const AdminExcludeApi = {
......
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