This commit is contained in:
Rao 2025-03-12 08:25:08 +08:00
parent 4dcccff01e
commit 1ba65b8c89
15 changed files with 220 additions and 15 deletions

View File

@ -0,0 +1,9 @@
import { Controller, UseGuards } from "@nestjs/common";
import { AuthGuard } from '@server/auth/auth.guard';
import { DailyTrainService } from "./dailyTrain.service";
@Controller('train-content')
export class DailyTrainController {
constructor(private readonly dailyTrainService: DailyTrainService) {}
//@UseGuards(AuthGuard)
}

View File

@ -0,0 +1,15 @@
import { Module } from '@nestjs/common';
import { StaffModule } from '../staff/staff.module';
import { TrpcService } from '@server/trpc/trpc.service';
import { DailyTrainController } from './dailyTrain.controller';
import { DailyTrainService } from './dailyTrain.service';
import { DailyTrainRouter } from './dailyTrain.router';
@Module({
imports: [StaffModule],
controllers: [DailyTrainController],
providers: [DailyTrainService,DailyTrainRouter,TrpcService],
exports: [DailyTrainService,DailyTrainRouter],
})
export class DailyTrainModule {}

View File

@ -0,0 +1,16 @@
import { Injectable } from "@nestjs/common";
import { TrpcService } from "@server/trpc/trpc.service";
import { DailyTrainService } from "./dailyTrain.service";
@Injectable()
export class DailyTrainRouter {
constructor(
private readonly trpc: TrpcService,
private readonly dailyTrainService: DailyTrainService,
) { }
router = this.trpc.router({
})
}

View File

@ -0,0 +1,40 @@
import { Injectable } from "@nestjs/common";
import { BaseService } from "../base/base.service";
import { db, ObjectType, Prisma, UserProfile } from "@nice/common";
import { DefaultArgs } from "@prisma/client/runtime/library";
import EventBus, { CrudOperation } from "@server/utils/event-bus";
@Injectable()
export class DailyTrainService extends BaseService<Prisma.DailyTrainTimeDelegate> {
constructor() {
super(db,ObjectType.DAILY_TRAIN,true);
}
async create(args: Prisma.DailyTrainTimeCreateArgs) {
console.log(args)
const result = await super.create(args)
this.emitDataChanged(CrudOperation.CREATED,result)
return result
}
async update(args:Prisma.DailyTrainTimeUpdateArgs){
const result = await super.update(args)
this.emitDataChanged(CrudOperation.UPDATED,result)
return result
}
async findMany(args: Prisma.DailyTrainTimeFindManyArgs) {
const result = await super.findMany(args);
return result;
}
private emitDataChanged(operation: CrudOperation, data: any) {
EventBus.emit('dataChanged', {
type:ObjectType.DAILY_TRAIN,
operation,
data,
});
}
}

View File

@ -0,0 +1,9 @@
import { Controller, UseGuards } from "@nestjs/common";
import { AuthGuard } from '@server/auth/auth.guard';
import { DailyTrainService } from "./dailyTrain.service";
@Controller('train-content')
export class DailyTrainController {
constructor(private readonly dailyTrainService: DailyTrainService) {}
//@UseGuards(AuthGuard)
}

View File

@ -0,0 +1,15 @@
import { Module } from '@nestjs/common';
import { StaffModule } from '../staff/staff.module';
import { TrpcService } from '@server/trpc/trpc.service';
import { DailyTrainController } from './dailyTrain.controller';
import { DailyTrainService } from './dailyTrain.service';
import { DailyTrainRouter } from './dailyTrain.router';
@Module({
imports: [StaffModule],
controllers: [DailyTrainController],
providers: [DailyTrainService,DailyTrainRouter,TrpcService],
exports: [DailyTrainService,DailyTrainRouter],
})
export class DailyTrainModule {}

View File

@ -0,0 +1,16 @@
import { Injectable } from "@nestjs/common";
import { TrpcService } from "@server/trpc/trpc.service";
import { DailyTrainService } from "./dailyTrain.service";
@Injectable()
export class DailyTrainRouter {
constructor(
private readonly trpc: TrpcService,
private readonly dailyTrainService: DailyTrainService,
) { }
router = this.trpc.router({
})
}

View File

