From d3dd66f613c2ae433ad3756e98b2d58bcd752a4b Mon Sep 17 00:00:00 2001 From: suk-6 Date: Thu, 26 Sep 2024 22:45:21 +0900 Subject: [PATCH] feat: Update GetProductDTO with userTokenBalance property and update user token balance --- src/modules/product/dto/get.product.dto.ts | 5 +++++ src/modules/product/product.module.ts | 3 ++- src/modules/product/product.service.ts | 9 +++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/modules/product/dto/get.product.dto.ts b/src/modules/product/dto/get.product.dto.ts index 79c94eb..428eb8a 100644 --- a/src/modules/product/dto/get.product.dto.ts +++ b/src/modules/product/dto/get.product.dto.ts @@ -36,6 +36,11 @@ export class GetProductDTO extends ProductDTO { type: Boolean, }) saleIsDisabled: boolean; + + @ApiProperty({ + description: '유저 토큰 보유량', + }) + userTokenBalance: number; } export class GetProductsDTO extends PickType(ProductDTO, ['id', 'name', 'image', 'currentAmount']) { diff --git a/src/modules/product/product.module.ts b/src/modules/product/product.module.ts index 40c1028..77e4ae8 100644 --- a/src/modules/product/product.module.ts +++ b/src/modules/product/product.module.ts @@ -4,11 +4,12 @@ import { PrismaModule } from 'src/common'; import { S3Module } from 'src/common/modules/s3/s3.module'; import { BlockchainModule } from '../blockchain'; +import { UserModule } from '../user'; import { ProductController } from './product.controller'; import { ProductService } from './product.service'; @Module({ - imports: [PrismaModule, BlockchainModule, S3Module], + imports: [PrismaModule, BlockchainModule, S3Module, UserModule], controllers: [ProductController], providers: [ProductService], }) diff --git a/src/modules/product/product.service.ts b/src/modules/product/product.service.ts index f243db3..02a059a 100644 --- a/src/modules/product/product.service.ts +++ b/src/modules/product/product.service.ts @@ -13,6 +13,7 @@ import { PrismaService } from 'src/common/modules/prisma/prisma.service'; import { S3Service } from 'src/common/modules/s3/s3.service'; import { BlockchainService } from '../blockchain/blockchain.service'; +import { UserService } from '../user/user.service'; import { CreateProductDTO } from './dto/create.product.dto'; import { CreateProductQnADTO } from './dto/create.qna.dto'; import { GetProductDTO, GetProductsDTO } from './dto/get.product.dto'; @@ -24,6 +25,7 @@ export class ProductService { private readonly prisma: PrismaService, private readonly blockchain: BlockchainService, private readonly s3Service: S3Service, + private readonly userService: UserService, private readonly configService: ConfigService<{ S3_PUBLIC_URL: string; }>, @@ -204,6 +206,7 @@ export class ProductService { } async getProduct(userId: string, productId: string): Promise { + this.userService.updateTokenBalancees(userId); return this.prisma.product .findFirstOrThrow({ where: { @@ -315,6 +318,12 @@ export class ProductService { product.type === ProductType.FUNDING, }; }) + .then((product) => ({ + ...product, + userTokenBalance: product.userTokenBalancesOnProduct.length + ? product.userTokenBalancesOnProduct[0].token + : 0, + })) .then((product) => { const copy: { [key: string]: any } = { ...product }; delete copy['fundingLog'];