Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -102,6 +102,9 @@ export class ResourceService {
|
||||
});
|
||||
throw new BadRequestException(message);
|
||||
}
|
||||
if (dto.bizType === 'AVATAR' && !file.mimetype?.startsWith('image/')) {
|
||||
throw new BadRequestException('头像仅支持图片文件');
|
||||
}
|
||||
|
||||
try {
|
||||
const result = await this.oss.putObject({
|
||||
@@ -125,6 +128,24 @@ export class ResourceService {
|
||||
externalNo: result.ossKey,
|
||||
status: 'SUCCESS',
|
||||
});
|
||||
if (actor?.refType === 'USER' && dto.bizType === 'AVATAR' && dto.mediaType === 'IMAGE') {
|
||||
const resource = await this.prisma.commonResource.create({
|
||||
data: {
|
||||
ownerType: 'USER',
|
||||
ownerId: actor.refId,
|
||||
bizType: 'AVATAR',
|
||||
mediaType: 'IMAGE',
|
||||
ossBucket: result.bucket,
|
||||
ossKey: result.ossKey,
|
||||
url: result.url,
|
||||
fileName: file.originalname || 'avatar',
|
||||
fileSize: BigInt(file.size),
|
||||
mimeType: file.mimetype,
|
||||
status: 'ACTIVE',
|
||||
},
|
||||
});
|
||||
return serializeBigInt({ ...result, resourceId: resource.id });
|
||||
}
|
||||
return result;
|
||||
} catch (err) {
|
||||
await logOssUpload(this.prisma, {
|
||||
@@ -138,6 +159,37 @@ export class ResourceService {
|
||||
}
|
||||
}
|
||||
|
||||
async getOwnedActiveAvatar(resourceId: bigint, userId: bigint) {
|
||||
const resource = await this.prisma.commonResource.findFirst({
|
||||
where: {
|
||||
id: resourceId,
|
||||
ownerType: 'USER',
|
||||
ownerId: userId,
|
||||
bizType: 'AVATAR',
|
||||
mediaType: 'IMAGE',
|
||||
status: 'ACTIVE',
|
||||
},
|
||||
});
|
||||
if (!resource) throw new BadRequestException('头像资源无效或不属于当前用户');
|
||||
return resource;
|
||||
}
|
||||
|
||||
async getOwnedActiveAvatarByUrl(url: string, userId: bigint) {
|
||||
const resource = await this.prisma.commonResource.findFirst({
|
||||
where: {
|
||||
url,
|
||||
ownerType: 'USER',
|
||||
ownerId: userId,
|
||||
bizType: 'AVATAR',
|
||||
mediaType: 'IMAGE',
|
||||
status: 'ACTIVE',
|
||||
},
|
||||
orderBy: { createdAt: 'desc' },
|
||||
});
|
||||
if (!resource) throw new BadRequestException('头像资源无效或不属于当前用户');
|
||||
return resource;
|
||||
}
|
||||
|
||||
async register(dto: RegisterResourceDto) {
|
||||
const resource = await this.prisma.commonResource.create({
|
||||
data: {
|
||||
|
||||
Reference in New Issue
Block a user