CountLedger.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. const db = require('../../plugin/DataBase/db')
  2. function normalizeResult(rawResult) {
  3. if (Array.isArray(rawResult)) return rawResult[0]
  4. return rawResult
  5. }
  6. async function executeSql(executor, sql, params) {
  7. if (executor && typeof executor.execute === 'function') {
  8. return executor.execute(sql, params)
  9. }
  10. return db.query(sql, params)
  11. }
  12. async function insertLedgerRecord({
  13. executor,
  14. userUuid,
  15. delta,
  16. balanceBefore,
  17. balanceAfter,
  18. bizType,
  19. bizId,
  20. operatorUuid = null,
  21. remark = ''
  22. }) {
  23. if (!userUuid || !bizType) return false
  24. const result = await executeSql(
  25. executor,
  26. `INSERT IGNORE INTO lepao_count_ledger
  27. (user_uuid, delta, balance_before, balance_after, biz_type, biz_id, operator_uuid, remark, created_at)
  28. VALUES (?, ?, ?, ?, ?, ?, ?, ?, NOW())`,
  29. [
  30. userUuid,
  31. Number(delta || 0),
  32. Number(balanceBefore || 0),
  33. Number(balanceAfter || 0),
  34. bizType,
  35. String(bizId || ''),
  36. operatorUuid,
  37. String(remark || '')
  38. ]
  39. )
  40. const rows = normalizeResult(result)
  41. return !!rows && Number(rows.affectedRows || 0) > 0
  42. }
  43. module.exports = { insertLedgerRecord }