collect_coins_db.js 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  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. if (!startTime && endTime) {
  16. sql = 'select * from collect_coins_manage WHERE status=? AND update_time>=? AND update_time<=? '
  17. param = [0,0,endTime]
  18. }
  19. // sql = 'select * from collect_coins_manage'
  20. // param=[]
  21. return new Promise((resolve) => {
  22. mysql.getMySqlInstance().getConnection(function (err, connection) {
  23. if (err) {
  24. logger.error('query_collect_total_fee', err)
  25. logger.error('query_collect_total_fee', sql)
  26. resolve(null);
  27. return;
  28. }
  29. connection.query(
  30. sql, param,
  31. function selectCb(error, results) {
  32. if (error) {
  33. logger.error('query_collect_total_fee', error, sql, param)
  34. resolve(null);
  35. return;
  36. }
  37. // logger.log('query_collect_total_fee ret=', error, results);
  38. //用完当前连接需要释放,归还给连接池
  39. connection.release();
  40. resolve({
  41. err: error,
  42. results: results
  43. });
  44. }
  45. );
  46. })
  47. })
  48. }
  49. /**
  50. * 查询归集的hash
  51. */
  52. async function query_collect_hash(hash) {
  53. var sql = 'select * from collect_coins_manage WHERE gas_trx_hash=?'
  54. var param = [hash]
  55. // sql = 'select * from collect_coins_manage'
  56. // param=[]
  57. return new Promise((resolve) => {
  58. mysql.getMySqlInstance().getConnection(function (err, connection) {
  59. if (err) {
  60. logger.error('query_collect_total_fee', err)
  61. logger.error('query_collect_total_fee', sql)
  62. resolve(null);
  63. return;
  64. }
  65. connection.query(
  66. sql, param,
  67. function selectCb(error, results) {
  68. if (error) {
  69. logger.error('query_collect_total_fee', error, sql, param)
  70. resolve(null);
  71. return;
  72. }
  73. logger.log('query_collect_total_fee ret=', error, results);
  74. //用完当前连接需要释放,归还给连接池
  75. connection.release();
  76. resolve(results
  77. );
  78. }
  79. );
  80. })
  81. })
  82. }
  83. /**
  84. * 查询归集的hash
  85. */
  86. async function query_collect_hash_list() {
  87. var sql = 'select * from collect_coins_manage WHERE gas_trx_hash!=?'
  88. var param = ['']
  89. // sql = 'select * from collect_coins_manage'
  90. // param=[]
  91. return new Promise((resolve) => {
  92. mysql.getMySqlInstance().getConnection(function (err, connection) {
  93. if (err) {
  94. logger.error('query_collect_hash_list', err)
  95. logger.error('query_collect_hash_list', sql)
  96. resolve(null);
  97. return;
  98. }
  99. connection.query(
  100. sql, param,
  101. function selectCb(error, results) {
  102. if (error) {
  103. logger.error('query_collect_hash_list', error, sql, param)
  104. resolve(null);
  105. return;
  106. }
  107. logger.log('query_collect_hash_list ret=', error, results);
  108. //用完当前连接需要释放,归还给连接池
  109. connection.release();
  110. resolve(results
  111. );
  112. }
  113. );
  114. })
  115. })
  116. }
  117. /**
  118. * 创建一个归集任务
  119. * @param {*} opts
  120. * @returns
  121. */
  122. async function create_collect_coins_task(opts) {
  123. logger.log('create_collect_coins_task', opts)
  124. var balances = opts.addressBalances ? opts.addressBalances : ''
  125. var transfers = opts.transfers ? opts.transfers : ''
  126. var prestore_gas_free = opts.prestore_gas_fee ? opts.prestore_gas_fee : ''
  127. var company_public_key = opts.company_public_key ? opts.company_public_key : ''
  128. var total_gas_fee = opts.collectCoinsTotalGasFee ? opts.collectCoinsTotalGasFee : ''
  129. var status = opts.status
  130. var resposes = opts.collects ? opts.collects : ''
  131. var error_msg = opts.errMsg ? opts.errMsg : ''
  132. var create_time = opts.createTime ? opts.createTime : utils.getCurrentDate()
  133. var update_time = utils.getCurrentDate()
  134. var user_address = opts.user_address ? opts.user_address : ''
  135. var chain = opts.chain
  136. var gas_trx_hash = opts.gas_trx_hash ? opts.gas_trx_hash : ''
  137. var before_gas_fee = opts.before_gas_fee ? opts.before_gas_fee : ''
  138. 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)' +
  139. 'VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)'
  140. var chain = opts.chain
  141. 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]
  142. logger.log('create_collect_coins_task create_collect_coins_task_sql', create_withdraw_sql, create_withdraw_params);
  143. return new Promise((resolve) => {
  144. mysql.getMySqlInstance().getConnection(function (err, connection) {
  145. if (err) {
  146. logger.error('create_collect_coins_task', err)
  147. logger.error('create_collect_coins_task_sql', create_withdraw_sql)
  148. resolve(null);
  149. return;
  150. }
  151. connection.query(
  152. create_withdraw_sql, create_withdraw_params,
  153. function selectCb(error, results) {
  154. if (error) {
  155. logger.error('create_collect_coins_task', error, create_withdraw_sql, create_withdraw_params)
  156. resolve(null);
  157. return;
  158. }
  159. logger.log('create_collect_coins_task ret=', error, results);
  160. //用完当前连接需要释放,归还给连接池
  161. connection.release();
  162. resolve({
  163. err: error,
  164. results: results.insertId
  165. });
  166. }
  167. );
  168. })
  169. })
  170. }
  171. /**
  172. * 更新归集任务
  173. * @param {*} opts
  174. * @returns
  175. */
  176. async function update_collect_coins_task(opts) {
  177. logger.log('update_collect_coins_task', opts)
  178. var balances = opts.addressBalances ? opts.addressBalances : ''
  179. var transfers = opts.transfers ? opts.transfers : ''
  180. var prestore_gas_free = opts.prestore_gas_fee ? opts.prestore_gas_fee : ''
  181. var company_public_key = opts.company_public_key ? opts.company_public_key : ''
  182. var total_gas_fee = opts.collectCoinsTotalGasFee ? opts.collectCoinsTotalGasFee : ''
  183. var status = opts.status
  184. var resposes = opts.collects ? opts.collects : ''
  185. var error_msg = opts.errMsg ? opts.errMsg : ''
  186. var create_time = opts.createTime ? opts.createTime : utils.getCurrentDate()
  187. var update_time = utils.getCurrentDate()
  188. var user_address = opts.user_address ? opts.user_address : ''
  189. 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)' +
  190. 'VALUES(?,?,?,?,?,?,?,?,?,?,?)'
  191. 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 : '']
  192. logger.log('update_collect_coins_task update_collect_coins_task_sql', create_withdraw_sql, create_withdraw_params);
  193. return new Promise((resolve) => {
  194. mysql.getMySqlInstance().getConnection(function (err, connection) {
  195. if (err) {
  196. logger.error('update_collect_coins_task', err)
  197. logger.error('update_collect_coins_task_sql', create_withdraw_sql)
  198. resolve(null);
  199. return;
  200. }
  201. connection.query(
  202. create_withdraw_sql, create_withdraw_params,
  203. function selectCb(error, results) {
  204. if (error) {
  205. logger.error('update_collect_coins_task', error, create_withdraw_sql, create_withdraw_params)
  206. resolve(null);
  207. return;
  208. }
  209. logger.log('update_collect_coins_task ret=', error, results);
  210. //用完当前连接需要释放,归还给连接池
  211. connection.release();
  212. resolve({
  213. err: error,
  214. results: results.insertId
  215. });
  216. }
  217. );
  218. })
  219. })
  220. }
  221. module.exports = {
  222. create_collect_coins_task,
  223. update_collect_coins_task,
  224. query_collect_total_fee,
  225. query_collect_hash,
  226. query_collect_hash_list,
  227. }