forked from wangziqi/gongxue-base
feat: auto-populate department_id on create + seed default campus with backfill
This commit is contained in:
@@ -2,6 +2,7 @@ import { Injectable, NotFoundException, BadRequestException } from '@nestjs/comm
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
import { Deposit } from '../entities/deposit.entity';
|
||||
import { Student } from '../entities/student.entity';
|
||||
import { DepositInstallment } from '../entities/deposit-installment.entity';
|
||||
import { CampusScope } from '../common/campus-scope';
|
||||
import { CreateDepositDto, RefundDepositDto, CreateDepositWithInstallmentsDto } from './dto/deposit.dto';
|
||||
@@ -13,6 +14,8 @@ export class DepositsService {
|
||||
@InjectRepository(Deposit) private repo: Repository<Deposit>,
|
||||
@InjectRepository(DepositInstallment)
|
||||
private installmentRepo: Repository<DepositInstallment>,
|
||||
@InjectRepository(Student)
|
||||
private studentRepo: Repository<Student>,
|
||||
private readonly scope: CampusScope,
|
||||
) {}
|
||||
|
||||
@@ -36,6 +39,8 @@ export class DepositsService {
|
||||
}
|
||||
|
||||
async create(dto: CreateDepositDto, userId?: number) {
|
||||
const student = await this.studentRepo.findOne({ where: { id: dto.studentId } });
|
||||
if (!student) throw new NotFoundException('学生不存在');
|
||||
const deposit = this.repo.create({
|
||||
studentId: dto.studentId,
|
||||
amount: dto.amount,
|
||||
@@ -44,15 +49,18 @@ export class DepositsService {
|
||||
status: 'paid',
|
||||
recordedBy: userId,
|
||||
});
|
||||
deposit.departmentId = student.departmentId;
|
||||
|
||||
if (dto instanceof CreateDepositWithInstallmentsDto && dto.installments?.length) {
|
||||
deposit.installments = dto.installments.map((i) =>
|
||||
this.installmentRepo.create({
|
||||
deposit.installments = dto.installments.map((i) => {
|
||||
const inst = this.installmentRepo.create({
|
||||
amount: i.amount,
|
||||
dueDate: i.dueDate,
|
||||
status: 'pending',
|
||||
}),
|
||||
);
|
||||
});
|
||||
inst.departmentId = student.departmentId;
|
||||
return inst;
|
||||
});
|
||||
}
|
||||
|
||||
return this.repo.save(deposit);
|
||||
|
||||
Reference in New Issue
Block a user