collect_coins_db.js 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. const mysql = require("./mysql_db")
  2. const logger = require('../logger')
  3. var { db_config } = require('../../config/config.js')
  4. const utils = require('../utils.js')
  5. /**
  6. * 查询归集入账总金额和总消耗的 gas fee
  7. */
  8. async function query_collect_total_fee(startTime, endTime) {
  9. var sql = 'select * from collect_coins_manage WHERE status=? AND update_time>=? AND update_time<=? '
  10. var param = [0, startTime, endTime]
  11. if (!startTime && !endTime) {
  12. sql = 'select * from collect_coins_manage WHERE status=? '
  13. param = [0]
  14. }
  15. // sql = 'select * from collect_coins_manage'
  16. // param=[]
  17. return new Promise((resolve) => {
  18. mysql.getMySqlInstance().getConnection(function (err, connection) {
  19. if (err) {
  20. logger.error('query_collect_total_fee', err)
  21. logger.error('query_collect_total_fee', sql)
  22. resolve(null);
  23. return;
  24. }
  25. connection.query(
  26. sql, param,
  27. function selectCb(error, results) {
  28. if (error) {
  29. logger.error('query_collect_total_fee', error, sql, param)
  30. resolve(null);
  31. return;
  32. }
  33. // logger.log('query_collect_total_fee ret=', error, results);
  34. //用完当前连接需要释放,归还给连接池
  35. connection.release();
  36. resolve({
  37. err: error,
  38. results: results
  39. });
  40. }
  41. );
  42. })
  43. })
  44. }
  45. /**
  46. * 查询归集的hash
  47. */
  48. async function query_collect_hash(hash) {
  49. var sql = 'select * from collect_coins_manage WHERE gas_trx_hash=?'
  50. var param = [hash]
  51. // sql = 'select * from collect_coins_manage'
  52. // param=[]
  53. return new Promise((resolve) => {
  54. mysql.getMySqlInstance().getConnection(function (err, connection) {
  55. if (err) {
  56. logger.error('query_collect_total_fee', err)
  57. logger.error('query_collect_total_fee', sql)
  58. resolve(null);
  59. return;
  60. }
  61. connection.query(
  62. sql, param,
  63. function selectCb(error, results) {
  64. if (error) {
  65. logger.error('query_collect_total_fee', error, sql, param)
  66. resolve(null);
  67. return;
  68. }
  69. logger.log('query_collect_total_fee ret=', error, results);
  70. //用完当前连接需要释放,归还给连接池
  71. connection.release();
  72. resolve(results
  73. );
  74. }
  75. );
  76. })
  77. })
  78. }
  79. /**
  80. * 创建一个归集任务
  81. * @param {*} opts
  82. * @returns
  83. */
  84. async function create_collect_coins_task(opts) {
  85. logger.log('create_collect_coins_task', opts)
  86. var balances = opts.addressBalances ? opts.addressBalances : ''
  87. var transfers = opts.transfers ? opts.transfers : ''
  88. var prestore_gas_free = opts.prestore_gas_fee ? opts.prestore_gas_fee : ''
  89. var company_public_key = opts.company_public_key ? opts.company_public_key : ''
  90. var total_gas_fee = opts.collectCoinsTotalGasFee ? opts.collectCoinsTotalGasFee : ''
  91. var status = opts.status
  92. var resposes = opts.collects ? opts.collects : ''
  93. var error_msg = opts.errMsg ? opts.errMsg : ''
  94. var create_time = opts.createTime ? opts.createTime : utils.getCurrentDate()
  95. var update_time = utils.getCurrentDate()
  96. var user_address = opts.user_address ? opts.user_address : ''
  97. var chain = opts.chain
  98. var gas_trx_hash = opts.gas_trx_hash ? opts.gas_trx_hash : ''
  99. var before_gas_fee = opts.before_gas_fee ? opts.before_gas_fee : ''
  100. var create_withdraw_sql = 'INSERT INTO collect_coins_manage (user_address,balances,transfers,prestore_gas_fee,company_public_key,total_gas_fee,status,create_time,update_time,resposes,error_msg,chain,gas_trx_hash,before_gas_fee)' +
  101. 'VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)'
  102. var chain = opts.chain
  103. var create_withdraw_params = [user_address, JSON.stringify(balances), JSON.stringify(transfers), JSON.stringify(prestore_gas_free), company_public_key, total_gas_fee, status, create_time, update_time, resposes, error_msg ? error_msg : '', chain, gas_trx_hash, before_gas_fee]
  104. logger.log('create_collect_coins_task create_collect_coins_task_sql', create_withdraw_sql, create_withdraw_params);
  105. return new Promise((resolve) => {
  106. mysql.getMySqlInstance().getConnection(function (err, connection) {
  107. if (err) {
  108. logger.error('create_collect_coins_task', err)
  109. logger.error('create_collect_coins_task_sql', create_withdraw_sql)
  110. resolve(null);
  111. return;
  112. }
  113. connection.query(
  114. create_withdraw_sql, create_withdraw_params,
  115. function selectCb(error, results) {
  116. if (error) {
  117. logger.error('create_collect_coins_task', error, create_withdraw_sql, create_withdraw_params)
  118. resolve(null);
  119. return;
  120. }
  121. logger.log('create_collect_coins_task ret=', error, results);
  122. //用完当前连接需要释放,归还给连接池
  123. connection.release();
  124. resolve({
  125. err: error,
  126. results: results.insertId
  127. });
  128. }
  129. );
  130. })
  131. })
  132. }
  133. /**
  134. * 更新归集任务
  135. * @param {*} opts
  136. * @returns
  137. */
  138. async function update_collect_coins_task(opts) {
  139. logger.log('update_collect_coins_task', opts)
  140. var balances = opts.addressBalances ? opts.addressBalances : ''
  141. var transfers = opts.transfers ? opts.transfers : ''
  142. var prestore_gas_free = opts.prestore_gas_fee ? opts.prestore_gas_fee : ''
  143. var company_public_key = opts.company_public_key ? opts.company_public_key : ''
  144. var total_gas_fee = opts.collectCoinsTotalGasFee ? opts.collectCoinsTotalGasFee : ''
  145. var status = opts.status
  146. var resposes = opts.collects ? opts.collects : ''
  147. var error_msg = opts.errMsg ? opts.errMsg : ''
  148. var create_time = opts.createTime ? opts.createTime : utils.getCurrentDate()
  149. var update_time = utils.getCurrentDate()
  150. var user_address = opts.user_address ? opts.user_address : ''
  151. var create_withdraw_sql = 'INSERT INTO collect_coins_manage (user_address,balances,transfers,prestore_gas_fee,company_public_key,total_gas_fee,status,create_time,update_time,resposes,error_msg)' +
  152. 'VALUES(?,?,?,?,?,?,?,?,?,?,?)'
  153. var create_withdraw_params = [user_address, JSON.stringify(balances), JSON.stringify(transfers), JSON.stringify(prestore_gas_free), company_public_key, total_gas_fee, status, create_time, update_time, resposes, error_msg ? error_msg : '']
  154. logger.log('update_collect_coins_task update_collect_coins_task_sql', create_withdraw_sql, create_withdraw_params);
  155. return new Promise((resolve) => {
  156. mysql.getMySqlInstance().getConnection(function (err, connection) {
  157. if (err) {
  158. logger.error('update_collect_coins_task', err)
  159. logger.error('update_collect_coins_task_sql', create_withdraw_sql)
  160. resolve(null);
  161. return;
  162. }
  163. connection.query(
  164. create_withdraw_sql, create_withdraw_params,
  165. function selectCb(error, results) {
  166. if (error) {
  167. logger.error('update_collect_coins_task', error, create_withdraw_sql, create_withdraw_params)
  168. resolve(null);
  169. return;
  170. }
  171. logger.log('update_collect_coins_task ret=', error, results);
  172. //用完当前连接需要释放,归还给连接池
  173. connection.release();
  174. resolve({
  175. err: error,
  176. results: results.insertId
  177. });
  178. }
  179. );
  180. })
  181. })
  182. }
  183. module.exports = {
  184. create_collect_coins_task,
  185. update_collect_coins_task,
  186. query_collect_total_fee,
  187. query_collect_hash,
  188. }