withdraw_db.js 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  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. * 创建提币任务
  7. *
  8. * @param {*} task_obj
  9. */
  10. async function create_withdraw_task(task_obj) {
  11. logger.log('create_withdraw_task', task_obj)
  12. // 提币 id
  13. var withdraw_id = task_obj.withdraw_id;
  14. if (!withdraw_id) {
  15. return {
  16. code: -1,
  17. error: 'withdraw_id cannot be empty.'
  18. }
  19. }
  20. //提币任务创建时间
  21. var withdraw_create_time = utils.getTimestamp();
  22. var from_address = task_obj.user_address
  23. var to_address = task_obj.receiver
  24. var contract_address = task_obj.contractAddress
  25. var chain_id = parseInt(utils.getChainId(task_obj.chain))
  26. var type = task_obj.type
  27. var amount = task_obj.amount
  28. if (!from_address || !to_address) {
  29. return {
  30. code: -1,
  31. error: 'from_address and to_address cannot be empty.'
  32. }
  33. }
  34. var create_withdraw_sql = 'INSERT INTO withdraw_manage (withdraw_id,withdraw_status,create_time,from_address,to_address,chain_id,type,contract_address,amount)' +
  35. 'VALUES(?,?,?,?,?,?,?,?,?)'
  36. var create_withdraw_params = [withdraw_id, 0, withdraw_create_time, from_address, to_address, chain_id, type, contract_address ? contract_address : '', amount]
  37. logger.log('create_withdraw_task create_withdraw_sql', create_withdraw_sql);
  38. return new Promise((resolve) => {
  39. mysql.getMySqlInstance().getConnection(function (err, connection) {
  40. if (err) {
  41. logger.error('create_withdraw_task', err)
  42. logger.error('create_withdraw_sql', create_withdraw_sql)
  43. resolve(null);
  44. return;
  45. }
  46. connection.query(
  47. create_withdraw_sql, create_withdraw_params,
  48. function selectCb(error, results) {
  49. if (error) {
  50. logger.error('create_withdraw_task', error, create_withdraw_sql, create_withdraw_params)
  51. resolve(null);
  52. return;
  53. }
  54. logger.log('create_withdraw_task ret=', error, results);
  55. //用完当前连接需要释放,归还给连接池
  56. connection.release();
  57. resolve({
  58. err: error,
  59. results: results.insertId
  60. });
  61. }
  62. );
  63. })
  64. })
  65. }
  66. /**
  67. * 更新提币任务
  68. * @param {*} task_obj
  69. */
  70. function update_withdraw_task(withdraw_id, ret_obj) {
  71. logger.log('update_withdraw_task', ret_obj, withdraw_id)
  72. // 提币 id
  73. var withdraw_id = withdraw_id;
  74. if (!withdraw_id) {
  75. return {
  76. code: -1,
  77. error: 'withdraw_id cannot be empty.'
  78. }
  79. }
  80. var update_withdraw_sql = 'update withdraw_manage SET withdraw_status=?,withdraw_hash=?,nonce=?,update_time=?,gas_price=?,gas_limit=?,value=?,errorMsg=? WHERE withdraw_id=?'
  81. var status = ret_obj.withdraw_status
  82. var hash = ret_obj.withdraw_hash
  83. var nonce = ret_obj.nonce
  84. var update_time = ret_obj.update_time
  85. var gas_price = ret_obj.gas_price
  86. var gas_limit = ret_obj.gas_limit
  87. if (!status)
  88. status = 3
  89. if (!update_time)
  90. update_time = utils.getTimestamp()
  91. var update_withdraw_params = [status, hash, nonce, update_time, gas_price, gas_limit, ret_obj.value, ret_obj.errorMsg ? ret_obj.errorMsg : '', withdraw_id]
  92. return new Promise((resolve) => {
  93. mysql.getMySqlInstance().getConnection(function (err, connection) {
  94. if (err) {
  95. logger.error('update_withdraw_task', err)
  96. logger.error('update_withdraw_task', update_withdraw_sql)
  97. resolve(null);
  98. return;
  99. }
  100. connection.query(
  101. update_withdraw_sql, update_withdraw_params,
  102. function selectCb(error, results) {
  103. if (error) {
  104. logger.error('update_withdraw_task', error, update_withdraw_sql, update_withdraw_params)
  105. resolve(null);
  106. return;
  107. }
  108. logger.log('update_withdraw_task ret=', error, results);
  109. //用完当前连接需要释放,归还给连接池
  110. connection.release();
  111. resolve({
  112. err: error,
  113. results: results
  114. });
  115. }
  116. );
  117. })
  118. })
  119. }
  120. function queryWithdrawInfoFromWithdrawId(withdrawId){
  121. logger.log('queryWithdrawInfoFromWithdrawId', withdrawId)
  122. // 提币 id
  123. if (!withdrawId) {
  124. return {
  125. code: -1,
  126. error: 'withdraw_id cannot be empty.'
  127. }
  128. }
  129. var create_withdraw_sql = 'select * from withdraw_manage WHERE withdraw_id=?'
  130. var create_withdraw_params = [withdrawId]
  131. return new Promise((resolve) => {
  132. mysql.getMySqlInstance().getConnection(function (err, connection) {
  133. if (err) {
  134. logger.error('queryWithdrawInfoFromWithdrawId', err)
  135. logger.error('queryWithdrawInfoFromWithdrawId', create_withdraw_sql)
  136. resolve(null);
  137. return;
  138. }
  139. connection.query(
  140. create_withdraw_sql, create_withdraw_params,
  141. function selectCb(error, results) {
  142. if (error) {
  143. logger.error('queryWithdrawInfoFromWithdrawId', error, create_withdraw_sql, create_withdraw_params)
  144. resolve(null);
  145. return;
  146. }
  147. logger.log('queryWithdrawInfoFromWithdrawId ret=', error, results);
  148. //用完当前连接需要释放,归还给连接池
  149. connection.release();
  150. if (results && Array.isArray(results) && results.length > 0) {
  151. resolve(results[0]);
  152. } else {
  153. resolve(null);
  154. }
  155. }
  156. );
  157. })
  158. })
  159. }
  160. /**
  161. * 判断该任务是否存在
  162. * @param {*} withdrawId
  163. */
  164. function withdraw_id_exist(withdrawId) {
  165. logger.log('create_withdraw_task', withdrawId)
  166. // 提币 id
  167. if (!withdrawId) {
  168. return {
  169. code: -1,
  170. error: 'withdraw_id cannot be empty.'
  171. }
  172. }
  173. var create_withdraw_sql = 'select * from withdraw_manage WHERE withdraw_id=?'
  174. var create_withdraw_params = [withdrawId]
  175. return new Promise((resolve) => {
  176. mysql.getMySqlInstance().getConnection(function (err, connection) {
  177. if (err) {
  178. logger.error('withdraw_id_exist', err)
  179. logger.error('withdraw_id_exist', create_withdraw_sql)
  180. resolve(null);
  181. return;
  182. }
  183. connection.query(
  184. create_withdraw_sql, create_withdraw_params,
  185. function selectCb(error, results) {
  186. if (error) {
  187. logger.error('withdraw_id_exist', error, create_withdraw_sql, create_withdraw_params)
  188. resolve(null);
  189. return;
  190. }
  191. logger.log('withdraw_id_exist ret=', error, results);
  192. //用完当前连接需要释放,归还给连接池
  193. connection.release();
  194. if (results && Array.isArray(results) && results.length > 0) {
  195. resolve(true);
  196. } else {
  197. resolve(false);
  198. }
  199. }
  200. );
  201. })
  202. })
  203. }
  204. module.exports = {
  205. create_withdraw_task,
  206. update_withdraw_task,
  207. queryWithdrawInfoFromWithdrawId,
  208. withdraw_id_exist
  209. }