From 589b3ff7453f3d1017228a2b711406598b6c9a67 Mon Sep 17 00:00:00 2001 From: expressgy Date: Fri, 22 Sep 2023 16:15:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/rgvsale/dto/account.dto.ts | 56 +++++++----- src/rgvsale/dto/demoScenesProblem.dto.ts | 104 ++++++++++++----------- src/rgvsale/rgvsale.service.ts | 17 +++- 3 files changed, 103 insertions(+), 74 deletions(-) diff --git a/src/rgvsale/dto/account.dto.ts b/src/rgvsale/dto/account.dto.ts index 12dcc42..6ee7bd4 100644 --- a/src/rgvsale/dto/account.dto.ts +++ b/src/rgvsale/dto/account.dto.ts @@ -1,5 +1,11 @@ import { IsNotEmpty, IsNumber, IsOptional, IsString } from 'class-validator'; -import { Param, ValidationPipe, Query, HttpException, HttpStatus } from '@nestjs/common'; +import { + Param, + ValidationPipe, + Query, + HttpException, + HttpStatus, +} from '@nestjs/common'; import { Transform } from 'class-transformer'; // 获取产品账户分页 @@ -9,9 +15,9 @@ export class GetAccountPageDto { @Transform((val) => { if (Number(val.value)) { return Number(val.value); - } else if(!val.value){ - return undefined - }else { + } else if (!val.value) { + return undefined; + } else { throw new HttpException('产品ID必须为数字', 400); } }) @@ -22,8 +28,8 @@ export class GetAccountPageDto { @Transform((val) => { if (Number(val.value)) { return Number(val.value); - } else if(!val.value){ - return undefined + } else if (!val.value) { + return undefined; } else { throw new HttpException('pageNum必须为数字', 400); } @@ -35,8 +41,8 @@ export class GetAccountPageDto { @Transform((val) => { if (Number(val.value)) { return Number(val.value); - } else if(!val.value){ - return undefined + } else if (!val.value) { + return undefined; } else { throw new HttpException('pageSize必须为数字', 400); } @@ -45,36 +51,44 @@ export class GetAccountPageDto { } // 添加产品账户 -export class CreateAccountDto{ +export class CreateAccountDto { // 产品ID @Transform((val) => { if (Number(val.value)) { return Number(val.value); + } else if (!val.value) { + return undefined; } else { throw new HttpException('产品ID必须为数字', 400); } }) + @IsNumber( + {}, + { + message: '产品ID必须为数字', + }, + ) productId: number; @IsOptional() @IsString({ message: '产品账户角色必须为字符串', }) - accountRoleName: string + accountRoleName: string; @IsString({ message: '产品账户用户名必须为字符串', }) - accountUsername: string + accountUsername: string; @IsString({ message: '产品账户密码必须为字符串', }) - accountPassword: string + accountPassword: string; } // 编辑产品账户 -export class EditAccountDto{ +export class EditAccountDto { // 账户ID @Transform((val) => { if (Number(val.value)) { @@ -88,9 +102,9 @@ export class EditAccountDto{ @Transform((val) => { if (Number(val.value)) { return Number(val.value); - } else if(!val.value){ - return undefined - }else { + } else if (!val.value) { + return undefined; + } else { throw new HttpException('产品ID必须为数字', 400); } }) @@ -100,21 +114,21 @@ export class EditAccountDto{ @IsString({ message: '产品账户角色必须为字符串', }) - accountRoleName: string + accountRoleName: string; @IsString({ message: '产品账户用户名必须为字符串', }) - accountUsername: string + accountUsername: string; @IsString({ message: '产品账户密码必须为字符串', }) - accountPassword: string + accountPassword: string; } // 删除产品账户 -export class DeleteAccountDto{ +export class DeleteAccountDto { @Transform((val) => { if (Number(val.value)) { return Number(val.value); @@ -122,5 +136,5 @@ export class DeleteAccountDto{ throw new HttpException('产品账户ID必须为数字', 400); } }) - accountId: Number; + accountId: number; } diff --git a/src/rgvsale/dto/demoScenesProblem.dto.ts b/src/rgvsale/dto/demoScenesProblem.dto.ts index 15221f4..907225c 100644 --- a/src/rgvsale/dto/demoScenesProblem.dto.ts +++ b/src/rgvsale/dto/demoScenesProblem.dto.ts @@ -1,55 +1,58 @@ import { IsNotEmpty, IsNumber, IsOptional, IsString } from 'class-validator'; -import { Param, ValidationPipe, Query, HttpException, HttpStatus } from '@nestjs/common'; +import { + Param, + ValidationPipe, + Query, + HttpException, + HttpStatus, +} from '@nestjs/common'; import { Transform } from 'class-transformer'; // 获取演示问题分页 -export class GetScenesProblemPageDto{ +export class GetScenesProblemPageDto { // 产品ID @Transform((val) => { if (Number(val.value)) { return Number(val.value); - } else if(!val.value){ - return undefined - }else { + } else if (!val.value) { + return undefined; + } else { throw new HttpException('产品ID必须为数字', 400); } }) productId: number; - // 行业ID @Transform((val) => { if (Number(val.value)) { return Number(val.value); - } else if(!val.value){ - return undefined - }else { + } else if (!val.value) { + return undefined; + } else { throw new HttpException('行业ID必须为数字', 400); } }) industryId: number; - // 方案ID @Transform((val) => { if (Number(val.value)) { return Number(val.value); - } else if(!val.value){ - return undefined - }else { + } else if (!val.value) { + return undefined; + } else { throw new HttpException('方案ID必须为数字', 400); } }) programmeId: number; - // 现场ID @Transform((val) => { if (Number(val.value)) { return Number(val.value); - } else if(!val.value){ - return undefined - }else { + } else if (!val.value) { + return undefined; + } else { throw new HttpException('现场ID必须为数字', 400); } }) @@ -67,22 +70,21 @@ export class GetScenesProblemPageDto{ @Transform((val) => { if (Number(val.value) || Number(val.value) === 0) { return Number(val.value); - } else if(!val.value){ - return undefined - }else if(Number(val.value) !== 0){ + } else if (!val.value) { + return undefined; + } else if (Number(val.value) !== 0) { throw new HttpException('利用状态必须为数字', 400); } }) isUse: number; - // 页码 @IsOptional() @Transform((val) => { if (Number(val.value)) { return Number(val.value); - } else if(!val.value){ - return undefined + } else if (!val.value) { + return undefined; } else { throw new HttpException('pageNum必须为数字', 400); } @@ -94,8 +96,8 @@ export class GetScenesProblemPageDto{ @Transform((val) => { if (Number(val.value)) { return Number(val.value); - } else if(!val.value){ - return undefined + } else if (!val.value) { + return undefined; } else { throw new HttpException('pageSize必须为数字', 400); } @@ -104,7 +106,7 @@ export class GetScenesProblemPageDto{ } // 新增演示问题 -export class CreateScenesProblemDto{ +export class CreateScenesProblemDto { // 问题内容 @IsString({ message: '问题内容必须为字符串', @@ -118,9 +120,9 @@ export class CreateScenesProblemDto{ @Transform((val) => { if (Number(val.value)) { return Number(val.value); - } else if(!val.value){ - return undefined - }else { + } else if (!val.value) { + return undefined; + } else { throw new HttpException('演示现场ID必须为数字', 400); } }) @@ -133,9 +135,9 @@ export class CreateScenesProblemDto{ @Transform((val) => { if (Number(val.value)) { return Number(val.value); - } else if(!val.value){ - return undefined - }else { + } else if (!val.value) { + return undefined; + } else { throw new HttpException('演示项ID必须为数字', 400); } }) @@ -156,7 +158,7 @@ export class CreateScenesProblemDto{ } // 编辑演示问题 -export class EditScenesProblemDto{ +export class EditScenesProblemDto { // 问题内容 @IsString({ message: '问题内容必须为字符串', @@ -170,9 +172,9 @@ export class EditScenesProblemDto{ @Transform((val) => { if (Number(val.value)) { return Number(val.value); - } else if(!val.value){ - return undefined - }else { + } else if (!val.value) { + return undefined; + } else { throw new HttpException('演示现场ID必须为数字', 400); } }) @@ -198,9 +200,9 @@ export class EditScenesProblemDto{ @Transform((val) => { if (Number(val.value)) { return Number(val.value); - } else if(!val.value){ - return undefined - }else { + } else if (!val.value) { + return undefined; + } else { throw new HttpException('演示现场ID必须为数字', 400); } }) @@ -213,9 +215,9 @@ export class EditScenesProblemDto{ @Transform((val) => { if (Number(val.value)) { return Number(val.value); - } else if(!val.value){ - return undefined - }else { + } else if (!val.value) { + return undefined; + } else { throw new HttpException('演示项ID必须为数字', 400); } }) @@ -223,7 +225,7 @@ export class EditScenesProblemDto{ } // 删除演示问题 -export class DeleteScenesProblemDto{ +export class DeleteScenesProblemDto { // 问题ID @IsNotEmpty({ message: '问题ID不能为空', @@ -231,9 +233,9 @@ export class DeleteScenesProblemDto{ @Transform((val) => { if (Number(val.value)) { return Number(val.value); - } else if(!val.value){ - return undefined - }else { + } else if (!val.value) { + return undefined; + } else { throw new HttpException('问题ID必须为数字', 400); } }) @@ -241,7 +243,7 @@ export class DeleteScenesProblemDto{ } // 修改问题利用状态 -export class ChangeUseStateDto{ +export class ChangeUseStateDto { // 问题ID @IsNotEmpty({ message: '问题ID不能为空', @@ -249,11 +251,11 @@ export class ChangeUseStateDto{ @Transform((val) => { if (Number(val.value)) { return Number(val.value); - } else if(!val.value){ - return undefined - }else { + } else if (!val.value) { + return undefined; + } else { throw new HttpException('问题ID必须为数字', 400); } }) problemId: number; -} \ No newline at end of file +} diff --git a/src/rgvsale/rgvsale.service.ts b/src/rgvsale/rgvsale.service.ts index 2c20168..ca77a92 100644 --- a/src/rgvsale/rgvsale.service.ts +++ b/src/rgvsale/rgvsale.service.ts @@ -27,7 +27,7 @@ import { DeleteDemoItemDto, GetDemoItemListDto, } from '@/rgvsale/dto/demoItem.dto'; -import { createWriteStream, createReadStream } from 'fs'; +import { createWriteStream, createReadStream, exists, stat } from 'fs'; import { join } from 'path'; import { CreateIndustryDto, @@ -331,6 +331,7 @@ export class RgvsaleService { // 创建账户 public async createAccount(body: CreateAccountDto, userInfo: UserInfoDto) { + console.log(body) const { productId, accountPassword, accountUsername, accountRoleName } = body; try { @@ -348,6 +349,7 @@ export class RgvsaleService { }; } } catch (e) { + console.log(e) return { data: e, message: '新增产品账户失败,账户名称查重失败!', @@ -739,12 +741,23 @@ export class RgvsaleService { // 下载文件 public async download(id, res) { + console.log(id); let filename; try { filename = await this.getFilePath(id); } catch (e) { throw new HttpException(e, HttpStatus.SERVICE_UNAVAILABLE); } + const state = await new Promise((res, rej) => { + exists(join('./file', filename), (e) => { + e ? res(e) : rej(e); + }); + }).catch((e) => { + throw new HttpException( + '未找到文件', + HttpStatus.SERVICE_UNAVAILABLE, + ); + }); const readerStream = createReadStream(join('./file', filename)); res.header('Content-Type', 'application/octet-stream'); res.header( @@ -752,7 +765,7 @@ export class RgvsaleService { 'attachment; filename=' + encodeURIComponent(filename), ); // readerStream.pipe(res) - readerStream.on('error', () => { + readerStream.on('error', (err) => { throw new HttpException( '下载失败,请重试', HttpStatus.SERVICE_UNAVAILABLE,