UserBalanceService.ts 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. import BalanceRecord from 'App/Models/BalanceRecord'
  2. import UserBalance from 'App/Models/UserBalance'
  3. import Decimal from 'decimal.js'
  4. class UserBalanceService {
  5. public async getBalance(userId: number) {
  6. let userBalance = await UserBalance.findBy('userId', userId)
  7. if (!userBalance) {
  8. userBalance = await UserBalance.create({ userId })
  9. }
  10. return userBalance
  11. }
  12. public async modifiyBalance(params: {
  13. userId: number
  14. amount: Decimal
  15. type: string
  16. description?: string
  17. seriesId?: number
  18. episodeId?: number
  19. }) {
  20. const userBalance = await this.getBalance(params.userId)
  21. userBalance.lastBalance = userBalance.balance
  22. userBalance.balance = userBalance.balance.plus(params.amount)
  23. await userBalance.save()
  24. const balanceRecord = new BalanceRecord()
  25. balanceRecord.merge(params)
  26. balanceRecord.balance = userBalance.balance
  27. balanceRecord.lastBalance = userBalance.lastBalance
  28. await balanceRecord.save()
  29. }
  30. }
  31. export default new UserBalanceService()