Commit ecfe0997 authored by ml's avatar ml

金融部-做市资金监控

parent 69a5da57
......@@ -140,7 +140,7 @@ export const doExPairTrigger = async function (trigId: any, pair: string, action
});
}
else {
await contractPairs.prototype.update(target_value, {
await spotPairs.prototype.update(target_value, {
where: {
id: dbPair.id
},
......
import * as assetCheckService from "../../service/v2/assetCheck.service";
import { CommonParam, setPageAndSize } from "../../service/v2/abkCommonService";
import { CommonParam, setPageAndSize,beforeQueryCheckTime } from "../../service/v2/abkCommonService";
let { logger, Res3Utils, optionalUtils: Optional, apiAssertUtils: ApiAssert } = require('@madex/ex-js-public');
import { ErrorCode } from "../../../../constant/errorCode";
......@@ -121,5 +121,43 @@ export const withdrawList = async (req: any, commonParam: CommonParam) => {
};
/**
* 资金监控-总记录
* @param req
* @param commonParam
*/
export const fundingTotalRecords = async (req: any, commonParam: CommonParam) => {
let func_name = "assetCheck.control.fundingTotalRecords";
try {
let res = await assetCheckService.fundingTotalRecords();
return Res3Utils.result(res);
}
catch (e) {
logger.error(`${func_name} error:${e}`);
return Res3Utils.getErrorResult(e);
}
};
/**
* 资金监控-每日记录
* @param req
* @param commonParam
*/
export const fundingDailyRecords = async (req: any, commonParam: CommonParam) => {
let func_name = "assetCheck.control.fundingDailyRecords";
try {
setPageAndSize(commonParam);
beforeQueryCheckTime(commonParam);
let res = await assetCheckService.fundingDailyRecords(commonParam);
return Res3Utils.result(res);
}
catch (e) {
logger.error(`${func_name} error:${e}`);
return Res3Utils.getErrorResult(e);
}
};
......@@ -20,6 +20,8 @@ export interface CommonParam {
user_type?: any//查询条件 用户类型:1:普通用户;2:代理用户(crm用户)
asset_id?: any
category_id?: any//分类id
}
export function setPageAndSize(commonParam: CommonParam) {
......
import { madAdminOrmDB, coinAddress, coinType, mainUserAsset, dwdSpotAssetsApi, ormDB, coinTx, coinWithdraw, walletAssets } from "@madex/ex-ts-dao";
import {
madAdminOrmDB, coinAddress, coinType, mainUserAsset, dwdSpotAssetsApi,
ormDB, coinTx, coinWithdraw, walletAssets,
financeAccountCategory, financeAccount,
financeAccountDailyRecord
} from "@madex/ex-ts-dao";
import BigNumber from "bignumber.js";
import { CommonParam } from "./abkCommonService";
let { logger, apiAssertUtils: ApiAssert, BigNumberUtils } = require('@madex/ex-js-public');
let { authCommon: AuthCommon, redisUtilsCommon: RedisClient, } = require('@madex/ex-js-common');
let { authCommon: AuthCommon, redisUtilsCommon: RedisClient, financeAccountDataUtils } = require('@madex/ex-js-common');
let _ = require('lodash');
......@@ -215,6 +221,133 @@ export async function withdrawList(page: any, size: any, uid_or_addr: any) {
return pageData
}
export async function fundingTotalRecords() {
//分类数量
let category_count: any = 0;
//总初始资金
let total_init_asset: any = new BigNumber(0);
//总余额
let total_balance: any = new BigNumber(0);
//总差值
let total_sub_value: any = new BigNumber(0);
//分类集合
let category_list: any = [];
//账户
let accountList = await financeAccountDataUtils.getAccountInfoList();
if (!accountList.length) {
return;
}
let dataList = await financeAccountDataUtils.getFundingDataByAccounts(accountList);
if (dataList.length) {
let cMap: any = {};
//查询所有分类
let cList = await financeAccountCategory.prototype.findAll({
attributes: ['id', 'name'],
where: {},
raw: true
});
for (let item of cList) {
cMap[item.id] = item.name;
}
//按类别分组
let groupMap = _.groupBy(dataList, 'category_id');
let keys = _.keys(groupMap);
category_count = keys.length;
for (let category_id of keys) {
//一个分类下所有账户的数据
let oneCategoryList = groupMap[category_id];
let oneInitAsset = _.sumBy(oneCategoryList, (item) => new BigNumber(item.init_amount_usdt).toNumber());
let oneBalance = _.sumBy(oneCategoryList, (item) => new BigNumber(item.balance_usdt).toNumber());
let oneSubValue = new BigNumber(oneBalance).sub(new BigNumber(oneInitAsset));
let item: any = {
category_id: category_id,
category_name: cMap[category_id] ? cMap[category_id] : "",
init_asset: oneInitAsset,
balance: oneBalance,
sub_value: oneSubValue,
}
total_init_asset = total_init_asset.add(oneInitAsset);
total_balance = total_balance.add(oneBalance);
total_sub_value = total_sub_value.add(oneSubValue);
category_list.push(item);
}
}
return {
category_count,
total_init_asset,
total_balance,
total_sub_value,
category_list
};
}
export async function fundingDailyRecords(commonParam: CommonParam) {
let res: any;
let accountMap: any = {};
let where: any = {};
if (commonParam.category_id) {
where["category_id"] = Number(commonParam.category_id);
}
where[ormDB.Op.and] = [
{
createdAt: { [ormDB.Op.gte]: commonParam.from_time }
},
{
createdAt: { [ormDB.Op.lt]: commonParam.to_time },
}];
if (!commonParam.category_id) {//总体账户
res = await financeAccountDailyRecord.prototype.findAndCount({
attributes: ['record_date', ormDB.literal('sum(init_amount_usdt) as init_amount_usdt'),
ormDB.literal('sum(balance_usdt) as balance_usdt')],
where: where,
limit: commonParam.size,
offset: (Number(commonParam.page) - 1) * Number(commonParam.size),
group: ['record_date'],
order: [["record_date", "desc"]],
raw: true
});
}
else {//某个分类下的账户
res = await financeAccountDailyRecord.prototype.findAndCount({
attributes: ['record_date', 'account_id', ormDB.literal('sum(init_amount_usdt) as init_amount_usdt'),
ormDB.literal('sum(balance_usdt) as balance_usdt')],
where: where,
limit: commonParam.size,
offset: (Number(commonParam.page) - 1) * Number(commonParam.size),
group: ['record_date', 'account_id'],
order: [["record_date", "desc"]],
raw: true
});
let accountIds = res.rows.map(item => item.account_id);
if (accountIds.length) {
let dbAccounts = await financeAccount.prototype.findAll({
attributes: ['id', 'account'],
where: {
id: accountIds
},
raw: true
});
for (let item of dbAccounts) {
accountMap[item.id] = item.account;
}
}
}
res.count = res.count.length;
for (let item of res.rows) {
item.account_name = item.account_id && accountMap[item.account_id] ? accountMap[item.account_id] : "";
item.sub_value = new BigNumber(item.balance_usdt).sub(new BigNumber(item.init_amount_usdt));
}
return res;
}
async function getCoinTypeMapByCoinOrAssetIds(coin_ids: any[], asset_ids?: any[]) {
let map: any = {};
......
......@@ -34,6 +34,9 @@ const postFunc = {
'assetCheck/siteAssetsDetails': assetCheckCtrl.siteAssetsDetails,//站内资产-详情
'assetCheck/depositList': assetCheckCtrl.depositList,//实时充值
'assetCheck/withdrawList': assetCheckCtrl.withdrawList,//实时提现
'assetCheck/funding/monitor/totalRecords': assetCheckCtrl.fundingTotalRecords,//资金监控-总记录
'assetCheck/funding/monitor/dailyRecords': assetCheckCtrl.fundingDailyRecords,//资金监控-每日记录
//收入分析
'abkFeeStatistics/home/gatherData': feeStatisticsCtrl.gatherData,//首页数据概览
'abkFeeStatistics/getFeeData': feeStatisticsCtrl.getFeeData,//平台、现货、合约 手续费查询
......
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