create-chuntianxiaozhu
Version:
春天小猪模板工具
52 lines (46 loc) • 1.64 kB
text/typescript
import { BadRequestException, Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { EntityManager, FindOptionsWhere, Repository } from 'typeorm';
import { Tickets } from './entity/tickets.entity';
import { AppUser } from './entity/user.entity';
()
export class TicketsService {
constructor(
(Tickets) private ticketsRepository: Repository<Tickets>,
private entityManage: EntityManager,
) {}
save(data: Partial<Tickets>) {
return this.ticketsRepository.save(new Tickets(data));
}
findOne(data: FindOptionsWhere<Tickets>[] | FindOptionsWhere<Tickets>) {
return this.ticketsRepository.findOne({
where: data,
});
}
update(id: number, data: Partial<Tickets>) {
return this.ticketsRepository.update(id, new Tickets(data));
}
recharge(uid: number, password: string) {
return this.entityManage.transaction(async (manager) => {
const ticket = await manager.findOne(Tickets, { where: { password } });
if (!ticket) {
throw new BadRequestException('卡密不存在,请确认后再兑换');
}
if (ticket.isOff == 1) {
throw new BadRequestException('卡密已被兑换,请确认');
}
const user = await manager.findOne(AppUser, { where: { id: uid } });
if (!user) {
throw new BadRequestException('用户不存在');
}
await manager.update(
AppUser,
uid,
new AppUser({
wallet: user.wallet + ticket.amount,
}),
);
await manager.update(Tickets, ticket.id, new Tickets({ isOff: 1 }));
});
}
}