NESTJS框架从零到一搭建node服务 <事务处理 -转账>

72 阅读1分钟

1.service层 `import { Injectable } from '@nestjs/common';

import { CreateTransformDto } from './dto/create-transform.dto';

import { UpdateTransformDto } from './dto/update-transform.dto';

import { Repository } from 'typeorm';

import { Transform } from './entities/transform.entity';

import { moneylist } from './entities/moneylist.entity';

import { InjectRepository } from '@nestjs/typeorm';

@Injectable()

export class TransformService {

  constructor(

    @InjectRepository(Transform)

    private readonly transformRepository: Repository,

    @InjectRepository(moneylist)

    private readonly moneylistRepository: Repository,

  ) {}

  transform(params: { to: string; from: string; num: string }) {

    this.transformRepository.manager.transaction(async (manager) => {

      const fromMoney = await this.moneylistRepository.findOne({

        where: { name: params.from },

      });

      const toMoney = await this.moneylistRepository.findOne({

        where: { name: params.to },

      });

      if (fromMoney.money < toMoney.money) {

        manager.save(moneylist, {

          id: fromMoney.id,

          money: fromMoney.money - Number(params.num),

        });

        manager.save(moneylist, {

          id: toMoney.id,

          money: toMoney.money + Number(params.num),

        });

        return {

          massage: '转账成功!',

        };

      } else {

        return {

          massage: '转账成功!',

        };

      }

    });

  }

  create(createTransformDto: CreateTransformDto) {

    return 'This action adds a new transform';

  }

  findAll() {

    return This action returns all transform;

  }

  findOne(id: number) {

    return This action returns a #${id} transform;

  }

  update(id: number, updateTransformDto: UpdateTransformDto) {

    return This action updates a #${id} transform;

  }

  remove(id: number) {

    return This action removes a #${id} transform;

  }

}`