|
@@ -461,6 +461,53 @@ function sortList(lists) {
|
|
|
return lists
|
|
|
}
|
|
|
|
|
|
+function formatTableData(type, datas) {
|
|
|
+ var arrs = []
|
|
|
+ for (let index = 0; index < datas.length; index++) {
|
|
|
+ const element = datas[index];
|
|
|
+ switch (type) {
|
|
|
+ case 'incoins':
|
|
|
+ arrs.push([element.dt,
|
|
|
+ element.user_address,
|
|
|
+ element.token_address,
|
|
|
+ element.chain,
|
|
|
+ element.amount,
|
|
|
+ element.decimals,
|
|
|
+ element.price,
|
|
|
+ element.gasUsd,
|
|
|
+ element.inUsd
|
|
|
+ ])
|
|
|
+ break;
|
|
|
+ case 'outcoins':
|
|
|
+ arrs.push([element.dt,
|
|
|
+ element.user_address,
|
|
|
+ element.token_address,
|
|
|
+ element.chain,
|
|
|
+ element.amount,
|
|
|
+ element.decimals,
|
|
|
+ element.price,
|
|
|
+ element.gasUsd,
|
|
|
+ element.withdrawUsd
|
|
|
+ ])
|
|
|
+ break
|
|
|
+ case 'balances':
|
|
|
+ arrs.push([element.address,
|
|
|
+ element.token_address,
|
|
|
+ element.chain,
|
|
|
+ element.amount,
|
|
|
+ element.decimals,
|
|
|
+ element.price,
|
|
|
+ element.usd
|
|
|
+ ])
|
|
|
+ break
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ logger.info('formatTableData', arrs)
|
|
|
+ return arrs
|
|
|
+}
|
|
|
+
|
|
|
async function getStatisticsInfoV2(day) {
|
|
|
// //今日
|
|
|
var startTime = utils.getLastDay(day, 'YYYY-MM-DD') + " 00:00:00"
|
|
@@ -470,7 +517,7 @@ async function getStatisticsInfoV2(day) {
|
|
|
logger.info('getServerData rangeData', rangeData)
|
|
|
|
|
|
var allData = await getServerData(null, null)
|
|
|
-
|
|
|
+ // var allData = rangeData
|
|
|
logger.info('getServerData allData', allData)
|
|
|
|
|
|
var data = await http_request_get(utils.getLastDay(day, 'YYYYMMDD'))
|
|
@@ -535,46 +582,82 @@ const getFeishuToken = async (params) => {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-function writeTable(app_token, data) {
|
|
|
+function formatTableRangle(id, size) {
|
|
|
+ var newId = id + size
|
|
|
+ logger.info('formatTableRangle', id, size, newId)
|
|
|
+ return newId
|
|
|
+}
|
|
|
+async function writeTable(app_token, data) {
|
|
|
logger.info('writeTable', data)
|
|
|
- var body = {
|
|
|
- 'valueRanges': [
|
|
|
- {
|
|
|
- 'range': '0pRQpu!A2:C2',
|
|
|
- 'values': [
|
|
|
- [data.totalCollectCoinsGasFee, //归集总 gas
|
|
|
- data.totalWithdrawGasFee, //提币总 gas
|
|
|
- data.totalOutGasFee], //总支出 gas
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- 'range': '1ygrMB!A2:B2',
|
|
|
- 'values': [
|
|
|
- [
|
|
|
- data.totalInFee, //总入金
|
|
|
- data.totalOutFee,//总出金
|
|
|
- ],
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- 'range': 'BMjMDr!A3:J3',
|
|
|
- 'values': [
|
|
|
- [
|
|
|
- data.updateTime, //更新时间
|
|
|
- data.todayTotalProfit,//今日总利润
|
|
|
- data.todayIncomeUSDTotal,//今日总收入
|
|
|
- data.todayIncomeUSDFee,//今日固定手续费收入
|
|
|
- data.todayTotalOutGasFee,//今日总 gas 支出
|
|
|
- data.totalBalances, //总余额
|
|
|
- data.canNotWithdrawUSD, //不可提现余额
|
|
|
- data.canWithdrawUSD,//可提现余额
|
|
|
- data.ylGasBalance.total,//预留 gas
|
|
|
- data.slGasBalance.total,//散落 gas
|
|
|
- ],
|
|
|
- ]
|
|
|
- }
|
|
|
+ var valueRanges = []
|
|
|
+ if (data.todayInUsdLists.length > 0) {
|
|
|
+ await insertTableRows(app_token, 'Ji1hLG', 1, data.todayInUsdLists.length + 1)
|
|
|
+ valueRanges.push({//入金汇总
|
|
|
+ 'range': formatTableRangle('Ji1hLG!A2:I', data.todayInUsdLists.length + 1),
|
|
|
+ 'values': formatTableData('incoins', data.todayInUsdLists)
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ if (data.todayOutUsdLists.length > 0) {
|
|
|
+ await insertTableRows(app_token, 'aFCrrP', 1, data.todayOutUsdLists.length + 1)
|
|
|
+ valueRanges.push({//出金汇总
|
|
|
+ 'range': formatTableRangle('aFCrrP!A2:I', data.todayOutUsdLists.length + 1),
|
|
|
+ 'values': formatTableData('outcoins', data.todayOutUsdLists)
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ if (data.totalBalanceLists.length > 0) {
|
|
|
+ var rows = await getTableRows(app_token, 2)
|
|
|
+ if (rows > 1) {
|
|
|
+ logger.info('getTableRows', rows)
|
|
|
+ await delTableRows(app_token, '2hNaot', 2, rows)
|
|
|
+ await addTableRows(app_token, '2hNaot', rows)
|
|
|
+ }
|
|
|
+ valueRanges.push({ //总余额汇总
|
|
|
+ 'range': formatTableRangle('2hNaot!A2:I', data.totalBalanceLists.length + 1),
|
|
|
+ 'values': formatTableData('balances', data.totalBalanceLists)
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ valueRanges.push({//归集汇总
|
|
|
+ 'range': formatTableRangle('0pRQpu!A2:C', 2),
|
|
|
+ 'values': [
|
|
|
+ [data.totalCollectCoinsGasFee, //归集总 gas
|
|
|
+ data.totalWithdrawGasFee, //提币总 gas
|
|
|
+ data.totalOutGasFee], //总支出 gas
|
|
|
+ ]
|
|
|
+ })
|
|
|
+
|
|
|
+ valueRanges.push({//总入账
|
|
|
+ 'range': formatTableRangle('1ygrMB!A2:B', 2),
|
|
|
+ 'values': [
|
|
|
+ [
|
|
|
+ data.totalInFee, //总入金
|
|
|
+ data.totalOutFee,//总出金
|
|
|
+ ]
|
|
|
+ ]
|
|
|
+ })
|
|
|
+
|
|
|
+ valueRanges.push({//利润表单
|
|
|
+ 'range': formatTableRangle('BMjMDr!A3:J', 3),
|
|
|
+ 'values': [
|
|
|
+ [
|
|
|
+ data.updateTime, //更新时间
|
|
|
+ data.todayTotalProfit,//今日总利润
|
|
|
+ data.todayIncomeUSDTotal,//今日总收入
|
|
|
+ data.todayIncomeUSDFee,//今日固定手续费收入
|
|
|
+ data.todayTotalOutGasFee,//今日总 gas 支出
|
|
|
+ data.totalBalances, //总余额
|
|
|
+ data.canNotWithdrawUSD, //不可提现余额
|
|
|
+ data.canWithdrawUSD,//可提现余额
|
|
|
+ data.ylGasBalance,//预留 gas
|
|
|
+ data.slGasBalance,//散落 gas
|
|
|
+ ],
|
|
|
]
|
|
|
+ })
|
|
|
+
|
|
|
+ var body = {
|
|
|
+ 'valueRanges': valueRanges
|
|
|
}
|
|
|
return new Promise(resolve => {
|
|
|
axios.post(feishu_write_table_data_url,
|
|
@@ -648,6 +731,7 @@ async function delTableRows(app_token, sheetId, startIndex, endIndex) {
|
|
|
}
|
|
|
|
|
|
async function insertTableRows(app_token, sheetId, startIndex, endIndex) {
|
|
|
+ logger.info('insertTableRows', app_token, sheetId, startIndex, endIndex)
|
|
|
var body = {
|
|
|
dimension: {
|
|
|
sheetId: sheetId,
|
|
@@ -707,45 +791,38 @@ async function addTableRows(app_token, sheetId, endIndex) {
|
|
|
|
|
|
async function exec(data) {
|
|
|
var app = await getFeishuToken()
|
|
|
- // await insertTableRows(app.app_access_token, 'Ji1hLG', 2, data.totalInUsdLists.length)
|
|
|
- // await insertTableRows(app.app_access_token, 'aFCrrP', 2, data.totalOutUsdLists.length)
|
|
|
-
|
|
|
- var rows = await getTableRows(app.app_access_token, 2)
|
|
|
- if (rows > 1) {
|
|
|
- logger.info('getTableRows', rows)
|
|
|
- await delTableRows(app.app_access_token, '2hNaot', 2, rows)
|
|
|
- await addTableRows(app.app_access_token, '2hNaot', rows)
|
|
|
- }
|
|
|
|
|
|
- // await writeTable(app.app_access_token, data)
|
|
|
+ await insertTableRows(app.app_access_token, 'BMjMDr', 2, 3)
|
|
|
+ return await writeTable(app.app_access_token, data)
|
|
|
}
|
|
|
|
|
|
-async function report2FeishuTable() {
|
|
|
+async function report2FeishuTable(day) {
|
|
|
try {
|
|
|
logger.error('数据统计 start')
|
|
|
logger.info('report2FeishuTable')
|
|
|
- var data = await getStatisticsInfoV2(2);
|
|
|
+ var data = await getStatisticsInfoV2(day);
|
|
|
+ // data = ''
|
|
|
logger.info('getStatisticsInfo', data)
|
|
|
var ret = await exec(data)
|
|
|
- logger.error('数据统计 end', 'https://st94nif1cq.feishu.cn/sheets/shtcnp6zbrsep1Sz3Cvk7NXRpDg?sheet=BMjMDr', JSON.stringify(data), JSON.stringify(ret))
|
|
|
+ logger.error('数据统计完成:', 'https://st94nif1cq.feishu.cn/sheets/shtcnp6zbrsep1Sz3Cvk7NXRpDg?sheet=BMjMDr')
|
|
|
mTokenPriceCache.clear()
|
|
|
} catch (error) {
|
|
|
logger.error('report2FeishuTable', error.toString())
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|
|
|
async function test() {
|
|
|
// var ret = await getStatisticsInfoV2(2)
|
|
|
// logger.debug('getStatisticsInfoV2', await getStatisticsInfoV2(2), mTokenPriceCache.size)
|
|
|
- report2FeishuTable()
|
|
|
+ // for (let index = 40; index >=0; index--) {
|
|
|
+ await report2FeishuTable(1)
|
|
|
+ // }
|
|
|
+
|
|
|
}
|
|
|
-// test()
|
|
|
+test()
|
|
|
// exec()
|
|
|
module.exports = {
|
|
|
getStatisticsInfoV2
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|