ソースを参照

余额费率相关

wuyi 1 年間 前
コミット
a064f39472

+ 5 - 0
src/balance/balance.controller.ts

@@ -16,6 +16,11 @@ export class BalanceController {
         return await this.balanceService.rechargeBalance(parseInt(id), amount)
     }
 
+    @Get('/allRecords/:id')
+    async findAllRecords() {
+        return await this.balanceService.findRecordsByUserId(1)
+    }
+
     @Get('/records/:id')
     async findRecordsByUserId(@Param('id') id: string) {
         return await this.balanceService.findRecordsByUserId(parseInt(id))

+ 4 - 2
src/balance/balance.module.ts

@@ -5,13 +5,15 @@ import { BalanceRecord } from './entities/balance-record.entities'
 import { BalanceController } from './balance.controller'
 import { BalanceService } from './balance.service'
 import { UsersModule } from '../users/users.module'
+import { Users } from '../users/entities/users.entity'
 
 @Module({
     imports: [
-        TypeOrmModule.forFeature([Balance,BalanceRecord]),
+        TypeOrmModule.forFeature([Balance, BalanceRecord, Users]),
         UsersModule
     ],
     controllers: [BalanceController],
     providers: [BalanceService]
 })
-export class BalanceModule{}
+export class BalanceModule {
+}

+ 31 - 3
src/balance/balance.service.ts

@@ -4,6 +4,7 @@ import { Balance } from './entities/balance.entities'
 import { InjectRepository } from '@nestjs/typeorm'
 import { BalanceRecord, BalanceType } from './entities/balance-record.entities'
 import { UsersService } from '../users/users.service'
+import { Users } from '../users/entities/users.entity'
 
 @Injectable()
 export class BalanceService {
@@ -13,6 +14,8 @@ export class BalanceService {
         private balanceRepository: Repository<Balance>,
         @InjectRepository(BalanceRecord)
         private recordRepository: Repository<BalanceRecord>,
+        @InjectRepository(Users)
+        private userRepository: Repository<Users>,
         private readonly usersService: UsersService
     ) {
     }
@@ -32,18 +35,25 @@ export class BalanceService {
     async rechargeBalance(userId: number, amount: number): Promise<string> {
         try {
             // 获取余额
-            const balance = await this.balanceRepository.findOne({
+            let balance = await this.balanceRepository.findOne({
                 where: {
                     userId: userId
                 }
             })
 
+            // 如果余额不存在
+            if (!balance) {
+                balance = new Balance()
+                balance.userId = userId
+                balance.currentBalance = 0.00
+                balance.totalBalance = 0.00
+            }
+
             const currentBalanceNum = parseFloat(String(balance.currentBalance))
 
             balance.currentBalance = currentBalanceNum + amount
             balance.totalBalance = parseFloat(String(balance.totalBalance)) + amount
 
-            console.log('balance:', balance)
             await this.balanceRepository.save(balance)
 
             // 充值记录
@@ -54,6 +64,10 @@ export class BalanceService {
             record.type = BalanceType.RECHARGE
             await this.recordRepository.save(record)
 
+            const users = await this.usersService.findById(userId)
+            users.balance = balance.currentBalance
+            await this.userRepository.save(users)
+
             return 'recharge success!'
         } catch (e) {
             Logger.error('Error recharge ', e, 'RcsService')
@@ -61,6 +75,10 @@ export class BalanceService {
         }
     }
 
+    async findAllRecords(): Promise<BalanceRecord[]> {
+        return await this.recordRepository.find()
+    }
+
     async findRecordsByUserId(userId: number): Promise<BalanceRecord[]> {
         return await this.recordRepository.find({
             where: {
@@ -71,15 +89,25 @@ export class BalanceService {
 
     async updateRate(userId: number, rate: number): Promise<string> {
         try {
-            const balance = await this.balanceRepository.findOne({
+            let balance = await this.balanceRepository.findOne({
                 where: {
                     userId: userId
                 }
             })
 
+            // 如果余额不存在
+            if (!balance) {
+                balance = new Balance()
+                balance.userId = userId
+            }
+
             balance.rate = rate
             await this.balanceRepository.save(balance)
 
+            const users = await this.usersService.findById(userId)
+            users.rate = rate
+            await this.userRepository.save(users)
+
             return 'update rate success!'
         } catch (e) {
             Logger.error('Error rate ', e, 'RcsService')

+ 2 - 1
src/balance/entities/balance.entities.ts

@@ -1,4 +1,5 @@
-import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm'
+import { Column, Entity, OneToOne, PrimaryGeneratedColumn } from 'typeorm'
+import { Users } from '../../users/entities/users.entity'
 
 @Entity()
 export class Balance {

+ 15 - 0
src/users/entities/users.entity.ts

@@ -40,4 +40,19 @@ export class Users {
 
     @Column({ nullable: true })
     deviceId: string
+
+    @Column('decimal', {
+        precision: 10,
+        scale: 2,
+        default: 0.00
+    })
+    balance: number
+
+    @Column('decimal', {
+        precision: 2,
+        scale: 2,
+        default: 0.00
+    })
+    rate: number
+
 }