import { Injectable } from '@nestjs/common'; import { TrpcService } from '@server/trpc/trpc.service'; import { DepartmentService } from './department.service'; // assuming it's in the same directory import { DepartmentMethodSchema, Prisma, UpdateOrderSchema, } from '@nice/common'; import { z, ZodType } from 'zod'; import { DepartmentRowService } from './department.row.service'; const DepartmentCreateArgsSchema: ZodType = z.any(); const DepartmentUpdateArgsSchema: ZodType = z.any(); const DepartmentFindFirstArgsSchema: ZodType = z.any(); const DepartmentFindManyArgsSchema: ZodType = z.any(); @Injectable() export class DepartmentRouter { constructor( private readonly trpc: TrpcService, private readonly departmentService: DepartmentService, // 注入 DepartmentService private readonly departmentRowService: DepartmentRowService, ) {} router = this.trpc.router({ // 创建部门 create: this.trpc.protectProcedure .input(DepartmentCreateArgsSchema) // 根据 schema 期望输入 .mutation(async ({ input }) => { return this.departmentService.create(input); }), // 更新部门 update: this.trpc.protectProcedure .input(DepartmentUpdateArgsSchema) // 根据 schema 期望输入 .mutation(async ({ input }) => { return this.departmentService.update(input); }), // 根据 ID 列表软删除部门 softDeleteByIds: this.trpc.protectProcedure .input(z.object({ ids: z.array(z.string()) })) // 根据 schema 期望输入 .mutation(async ({ input }) => { return this.departmentService.softDeleteByIds(input.ids); }), // 更新部门顺序 updateOrder: this.trpc.protectProcedure .input(UpdateOrderSchema) .mutation(async ({ input }) => { return this.departmentService.updateOrder(input); }), // 查询多个部门 findMany: this.trpc.procedure .input(DepartmentFindManyArgsSchema) // 假设 StaffMethodSchema.findMany 是根据关键字查找员工的 Zod schema .query(async ({ input }) => { return await this.departmentService.findMany(input); }), // 查询第一个部门 findFirst: this.trpc.procedure .input(DepartmentFindFirstArgsSchema) // 假设 StaffMethodSchema.findMany 是根据关键字查找员工的 Zod schema .query(async ({ input }) => { return await this.departmentService.findFirst(input); }), // 获取子部门的简单树结构 getChildSimpleTree: this.trpc.procedure .input(DepartmentMethodSchema.getSimpleTree) .query(async ({ input }) => { return await this.departmentService.getChildSimpleTree(input); }), // 获取父部门的简单树结构 getParentSimpleTree: this.trpc.procedure .input(DepartmentMethodSchema.getSimpleTree) .query(async ({ input }) => { return await this.departmentService.getParentSimpleTree(input); }), // 获取部门行数据 getRows: this.trpc.protectProcedure .input(DepartmentMethodSchema.getRows) .query(async ({ input, ctx }) => { return await this.departmentRowService.getRows(input, ctx.staff); }), }); }