@ -0,0 +1,40 @@
import { Injectable } from "@nestjs/common";
import { BaseService } from "../base/base.service";
import { db, ObjectType, Prisma, UserProfile } from "@nice/common";
import { DefaultArgs } from "@prisma/client/runtime/library";
import EventBus, { CrudOperation } from "@server/utils/event-bus";
@Injectable()
export class DailyTrainService extends BaseService<Prisma.DailyTrainTimeDelegate> {
constructor() {
super(db,ObjectType.DAILY_TRAIN,true);
}
async create(args: Prisma.DailyTrainTimeCreateArgs) {
console.log(args)
const result = await super.create(args)
this.emitDataChanged(CrudOperation.CREATED,result)
return result
}
async update(args:Prisma.DailyTrainTimeUpdateArgs){
const result = await super.update(args)
this.emitDataChanged(CrudOperation.UPDATED,result)
return result
}
async findMany(args: Prisma.DailyTrainTimeFindManyArgs) {
const result = await super.findMany(args);
return result;
}
private emitDataChanged(operation: CrudOperation, data: any) {
EventBus.emit('dataChanged', {
type:ObjectType.DAILY_TRAIN,
operation,
data,
});
}
}

View File

@ -1,6 +1,8 @@
import { Injectable } from "@nestjs/common"; import { Injectable } from "@nestjs/common";
import { BaseService } from "../base/base.service"; import { BaseService } from "../base/base.service";
import { db, ObjectType, Prisma, UserProfile } from "@nice/common"; import { db, ObjectType, Prisma, UserProfile } from "@nice/common";
import { DefaultArgs } from "@prisma/client/runtime/library";
import EventBus, { CrudOperation } from "@server/utils/event-bus";
@Injectable() @Injectable()
@ -8,5 +10,31 @@ export class TrainContentService extends BaseService<Prisma.TrainContentDelegate
constructor() { constructor() {
super(db,ObjectType.TRAIN_CONTENT,true); super(db,ObjectType.TRAIN_CONTENT,true);
} }
async create(args: Prisma.TrainContentCreateArgs) {
console.log(args)
const result = await super.create(args)
this.emitDataChanged(CrudOperation.CREATED,result)
return result
}
async update(args:Prisma.TrainContentUpdateArgs){
const result = await super.update(args)
this.emitDataChanged(CrudOperation.UPDATED,result)
return result
}
async findMany(args: Prisma.TrainContentFindManyArgs) {
const result = await super.findMany(args);
return result;
}
private emitDataChanged(operation: CrudOperation, data: any) {
EventBus.emit('dataChanged', {
type:ObjectType.TRAIN_SITUATION,
operation,
data,
});
}
} }

View File

@ -67,7 +67,8 @@ export class TrainSituationService extends BaseService<Prisma.TrainSituationDele
}) })
return result return result
} }
//async createDailyTrainTime()
// 发送数据变化事件 // 发送数据变化事件
private emitDataChanged(operation: CrudOperation, data: any) { private emitDataChanged(operation: CrudOperation, data: any) {
EventBus.emit('dataChanged', { EventBus.emit('dataChanged', {
@ -75,5 +76,5 @@ export class TrainSituationService extends BaseService<Prisma.TrainSituationDele
operation, operation,
data, data,
}); });
} }
} }

View File

