123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 |
- const mysql = require("./mysql_db")
- const logger = require('../logger')
- var { db_config } = require('../../config/config.js')
- const utils = require('../utils.js')
- /**
- * 创建提币任务
- *
- * @param {*} task_obj
- */
- async function create_withdraw_task(task_obj) {
- logger.log('create_withdraw_task', task_obj)
- // 提币 id
- var withdraw_id = task_obj.withdraw_id;
- if (!withdraw_id) {
- return {
- code: -1,
- error: 'withdraw_id cannot be empty.'
- }
- }
- //提币任务创建时间
- var withdraw_create_time = utils.getTimestamp();
- // withdraw_create_time = utils.getCurrentDate()
- var from_address = task_obj.user_address
- var to_address = task_obj.receiver
- var contract_address = task_obj.contractAddress
- var chain_id = parseInt(utils.getChainId(task_obj.chain))
- var type = task_obj.type
- var amount = task_obj.amount
- if (chain_id == 2019)
- switch (type) {
- case 'erc20':
- type = 'token'
- break
- }
- if (!from_address || !to_address) {
- return {
- code: -1,
- error: 'from_address and to_address cannot be empty.'
- }
- }
- var create_withdraw_sql = 'INSERT INTO withdraw_manage (withdraw_id,withdraw_status,create_time,from_address,to_address,chain_id,type,contract_address,amount)' +
- 'VALUES(?,?,?,?,?,?,?,?,?)'
- var create_withdraw_params = [withdraw_id, 1, withdraw_create_time, from_address, to_address, chain_id, type, contract_address ? contract_address : '', amount]
- logger.log('create_withdraw_task create_withdraw_sql', create_withdraw_sql);
- return new Promise((resolve) => {
- mysql.getMySqlInstance().getConnection(function (err, connection) {
- if (err) {
- logger.error('create_withdraw_task', err)
- logger.error('create_withdraw_sql', create_withdraw_sql)
- resolve(null);
- return;
- }
- connection.query(
- create_withdraw_sql, create_withdraw_params,
- function selectCb(error, results) {
- if (error) {
- logger.error('create_withdraw_task', error, create_withdraw_sql, create_withdraw_params)
- resolve(null);
- return;
- }
- logger.log('create_withdraw_task ret=', error, results);
- //用完当前连接需要释放,归还给连接池
- connection.release();
- resolve({
- err: error,
- results: results.insertId
- });
- }
- );
- })
- })
- }
- /**
- * 更新提币任务
- * @param {*} task_obj
- */
- function update_withdraw_task(withdraw_id, ret_obj) {
- logger.log('update_withdraw_task', ret_obj, withdraw_id)
- // 提币 id
- var withdraw_id = withdraw_id;
- if (!withdraw_id) {
- return {
- code: -1,
- error: 'withdraw_id cannot be empty.'
- }
- }
- var update_withdraw_sql = 'update withdraw_manage SET withdraw_status=?,withdraw_hash=?,nonce=?,update_time=?,gas_price=?,gas_limit=?,value=?,errorMsg=? WHERE withdraw_id=?'
- var status = ret_obj.withdraw_status
- var hash = ret_obj.withdraw_hash
- var nonce = ret_obj.nonce
- var update_time = ret_obj.update_time
- var gas_price = ret_obj.gas_price
- var gas_limit = ret_obj.gas_limit
- if (!status)
- status = 3
- if (!update_time)
- update_time = utils.getTimestamp()
- var update_withdraw_params = [status, hash, nonce, update_time, gas_price, gas_limit, ret_obj.value, ret_obj.errorMsg ? ret_obj.errorMsg : '', withdraw_id]
- return new Promise((resolve) => {
- mysql.getMySqlInstance().getConnection(function (err, connection) {
- if (err) {
- logger.error('update_withdraw_task', err)
- logger.error('update_withdraw_task', update_withdraw_sql)
- resolve(null);
- return;
- }
- connection.query(
- update_withdraw_sql, update_withdraw_params,
- function selectCb(error, results) {
- if (error) {
- logger.error('update_withdraw_task', error, update_withdraw_sql, update_withdraw_params)
- resolve(null);
- return;
- }
- logger.log('update_withdraw_task ret=', error, results);
- //用完当前连接需要释放,归还给连接池
- connection.release();
- resolve({
- err: error,
- results: results
- });
- }
- );
- })
- })
- }
- function queryWithdrawInfoFromWithdrawId(withdrawId) {
- logger.log('queryWithdrawInfoFromWithdrawId', withdrawId)
- // 提币 id
- if (!withdrawId) {
- return {
- code: -1,
- error: 'withdraw_id cannot be empty.'
- }
- }
- var create_withdraw_sql = 'select * from withdraw_manage WHERE withdraw_id=?'
- var create_withdraw_params = [withdrawId]
- return new Promise((resolve) => {
- mysql.getMySqlInstance().getConnection(function (err, connection) {
- if (err) {
- logger.error('queryWithdrawInfoFromWithdrawId', err)
- logger.error('queryWithdrawInfoFromWithdrawId', create_withdraw_sql)
- resolve(null);
- return;
- }
- connection.query(
- create_withdraw_sql, create_withdraw_params,
- function selectCb(error, results) {
- if (error) {
- logger.error('queryWithdrawInfoFromWithdrawId', error, create_withdraw_sql, create_withdraw_params)
- resolve(null);
- return;
- }
- logger.log('queryWithdrawInfoFromWithdrawId ret=', error, results);
- //用完当前连接需要释放,归还给连接池
- connection.release();
- if (results && Array.isArray(results) && results.length > 0) {
- resolve(results[0]);
- } else {
- resolve(null);
- }
- }
- );
- })
- })
- }
- function getWidthdrawTotalFee(startTime, endTime) {
- var create_withdraw_sql = 'select * from withdraw_manage WHERE withdraw_status=? AND update_time>=? AND update_time<=? '
- var create_withdraw_params = [2, startTime, endTime]
- if (!startTime && !endTime) {
- create_withdraw_sql = 'select * from withdraw_manage WHERE withdraw_status=? '
- create_withdraw_params = [2]
- }
- return new Promise((resolve) => {
- mysql.getMySqlInstance().getConnection(function (err, connection) {
- if (err) {
- logger.error('getWidthdrawTotalFee', err)
- logger.error('getWidthdrawTotalFee', create_withdraw_sql)
- resolve(null);
- return;
- }
- connection.query(
- create_withdraw_sql, create_withdraw_params,
- function selectCb(error, results) {
- if (error) {
- logger.error('getWidthdrawTotalFee', error, create_withdraw_sql, create_withdraw_params)
- resolve(null);
- return;
- }
- // logger.log('getWidthdrawTotalFee ret=', error, results);
- //用完当前连接需要释放,归还给连接池
- connection.release();
- if (results && Array.isArray(results) && results.length > 0) {
- resolve(results);
- } else {
- resolve(null);
- }
- }
- );
- })
- })
- }
- /**
- * 判断该任务是否存在
- * @param {*} withdrawId
- */
- function withdraw_id_exist(withdrawId) {
- logger.log('create_withdraw_task', withdrawId)
- // 提币 id
- if (!withdrawId) {
- return {
- code: -1,
- error: 'withdraw_id cannot be empty.'
- }
- }
- var create_withdraw_sql = 'select * from withdraw_manage WHERE withdraw_id=?'
- var create_withdraw_params = [withdrawId]
- return new Promise((resolve) => {
- mysql.getMySqlInstance().getConnection(function (err, connection) {
- if (err) {
- logger.error('withdraw_id_exist', err)
- logger.error('withdraw_id_exist', create_withdraw_sql)
- resolve(null);
- return;
- }
- connection.query(
- create_withdraw_sql, create_withdraw_params,
- function selectCb(error, results) {
- if (error) {
- logger.error('withdraw_id_exist', error, create_withdraw_sql, create_withdraw_params)
- resolve(null);
- return;
- }
- logger.log('withdraw_id_exist ret=', error, results);
- //用完当前连接需要释放,归还给连接池
- connection.release();
- if (results && Array.isArray(results) && results.length > 0) {
- resolve(true);
- } else {
- resolve(false);
- }
- }
- );
- })
- })
- }
- module.exports = {
- create_withdraw_task,
- update_withdraw_task,
- queryWithdrawInfoFromWithdrawId,
- getWidthdrawTotalFee,
- withdraw_id_exist
- }
|