staff_data/apps/server/src/models/resource/resource.service.ts

88 lines
2.4 KiB
TypeScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { Injectable ,Logger} from '@nestjs/common';
import { BaseService } from '../base/base.service';
import {
UserProfile,
db,
ObjectType,
Prisma,
Resource,
ResourceStatus,
} from '@nice/common';
@Injectable()
export class ResourceService extends BaseService<Prisma.ResourceDelegate> {
private readonly logger = new Logger(ResourceService.name);
constructor() {
super(db, ObjectType.RESOURCE);
}
async create(
args: Prisma.ResourceCreateArgs,
params?: { staff?: UserProfile },
): Promise<Resource> {
if (params?.staff) {
args.data.ownerId = params?.staff?.id;
}
return super.create(args);
}
async softDeleteByFileId(fileId: string) {
return this.update({
where: {
fileId,
},
data: {
deletedAt: new Date(),
},
});
}
// 添加保存文件名的方法
async saveFileName(fileId: string, fileName: string): Promise<void> {
try {
this.logger.log(`尝试保存文件名 "${fileName}" 到文件 ${fileId}`);
// 首先检查是否已存在 ShareCode 记录
const existingShareCode = await db.shareCode.findUnique({
where: { fileId },
});
if (existingShareCode) {
// 如果记录存在,更新文件名
await db.shareCode.update({
where: { fileId },
data: { fileName },
});
this.logger.log(`更新了现有记录的文件名 "${fileName}" 到文件 ${fileId}`);
} else {
// 如果记录不存在,创建新记录
await db.shareCode.create({
data: {
fileId,
fileName,
code: null, // 这里可以设置为 null 或生成一个临时码
expiresAt: new Date(Date.now() + 24 * 60 * 60 * 1000), // 24小时后过期
isUsed: false,
},
});
this.logger.log(`创建了新记录并保存文件名 "${fileName}" 到文件 ${fileId}`);
}
} catch (error) {
this.logger.error(`保存文件名失败文件ID: ${fileId}`, error);
throw error;
}
}
// 添加获取文件名的方法
async getFileName(fileId: string): Promise<string | null> {
try {
const shareCode = await db.shareCode.findUnique({
where: { fileId },
select: { fileName: true },
});
return shareCode?.fileName || null;
} catch (error) {
this.logger.error(`Failed to get filename for ${fileId}`, error);
return null;
}
}
}