@ -17,7 +17,7 @@ import { TransformModule } from '@server/models/transform/transform.module';
import { TrainContentModule } from '@server/models/train-content/trainContent.module'; import { TrainContentModule } from '@server/models/train-content/trainContent.module';
import { ResourceModule } from '@server/models/resource/resource.module'; import { ResourceModule } from '@server/models/resource/resource.module';
import { TrainSituationModule } from '@server/models/train-situation/trainSituation.module'; import { TrainSituationModule } from '@server/models/train-situation/trainSituation.module';
import { DailyTrainModule } from '@server/models/daily-train/dailyTrain.module';
@Module({ @Module({
imports: [ imports: [
AuthModule, AuthModule,
@ -35,7 +35,8 @@ import { TrainSituationModule } from '@server/models/train-situation/trainSituat
WebSocketModule, WebSocketModule,
ResourceModule, ResourceModule,
TrainContentModule, TrainContentModule,
TrainSituationModule TrainSituationModule,
DailyTrainModule
], ],
controllers: [], controllers: [],
providers: [TrpcService, TrpcRouter, Logger], providers: [TrpcService, TrpcRouter, Logger],

View File

@ -16,6 +16,7 @@ import { RoleRouter } from '@server/models/rbac/role.router';
import { ResourceRouter } from '../models/resource/resource.router'; import { ResourceRouter } from '../models/resource/resource.router';
import { TrainContentRouter } from '@server/models/train-content/trainContent.router'; import { TrainContentRouter } from '@server/models/train-content/trainContent.router';
import { TrainSituationRouter } from '@server/models/train-situation/trainSituation.router'; import { TrainSituationRouter } from '@server/models/train-situation/trainSituation.router';
import { DailyTrainRouter } from '@server/models/daily-train/dailyTrain.router';
@Injectable() @Injectable()
export class TrpcRouter { export class TrpcRouter {
@ -36,6 +37,7 @@ export class TrpcRouter {
private readonly resource: ResourceRouter, private readonly resource: ResourceRouter,
private readonly trainContent: TrainContentRouter, private readonly trainContent: TrainContentRouter,
private readonly trainSituation:TrainSituationRouter, private readonly trainSituation:TrainSituationRouter,
private readonly dailyTrain:DailyTrainRouter
) {} ) {}
getRouter() { getRouter() {
return; return;
@ -54,7 +56,8 @@ export class TrpcRouter {
visitor: this.visitor.router, visitor: this.visitor.router,
resource: this.resource.router, resource: this.resource.router,
trainContent:this.trainContent.router, trainContent:this.trainContent.router,
trainSituation:this.trainSituation.router trainSituation:this.trainSituation.router,
dailyTrain:this.dailyTrain.router
}); });
wss: WebSocketServer = undefined; wss: WebSocketServer = undefined;

View File

@ -16,8 +16,16 @@ export function useTrainSituation(){
emitDataChange(ObjectType.TRAIN_SITUATION, res, CrudOperation.CREATED); emitDataChange(ObjectType.TRAIN_SITUATION, res, CrudOperation.CREATED);
}, },
}); });
const update = api.trainSituation.update.useMutation({
onSuccess:(res:any)=>{
queryClient.invalidateQueries({queryKey});
emitDataChange(ObjectType.TRAIN_SITUATION,res,CrudOperation.UPDATED)
}
})
return { return {
create create,
update
} }
} }

View File

@ -359,21 +359,24 @@ model TrainSituation {
trainContentId String @map("train_content_id") trainContentId String @map("train_content_id")
trainContent TrainContent @relation(fields: [trainContentId], references: [id]) trainContent TrainContent @relation(fields: [trainContentId], references: [id])
score Float @default(0.0) @map("score") score Float @default(0.0) @map("score")
mustTrainTime Float @map("must_train_time") mustTrainTime Float @map("must_train_time")
alreadyTrainTime Float @map("already_train_time") alreadyTrainTime Float @map("already_train_time")
dailyTrainTime DailyTrainTime[] @relation("DailyTrainSituation")
@@map("train_situation") @@map("train_situation")
} }
model DailyTrainTime { model DailyTrainTime {
id String @id @default(cuid()) id String @id @default(cuid())
trainTime Float @default(0.0)@map("trainTime") trainSituationId String @map("train_situatio_id")
createdAt DateTime @default(now()) @map("created_at") trainSituation TrainSituation @relation("DailyTrainSituation", fields: [trainSituationId], references: [id])
trainTime Float @default(0.0) @map("trainTime")
createdAt DateTime @default(now()) @map("created_at")
@@map("daily_train_situation") @@map("daily_train_situation")
} }
model Position { model Position {
id String @id @default(cuid()) @map("id") id String @id @default(cuid()) @map("id")
type String @map("type") type String @map("type")

View File

@ -60,7 +60,8 @@ export enum ObjectType {
ENROLLMENT = "enrollment", ENROLLMENT = "enrollment",
RESOURCE = "resource", RESOURCE = "resource",
TRAIN_CONTENT = "trainContent", TRAIN_CONTENT = "trainContent",
TRAIN_SITUATION = "trainSituation" TRAIN_SITUATION = "trainSituation",
DAILY_TRAIN = "dailyTrainTime"
} }
export enum RolePerms { export enum RolePerms {
// Create Permissions 创建权限 // Create Permissions 创建权限