diff --git a/config/development.ts b/config/development.ts index db60bca..fa9d4f1 100644 --- a/config/development.ts +++ b/config/development.ts @@ -17,7 +17,7 @@ export default { }, databases: { starLight: { - host: 'localhost', + host: '10.10.10.200', port: 3306, username: 'root', password: 'root', diff --git a/config/production.ts b/config/production.ts index 63b74e3..425f36f 100644 --- a/config/production.ts +++ b/config/production.ts @@ -2,7 +2,7 @@ export default { // 主服务 master: { systemName: '心曲Tune', - host: '127.0.0.1', + host: '0.0.0.0', port: '3000', }, swagger: { @@ -17,11 +17,11 @@ export default { }, databases: { starLight: { - host: 'localhost', + host: '10.10.10.200', port: 3306, username: 'root', - password: 'Hxl1314521', - database: 'Starlight', + password: 'root', + database: 'rgv-sale-system', }, }, redis: { diff --git a/src/main.ts b/src/main.ts index 767b560..8a14319 100644 --- a/src/main.ts +++ b/src/main.ts @@ -41,16 +41,18 @@ async function bootstrap() { // 全局开启参数验证--需要安装class-validator 又依赖 class-transformer // app.useGlobalPipes(new ValidationPipe()); - app.useGlobalPipes(new ValidationPipe({ - transform: true, - }));// 开启参数转换,就不用一个一个写了 + app.useGlobalPipes( + new ValidationPipe({ + transform: true, + }), + ); // 开启参数转换,就不用一个一个写了 // fastify文件上传中间件 await app.register(fastifyMultipart, { addToBody: true, throwFileSizeLimit: true, - limits:{ - fileSize: 1024 * 1024 * 500 - } + limits: { + fileSize: 1024 * 1024 * 500, + }, }); // 开发者工具 const swaggerState = appConfig.get('swagger').enable; diff --git a/src/rgvsale/rgvsale.controller.ts b/src/rgvsale/rgvsale.controller.ts index 4b64dd9..532ba14 100644 --- a/src/rgvsale/rgvsale.controller.ts +++ b/src/rgvsale/rgvsale.controller.ts @@ -11,14 +11,28 @@ import { Req, Res, Response, - HttpStatus, HttpException, + HttpStatus, + HttpException, } from '@nestjs/common'; import { FastifyRequest } from 'fastify'; import { RgvsaleService } from './rgvsale.service'; -import { GetProductPageDto, CreateProductDto, EditProductDto, DeleteProductDto } from './dto/product.dto'; -import { getUserinfo, userinfoDto } from '@/Gdecorator/userinfoDecorator/userinfoDecorator.decorator'; +import { + GetProductPageDto, + CreateProductDto, + EditProductDto, + DeleteProductDto, +} from './dto/product.dto'; +import { + getUserinfo, + userinfoDto, +} from '@/Gdecorator/userinfoDecorator/userinfoDecorator.decorator'; import { UserInfoDto } from './dto/userInfo.dto'; -import { CreateAccountDto, EditAccountDto, DeleteAccountDto, GetAccountPageDto } from '@/rgvsale/dto/account.dto'; +import { + CreateAccountDto, + EditAccountDto, + DeleteAccountDto, + GetAccountPageDto, +} from '@/rgvsale/dto/account.dto'; import { CreateDemoItemDto, DeleteDemoItemDto, @@ -34,30 +48,41 @@ import { GetIndustryPageDto, } from '@/rgvsale/dto/industry.dto'; import { - CreateProgrammeDto, DeleteDemoItemForProgrammeDto, + CreateProgrammeDto, + DeleteDemoItemForProgrammeDto, DeleteProgrammeDto, EditDemoItemsListRankDto, - EditProgrammeDto, GetDemoItemsPageForProgrammeDto, GetProgrammePageDto, + EditProgrammeDto, + GetDemoItemsPageForProgrammeDto, + GetProgrammePageDto, } from '@/rgvsale/dto/productsProgramme.dto'; -import { AddDemoItemAccumulateForSceneDto, CreateScenesDto, DeleteSceneDto } from '@/rgvsale/dto/demoScenes.dto'; +import { + AddDemoItemAccumulateForSceneDto, + CreateScenesDto, + DeleteSceneDto, +} from '@/rgvsale/dto/demoScenes.dto'; import { ChangeUseStateDto, CreateScenesProblemDto, - DeleteScenesProblemDto, EditScenesProblemDto, + DeleteScenesProblemDto, + EditScenesProblemDto, GetScenesProblemPageDto, } from '@/rgvsale/dto/demoScenesProblem.dto'; @Controller('rgvsale') export class RgvsaleController { - constructor(private readonly rgvsaleService: RgvsaleService) { - } + constructor(private readonly rgvsaleService: RgvsaleService) {} //#region 产品 // 分页获取产品列表 // , @getUserinfo() userInfo: UserInfoDto @Get('/products/getPage') - getProductPage(@Query(new ValidationPipe({ transform: true })) query: GetProductPageDto, @getUserinfo() userInfo: UserInfoDto): Promise { + getProductPage( + @Query(new ValidationPipe({ transform: true })) + query: GetProductPageDto, + @getUserinfo() userInfo: UserInfoDto, + ): Promise { return this.rgvsaleService.getProductPage(query); } @@ -69,7 +94,10 @@ export class RgvsaleController { // 新增产品 @Post('/products/createProduct') - createProduct(@Body() body: CreateProductDto, @getUserinfo() userInfo: UserInfoDto): Promise { + createProduct( + @Body() body: CreateProductDto, + @getUserinfo() userInfo: UserInfoDto, + ): Promise { return this.rgvsaleService.createProduct(body, userInfo); } @@ -90,13 +118,19 @@ export class RgvsaleController { //分页获取账户列表 @Get('/productsAccount/getPage') - getAccountPage(@Query(new ValidationPipe({ transform: true })) query: GetAccountPageDto): Promise { + getAccountPage( + @Query(new ValidationPipe({ transform: true })) + query: GetAccountPageDto, + ): Promise { return this.rgvsaleService.getAccountPage(query); } // 创建账户 @Post('/productsAccount/createAccount') - createAccount(@Body() body: CreateAccountDto, @getUserinfo() userInfo: UserInfoDto): Promise { + createAccount( + @Body() body: CreateAccountDto, + @getUserinfo() userInfo: UserInfoDto, + ): Promise { return this.rgvsaleService.createAccount(body, userInfo); } @@ -117,19 +151,26 @@ export class RgvsaleController { // 分页查询演示项列表 @Get('/demoItems/getPage') - getDemoPage(@Query(new ValidationPipe({ transform: true })) query: GetDemoItemPageDto, @getUserinfo() userInfo: UserInfoDto): Promise { + getDemoPage( + @Query(new ValidationPipe({ transform: true })) + query: GetDemoItemPageDto, + @getUserinfo() userInfo: UserInfoDto, + ): Promise { return this.rgvsaleService.getDemoPage(query); } // 获取产品演示项列表 @Get('/demoItems/getList') - getDemoList(@Query() params: GetDemoItemListDto){ - return this.rgvsaleService.getDemoList(params) + getDemoList(@Query() params: GetDemoItemListDto) { + return this.rgvsaleService.getDemoList(params); } // 添加演示项 @Post('/demoItems/createItem') - createDemo(@Body() body: CreateDemoItemDto, @getUserinfo() userInfo: UserInfoDto) { + createDemo( + @Body() body: CreateDemoItemDto, + @getUserinfo() userInfo: UserInfoDto, + ) { return this.rgvsaleService.createDemo(body, userInfo); } @@ -151,20 +192,23 @@ export class RgvsaleController { // 文件上传 @Post('/upload') - upload(@Body() body, @getUserinfo() userInfo: UserInfoDto): Promise { + upload( + @Body() body, + @getUserinfo() userInfo: UserInfoDto, + ): Promise { return this.rgvsaleService.upload(body, userInfo); } // 文件下载 @Get('download/:id') async download(@Param('id') id: string, @Res() res) { - return this.rgvsaleService.download(id, res) + return this.rgvsaleService.download(id, res); } // 静态文件 @Get('staticFile/:id') async staticFile(@Param('id') id: string, @Res() res) { - return this.rgvsaleService.download(id, res) + return this.rgvsaleService.download(id, res); } //#endregion @@ -173,32 +217,38 @@ export class RgvsaleController { //分页获取行业列表 @Get('/productsIndustry/getPage') - getIndustryPage(@Query() params: GetIndustryPageDto, @getUserinfo() userInfo: UserInfoDto) { - return this.rgvsaleService.getIndustryPage(params, userInfo) + getIndustryPage( + @Query() params: GetIndustryPageDto, + @getUserinfo() userInfo: UserInfoDto, + ) { + return this.rgvsaleService.getIndustryPage(params, userInfo); } // 获取行业下拉列表 @Get('/productsIndustry/getList') - getIndustryList(@Query() params: GetIndustryListDto){ - return this.rgvsaleService.getIndustryList(params) + getIndustryList(@Query() params: GetIndustryListDto) { + return this.rgvsaleService.getIndustryList(params); } // 创建行业 @Post('/productsIndustry/createIndustry') - createIndustry(@Body() body: CreateIndustryDto, @getUserinfo() userInfo: UserInfoDto) { - return this.rgvsaleService.createIndustry(body, userInfo) + createIndustry( + @Body() body: CreateIndustryDto, + @getUserinfo() userInfo: UserInfoDto, + ) { + return this.rgvsaleService.createIndustry(body, userInfo); } // 删除行业 @Delete('/productsIndustry/deleteIndustry') deleteIndustry(@Body() body: DeleteIndustryDto) { - return this.rgvsaleService.deleteIndustry(body) + return this.rgvsaleService.deleteIndustry(body); } // 编辑行业 @Patch('/productsIndustry/editIndustry') editIndustry(@Body() body: EditIndustryDto) { - return this.rgvsaleService.editIndustry(body) + return this.rgvsaleService.editIndustry(body); } //#endregion @@ -206,53 +256,70 @@ export class RgvsaleController { //#region 演示项 // 获取演示方案树 @Get('/productsProgramme/getTree') - getProductsProgrammeTree(@getUserinfo() userInfo: UserInfoDto){ - return this.rgvsaleService.getProductsProgrammeTree(userInfo) + getProductsProgrammeTree(@getUserinfo() userInfo: UserInfoDto) { + return this.rgvsaleService.getProductsProgrammeTree(userInfo); } // 新增演示方案 @Post('/productsProgramme/createProgramme') - createProductsProgramme(@Body() body: CreateProgrammeDto, @getUserinfo() userInfo: UserInfoDto){ - return this.rgvsaleService.createProductsProgramme(body, userInfo) + createProductsProgramme( + @Body() body: CreateProgrammeDto, + @getUserinfo() userInfo: UserInfoDto, + ) { + return this.rgvsaleService.createProductsProgramme(body, userInfo); } // 删除演示方案 @Delete('/productsProgramme/deleteProgramme') - deleteProductsProgramme(@Body() body: DeleteProgrammeDto){ - return this.rgvsaleService.deleteProductsProgramme(body) + deleteProductsProgramme(@Body() body: DeleteProgrammeDto) { + return this.rgvsaleService.deleteProductsProgramme(body); } // 编辑演示方案 @Patch('/productsProgramme/editProgramme') - editProductsProgramme(@Body() body: EditProgrammeDto, @getUserinfo() userInfo: UserInfoDto){ - return this.rgvsaleService.editProductsProgramme(body, userInfo) + editProductsProgramme( + @Body() body: EditProgrammeDto, + @getUserinfo() userInfo: UserInfoDto, + ) { + return this.rgvsaleService.editProductsProgramme(body, userInfo); } // 排序方案演示项 @Patch('/productsProgramme/editDemoItemsListRank') - editProductsProgrammeForDemoItemsListRank(@Body() body: EditDemoItemsListRankDto){ - return this.rgvsaleService.editProductsProgrammeForDemoItemsListRank(body) + editProductsProgrammeForDemoItemsListRank( + @Body() body: EditDemoItemsListRankDto, + ) { + return this.rgvsaleService.editProductsProgrammeForDemoItemsListRank( + body, + ); } // 获取个人方案分页 @Get('/productsProgramme/getPage') - getProductsProgrammePage(@Query() params: GetProgrammePageDto, @getUserinfo() userInfo: UserInfoDto){ - return this.rgvsaleService.getProductsProgrammePage(params, userInfo) + getProductsProgrammePage( + @Query() params: GetProgrammePageDto, + @getUserinfo() userInfo: UserInfoDto, + ) { + return this.rgvsaleService.getProductsProgrammePage(params, userInfo); } // 获取方案演示项分页 @Get('/productsProgramme/getDemoItemPageForProgramme') - getDemoItemPageForProgramme(@Query() params: GetDemoItemsPageForProgrammeDto){ - return this.rgvsaleService.getDemoItemPageForProgramme(params) + getDemoItemPageForProgramme( + @Query() params: GetDemoItemsPageForProgrammeDto, + ) { + return this.rgvsaleService.getDemoItemPageForProgramme(params); } // 获取方案演示项列表 @Get('/productsProgramme/getDemoItemListForProgramme') - getDemoItemListForProgramme(@Query() params: GetDemoItemsPageForProgrammeDto){ - return this.rgvsaleService.getDemoItemListForProgramme(params) + getDemoItemListForProgramme( + @Query() params: GetDemoItemsPageForProgrammeDto, + ) { + return this.rgvsaleService.getDemoItemListForProgramme(params); } // 获取我的方案列表 @Get('/productsProgramme/getList') - getProductsProgrammeList(@getUserinfo() userInfo: UserInfoDto){ - return this.rgvsaleService.getProductsProgrammeList(userInfo) + getProductsProgrammeList(@getUserinfo() userInfo: UserInfoDto) { + return this.rgvsaleService.getProductsProgrammeList(userInfo); } // 删除方案演示项 @Delete('/productsProgramme/deleteDemoItemForProgramme') - deleteDemoItemForProgramme(@Body() body: DeleteDemoItemForProgrammeDto){ - return this.rgvsaleService.deleteDemoItemForProgramme(body) + deleteDemoItemForProgramme(@Body() body: DeleteDemoItemForProgrammeDto) { + return this.rgvsaleService.deleteDemoItemForProgramme(body); } //#endregion @@ -260,61 +327,69 @@ export class RgvsaleController { // 获取我的演示现场 @Get('/demoScenes/getList') - getSceneListAndTree(@getUserinfo() userInfo: UserInfoDto){ - return this.rgvsaleService.getSceneListAndTree(userInfo) + getSceneListAndTree(@getUserinfo() userInfo: UserInfoDto) { + return this.rgvsaleService.getSceneListAndTree(userInfo); } // 根据ID获取演示现场 @Get('/demoScenes/getListById') - getListById(@Query() params: DeleteSceneDto){ - return this.rgvsaleService.getListById(params) + getListById(@Query() params: DeleteSceneDto) { + return this.rgvsaleService.getListById(params); } // 创建演示现场 @Post('/demoScenes/createScene') - createScene(@Body() body: CreateScenesDto, @getUserinfo() userInfo: UserInfoDto){ - return this.rgvsaleService.createScene(body, userInfo) + createScene( + @Body() body: CreateScenesDto, + @getUserinfo() userInfo: UserInfoDto, + ) { + return this.rgvsaleService.createScene(body, userInfo); } // 删除演示现场 @Delete('/demoScenes/deleteScene') - deleteScene(@Body() body:DeleteSceneDto){ - return this.rgvsaleService.deleteScene(body) + deleteScene(@Body() body: DeleteSceneDto) { + return this.rgvsaleService.deleteScene(body); } // @Patch('/demoScenes/addSceneRecordDemoItem') - addDemoItemAccumulateForScene(@Body() body: AddDemoItemAccumulateForSceneDto){ - return this.rgvsaleService.addDemoItemAccumulateForScene(body) + addDemoItemAccumulateForScene( + @Body() body: AddDemoItemAccumulateForSceneDto, + ) { + return this.rgvsaleService.addDemoItemAccumulateForScene(body); } //#endregion //#region 问题 - 获取问题分页 + 获取问题分页; @Get('/demoScenesProblem/getScenesProblemList') - getScenesProblemList(@Query() params: GetScenesProblemPageDto){ - return this.rgvsaleService.getScenesProblemList(params) + getScenesProblemList(@Query() params: GetScenesProblemPageDto) { + return this.rgvsaleService.getScenesProblemList(params); } - 创建问题 + 创建问题; @Post('/demoScenesProblem/createScenesProblem') - createScenesProblem(@Body() body: CreateScenesProblemDto, @getUserinfo() userInfo: UserInfoDto){ - return this.rgvsaleService.createScenesProblem(body, userInfo) + createScenesProblem( + @Body() body: CreateScenesProblemDto, + @getUserinfo() userInfo: UserInfoDto, + ) { + return this.rgvsaleService.createScenesProblem(body, userInfo); } - 删除问题 + 删除问题; @Delete('/demoScenesProblem/deleteScenesProblem') - deleteScenesProblem(@Body() body: DeleteScenesProblemDto){ - return this.rgvsaleService.deleteScenesProblem(body) + deleteScenesProblem(@Body() body: DeleteScenesProblemDto) { + return this.rgvsaleService.deleteScenesProblem(body); } - 编辑问题 + 编辑问题; @Patch('/demoScenesProblem/editScenesProblem') - editScenesProblem(@Body() body: EditScenesProblemDto){ - return this.rgvsaleService.editScenesProblem(body) + editScenesProblem(@Body() body: EditScenesProblemDto) { + return this.rgvsaleService.editScenesProblem(body); } - 修改问题利用状态 + 修改问题利用状态; @Patch('/demoScenesProblem/changeUseState') - changeScenesProblemUseState(@Body() body: ChangeUseStateDto){ - return this.rgvsaleService.changeScenesProblemUseState(body) + changeScenesProblemUseState(@Body() body: ChangeUseStateDto) { + return this.rgvsaleService.changeScenesProblemUseState(body); } //#endregion } diff --git a/src/rgvsale/rgvsale.module.ts b/src/rgvsale/rgvsale.module.ts index 8b37c16..c00292e 100644 --- a/src/rgvsale/rgvsale.module.ts +++ b/src/rgvsale/rgvsale.module.ts @@ -3,7 +3,7 @@ import { RgvsaleService } from './rgvsale.service'; import { RgvsaleController } from './rgvsale.controller'; @Module({ - controllers: [RgvsaleController], - providers: [RgvsaleService] + controllers: [RgvsaleController], + providers: [RgvsaleService], }) export class RgvsaleModule {} diff --git a/src/rgvsale/rgvsale.service.ts b/src/rgvsale/rgvsale.service.ts index 16e48ad..2c20168 100644 --- a/src/rgvsale/rgvsale.service.ts +++ b/src/rgvsale/rgvsale.service.ts @@ -1,10 +1,25 @@ -import { HttpException, HttpStatus, Injectable, Response } from '@nestjs/common'; +import { + HttpException, + HttpStatus, + Injectable, + Response, +} from '@nestjs/common'; import { GdatabaseService } from '@/Gservice/GDATABASE/gdatabase.service'; import { ConfigService } from '@nestjs/config'; import { GloggerService } from '@/Gservice/GLOGGER/glogger.service'; -import { GetProductPageDto, CreateProductDto, EditProductDto, DeleteProductDto } from './dto/product.dto'; +import { + GetProductPageDto, + CreateProductDto, + EditProductDto, + DeleteProductDto, +} from './dto/product.dto'; import { UserInfoDto } from './dto/userInfo.dto'; -import { CreateAccountDto, EditAccountDto, DeleteAccountDto, GetAccountPageDto } from '@/rgvsale/dto/account.dto'; +import { + CreateAccountDto, + EditAccountDto, + DeleteAccountDto, + GetAccountPageDto, +} from '@/rgvsale/dto/account.dto'; import { GetDemoItemPageDto, CreateDemoItemDto, @@ -13,7 +28,7 @@ import { GetDemoItemListDto, } from '@/rgvsale/dto/demoItem.dto'; import { createWriteStream, createReadStream } from 'fs'; -import {join} from 'path' +import { join } from 'path'; import { CreateIndustryDto, DeleteIndustryDto, @@ -22,10 +37,13 @@ import { GetIndustryPageDto, } from '@/rgvsale/dto/industry.dto'; import { - CreateProgrammeDto, DeleteDemoItemForProgrammeDto, + CreateProgrammeDto, + DeleteDemoItemForProgrammeDto, DeleteProgrammeDto, EditDemoItemsListRankDto, - EditProgrammeDto, GetDemoItemsPageForProgrammeDto, GetProgrammePageDto, + EditProgrammeDto, + GetDemoItemsPageForProgrammeDto, + GetProgrammePageDto, } from '@/rgvsale/dto/productsProgramme.dto'; import { of } from 'rxjs'; import { FastifyRequest } from 'fastify/types/request'; @@ -36,15 +54,16 @@ import { EditSceneDto, } from '@/rgvsale/dto/demoScenes.dto'; -import {GetScenesProblemPageDto, +import { + GetScenesProblemPageDto, CreateScenesProblemDto, EditScenesProblemDto, DeleteScenesProblemDto, - ChangeUseStateDto} from '@/rgvsale/dto/demoScenesProblem.dto' + ChangeUseStateDto, +} from '@/rgvsale/dto/demoScenesProblem.dto'; @Injectable() export class RgvsaleService { - constructor( // @ 配置文件服务 private readonly config: ConfigService, @@ -52,8 +71,7 @@ export class RgvsaleService { private readonly logger: GloggerService, // @ 数据库服务 private readonly database: GdatabaseService, - ) { - } + ) {} //#region 产品 @@ -78,7 +96,6 @@ export class RgvsaleService { [(pageNum - 1) * pageSize, pageSize], ); rowData = datarows; - } catch (e) { return { data: e, @@ -102,10 +119,7 @@ export class RgvsaleService { public async getProductList() { const SQL = `SELECT * FROM products_info WHERE isDelete = 0 ORDER BY id DESC`; try { - const [rows, results] = await this.database.DB.execute( - SQL, - [], - ); + const [rows, results] = await this.database.DB.execute(SQL, []); return { data: rows, success: true, @@ -122,30 +136,38 @@ export class RgvsaleService { // 新增产品 public async createProduct(body: CreateProductDto, userInfo: UserInfoDto) { - try{ + try { // 重名校验 - const SQL = `SELECT id FROM products_info WHERE productsName = ? AND isDelete = 0;` - const [row] = await this.database.DB.execute(SQL, [body.productName]) + const SQL = `SELECT id FROM products_info WHERE productsName = ? AND isDelete = 0;`; + const [row] = await this.database.DB.execute(SQL, [ + body.productName, + ]); console.log(row); - if(row.length != 0){ + if (row.length != 0) { return { data: {}, message: '新增产品失败,产品重名!', success: false, - } + }; } - }catch (e) { + } catch (e) { return { data: e, message: '新增产品失败,产品名称查重失败!', success: false, - } + }; } try { const createTime = new Date(); const [rows] = await this.database.DB.execute( `INSERT INTO products_info (productsName, productsDescription, productsUrl, createtime, createuser) VALUES (?, ?, ?, ?, ?);`, - [body.productName, body.productDescription, body.productsUrl, createTime, userInfo.userId], + [ + body.productName, + body.productDescription, + body.productsUrl, + createTime, + userInfo.userId, + ], ); } catch (e) { return { @@ -184,28 +206,36 @@ export class RgvsaleService { // 编辑产品 public async editProduct(body: EditProductDto) { - try{ + try { // 重名校验 - const SQL = `SELECT id FROM products_info WHERE productsName = ? AND isDelete = 0 AND id != ?;` - const [row] = await this.database.DB.execute(SQL, [body.productName, body.productId]) - if(row.length != 0){ + const SQL = `SELECT id FROM products_info WHERE productsName = ? AND isDelete = 0 AND id != ?;`; + const [row] = await this.database.DB.execute(SQL, [ + body.productName, + body.productId, + ]); + if (row.length != 0) { return { data: {}, message: '编辑产品失败,产品重名!', success: false, - } + }; } - }catch (e) { + } catch (e) { return { data: e, message: '编辑产品失败,产品名称查重失败!', success: false, - } + }; } try { const [rows] = await this.database.DB.execute( `UPDATE products_info SET productsName = ?, productsDescription = ?, productsUrl = ? WHERE id = ?;`, - [body.productName, body.productDescription, body.productUrl, body.productId], + [ + body.productName, + body.productDescription, + body.productUrl, + body.productId, + ], ); } catch (e) { return { @@ -238,14 +268,21 @@ export class RgvsaleService { : `SELECT COUNT(*) FROM products_account WHERE isDelete = 0`; const [rows, results] = productId ? await this.database.DB.execute(TotalSQL, [params.productId]) - : await this.database.DB.execute(TotalSQL, []) + : await this.database.DB.execute(TotalSQL, []); total = rows[0]['COUNT(*)']; const DataSQL = productId ? `SELECT * FROM products_account WHERE isDelete = 0 AND productsInfoId = ? ORDER BY id DESC limit ?,?` - : `SELECT * FROM products_account WHERE isDelete = 0 ORDER BY id DESC limit ?,?` - const [datarows, dataresults] =productId - ? await this.database.DB.execute(DataSQL, [productId, (pageNum - 1) * pageSize, pageSize]) - : await this.database.DB.execute(DataSQL, [(pageNum - 1) * pageSize, pageSize]) + : `SELECT * FROM products_account WHERE isDelete = 0 ORDER BY id DESC limit ?,?`; + const [datarows, dataresults] = productId + ? await this.database.DB.execute(DataSQL, [ + productId, + (pageNum - 1) * pageSize, + pageSize, + ]) + : await this.database.DB.execute(DataSQL, [ + (pageNum - 1) * pageSize, + pageSize, + ]); rowData = datarows; } catch (e) { return { @@ -255,14 +292,16 @@ export class RgvsaleService { }; } // 获取产品 - const productIdList = Array.from(new Set(rowData.map(i => i.productsInfoId))) - let allProduct = [] - try{ - const setl = productIdList.join(',') + const productIdList = Array.from( + new Set(rowData.map((i) => i.productsInfoId)), + ); + let allProduct = []; + try { + const setl = productIdList.join(','); const SQL = `SELECT id, productsName FROM products_info WHERE id IN (${setl})`; const [row, result] = await this.database.DB.execute(SQL, []); - allProduct = row - }catch (e) { + allProduct = row; + } catch (e) { return { data: e, message: '获取产品账户出现错误!', @@ -270,12 +309,14 @@ export class RgvsaleService { }; } // 展开产品 - rowData = rowData.map(i => { + rowData = rowData.map((i) => { return { ...i, - productsName: allProduct.filter(j => j.id == i.productsInfoId)[0]?.productsName - } - }) + productsName: allProduct.filter( + (j) => j.id == i.productsInfoId, + )[0]?.productsName, + }; + }); return { data: { total, @@ -290,30 +331,41 @@ export class RgvsaleService { // 创建账户 public async createAccount(body: CreateAccountDto, userInfo: UserInfoDto) { - const {productId,accountPassword,accountUsername,accountRoleName,} = body - try{ + const { productId, accountPassword, accountUsername, accountRoleName } = + body; + try { // 重名校验 - const SQL = `SELECT id FROM products_account WHERE accountName = ? AND productsInfoId = ? AND isDelete = 0;` - const [row] = await this.database.DB.execute(SQL, [accountUsername, productId]) - if(row.length != 0){ + const SQL = `SELECT id FROM products_account WHERE accountName = ? AND productsInfoId = ? AND isDelete = 0;`; + const [row] = await this.database.DB.execute(SQL, [ + accountUsername, + productId, + ]); + if (row.length != 0) { return { data: {}, message: '新增产品账户失败,账户重名!', success: false, - } + }; } - }catch (e) { + } catch (e) { return { data: e, message: '新增产品账户失败,账户名称查重失败!', success: false, - } + }; } try { const createTime = new Date(); const [rows] = await this.database.DB.execute( `INSERT INTO products_account (productsInfoId, accountName, accountPass, accountRole, createtime, createuser) VALUES (?, ?, ?, ?, ?, ?);`, - [body.productId, body.accountUsername, body.accountPassword, body.accountRoleName, createTime, userInfo.userId], + [ + body.productId, + body.accountUsername, + body.accountPassword, + body.accountRoleName, + createTime, + userInfo.userId, + ], ); } catch (e) { return { @@ -352,28 +404,37 @@ export class RgvsaleService { // 编辑账户 public async editAccount(body: EditAccountDto) { - try{ + try { // 重名校验 - const SQL = `SELECT id FROM products_account WHERE accountName = ? AND isDelete = 0 AND id != ?;` - const [row] = await this.database.DB.execute(SQL, [body.accountUsername, body.accountId]) - if(row.length != 0){ + const SQL = `SELECT id FROM products_account WHERE accountName = ? AND isDelete = 0 AND id != ?;`; + const [row] = await this.database.DB.execute(SQL, [ + body.accountUsername, + body.accountId, + ]); + if (row.length != 0) { return { data: {}, message: '编辑产品账户失败,账户重名!', success: false, - } + }; } - }catch (e) { + } catch (e) { return { data: {}, message: '编辑产品账户失败,账户名称查重失败!', success: false, - } + }; } try { const [rows] = await this.database.DB.execute( `UPDATE products_account SET accountName = ?, productsInfoId =?, accountPass = ?, accountRole = ? WHERE id = ?;`, - [body.accountUsername,body.productId, body.accountPassword, body.accountRoleName, body.accountId], + [ + body.accountUsername, + body.productId, + body.accountPassword, + body.accountRoleName, + body.accountId, + ], ); } catch (e) { return { @@ -406,14 +467,21 @@ export class RgvsaleService { : `SELECT COUNT(*) FROM demo_items WHERE isDelete = 0`; const [rows, results] = productId ? await this.database.DB.execute(TotalSQL, [productId]) - : await this.database.DB.execute(TotalSQL, []) + : await this.database.DB.execute(TotalSQL, []); total = rows[0]['COUNT(*)']; const DataSQL = productId ? `SELECT * FROM demo_items WHERE isDelete = 0 AND productsInfoId = ? ORDER BY id DESC limit ?,?` : `SELECT * FROM demo_items WHERE isDelete = 0 ORDER BY id DESC limit ?,?`; const [datarows, dataresults] = productId - ? await this.database.DB.execute(DataSQL, [productId, (pageNum - 1) * pageSize, pageSize]) - : await this.database.DB.execute(DataSQL, [(pageNum - 1) * pageSize, pageSize]); + ? await this.database.DB.execute(DataSQL, [ + productId, + (pageNum - 1) * pageSize, + pageSize, + ]) + : await this.database.DB.execute(DataSQL, [ + (pageNum - 1) * pageSize, + pageSize, + ]); rowData = datarows; } catch (e) { return { @@ -423,14 +491,16 @@ export class RgvsaleService { }; } // 获取产品 - const productIdList = Array.from(new Set(rowData.map(i => i.productsInfoId))) - let allProduct = [] - try{ - const setl = productIdList.join(',') + const productIdList = Array.from( + new Set(rowData.map((i) => i.productsInfoId)), + ); + let allProduct = []; + try { + const setl = productIdList.join(','); const SQL = `SELECT id, productsName FROM products_info WHERE id IN (${setl})`; const [row, result] = await this.database.DB.execute(SQL, []); - allProduct = row - }catch (e) { + allProduct = row; + } catch (e) { return { data: e, message: '获取产品账户出现错误!', @@ -438,21 +508,23 @@ export class RgvsaleService { }; } // 展开产品 - rowData = rowData.map(i => { + rowData = rowData.map((i) => { return { ...i, - productsName: allProduct.filter(j => j.id == i.productsInfoId)[0]?.productsName - } - }) + productsName: allProduct.filter( + (j) => j.id == i.productsInfoId, + )[0]?.productsName, + }; + }); return { data: { total, pageNum, pageSize, - rowData: rowData.map(i => { - const obj = {...i}; - obj.itemUrl = '/api/rgvsale/staticFile/' + obj.itemUrl - return obj + rowData: rowData.map((i) => { + const obj = { ...i }; + obj.itemUrl = '/api/rgvsale/staticFile/' + obj.itemUrl; + return obj; }), }, success: true, @@ -461,24 +533,26 @@ export class RgvsaleService { } // 获取演示项下拉列表 - public async getDemoList(params: GetDemoItemListDto){ - const {productId} = params - let SQL, SQLData - if(productId){ - SQL = "SELECT id, itemName FROM demo_items WHERE isDelete = 0 AND productsInfoId = ? ORDER BY id DESC" - SQLData = [productId] - }else{ - SQL = "SELECT id, itemName FROM demo_items WHERE isDelete = 0 ORDER BY id DESC" - SQLData = [] - } - try{ - const [row] = await this.database.DB.execute(SQL, SQLData) + public async getDemoList(params: GetDemoItemListDto) { + const { productId } = params; + let SQL, SQLData; + if (productId) { + SQL = + 'SELECT id, itemName FROM demo_items WHERE isDelete = 0 AND productsInfoId = ? ORDER BY id DESC'; + SQLData = [productId]; + } else { + SQL = + 'SELECT id, itemName FROM demo_items WHERE isDelete = 0 ORDER BY id DESC'; + SQLData = []; + } + try { + const [row] = await this.database.DB.execute(SQL, SQLData); return { data: row, message: '获取演示项列表成功!', success: true, }; - }catch (e) { + } catch (e) { return { data: e, message: '获取演示项列表出现错误!', @@ -489,29 +563,35 @@ export class RgvsaleService { // 添加演示项 public async createDemo(body: CreateDemoItemDto, userInfo: UserInfoDto) { - try{ + try { // 重名校验 - const SQL = `SELECT id FROM demo_items WHERE itemName = ? AND isDelete = 0;` - const [row] = await this.database.DB.execute(SQL, [body.itemName]) - if(row.length != 0){ + const SQL = `SELECT id FROM demo_items WHERE itemName = ? AND isDelete = 0;`; + const [row] = await this.database.DB.execute(SQL, [body.itemName]); + if (row.length != 0) { return { data: {}, message: '新增产品失败,演示项重名!', success: false, - } + }; } - }catch (e) { + } catch (e) { return { data: {}, message: '新增产品失败,演示项名称查重失败!', success: false, - } + }; } try { const createTime = new Date(); const [rows] = await this.database.DB.execute( `INSERT INTO demo_items (productsInfoId, itemName, itemUrl, createtime, createuser) VALUES (?, ?, ?, ?, ?);`, - [body.productId, body.itemName, body.itemUrl, createTime, userInfo.userId], + [ + body.productId, + body.itemName, + body.itemUrl, + createTime, + userInfo.userId, + ], ); } catch (e) { return { @@ -550,23 +630,26 @@ export class RgvsaleService { // 编辑演示项 public async editDemo(body: EditDemoItemDto) { - try{ + try { // 重名校验 - const SQL = `SELECT id FROM demo_items WHERE itemName = ? AND isDelete = 0 AND id != ?;` - const [row] = await this.database.DB.execute(SQL, [body.itemName, body.itemId]) - if(row.length != 0){ + const SQL = `SELECT id FROM demo_items WHERE itemName = ? AND isDelete = 0 AND id != ?;`; + const [row] = await this.database.DB.execute(SQL, [ + body.itemName, + body.itemId, + ]); + if (row.length != 0) { return { data: {}, message: '编辑产品失败,演示项重名!', success: false, - } + }; } - }catch (e) { + } catch (e) { return { data: {}, message: '编辑产品失败,演示项名称查重失败!', success: false, - } + }; } try { const [rows] = await this.database.DB.execute( @@ -592,43 +675,50 @@ export class RgvsaleService { //#region 文件 // 上传文件 - public async upload(body, userInfo){ - const { file } = body - if(file.length == 0){ + public async upload(body, userInfo) { + const { file } = body; + if (file.length == 0) { return { data: {}, message: '未找到文件!', success: false, - } + }; } - try{ - await this.uploadCertificate(file) + try { + await this.uploadCertificate(file); console.log(file); - const createtime = new Date() - const SQL = `INSERT INTO file (filename, filesize, createtime, createuser) VALUES (?, ?, ?, ?);` - const [row, results] = await this.database.DB.execute(SQL, [file[0].filename, file[0].data.length, createtime, userInfo.userId]) + const createtime = new Date(); + const SQL = `INSERT INTO file (filename, filesize, createtime, createuser) VALUES (?, ?, ?, ?);`; + const [row, results] = await this.database.DB.execute(SQL, [ + file[0].filename, + file[0].data.length, + createtime, + userInfo.userId, + ]); return { data: { filename: file[0].filename, filepath: '/api/rgvsale/staticFile/' + row.insertId, - filesize: file[0].data.length + filesize: file[0].data.length, }, message: '文件上传成功!', success: true, - } - }catch (e) { + }; + } catch (e) { return { data: e, message: '文件上传失败!', success: false, - } + }; } } // 保存文件 //重要的是先写入流 然后再读流,把读到的数据append到formData的对象中 private async uploadCertificate(file) { - const writerStream = createWriteStream(join('./file', `${file[0].filename}`)); + const writerStream = createWriteStream( + join('./file', `${file[0].filename}`), + ); writerStream.write(file[0].data); await writerStream.end(); // const readerStream = createReadStream(join(__dirname, `${file[0].filename}`)); @@ -642,23 +732,25 @@ export class RgvsaleService { const dm = decimals < 0 ? 0 : decimals; const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; const i = Math.floor(Math.log(bytes) / Math.log(k)); - return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]; + return ( + parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i] + ); } // 下载文件 - public async download(id, res){ - let filename - try{ - filename = await this.getFilePath(id) - }catch (e) { - throw new HttpException( - e, - HttpStatus.SERVICE_UNAVAILABLE, - ); - } - const readerStream = createReadStream(join('./file', filename)) - res.header('Content-Type', 'application/octet-stream') - res.header('Content-Disposition', 'attachment; filename=' + encodeURIComponent(filename)) + public async download(id, res) { + let filename; + try { + filename = await this.getFilePath(id); + } catch (e) { + throw new HttpException(e, HttpStatus.SERVICE_UNAVAILABLE); + } + const readerStream = createReadStream(join('./file', filename)); + res.header('Content-Type', 'application/octet-stream'); + res.header( + 'Content-Disposition', + 'attachment; filename=' + encodeURIComponent(filename), + ); // readerStream.pipe(res) readerStream.on('error', () => { throw new HttpException( @@ -666,34 +758,31 @@ export class RgvsaleService { HttpStatus.SERVICE_UNAVAILABLE, ); }); - res.send(readerStream) + res.send(readerStream); } // 静态文件 - public async staticFile(id, res){ - let filename - try{ - filename = await this.getFilePath(id) - }catch (e) { - throw new HttpException( - e, - HttpStatus.SERVICE_UNAVAILABLE, - ); + public async staticFile(id, res) { + let filename; + try { + filename = await this.getFilePath(id); + } catch (e) { + throw new HttpException(e, HttpStatus.SERVICE_UNAVAILABLE); } - res.sendFile(join('./file', filename)) + res.sendFile(join('./file', filename)); } // 获取文件地址 - private async getFilePath(id){ - const SQL = `SELECT filename FROM file WHERE uuid = ? AND isDelete = 0;` - const [row] = await this.database.DB.execute(SQL, [Number(id)]) - if(row.length == 0){ + private async getFilePath(id) { + const SQL = `SELECT filename FROM file WHERE uuid = ? AND isDelete = 0;`; + const [row] = await this.database.DB.execute(SQL, [Number(id)]); + if (row.length == 0) { throw new HttpException( '下载失败,不存在该文件', HttpStatus.SERVICE_UNAVAILABLE, ); } - return row[0].filename + return row[0].filename; } //#endregion @@ -713,14 +802,21 @@ export class RgvsaleService { : `SELECT COUNT(*) FROM products_industry WHERE isDelete = 0`; const [rows, results] = productId ? await this.database.DB.execute(TotalSQL, [params.productId]) - : await this.database.DB.execute(TotalSQL, []) + : await this.database.DB.execute(TotalSQL, []); total = rows[0]['COUNT(*)']; const DataSQL = productId ? `SELECT * FROM products_industry WHERE isDelete = 0 AND productsInfoId = ? ORDER BY id DESC limit ?,?` - : `SELECT * FROM products_industry WHERE isDelete = 0 ORDER BY id DESC limit ?,?` - const [datarows, dataresults] =productId - ? await this.database.DB.execute(DataSQL, [productId, (pageNum - 1) * pageSize, pageSize]) - : await this.database.DB.execute(DataSQL, [(pageNum - 1) * pageSize, pageSize]) + : `SELECT * FROM products_industry WHERE isDelete = 0 ORDER BY id DESC limit ?,?`; + const [datarows, dataresults] = productId + ? await this.database.DB.execute(DataSQL, [ + productId, + (pageNum - 1) * pageSize, + pageSize, + ]) + : await this.database.DB.execute(DataSQL, [ + (pageNum - 1) * pageSize, + pageSize, + ]); console.log(DataSQL, (pageNum - 1) * pageSize, pageSize); rowData = datarows; } catch (e) { @@ -730,14 +826,16 @@ export class RgvsaleService { success: false, }; } - const productIdList = Array.from(new Set(rowData.map(i => i.productsInfoId))) - let allProduct = [] - try{ - const setl = productIdList.join(',') + const productIdList = Array.from( + new Set(rowData.map((i) => i.productsInfoId)), + ); + let allProduct = []; + try { + const setl = productIdList.join(','); const SQL = `SELECT id, productsName FROM products_info WHERE id IN (${setl})`; const [row, result] = await this.database.DB.execute(SQL, []); - allProduct = row - }catch (e) { + allProduct = row; + } catch (e) { return { data: e, message: '获取产品账户出现错误!', @@ -745,21 +843,23 @@ export class RgvsaleService { }; } // 展开产品 - rowData = rowData.map(i => { + rowData = rowData.map((i) => { return { ...i, - productsName: allProduct.filter(j => j.id == i.productsInfoId)[0]?.productsName - } - }) + productsName: allProduct.filter( + (j) => j.id == i.productsInfoId, + )[0]?.productsName, + }; + }); return { data: { total, pageNum, pageSize, - rowData: rowData.map(i => { - const obj = {...i}; - obj.sqlId = '/api/rgvsale/staticFile/' + obj.sqlId - return obj + rowData: rowData.map((i) => { + const obj = { ...i }; + obj.sqlId = '/api/rgvsale/staticFile/' + obj.sqlId; + return obj; }), }, success: true, @@ -769,14 +869,13 @@ export class RgvsaleService { // 获取行业下拉列表 public async getIndustryList(params: GetIndustryListDto) { - const {productId} = params - if(productId){ + const { productId } = params; + if (productId) { const SQL = `SELECT * FROM products_industry WHERE productsInfoId = ? AND isDelete = 0 ORDER BY id DESC`; try { - const [rows, results] = await this.database.DB.execute( - SQL, - [productId], - ); + const [rows, results] = await this.database.DB.execute(SQL, [ + productId, + ]); return { data: rows, success: true, @@ -789,13 +888,10 @@ export class RgvsaleService { success: false, }; } - }else{ + } else { const SQL = `SELECT * FROM products_industry WHERE isDelete = 0 ORDER BY id DESC`; try { - const [rows, results] = await this.database.DB.execute( - SQL, - [], - ); + const [rows, results] = await this.database.DB.execute(SQL, []); return { data: rows, success: true, @@ -812,30 +908,42 @@ export class RgvsaleService { } // 创建行业 - public async createIndustry(body: CreateIndustryDto, userInfo: UserInfoDto) { - try{ + public async createIndustry( + body: CreateIndustryDto, + userInfo: UserInfoDto, + ) { + try { // 重名校验 - const SQL = `SELECT id FROM products_industry WHERE industryName = ? AND isDelete = 0;` - const [row] = await this.database.DB.execute(SQL, [body.industryName]) - if(row.length != 0){ + const SQL = `SELECT id FROM products_industry WHERE industryName = ? AND isDelete = 0;`; + const [row] = await this.database.DB.execute(SQL, [ + body.industryName, + ]); + if (row.length != 0) { return { data: {}, message: '新增行业失败,行业重名!', success: false, - } + }; } - }catch (e) { + } catch (e) { return { data: e, message: '新增行业失败,行业名称查重失败!', success: false, - } + }; } try { const createTime = new Date(); const [rows] = await this.database.DB.execute( `INSERT INTO products_industry (productsInfoId, industryName, industryDescription, sqlId, createtime, createuser) VALUES (?, ?, ?, ?, ?, ?);`, - [body.productId, body.industryName, body.industryDescription, body.sqlId, createTime, userInfo.userId], + [ + body.productId, + body.industryName, + body.industryDescription, + body.sqlId, + createTime, + userInfo.userId, + ], ); } catch (e) { return { @@ -874,28 +982,37 @@ export class RgvsaleService { // 编辑行业 public async editIndustry(body: EditIndustryDto) { - try{ + try { // 重名校验 - const SQL = `SELECT id FROM products_industry WHERE industryName = ? AND isDelete = 0 AND id != ?;` - const [row] = await this.database.DB.execute(SQL, [body.industryName, body.industryId]) - if(row.length != 0){ + const SQL = `SELECT id FROM products_industry WHERE industryName = ? AND isDelete = 0 AND id != ?;`; + const [row] = await this.database.DB.execute(SQL, [ + body.industryName, + body.industryId, + ]); + if (row.length != 0) { return { data: {}, message: '编辑行业失败,行业重名!', success: false, - } + }; } - }catch (e) { + } catch (e) { return { data: {}, message: '编辑行业失败,行业名称查重失败!', success: false, - } + }; } try { const [rows] = await this.database.DB.execute( `UPDATE products_industry SET industryName = ?, productsInfoId =?, industryDescription = ?, sqlId = ? WHERE id = ?;`, - [body.industryName, body.productId, body.industryDescription, body.productId, body.industryId], + [ + body.industryName, + body.productId, + body.industryDescription, + body.productId, + body.industryId, + ], ); } catch (e) { return { @@ -915,205 +1032,269 @@ export class RgvsaleService { //#region 演示方案 // 获取演示方案树 - public async getProductsProgrammeTree(userInfo: UserInfoDto){ - const {userId} = userInfo + public async getProductsProgrammeTree(userInfo: UserInfoDto) { + const { userId } = userInfo; const Errmessage = { data: {}, message: '获取演示方案出现错误!', success: false, - } + }; // 查个人所有方案 - let allProgramme = [] - try{ - const SQL = `SELECT * FROM demo_programmes WHERE createuser = ? AND isDelete = 0 ORDER BY id DESC` + let allProgramme = []; + try { + const SQL = `SELECT * FROM demo_programmes WHERE createuser = ? AND isDelete = 0 ORDER BY id DESC`; const [row] = await this.database.DB.execute(SQL, [userId]); - allProgramme = row - allProgramme = allProgramme.map(i => { - return{ - AXID: (new Date().getTime().toString() + Math.random() * 100000).toString(), + allProgramme = row; + allProgramme = allProgramme.map((i) => { + return { + AXID: ( + new Date().getTime().toString() + + Math.random() * 100000 + ).toString(), label: i.programmeName, ...i, - } - }) - if(row.length == 0){ - return{ + }; + }); + if (row.length == 0) { + return { data: [], message: '获取演示方案成功!', success: true, - } + }; } - }catch (e) { - Errmessage.data = e - return Errmessage + } catch (e) { + Errmessage.data = e; + return Errmessage; } // 查方案所有产品 - let allProductId = Array.from(new Set(allProgramme.map(i => i.productsInfoId))) - let allProduct = [] - try{ - const setl = allProductId.join(',') + const allProductId = Array.from( + new Set(allProgramme.map((i) => i.productsInfoId)), + ); + let allProduct = []; + try { + const setl = allProductId.join(','); const SQL = `SELECT id, productsName FROM products_info WHERE id IN (${setl})`; const [row, result] = await this.database.DB.execute(SQL, []); - allProduct = row - }catch (e) { - Errmessage.data = e - return Errmessage + allProduct = row; + } catch (e) { + Errmessage.data = e; + return Errmessage; } // 查方案所有行业 - let allIndustryId = Array.from(new Set(allProgramme.map(i => i.industryId))) - let allIndustry = [] - try{ - const setl = allIndustryId.join(',') + const allIndustryId = Array.from( + new Set(allProgramme.map((i) => i.industryId)), + ); + let allIndustry = []; + try { + const setl = allIndustryId.join(','); const SQL = `SELECT id, industryName FROM products_industry WHERE id IN (${setl})`; const [row] = await this.database.DB.execute(SQL, []); - allIndustry = row - }catch (e) { - Errmessage.data = e - return Errmessage + allIndustry = row; + } catch (e) { + Errmessage.data = e; + return Errmessage; } // 查所有演示项 - let allDemoItemId = Array.from(new Set(allProgramme.map(i => JSON.parse(i.demoItemsList)).flat())) - let allDemoItem = [] - try{ - const setl = allDemoItemId.join(',') + const allDemoItemId = Array.from( + new Set( + allProgramme.map((i) => JSON.parse(i.demoItemsList)).flat(), + ), + ); + let allDemoItem = []; + try { + const setl = allDemoItemId.join(','); const SQL = `SELECT id, itemName, itemUrl FROM demo_items WHERE id IN (${setl})`; const [row] = await this.database.DB.execute(SQL, []); - allDemoItem = row - allDemoItem = allDemoItem.map(i => { - return{ - AZID: (new Date().getTime().toString() + Math.random() * 100000).toString(), + allDemoItem = row; + allDemoItem = allDemoItem.map((i) => { + return { + AZID: ( + new Date().getTime().toString() + + Math.random() * 100000 + ).toString(), label: i.itemName, ...i, - } - }) - }catch (e) { - Errmessage.data = e - return Errmessage - } - let newDemoList = [] - allDemoItemId.map(i => { - newDemoList.push(allDemoItem[allDemoItem.findIndex(j => { - return i == j.id - })]) - }) - allDemoItem = newDemoList + }; + }); + } catch (e) { + Errmessage.data = e; + return Errmessage; + } + const newDemoList = []; + allDemoItemId.map((i) => { + newDemoList.push( + allDemoItem[ + allDemoItem.findIndex((j) => { + return i == j.id; + }) + ], + ); + }); + allDemoItem = newDemoList; // 查账户 - let allAccount = [] - try{ - const setl = allProductId.join(',') + let allAccount = []; + try { + const setl = allProductId.join(','); const SQL = `SELECT id, productsInfoId, accountName, accountPass, accountRole FROM products_account WHERE productsInfoId IN (${setl}) AND isDelete = 0;`; const [row, result] = await this.database.DB.execute(SQL, []); - allAccount = row - }catch (e) { - Errmessage.data = e - return Errmessage + allAccount = row; + } catch (e) { + Errmessage.data = e; + return Errmessage; } - allProgramme = allProgramme.map(i => { + allProgramme = allProgramme.map((i) => { // 展开产品信息 - const productName = allProduct.filter(j => j.id == i.productsInfoId) + const productName = allProduct.filter( + (j) => j.id == i.productsInfoId, + ); i.productName = productName[0] ? productName[0].productsName : null; // 展开行业信息 - const industryName = allIndustry.filter(j => j.id == i.industryId) - i.industryName = industryName[0] ? industryName[0].industryName : null; + const industryName = allIndustry.filter( + (j) => j.id == i.industryId, + ); + i.industryName = industryName[0] + ? industryName[0].industryName + : null; // 展开账户信息 - const accountList = allAccount.filter(j => i.productsInfoId == j.productsInfoId) + const accountList = allAccount.filter( + (j) => i.productsInfoId == j.productsInfoId, + ); i.accountList = accountList; // 展开演示项 - i.children = JSON.parse(i.demoItemsList).map(j => { - const demoData = allDemoItem.filter(k => { - return k.id == j - }) + i.children = JSON.parse(i.demoItemsList).map((j) => { + const demoData = allDemoItem.filter((k) => { + return k.id == j; + }); const obj = { - baba:{...i}, - ...demoData[0] - } - obj.itemUrl = '/api/rgvsale/staticFile/' + obj.itemUrl - obj.AXID = (new Date().getTime().toString() + Math.random() * 100000).toString() - return obj - }) - return i - }) - let programmeTree = [] - programmeTree = allProduct.map(i => { - const programmeItem = allProgramme.filter(j => i.id == j.productsInfoId) + baba: { ...i }, + ...demoData[0], + }; + obj.itemUrl = '/api/rgvsale/staticFile/' + obj.itemUrl; + obj.AXID = ( + new Date().getTime().toString() + + Math.random() * 100000 + ).toString(); + return obj; + }); + return i; + }); + let programmeTree = []; + programmeTree = allProduct.map((i) => { + const programmeItem = allProgramme.filter( + (j) => i.id == j.productsInfoId, + ); return { productId: i.id, productName: i.productsName, - AXID:i.id, + AXID: i.id, label: i.productsName, children: programmeItem, - } - }) - return{ + }; + }); + return { data: programmeTree, message: '获取演示方案成功!', success: true, - } + }; } // 查找我的方案列表 - public async getProductsProgrammeList(userInfo:UserInfoDto){ - const {userId} = userInfo + public async getProductsProgrammeList(userInfo: UserInfoDto) { + const { userId } = userInfo; // 查个人所有方案 - try{ - const SQL = `SELECT id, programmeName FROM demo_programmes WHERE createuser = ? AND isDelete = 0 ORDER BY id DESC` + try { + const SQL = `SELECT id, programmeName FROM demo_programmes WHERE createuser = ? AND isDelete = 0 ORDER BY id DESC`; const [row] = await this.database.DB.execute(SQL, [userId]); return { data: row, message: '查找我的演示方案列表成功!', - success: true - } - }catch (e) { + success: true, + }; + } catch (e) { return { data: e, message: '获取演示方案出现错误!', success: false, - } + }; } } // 获取个人方案分页 - public async getProductsProgrammePage(params: GetProgrammePageDto, userInfo:UserInfoDto){ - function ErrReturn(e){ - return { + public async getProductsProgrammePage( + params: GetProgrammePageDto, + userInfo: UserInfoDto, + ) { + function ErrReturn(e) { + return { data: e, message: '获取演示方案出现错误!', success: false, - } + }; } let total = 0; let allProgramme = []; let { pageNum, pageSize, productId, industryId } = params; - let { userId } = userInfo + const { userId } = userInfo; if (pageNum == 0 || !pageNum) pageNum = 1; if (pageSize == 0 || !pageSize) pageSize = 10; try { let TotalSQL, TotalSQLParams, DataSQL, DataSQLParams; - if(productId != undefined && industryId == undefined){ - TotalSQL = "SELECT COUNT(*) FROM demo_programmes WHERE isDelete = 0 AND productsInfoId = ? AND createuser = ?" - DataSQL = "SELECT * FROM demo_programmes WHERE createuser = ? AND isDelete = 0 AND productsInfoId = ? ORDER BY id DESC limit ?,?" - TotalSQLParams = [productId, userId] - DataSQLParams = [userId, productId, (pageNum - 1) * pageSize, pageSize] - }else if(productId == undefined && industryId != undefined){ - TotalSQL = "SELECT COUNT(*) FROM demo_programmes WHERE isDelete = 0 AND industryId = ? AND createuser = ?" - DataSQL = "SELECT * FROM demo_programmes WHERE createuser = ? AND isDelete = 0 AND industryId = ? ORDER BY id DESC limit ?,?" - TotalSQLParams = [industryId, userId] - DataSQLParams = [userId, industryId, (pageNum - 1) * pageSize, pageSize] - }else if(productId != undefined && industryId != undefined) { - TotalSQL = "SELECT COUNT(*) FROM demo_programmes WHERE isDelete = 0 AND industryId = ? AND productsInfoId = ? AND createuser = ?" - DataSQL = "SELECT * FROM demo_programmes WHERE createuser = ? AND isDelete = 0 AND industryId = ? AND productsInfoId = ? ORDER BY id DESC limit ?,?" - TotalSQLParams = [industryId, productId, userId] - DataSQLParams = [userId, industryId, productId, (pageNum - 1) * pageSize, pageSize] - }else if(productId == undefined && industryId == undefined){ - TotalSQL = "SELECT COUNT(*) FROM demo_programmes WHERE isDelete = 0 AND createuser = ?" - DataSQL = "SELECT * FROM demo_programmes WHERE createuser = ? AND isDelete = 0 ORDER BY id DESC limit ?,?" - TotalSQLParams = [userId] - DataSQLParams = [userId, (pageNum - 1) * pageSize, pageSize] + if (productId != undefined && industryId == undefined) { + TotalSQL = + 'SELECT COUNT(*) FROM demo_programmes WHERE isDelete = 0 AND productsInfoId = ? AND createuser = ?'; + DataSQL = + 'SELECT * FROM demo_programmes WHERE createuser = ? AND isDelete = 0 AND productsInfoId = ? ORDER BY id DESC limit ?,?'; + TotalSQLParams = [productId, userId]; + DataSQLParams = [ + userId, + productId, + (pageNum - 1) * pageSize, + pageSize, + ]; + } else if (productId == undefined && industryId != undefined) { + TotalSQL = + 'SELECT COUNT(*) FROM demo_programmes WHERE isDelete = 0 AND industryId = ? AND createuser = ?'; + DataSQL = + 'SELECT * FROM demo_programmes WHERE createuser = ? AND isDelete = 0 AND industryId = ? ORDER BY id DESC limit ?,?'; + TotalSQLParams = [industryId, userId]; + DataSQLParams = [ + userId, + industryId, + (pageNum - 1) * pageSize, + pageSize, + ]; + } else if (productId != undefined && industryId != undefined) { + TotalSQL = + 'SELECT COUNT(*) FROM demo_programmes WHERE isDelete = 0 AND industryId = ? AND productsInfoId = ? AND createuser = ?'; + DataSQL = + 'SELECT * FROM demo_programmes WHERE createuser = ? AND isDelete = 0 AND industryId = ? AND productsInfoId = ? ORDER BY id DESC limit ?,?'; + TotalSQLParams = [industryId, productId, userId]; + DataSQLParams = [ + userId, + industryId, + productId, + (pageNum - 1) * pageSize, + pageSize, + ]; + } else if (productId == undefined && industryId == undefined) { + TotalSQL = + 'SELECT COUNT(*) FROM demo_programmes WHERE isDelete = 0 AND createuser = ?'; + DataSQL = + 'SELECT * FROM demo_programmes WHERE createuser = ? AND isDelete = 0 ORDER BY id DESC limit ?,?'; + TotalSQLParams = [userId]; + DataSQLParams = [userId, (pageNum - 1) * pageSize, pageSize]; } - const [rows, results] = await this.database.DB.execute(TotalSQL, TotalSQLParams) + const [rows, results] = await this.database.DB.execute( + TotalSQL, + TotalSQLParams, + ); total = rows[0]['COUNT(*)']; - const [datarows, dataresults] = await this.database.DB.execute(DataSQL, DataSQLParams) + const [datarows, dataresults] = await this.database.DB.execute( + DataSQL, + DataSQLParams, + ); allProgramme = datarows; - if(allProgramme.length == 0){ + if (allProgramme.length == 0) { return { data: { total, @@ -1123,46 +1304,56 @@ export class RgvsaleService { }, success: true, message: '获取演示方案页面成功!', - } + }; } } catch (e) { - return ErrReturn(e) + return ErrReturn(e); } // 查方案所有产品 - let allProductId = Array.from(new Set(allProgramme.map(i => i.productsInfoId))) - let allProduct = [] - try{ - const setl = allProductId.join(',') + const allProductId = Array.from( + new Set(allProgramme.map((i) => i.productsInfoId)), + ); + let allProduct = []; + try { + const setl = allProductId.join(','); const SQL = `SELECT id, productsName FROM products_info WHERE id IN (${setl})`; const [row, result] = await this.database.DB.execute(SQL, []); - allProduct = row - }catch (e) { - return ErrReturn(e) + allProduct = row; + } catch (e) { + return ErrReturn(e); } // 查方案所有行业 - let allIndustryId = Array.from(new Set(allProgramme.map(i => i.industryId))) - let allIndustry = [] - try{ - const setl = allIndustryId.join(',') + const allIndustryId = Array.from( + new Set(allProgramme.map((i) => i.industryId)), + ); + let allIndustry = []; + try { + const setl = allIndustryId.join(','); const SQL = `SELECT id, industryName FROM products_industry WHERE id IN (${setl})`; const [row] = await this.database.DB.execute(SQL, []); - allIndustry = row - }catch (e) { - return ErrReturn(e) + allIndustry = row; + } catch (e) { + return ErrReturn(e); } - allProgramme = allProgramme.map(i => { + allProgramme = allProgramme.map((i) => { // 展开产品信息 - const productName = allProduct.filter(j => j.id == i.productsInfoId) + const productName = allProduct.filter( + (j) => j.id == i.productsInfoId, + ); i.productName = productName[0] ? productName[0].productsName : null; // 展开行业信息 - const industryName = allIndustry.filter(j => j.id == i.industryId) - i.industryName = industryName[0] ? industryName[0].industryName : null; - return i - }) - allProgramme = allProgramme.map(i => { - i.demoItemsList = JSON.parse(i.demoItemsList) - return i - }) + const industryName = allIndustry.filter( + (j) => j.id == i.industryId, + ); + i.industryName = industryName[0] + ? industryName[0].industryName + : null; + return i; + }); + allProgramme = allProgramme.map((i) => { + i.demoItemsList = JSON.parse(i.demoItemsList); + return i; + }); return { data: { total, @@ -1176,24 +1367,32 @@ export class RgvsaleService { } // 获取方案演示项分页 - public async getDemoItemPageForProgramme(params: GetDemoItemsPageForProgrammeDto){ - const { programmeId, pageNum, pageSize} = params; + public async getDemoItemPageForProgramme( + params: GetDemoItemsPageForProgrammeDto, + ) { + const { programmeId, pageNum, pageSize } = params; // 查方案演示项 - let demoItemsIdList - let total - try{ - const SQL = "SELECT demoItemsList FROM demo_programmes WHERE id = ? AND isDelete = 0;" - const [rows, results] = await this.database.DB.execute(SQL, [programmeId]) - if(rows.length == 0){ + let demoItemsIdList; + let total; + try { + const SQL = + 'SELECT demoItemsList FROM demo_programmes WHERE id = ? AND isDelete = 0;'; + const [rows, results] = await this.database.DB.execute(SQL, [ + programmeId, + ]); + if (rows.length == 0) { return { data: {}, message: '未找到演示方案!', - success: false - } + success: false, + }; } - total = JSON.parse(rows[0].demoItemsList).length - demoItemsIdList = JSON.parse(rows[0].demoItemsList).splice((pageNum - 1) * pageSize, pageSize) - if(demoItemsIdList.length == 0){ + total = JSON.parse(rows[0].demoItemsList).length; + demoItemsIdList = JSON.parse(rows[0].demoItemsList).splice( + (pageNum - 1) * pageSize, + pageSize, + ); + if (demoItemsIdList.length == 0) { return { data: { total, @@ -1202,39 +1401,43 @@ export class RgvsaleService { rowData: [], }, message: '查找演示方案演示项页面成功!', - success: true - } + success: true, + }; } - }catch (e) { + } catch (e) { return { data: e, message: '查找演示方案演示项页面出现错误!', - success: false - } + success: false, + }; } - let demoList - try{ - const setl = demoItemsIdList.join(',') + let demoList; + try { + const setl = demoItemsIdList.join(','); const SQL = `SELECT * FROM demo_items WHERE id IN (${setl})`; const [row] = await this.database.DB.execute(SQL, []); - demoList = row - }catch (e) { + demoList = row; + } catch (e) { return { data: e, message: '查找演示方案演示项页面出现错误!', - success: false - } + success: false, + }; } - demoList = demoList.map(i => { - i.itemUrl = '/api/rgvsale/staticFile/' + i.itemUrl - return i - }) - let newDemoList = [] - demoItemsIdList.map(i => { - newDemoList.push(demoList[demoList.findIndex(j => { - return i == j.id - })]) - }) + demoList = demoList.map((i) => { + i.itemUrl = '/api/rgvsale/staticFile/' + i.itemUrl; + return i; + }); + const newDemoList = []; + demoItemsIdList.map((i) => { + newDemoList.push( + demoList[ + demoList.findIndex((j) => { + return i == j.id; + }) + ], + ); + }); return { data: { total, @@ -1243,115 +1446,135 @@ export class RgvsaleService { rowData: newDemoList, }, message: '查找演示方案演示项页面成功!', - success: true - } + success: true, + }; } // 获取方案演示项列表 - public async getDemoItemListForProgramme(params: GetDemoItemsPageForProgrammeDto){ + public async getDemoItemListForProgramme( + params: GetDemoItemsPageForProgrammeDto, + ) { const { programmeId } = params; // 查方案演示项 - let demoItemsIdList - let total - try{ - const SQL = "SELECT demoItemsList FROM demo_programmes WHERE id = ? AND isDelete = 0;" - const [rows, results] = await this.database.DB.execute(SQL, [programmeId]) - if(rows.length == 0){ + let demoItemsIdList; + let total; + try { + const SQL = + 'SELECT demoItemsList FROM demo_programmes WHERE id = ? AND isDelete = 0;'; + const [rows, results] = await this.database.DB.execute(SQL, [ + programmeId, + ]); + if (rows.length == 0) { return { data: {}, message: '未找到演示方案!', - success: false - } + success: false, + }; } - total = JSON.parse(rows[0].demoItemsList).length - demoItemsIdList = JSON.parse(rows[0].demoItemsList) - if(demoItemsIdList.length == 0){ + total = JSON.parse(rows[0].demoItemsList).length; + demoItemsIdList = JSON.parse(rows[0].demoItemsList); + if (demoItemsIdList.length == 0) { return { data: [], message: '查找演示方案演示项列表成功!', - success: true - } + success: true, + }; } - }catch (e) { + } catch (e) { return { data: e, message: '查找演示方案演示项列表出现错误!', - success: false - } + success: false, + }; } - let demoList - try{ - const setl = demoItemsIdList.join(',') + let demoList; + try { + const setl = demoItemsIdList.join(','); const SQL = `SELECT * FROM demo_items WHERE id IN (${setl})`; const [row] = await this.database.DB.execute(SQL, []); - demoList = row - }catch (e) { + demoList = row; + } catch (e) { return { data: e, message: '查找演示方案演示项列表出现错误!', - success: false - } + success: false, + }; } - demoList = demoList.map(i => { - i.itemUrl = '/api/rgvsale/staticFile/' + i.itemUrl - return i - }) - let newDemoList = [] - demoItemsIdList.map(i => { - newDemoList.push(demoList[demoList.findIndex(j => { - return i == j.id - })]) - }) + demoList = demoList.map((i) => { + i.itemUrl = '/api/rgvsale/staticFile/' + i.itemUrl; + return i; + }); + const newDemoList = []; + demoItemsIdList.map((i) => { + newDemoList.push( + demoList[ + demoList.findIndex((j) => { + return i == j.id; + }) + ], + ); + }); return { data: newDemoList, message: '查找演示方案演示项列表成功!', - success: true - } + success: true, + }; } - // 新增演示方案 - public async createProductsProgramme(body: CreateProgrammeDto, userInfo){ - const {industryId, productId, programmeName, demoItemsList} = body - const {userId} = userInfo - try{ + public async createProductsProgramme(body: CreateProgrammeDto, userInfo) { + const { industryId, productId, programmeName, demoItemsList } = body; + const { userId } = userInfo; + try { // 重名校验 - const SQL = `SELECT id FROM demo_programmes WHERE industryId = ? AND productsInfoId = ? AND programmeName = ? AND createuser = ? AND isDelete = 0;` - const [row] = await this.database.DB.execute(SQL, [industryId, productId, programmeName, userId]) - if(row.length != 0){ + const SQL = `SELECT id FROM demo_programmes WHERE industryId = ? AND productsInfoId = ? AND programmeName = ? AND createuser = ? AND isDelete = 0;`; + const [row] = await this.database.DB.execute(SQL, [ + industryId, + productId, + programmeName, + userId, + ]); + if (row.length != 0) { return { data: {}, message: '新增方案失败,方案重名!', success: false, - } + }; } - }catch (e) { + } catch (e) { return { data: e, message: '新增方案失败,方案名称查重失败!', success: false, - } + }; } - try{ - const createtime = new Date() + try { + const createtime = new Date(); const SQL = `INSERT INTO demo_programmes (productsInfoId, industryId, programmeName, demoItemsList, createtime, createuser) VALUES (?, ?, ?, ?, ?, ?)`; - const [row] = await this.database.DB.execute(SQL,[productId, industryId, programmeName, JSON.stringify(demoItemsList), createtime, userId]) - }catch (e) { + const [row] = await this.database.DB.execute(SQL, [ + productId, + industryId, + programmeName, + JSON.stringify(demoItemsList), + createtime, + userId, + ]); + } catch (e) { return { data: e, message: '新增方案出现错误!', success: false, - } + }; } - return{ - data:{}, + return { + data: {}, message: '新增方案成功!', success: true, - } + }; } // 删除演示方案 - public async deleteProductsProgramme(body: DeleteProgrammeDto){ + public async deleteProductsProgramme(body: DeleteProgrammeDto) { try { const [rows] = await this.database.DB.execute( `UPDATE demo_programmes SET isDelete = 1 WHERE id = ?;`, @@ -1372,510 +1595,644 @@ export class RgvsaleService { } // 编辑演示方案 - public async editProductsProgramme(body: EditProgrammeDto, userInfo:UserInfoDto){ - const {industryId, productId, programmeName, demoItemsList, programmeId} = body - const {userId} = userInfo - try{ + public async editProductsProgramme( + body: EditProgrammeDto, + userInfo: UserInfoDto, + ) { + const { + industryId, + productId, + programmeName, + demoItemsList, + programmeId, + } = body; + const { userId } = userInfo; + try { // 重名校验 - const SQL = `SELECT id FROM demo_programmes WHERE industryId = ? AND productsInfoId = ? AND programmeName = ? AND createuser = ? AND id != ? AND isDelete = 0;` - const [row] = await this.database.DB.execute(SQL, [industryId, productId, programmeName, userId, programmeId]) - if(row.length != 0){ + const SQL = `SELECT id FROM demo_programmes WHERE industryId = ? AND productsInfoId = ? AND programmeName = ? AND createuser = ? AND id != ? AND isDelete = 0;`; + const [row] = await this.database.DB.execute(SQL, [ + industryId, + productId, + programmeName, + userId, + programmeId, + ]); + if (row.length != 0) { return { data: {}, message: '编辑方案失败,方案重名!', success: false, - } + }; } - }catch (e) { + } catch (e) { return { data: e, message: '编辑方案失败,方案名称查重失败!', success: false, - } + }; } - try{ - const SQL = `UPDATE demo_programmes SET productsInfoId = ?, industryId =?, programmeName = ?, demoItemsList = ? WHERE id = ?;` - const [row] = await this.database.DB.execute(SQL, [productId, industryId, programmeName, JSON.stringify(demoItemsList), programmeId]) - }catch (e) { + try { + const SQL = `UPDATE demo_programmes SET productsInfoId = ?, industryId =?, programmeName = ?, demoItemsList = ? WHERE id = ?;`; + const [row] = await this.database.DB.execute(SQL, [ + productId, + industryId, + programmeName, + JSON.stringify(demoItemsList), + programmeId, + ]); + } catch (e) { return { data: e, message: '编辑方案出现错误!', success: false, - } + }; } - return{ - data:{}, + return { + data: {}, message: '编辑方案成功!', success: true, - } + }; } // 排序方案演示项 - public async editProductsProgrammeForDemoItemsListRank(body: EditDemoItemsListRankDto){ - const { programmeId, demoItemId, offset } = body - let demoItemsList - try{ - const SQL = `SELECT demoItemsList FROM demo_programmes WHERE id = ? AND isDelete = 0;` - const [row] = await this.database.DB.execute(SQL, [programmeId]) - if(row.length != 1){ - return{ + public async editProductsProgrammeForDemoItemsListRank( + body: EditDemoItemsListRankDto, + ) { + const { programmeId, demoItemId, offset } = body; + let demoItemsList; + try { + const SQL = `SELECT demoItemsList FROM demo_programmes WHERE id = ? AND isDelete = 0;`; + const [row] = await this.database.DB.execute(SQL, [programmeId]); + if (row.length != 1) { + return { data: {}, message: '未找到演示方案!', success: false, - } - }else{ - demoItemsList = JSON.parse(row[0].demoItemsList) + }; + } else { + demoItemsList = JSON.parse(row[0].demoItemsList); } - }catch (e) { - return{ - data:e, + } catch (e) { + return { + data: e, message: '编辑演示方案演示项顺序出现错误!', success: false, - } + }; } - if(!demoItemsList.includes(demoItemId)){ - return{ + if (!demoItemsList.includes(demoItemId)) { + return { data: {}, message: '编辑演示方案演示项顺序失败,未找到关联的演示项!', success: false, - } + }; } - const index = demoItemsList.indexOf(demoItemId) - if(offset == 0){ - if(index == demoItemsList.length - 1){ - return{ + const index = demoItemsList.indexOf(demoItemId); + if (offset == 0) { + if (index == demoItemsList.length - 1) { + return { data: {}, message: '该演示项已在最后,无法向后排序!', success: false, - } + }; } - let afterItem = demoItemsList[index + 1] - demoItemsList.splice(index, 1, afterItem) - demoItemsList.splice(index + 1, 1, demoItemId) - }else if(offset == 1){ - if(index == 0){ - return{ + const afterItem = demoItemsList[index + 1]; + demoItemsList.splice(index, 1, afterItem); + demoItemsList.splice(index + 1, 1, demoItemId); + } else if (offset == 1) { + if (index == 0) { + return { data: {}, message: '该演示项已在最前,无法向前排序!', success: false, - } + }; } - let beforeItem = demoItemsList[index - 1] - demoItemsList.splice(index - 1, 1, demoItemId) - demoItemsList.splice(index, 1, beforeItem) - }else{ - return{ + const beforeItem = demoItemsList[index - 1]; + demoItemsList.splice(index - 1, 1, demoItemId); + demoItemsList.splice(index, 1, beforeItem); + } else { + return { data: {}, message: '编辑演示方案演示项顺序失败,无法识别的偏移量!', success: false, - } + }; } - try{ - const SQL = `UPDATE demo_programmes SET demoItemsList = ? WHERE id = ?;` - const [row] = await this.database.DB.execute(SQL, [JSON.stringify(demoItemsList), programmeId]) - }catch (e) { + try { + const SQL = `UPDATE demo_programmes SET demoItemsList = ? WHERE id = ?;`; + const [row] = await this.database.DB.execute(SQL, [ + JSON.stringify(demoItemsList), + programmeId, + ]); + } catch (e) { return { data: e, message: '编辑演示方案演示项顺序出现错误!', success: false, - } + }; } - return{ - data:{}, + return { + data: {}, message: '编辑演示方案演示项顺序成功!', success: true, - } + }; } // 删除方案演示项 - public async deleteDemoItemForProgramme(body: DeleteDemoItemForProgrammeDto){ - const {demoItemId, programmeId} = body + public async deleteDemoItemForProgramme( + body: DeleteDemoItemForProgrammeDto, + ) { + const { demoItemId, programmeId } = body; // 获取演示项列表 - let demoItemIdList - try{ - const SQL = "SELECT demoItemsList FROM demo_programmes WHERE id =?;" + let demoItemIdList; + try { + const SQL = + 'SELECT demoItemsList FROM demo_programmes WHERE id =?;'; const [row] = await this.database.DB.execute(SQL, [programmeId]); - if(row.length == 0){ + if (row.length == 0) { return { data: {}, message: '未找到该演示方案!', - success: false - } + success: false, + }; } - demoItemIdList = JSON.parse(row[0].demoItemsList) - if(demoItemIdList.length == 0){ + demoItemIdList = JSON.parse(row[0].demoItemsList); + if (demoItemIdList.length == 0) { return { data: {}, message: '该方案不存在演示项!', - success: false - } + success: false, + }; } - }catch (e) { + } catch (e) { return { data: e, message: '删除方案演示项出现错误!', success: false, - } + }; } - const index = demoItemIdList.indexOf(demoItemId) - if(index > -1){ - demoItemIdList.splice(index, 1) + const index = demoItemIdList.indexOf(demoItemId); + if (index > -1) { + demoItemIdList.splice(index, 1); } - try{ - const SQL = `UPDATE demo_programmes SET demoItemsList = ? WHERE id = ?;` - const [row] = await this.database.DB.execute(SQL, [JSON.stringify(demoItemIdList), programmeId]) - }catch (e) { + try { + const SQL = `UPDATE demo_programmes SET demoItemsList = ? WHERE id = ?;`; + const [row] = await this.database.DB.execute(SQL, [ + JSON.stringify(demoItemIdList), + programmeId, + ]); + } catch (e) { return { data: e, message: '删除方案演示项出现错误!', success: false, - } + }; } return { data: {}, message: '删除方案演示项成功!', - success: true - } + success: true, + }; } //#endregion //#region 演示现场 场景 // 获取我的演示现场 - public async getSceneListAndTree(userInfo: UserInfoDto){ - const {userId} = userInfo + public async getSceneListAndTree(userInfo: UserInfoDto) { + const { userId } = userInfo; function ErrReturn(e, message = '获取演示现场出现错误!') { - return{ - data:e, + return { + data: e, message, success: false, - } + }; } // 查演示现场 - let allDemoScenes - try{ - const SQL = "SELECT * FROM demo_scenes WHERE createuser = ? AND isDelete = 0 ORDER BY id DESC;" - const [rows] = await this.database.DB.execute(SQL, [userId]) - if(rows.length == 0){ + let allDemoScenes; + try { + const SQL = + 'SELECT * FROM demo_scenes WHERE createuser = ? AND isDelete = 0 ORDER BY id DESC;'; + const [rows] = await this.database.DB.execute(SQL, [userId]); + if (rows.length == 0) { return { - data:{ + data: { productTree: null, industryTree: null, programmeTree: null, - demoSceneList: null + demoSceneList: null, }, success: true, - message: '获取演示现场成功!' - } + message: '获取演示现场成功!', + }; } - allDemoScenes = rows - }catch (e) { - return ErrReturn(e) + allDemoScenes = rows; + } catch (e) { + return ErrReturn(e); } // 数据中的方案ID列表 - const programmeIdList = Array.from(new Set(allDemoScenes.map(i => i.programmeId))) - let programmeList + const programmeIdList = Array.from( + new Set(allDemoScenes.map((i) => i.programmeId)), + ); + let programmeList; // 查演示方案 - try{ - const setl = programmeIdList.join(',') - const SQL = `SELECT id, programmeName, productsInfoId, industryId, demoItemsList FROM demo_programmes WHERE id IN (${setl});` - const [rows] = await this.database.DB.execute(SQL, []) - programmeList = rows - if(rows.length == 0) return ErrReturn({}, `未找到相应的演示方案, 方案ID:${programmeIdList}!`) - }catch (e) { - return ErrReturn(e) + try { + const setl = programmeIdList.join(','); + const SQL = `SELECT id, programmeName, productsInfoId, industryId, demoItemsList FROM demo_programmes WHERE id IN (${setl});`; + const [rows] = await this.database.DB.execute(SQL, []); + programmeList = rows; + if (rows.length == 0) + return ErrReturn( + {}, + `未找到相应的演示方案, 方案ID:${programmeIdList}!`, + ); + } catch (e) { + return ErrReturn(e); } // 产品中的产品和行业 - const productIdList = Array.from(new Set(programmeList.map(i => i.productsInfoId))) - const industryIdList = Array.from(new Set(programmeList.map(i => i.industryId))) - let productList, industryList + const productIdList = Array.from( + new Set(programmeList.map((i) => i.productsInfoId)), + ); + const industryIdList = Array.from( + new Set(programmeList.map((i) => i.industryId)), + ); + let productList, industryList; // 查产品 - try{ - const setl = productIdList.join(',') - const SQL = `SELECT id, productsName FROM products_info WHERE id IN (${setl});` - const [rows] = await this.database.DB.execute(SQL, []) - productList = rows - if(rows.length == 0) return ErrReturn({}, `未找到相应的产品, 产品ID:${productIdList}!`) - }catch (e) { - return ErrReturn(e) + try { + const setl = productIdList.join(','); + const SQL = `SELECT id, productsName, productsUrl FROM products_info WHERE id IN (${setl});`; + const [rows] = await this.database.DB.execute(SQL, []); + productList = rows; + if (rows.length == 0) + return ErrReturn( + {}, + `未找到相应的产品, 产品ID:${productIdList}!`, + ); + } catch (e) { + return ErrReturn(e); } // 查行业 - try{ - const setl = industryIdList.join(',') - const SQL = `SELECT id, industryName, productsInfoId FROM products_industry WHERE id IN (${setl});` - const [rows] = await this.database.DB.execute(SQL, []) - industryList = rows - if(rows.length == 0) return ErrReturn({}, `未找到相应的行业,行业ID:${industryIdList}!`) - }catch (e) { - return ErrReturn(e) + try { + const setl = industryIdList.join(','); + const SQL = `SELECT id, industryName, productsInfoId FROM products_industry WHERE id IN (${setl});`; + const [rows] = await this.database.DB.execute(SQL, []); + industryList = rows; + if (rows.length == 0) + return ErrReturn( + {}, + `未找到相应的行业,行业ID:${industryIdList}!`, + ); + } catch (e) { + return ErrReturn(e); } // 查账户 - let allAccount = [] - try{ - const setl = productIdList.join(',') + let allAccount = []; + try { + const setl = productIdList.join(','); const SQL = `SELECT id, productsInfoId, accountName, accountPass, accountRole FROM products_account WHERE productsInfoId IN (${setl}) AND isDelete = 0;`; const [row, result] = await this.database.DB.execute(SQL, []); - allAccount = row - }catch (e) { - return ErrReturn(e) + allAccount = row; + } catch (e) { + return ErrReturn(e); } // 为方案展开产品和行业 - programmeList = programmeList.map(i => { - const accountList = allAccount.filter(j => i.productsInfoId == j.productsInfoId) - const productData = productList.filter(j => j.id == i.productsInfoId) - const industryData = industryList.filter(j => j.id == i.industryId) - return{ + programmeList = programmeList.map((i) => { + const accountList = allAccount.filter( + (j) => i.productsInfoId == j.productsInfoId, + ); + const productData = productList.filter( + (j) => j.id == i.productsInfoId, + ); + const industryData = industryList.filter( + (j) => j.id == i.industryId, + ); + return { ...i, accountList, productName: productData[0]?.productsName, + productsUrl: productData[0]?.productsUrl, industryName: industryData[0]?.industryName, - AXID: (new Date().getTime().toString() + Math.random() * 100000).toString(), - label: i.programmeName - } - }) + AXID: ( + new Date().getTime().toString() + + Math.random() * 100000 + ).toString(), + label: i.programmeName, + }; + }); // 为现场展开方案 - allDemoScenes = allDemoScenes.map(i => { - const {productName,industryName,programmeName,demoItemsList, productsInfoId, industryId} = programmeList.filter(j => j.id == i.programmeId)[0] + allDemoScenes = allDemoScenes.map((i) => { + const { + productName, + industryName, + programmeName, + demoItemsList, + productsInfoId, + industryId, + productsUrl, + } = programmeList.filter((j) => j.id == i.programmeId)[0]; return { ...i, productName, industryName, programmeName, - demoItemsList:JSON.parse(demoItemsList), + productsUrl, + demoItemsList: JSON.parse(demoItemsList), industryId, productId: productsInfoId, - AXID:(new Date().getTime().toString() + Math.random() * 100000).toString(), - label: i.sceneName - } - }) + AXID: ( + new Date().getTime().toString() + + Math.random() * 100000 + ).toString(), + label: i.sceneName, + }; + }); // 获取第一个演示项 - const demoItemsIdListForFirst = Array.from(new Set(allDemoScenes.map(i => i.demoItemsList[0]))).filter(i => i!== undefined) - let demoItemList + const demoItemsIdListForFirst = Array.from( + new Set(allDemoScenes.map((i) => i.demoItemsList[0])), + ).filter((i) => i !== undefined); + let demoItemList; // 查演示项内容 - try{ - const setl = demoItemsIdListForFirst.join(',') - const SQL = `SELECT id, itemName, itemUrl, accumulate FROM demo_items WHERE id IN (${setl});` - const [rows] = await this.database.DB.execute(SQL, []) - demoItemList = rows - }catch (e) { - return ErrReturn(e) + try { + const setl = demoItemsIdListForFirst.join(','); + const SQL = `SELECT id, itemName, itemUrl, accumulate FROM demo_items WHERE id IN (${setl});`; + const [rows] = await this.database.DB.execute(SQL, []); + demoItemList = rows; + } catch (e) { + return ErrReturn(e); } // 展开演示项 - allDemoScenes = allDemoScenes.map(i => { - const demoItemData = demoItemList.filter(j => j.id == i.demoItemsList[0]) - if(demoItemData.length == 0){ + allDemoScenes = allDemoScenes.map((i) => { + const demoItemData = demoItemList.filter( + (j) => j.id == i.demoItemsList[0], + ); + if (demoItemData.length == 0) { return { ...i, - demoItemData:{ - id: '', itemName: '', itemUrl:'' - } - } - }else{ + demoItemData: { + id: '', + itemName: '', + itemUrl: '', + }, + }; + } else { return { ...i, demoItemData: { id: demoItemData[0].id, itemName: demoItemData[0].itemName, - itemUrl: '/api/rgvsale/staticFile/' + demoItemData[0].itemUrl, - accumulate: demoItemData[0].accumulate - } - } + itemUrl: + '/api/rgvsale/staticFile/' + + demoItemData[0].itemUrl, + accumulate: demoItemData[0].accumulate, + }, + }; } - }) + }); // 按方案成树 - let programmeTree = programmeList.map(i => { - return{ + const programmeTree = programmeList.map((i) => { + return { ...i, - children: allDemoScenes.filter(j => i.id == j.programmeId) - } - }) + children: allDemoScenes.filter((j) => i.id == j.programmeId), + }; + }); // 按行业成树 - const industryTree = industryList.map(i => { + const industryTree = industryList.map((i) => { return { ...i, - children: programmeTree.filter(j => i.id == j.industryId), - AXID:(new Date().getTime().toString() + Math.random() * 100000).toString(), - label: i.industryName - } - }) + children: programmeTree.filter((j) => i.id == j.industryId), + AXID: ( + new Date().getTime().toString() + + Math.random() * 100000 + ).toString(), + label: i.industryName, + }; + }); // 按产品分 - const productTree = productList.map(i => { - return{ + const productTree = productList.map((i) => { + return { ...i, - children: industryTree.filter(j => i.id == j.productsInfoId), - AXID:(new Date().getTime().toString() + Math.random() * 100000).toString(), - label: i.productsName - } - }) + children: industryTree.filter((j) => i.id == j.productsInfoId), + AXID: ( + new Date().getTime().toString() + + Math.random() * 100000 + ).toString(), + label: i.productsName, + }; + }); return { - data:{ + data: { productTree, industryTree, programmeTree, - demoSceneList:allDemoScenes + demoSceneList: allDemoScenes, }, - message:'获取演示现场成功!', + message: '获取演示现场成功!', success: true, - } + }; } // 根据ID获取演示现场 - public async getListById(params: DeleteSceneDto){ - const {sceneId} = params + public async getListById(params: DeleteSceneDto) { + const { sceneId } = params; function ErrReturn(e, message = '获取演示现场出现错误!') { - return{ - data:e, + return { + data: e, message, success: false, - } + }; } // 查演示现场 - let allDemoScenes - try{ - const SQL = "SELECT * FROM demo_scenes WHERE id = ? AND isDelete = 0 ORDER BY id DESC;" - const [rows] = await this.database.DB.execute(SQL, [sceneId]) - if(rows.length == 0){ + let allDemoScenes; + try { + const SQL = + 'SELECT * FROM demo_scenes WHERE id = ? AND isDelete = 0 ORDER BY id DESC;'; + const [rows] = await this.database.DB.execute(SQL, [sceneId]); + if (rows.length == 0) { return { - data:{}, + data: {}, success: true, - message: '获取演示现场成功!' - } + message: '获取演示现场成功!', + }; } - allDemoScenes = rows - }catch (e) { - return ErrReturn(e) + allDemoScenes = rows; + } catch (e) { + return ErrReturn(e); } // 获取方案 // 数据中的方案ID列表 - let programme + let programme; // 查演示方案 - try{ - const SQL = `SELECT id, programmeName, productsInfoId, industryId, demoItemsList FROM demo_programmes WHERE id = ?;` - const [rows] = await this.database.DB.execute(SQL, [allDemoScenes[0].programmeId]) - programme = rows - if(rows.length == 0) return ErrReturn({}, `未找到相应的演示方案, 方案ID:${allDemoScenes[0].programmeId}!`) - }catch (e) { - return ErrReturn(e) + try { + const SQL = `SELECT id, programmeName, productsInfoId, industryId, demoItemsList FROM demo_programmes WHERE id = ?;`; + const [rows] = await this.database.DB.execute(SQL, [ + allDemoScenes[0].programmeId, + ]); + programme = rows; + if (rows.length == 0) + return ErrReturn( + {}, + `未找到相应的演示方案, 方案ID:${allDemoScenes[0].programmeId}!`, + ); + } catch (e) { + return ErrReturn(e); } // 查账户 - let allAccount = [] - try{ + let allAccount = []; + try { const SQL = `SELECT id, productsInfoId, accountName, accountPass, accountRole FROM products_account WHERE productsInfoId = ? AND isDelete = 0;`; - const [row, result] = await this.database.DB.execute(SQL, [allDemoScenes[0].programmeId]); - allAccount = row - }catch (e) { - return ErrReturn(e) + const [row, result] = await this.database.DB.execute(SQL, [ + allDemoScenes[0].programmeId, + ]); + allAccount = row; + } catch (e) { + return ErrReturn(e); } // 产品中的产品和行业 - let product, industry + let product, industry; // 查产品 - try{ - const SQL = `SELECT id, productsName FROM products_info WHERE id = ?;` - const [rows] = await this.database.DB.execute(SQL, [programme[0].productsInfoId]) - product = rows - if(rows.length == 0) return ErrReturn({}, `未找到相应的产品, 产品ID:${programme[0].productsInfoId}!`) - }catch (e) { - return ErrReturn(e) + try { + const SQL = `SELECT id, productsName, productsUrl FROM products_info WHERE id = ?;`; + const [rows] = await this.database.DB.execute(SQL, [ + programme[0].productsInfoId, + ]); + product = rows; + if (rows.length == 0) + return ErrReturn( + {}, + `未找到相应的产品, 产品ID:${programme[0].productsInfoId}!`, + ); + } catch (e) { + return ErrReturn(e); } // 查行业 - try{ - const SQL = `SELECT id, industryName, productsInfoId FROM products_industry WHERE id = ?;` - const [rows] = await this.database.DB.execute(SQL, [programme[0].industryId]) - industry = rows - if(rows.length == 0) return ErrReturn({}, `未找到相应的行业,行业ID:${programme[0].industryId}!`) - }catch (e) { - return ErrReturn(e) + try { + const SQL = `SELECT id, industryName, productsInfoId FROM products_industry WHERE id = ?;`; + const [rows] = await this.database.DB.execute(SQL, [ + programme[0].industryId, + ]); + industry = rows; + if (rows.length == 0) + return ErrReturn( + {}, + `未找到相应的行业,行业ID:${programme[0].industryId}!`, + ); + } catch (e) { + return ErrReturn(e); } // 获取演示项 - const demoItemsIdList = JSON.parse(programme[0].demoItemsList) - let demoItemList - if(demoItemsIdList.length == 0){ - demoItemList = [] - }else{ - try{ - const setl = demoItemsIdList.join(',') - const SQL = `SELECT id, itemName, itemUrl, accumulate FROM demo_items WHERE id IN (${setl});` - const [rows] = await this.database.DB.execute(SQL, []) - demoItemList = rows.map(i => { - return{ - AXID : (new Date().getTime().toString() + Math.random() * 100000).toString(), + const demoItemsIdList = JSON.parse(programme[0].demoItemsList); + let demoItemList; + if (demoItemsIdList.length == 0) { + demoItemList = []; + } else { + try { + const setl = demoItemsIdList.join(','); + const SQL = `SELECT id, itemName, itemUrl, accumulate FROM demo_items WHERE id IN (${setl});`; + const [rows] = await this.database.DB.execute(SQL, []); + demoItemList = rows.map((i) => { + return { + AXID: ( + new Date().getTime().toString() + + Math.random() * 100000 + ).toString(), label: i.itemName, id: i.id, itemName: i.itemName, itemUrl: '/api/rgvsale/staticFile/' + i.itemUrl, accumulate: i.accumulate, - isComplete: JSON.parse(allDemoScenes[0].completeDemo).includes(i.id) - } - }) - let newDemoList = [] - demoItemsIdList.map(i => { - newDemoList.push(demoItemList[demoItemList.findIndex(j => { - return i == j.id - })]) - }) - demoItemList = newDemoList - }catch (e) { + isComplete: JSON.parse( + allDemoScenes[0].completeDemo, + ).includes(i.id), + }; + }); + const newDemoList = []; + demoItemsIdList.map((i) => { + newDemoList.push( + demoItemList[ + demoItemList.findIndex((j) => { + return i == j.id; + }) + ], + ); + }); + demoItemList = newDemoList; + } catch (e) { console.log(e); - return ErrReturn(e) + return ErrReturn(e); } } - allDemoScenes = allDemoScenes[0] - allDemoScenes.AXID = (new Date().getTime().toString() + Math.random() * 100000).toString(); + allDemoScenes = allDemoScenes[0]; + allDemoScenes.AXID = ( + new Date().getTime().toString() + + Math.random() * 100000 + ).toString(); allDemoScenes.label = programme[0].programmeName; - allDemoScenes.industryName = industry[0].industryName - allDemoScenes.industryId = industry[0].id - allDemoScenes.programmeName = programme[0].programmeName - allDemoScenes.productName = product[0].productsName - allDemoScenes.productId = product[0].id - allDemoScenes.children = demoItemList - allDemoScenes.completeDemo = JSON.parse(allDemoScenes.completeDemo) - allDemoScenes.accountList = allAccount + allDemoScenes.industryName = industry[0].industryName; + allDemoScenes.industryId = industry[0].id; + allDemoScenes.programmeName = programme[0].programmeName; + allDemoScenes.productName = product[0].productsName; + allDemoScenes.productsUrl = product[0].productsUrl; + allDemoScenes.productId = product[0].id; + allDemoScenes.children = demoItemList; + allDemoScenes.completeDemo = JSON.parse(allDemoScenes.completeDemo); + allDemoScenes.accountList = allAccount; return { - data:[allDemoScenes], - message:'获取演示现场成功!', + data: [allDemoScenes], + message: '获取演示现场成功!', success: true, - } + }; } // 创建演示现场 - public async createScene(body: CreateScenesDto, userInfo: UserInfoDto){ - const {programmeId, expectedStarttime, targetCustomers} = body - const {userId} = userInfo + public async createScene(body: CreateScenesDto, userInfo: UserInfoDto) { + const { programmeId, expectedStarttime, targetCustomers } = body; + const { userId } = userInfo; // 查找方案名称 - let programmeName, sceneName - try{ - const SQL = `SELECT programmeName FROM demo_programmes WHERE id = ? AND isDelete = 0;` - const [rows] = await this.database.DB.execute(SQL, [programmeId]) - if(rows.length == 0){ + let programmeName, sceneName; + try { + const SQL = `SELECT programmeName FROM demo_programmes WHERE id = ? AND isDelete = 0;`; + const [rows] = await this.database.DB.execute(SQL, [programmeId]); + if (rows.length == 0) { return { data: {}, message: '创建现场失败,不存在该演示方案!', success: false, - } + }; } - programmeName = rows[0].programmeName - }catch (e) { - return { data: e, message: '创建现场出现错误!', success: false,} + programmeName = rows[0].programmeName; + } catch (e) { + return { data: e, message: '创建现场出现错误!', success: false }; } - try{ - const SQL = `SELECT id FROM demo_scenes WHERE targetCustomers = ? AND programmeId = ? AND createuser = ?;` - const [rows] = await this.database.DB.execute(SQL, [targetCustomers, programmeId, userId]) - sceneName = programmeName + '-' + targetCustomers + '-' + (rows.length + 1) - }catch (e) { - return { data: e, message: '创建现场出现错误!', success: false,} + try { + const SQL = `SELECT id FROM demo_scenes WHERE targetCustomers = ? AND programmeId = ? AND createuser = ?;`; + const [rows] = await this.database.DB.execute(SQL, [ + targetCustomers, + programmeId, + userId, + ]); + sceneName = + programmeName + '-' + targetCustomers + '-' + (rows.length + 1); + } catch (e) { + return { data: e, message: '创建现场出现错误!', success: false }; } try { const createTime = new Date(); const [rows] = await this.database.DB.execute( `INSERT INTO demo_scenes (sceneName, expectedStartTime, programmeId, targetCustomers, completeDemo, createtime, createuser) VALUES (?, ?, ?, ?, ?, ?, ?);`, - [sceneName , expectedStarttime, programmeId, targetCustomers, '[]', createTime, userInfo.userId], + [ + sceneName, + expectedStarttime, + programmeId, + targetCustomers, + '[]', + createTime, + userInfo.userId, + ], ); return { data: rows, message: '创建现场成功!', success: true, - } + }; } catch (e) { return { data: e, @@ -1886,8 +2243,8 @@ export class RgvsaleService { } // 删除演示现场 - public async deleteScene(body: DeleteSceneDto){ - const {sceneId} = body + public async deleteScene(body: DeleteSceneDto) { + const { sceneId } = body; try { const [rows] = await this.database.DB.execute( `UPDATE demo_scenes SET isDelete = 1 WHERE id = ?;`, @@ -1908,83 +2265,95 @@ export class RgvsaleService { } // 增加演示项点击次数 - public async addDemoItemAccumulateForScene(body: AddDemoItemAccumulateForSceneDto){ - const {demoItemId,sceneId} = body + public async addDemoItemAccumulateForScene( + body: AddDemoItemAccumulateForSceneDto, + ) { + const { demoItemId, sceneId } = body; // 获取已经演示的演示项 - let completeDemo - try{ - const SQL = `SELECT * FROM demo_scenes WHERE id = ?` + let completeDemo; + try { + const SQL = `SELECT * FROM demo_scenes WHERE id = ?`; const [rows] = await this.database.DB.execute(SQL, [sceneId]); - if(rows.length == 0){ - return{ - data:{}, - message:"未找到演示现场!", - success: false - } + if (rows.length == 0) { + return { + data: {}, + message: '未找到演示现场!', + success: false, + }; } - completeDemo = JSON.parse(rows[0].completeDemo) - }catch (e) { - return{ + completeDemo = JSON.parse(rows[0].completeDemo); + } catch (e) { + return { data: e, - message:"修改演示项演示状态出现错误!", - success: false - } + message: '修改演示项演示状态出现错误!', + success: false, + }; } - if(completeDemo.includes(demoItemId)){ - return{ + if (completeDemo.includes(demoItemId)) { + return { data: {}, - message:"改演示项已经为演示过状态!", - success: false - } + message: '改演示项已经为演示过状态!', + success: false, + }; } - completeDemo.push(demoItemId) - try{ - const SQL = `UPDATE demo_scenes SET completeDemo = ? WHERE id = ?;` - const [rows] = await this.database.DB.execute(SQL, [JSON.stringify(completeDemo), sceneId]); - const SQL2 = `UPDATE demo_items SET accumulate = accumulate + 1 WHERE id = ?` + completeDemo.push(demoItemId); + try { + const SQL = `UPDATE demo_scenes SET completeDemo = ? WHERE id = ?;`; + const [rows] = await this.database.DB.execute(SQL, [ + JSON.stringify(completeDemo), + sceneId, + ]); + const SQL2 = `UPDATE demo_items SET accumulate = accumulate + 1 WHERE id = ?`; const [rows2] = await this.database.DB.execute(SQL2, [demoItemId]); - }catch (e) { - return{ + } catch (e) { + return { data: e, - message:"修改演示项演示状态出现错误!", - success: false - } + message: '修改演示项演示状态出现错误!', + success: false, + }; } - return{ + return { data: {}, - message:"修改演示项演示状态成功!", - success: true - } + message: '修改演示项演示状态成功!', + success: true, + }; } //#endregion - //#region 问题 // 获取问题分页 - public async getScenesProblemList(params: GetScenesProblemPageDto){ - let {productId, programmeId, sceneId, search, isUse, pageNum, pageSize} = params + public async getScenesProblemList(params: GetScenesProblemPageDto) { + let { + productId, + programmeId, + sceneId, + search, + isUse, + pageNum, + pageSize, + } = params; function ErrReturn(e, message = '获取问题页面出现错误!') { console.log(e); - return{ - data:e.toString(), + return { + data: e.toString(), message, success: false, - } + }; } // 根据产品查方案 let programmeIdList = null; - if(productId){ - try{ - const SQL = `SELECT id FROM demo_programmes WHERE productsInfoId = ?` - const [rows] = await this.database.DB.execute(SQL, [productId]) - programmeIdList = rows - }catch (e) { - return ErrReturn(e) + if (productId) { + try { + const SQL = `SELECT id FROM demo_programmes WHERE productsInfoId = ?`; + const [rows] = await this.database.DB.execute(SQL, [productId]); + programmeIdList = rows; + } catch (e) { + return ErrReturn(e); } } - if(programmeIdList != null && programmeIdList.length == 0){ + if (programmeIdList != null && programmeIdList.length == 0) { return { - data: { total:0, pageNum, pageSize, rowData:[],}, + data: { total: 0, pageNum, pageSize, rowData: [] }, success: true, message: '获取问题页面成功!', }; @@ -1992,77 +2361,88 @@ export class RgvsaleService { // 根据行业查方案 // 根据方案查现场 let sceneIdList = null; - try{ - if(programmeId){ + try { + if (programmeId) { // 使用单个方案ID - const SQL = `SELECT id FROM demo_scenes WHERE programmeId = ?` - const [rows] = await this.database.DB.execute(SQL, [programmeId]) - sceneIdList = rows - }else if(programmeIdList != null){ + const SQL = `SELECT id FROM demo_scenes WHERE programmeId = ?`; + const [rows] = await this.database.DB.execute(SQL, [ + programmeId, + ]); + sceneIdList = rows; + } else if (programmeIdList != null) { // 使用方案ID列表 - const setl = programmeIdList.map( i => i.id).join(',') - const SQL = `SELECT id FROM demo_scenes WHERE programmeId IN (${setl})` - const [rows] = await this.database.DB.execute(SQL, []) - sceneIdList = rows + const setl = programmeIdList.map((i) => i.id).join(','); + const SQL = `SELECT id FROM demo_scenes WHERE programmeId IN (${setl})`; + const [rows] = await this.database.DB.execute(SQL, []); + sceneIdList = rows; } - }catch (e) { + } catch (e) { return ErrReturn(e); } - if(sceneIdList != null && sceneIdList.length == 0){ + if (sceneIdList != null && sceneIdList.length == 0) { return { - data: { total:0, pageNum, pageSize, rowData:[],}, + data: { total: 0, pageNum, pageSize, rowData: [] }, success: true, message: '获取问题页面成功!', }; } // 根据现场查问题 - let problemIdList = null - try{ - if(sceneId){ - const SQL = `SELECT id FROM demo_scenes_problem WHERE scenesId = ?` - const [rows] = await this.database.DB.execute(SQL, [sceneId]) - problemIdList = rows - }else if(sceneIdList != null){ - const setl = sceneIdList.map( i => i.id).join(',') - const SQL = `SELECT id FROM demo_scenes_problem WHERE scenesId IN (${setl})` - const [rows] = await this.database.DB.execute(SQL, []) - problemIdList = rows + let problemIdList = null; + try { + if (sceneId) { + const SQL = `SELECT id FROM demo_scenes_problem WHERE scenesId = ?`; + const [rows] = await this.database.DB.execute(SQL, [sceneId]); + problemIdList = rows; + } else if (sceneIdList != null) { + const setl = sceneIdList.map((i) => i.id).join(','); + const SQL = `SELECT id FROM demo_scenes_problem WHERE scenesId IN (${setl})`; + const [rows] = await this.database.DB.execute(SQL, []); + problemIdList = rows; } - }catch (e) { + } catch (e) { return ErrReturn(e); } - if(problemIdList != null && problemIdList.length == 0){ + if (problemIdList != null && problemIdList.length == 0) { return { - data: { total:0, pageNum, pageSize, rowData:[] }, + data: { total: 0, pageNum, pageSize, rowData: [] }, success: true, message: '获取问题页面成功!', }; } if (pageNum == 0 || !pageNum) pageNum = 1; if (pageSize == 0 || !pageSize) pageSize = 10; - let pageSQL, pageSQLParams, total, SQL, SQLParams, rowData - let problemIdSQL = problemIdList != null ? `AND id IN (${problemIdList.map(i => i.id)})` : `` - if(search && isUse != undefined){ - pageSQL = `SELECT COUNT(*) FROM demo_scenes_problem WHERE isDelete = 0 ${problemIdSQL} AND isUse = ? AND (targetCustomers LIKE '%${search}%' OR targetCustomersRole LIKE '%${search}%' OR problemContent LIKE '%${search}%')` - pageSQLParams = [isUse] - }else if(search && isUse == undefined){ - pageSQL = `SELECT COUNT(*) FROM demo_scenes_problem WHERE isDelete = 0 ${problemIdSQL} AND (targetCustomers LIKE '%${search}%' OR targetCustomersRole LIKE '%${search}%' OR problemContent LIKE '%${search}%')` - pageSQLParams = [] - }else if(!search && isUse != undefined){ - pageSQL = `SELECT COUNT(*) FROM demo_scenes_problem WHERE isDelete = 0 ${problemIdSQL} AND isUse = ?` - pageSQLParams = [isUse] - }else if(!search && isUse == undefined){ - pageSQL = `SELECT COUNT(*) FROM demo_scenes_problem WHERE isDelete = 0 ${problemIdSQL}` - pageSQLParams = [] - } - SQL = pageSQL.replace('COUNT(*)', '*') + ' ORDER BY id DESC limit ?,?' - SQLParams = [...pageSQLParams, (pageNum - 1) * pageSize, pageSize] - try{ - const [rows, results] = await this.database.DB.execute(pageSQL, pageSQLParams) + let pageSQL, pageSQLParams, total, SQL, SQLParams, rowData; + const problemIdSQL = + problemIdList != null + ? `AND id IN (${problemIdList.map((i) => i.id)})` + : ``; + if (search && isUse != undefined) { + pageSQL = `SELECT COUNT(*) FROM demo_scenes_problem WHERE isDelete = 0 ${problemIdSQL} AND isUse = ? AND (targetCustomers LIKE '%${search}%' OR targetCustomersRole LIKE '%${search}%' OR problemContent LIKE '%${search}%')`; + pageSQLParams = [isUse]; + } else if (search && isUse == undefined) { + pageSQL = `SELECT COUNT(*) FROM demo_scenes_problem WHERE isDelete = 0 ${problemIdSQL} AND (targetCustomers LIKE '%${search}%' OR targetCustomersRole LIKE '%${search}%' OR problemContent LIKE '%${search}%')`; + pageSQLParams = []; + } else if (!search && isUse != undefined) { + pageSQL = `SELECT COUNT(*) FROM demo_scenes_problem WHERE isDelete = 0 ${problemIdSQL} AND isUse = ?`; + pageSQLParams = [isUse]; + } else if (!search && isUse == undefined) { + pageSQL = `SELECT COUNT(*) FROM demo_scenes_problem WHERE isDelete = 0 ${problemIdSQL}`; + pageSQLParams = []; + } + SQL = pageSQL.replace('COUNT(*)', '*') + ' ORDER BY id DESC limit ?,?'; + SQLParams = [...pageSQLParams, (pageNum - 1) * pageSize, pageSize]; + try { + const [rows, results] = await this.database.DB.execute( + pageSQL, + pageSQLParams, + ); total = rows[0]['COUNT(*)']; - const [datarows, dataresults] = await this.database.DB.execute(SQL, SQLParams) + const [datarows, dataresults] = await this.database.DB.execute( + SQL, + SQLParams, + ); rowData = datarows; - if(rowData.length == 0){ + if (rowData.length == 0) { return { data: { total, @@ -2072,117 +2452,145 @@ export class RgvsaleService { }, success: true, message: '获取问题页面成功!', - } + }; } - }catch (e) { - return ErrReturn(e) + } catch (e) { + return ErrReturn(e); } // 查演示项 - let demoItemIdList, demoItemDataList - demoItemIdList = rowData.map(i => i.demoItemId) - try{ - const setl = demoItemIdList.join(',') - const aSQL = `SELECT id, itemName FROM demo_items WHERE id IN (${setl})` - const [rows] = await this.database.DB.execute(aSQL, []) - demoItemDataList = rows - if(rows.length == 0){ - return ErrReturn({}, "数据错误,未找到相应演示项,演示项ID" + demoItemIdList) + let demoItemIdList, demoItemDataList; + demoItemIdList = rowData.map((i) => i.demoItemId); + try { + const setl = demoItemIdList.join(','); + const aSQL = `SELECT id, itemName FROM demo_items WHERE id IN (${setl})`; + const [rows] = await this.database.DB.execute(aSQL, []); + demoItemDataList = rows; + if (rows.length == 0) { + return ErrReturn( + {}, + '数据错误,未找到相应演示项,演示项ID' + demoItemIdList, + ); } - }catch (e) { - return ErrReturn(e) + } catch (e) { + return ErrReturn(e); } // 查现场 - let newScenesIdIdList, scenesDataList - newScenesIdIdList = rowData.map(i => i.scenesId) - try{ - const setl = newScenesIdIdList.join(',') - const aSQL = `SELECT id, sceneName, programmeId FROM demo_scenes WHERE id IN (${setl})` - const [rows] = await this.database.DB.execute(aSQL, []) - scenesDataList = rows - if(rows.length == 0){ - return ErrReturn({}, "数据错误,未找到相应演示现场,现场ID" + newScenesIdIdList) + let newScenesIdIdList, scenesDataList; + newScenesIdIdList = rowData.map((i) => i.scenesId); + try { + const setl = newScenesIdIdList.join(','); + const aSQL = `SELECT id, sceneName, programmeId FROM demo_scenes WHERE id IN (${setl})`; + const [rows] = await this.database.DB.execute(aSQL, []); + scenesDataList = rows; + if (rows.length == 0) { + return ErrReturn( + {}, + '数据错误,未找到相应演示现场,现场ID' + newScenesIdIdList, + ); } - }catch (e) { - return ErrReturn(e) + } catch (e) { + return ErrReturn(e); } // 查方案 - let newProgrammeIdList, programmeDataList - newProgrammeIdList = scenesDataList.map(i => i.programmeId) - try{ - const setl = newProgrammeIdList.join(',') - const aSQL = `SELECT id, programmeName, productsInfoId, industryId FROM demo_programmes WHERE id IN (${setl})` - const [rows] = await this.database.DB.execute(aSQL, []) - programmeDataList = rows - if(rows.length == 0){ - return ErrReturn({}, "数据错误,未找到相应方案,方案ID" + newProgrammeIdList) + let newProgrammeIdList, programmeDataList; + newProgrammeIdList = scenesDataList.map((i) => i.programmeId); + try { + const setl = newProgrammeIdList.join(','); + const aSQL = `SELECT id, programmeName, productsInfoId, industryId FROM demo_programmes WHERE id IN (${setl})`; + const [rows] = await this.database.DB.execute(aSQL, []); + programmeDataList = rows; + if (rows.length == 0) { + return ErrReturn( + {}, + '数据错误,未找到相应方案,方案ID' + newProgrammeIdList, + ); } - }catch (e) { - return ErrReturn(e) + } catch (e) { + return ErrReturn(e); } // 查产品 - let newProductIdList, productDataList - newProductIdList = programmeDataList.map(i => i.productsInfoId) - try{ - const setl = newProductIdList.join(',') - const aSQL = `SELECT id, productsName FROM products_info WHERE id IN (${setl})` - const [rows] = await this.database.DB.execute(aSQL, []) - productDataList = rows - if(rows.length == 0){ - return ErrReturn({}, "数据错误,未找到相应产品,产品ID" + newProductIdList) + let newProductIdList, productDataList; + newProductIdList = programmeDataList.map((i) => i.productsInfoId); + try { + const setl = newProductIdList.join(','); + const aSQL = `SELECT id, productsName FROM products_info WHERE id IN (${setl})`; + const [rows] = await this.database.DB.execute(aSQL, []); + productDataList = rows; + if (rows.length == 0) { + return ErrReturn( + {}, + '数据错误,未找到相应产品,产品ID' + newProductIdList, + ); } - }catch (e) { - return ErrReturn(e) + } catch (e) { + return ErrReturn(e); } // 为方案展开产品 - programmeDataList = programmeDataList.map(i => { - const aData = productDataList.filter(j => j.id == i.productsInfoId) - if(aData.length == 0){ - return ErrReturn({}, "数据错误,未找到相应产品,产品ID" + i.productsInfoId) + programmeDataList = programmeDataList.map((i) => { + const aData = productDataList.filter( + (j) => j.id == i.productsInfoId, + ); + if (aData.length == 0) { + return ErrReturn( + {}, + '数据错误,未找到相应产品,产品ID' + i.productsInfoId, + ); } - return{ + return { ...i, - productName:aData[0].productsName - } - }) + productName: aData[0].productsName, + }; + }); // 为现场展开方案 - scenesDataList = scenesDataList.map(i => { - const aData = programmeDataList.filter(j => j.id == i.programmeId) - if(aData.length == 0){ - return ErrReturn({}, "数据错误,未找到相应方案,方案ID" + i.programmeId) + scenesDataList = scenesDataList.map((i) => { + const aData = programmeDataList.filter( + (j) => j.id == i.programmeId, + ); + if (aData.length == 0) { + return ErrReturn( + {}, + '数据错误,未找到相应方案,方案ID' + i.programmeId, + ); } - return{ + return { ...i, - programmeData:aData[0] - } - }) + programmeData: aData[0], + }; + }); // 为问题展开现场 - rowData = rowData.map(i => { - const aData = scenesDataList.filter(j => j.id == i.scenesId) - if(aData.length == 0){ - return ErrReturn({}, "数据错误,未找到相应现场,现场ID" + i.scenesId) + rowData = rowData.map((i) => { + const aData = scenesDataList.filter((j) => j.id == i.scenesId); + if (aData.length == 0) { + return ErrReturn( + {}, + '数据错误,未找到相应现场,现场ID' + i.scenesId, + ); } - return{ + return { ...i, sceneId: aData[0].id, sceneName: aData[0].sceneName, programmeId: aData[0].programmeId, - programmeName:aData[0].programmeData.programmeName, - productId:aData[0].programmeData.productsInfoId, - productName:aData[0].programmeData.productName, - industryId:aData[0].programmeData.industryId, - } - }) + programmeName: aData[0].programmeData.programmeName, + productId: aData[0].programmeData.productsInfoId, + productName: aData[0].programmeData.productName, + industryId: aData[0].programmeData.industryId, + }; + }); // 为问题展开演示项 - rowData = rowData.map(i => { - const aData = demoItemDataList.filter(j => j.id == i.demoItemId) - if(aData.length == 0){ - return ErrReturn({}, "数据错误,未找到相应演示项,演示项ID" + i.demoItemId) + rowData = rowData.map((i) => { + const aData = demoItemDataList.filter((j) => j.id == i.demoItemId); + if (aData.length == 0) { + return ErrReturn( + {}, + '数据错误,未找到相应演示项,演示项ID' + i.demoItemId, + ); } - return{ + return { ...i, - demoItemName:aData[0].itemName - } - }) + demoItemName: aData[0].itemName, + }; + }); const returnData = { data: { total, @@ -2192,38 +2600,55 @@ export class RgvsaleService { }, success: true, message: '获取问题页面成功!', + }; + if (rowData.length != 0) { + returnData.data.rowData = rowData; } - if(rowData.length != 0){ - returnData.data.rowData = rowData - } - return returnData + return returnData; } // 创建问题 - public async createScenesProblem(body: CreateScenesProblemDto, userInfo: UserInfoDto){ - const {targetCustomers, targetCustomersRole, problemContent, sceneId, demoItemId} = body - const {userId} = userInfo - try{ - const createtime = new Date() - const SQL = `INSERT INTO demo_scenes_problem (problemContent, scenesId, targetCustomers, targetCustomersRole, createuser, createtime, demoItemId) VALUES (?, ?, ?, ?, ?, ?, ?);` - this.database.DB.execute(SQL, [problemContent, sceneId, targetCustomers,targetCustomersRole,userId, createtime, demoItemId]) - }catch (e) { - return { - data:e, - message:'创建问题出现错误!', - success:false - } - } - return{ - data:{}, - message:'创建问题成功!', - success: true + public async createScenesProblem( + body: CreateScenesProblemDto, + userInfo: UserInfoDto, + ) { + const { + targetCustomers, + targetCustomersRole, + problemContent, + sceneId, + demoItemId, + } = body; + const { userId } = userInfo; + try { + const createtime = new Date(); + const SQL = `INSERT INTO demo_scenes_problem (problemContent, scenesId, targetCustomers, targetCustomersRole, createuser, createtime, demoItemId) VALUES (?, ?, ?, ?, ?, ?, ?);`; + this.database.DB.execute(SQL, [ + problemContent, + sceneId, + targetCustomers, + targetCustomersRole, + userId, + createtime, + demoItemId, + ]); + } catch (e) { + return { + data: e, + message: '创建问题出现错误!', + success: false, + }; } + return { + data: {}, + message: '创建问题成功!', + success: true, + }; } // 删除问题 - public async deleteScenesProblem(body: DeleteScenesProblemDto){ - const {problemId} = body + public async deleteScenesProblem(body: DeleteScenesProblemDto) { + const { problemId } = body; try { const [rows] = await this.database.DB.execute( `UPDATE demo_scenes_problem SET isDelete = 1 WHERE id = ?;`, @@ -2236,49 +2661,61 @@ export class RgvsaleService { success: false, }; } - return{data: {}, - message: '删除问题成功!', - success: true,} + return { data: {}, message: '删除问题成功!', success: true }; } // 编辑问题 - public async editScenesProblem(body: EditScenesProblemDto){ - const {problemContent, targetCustomers, targetCustomersRole, problemId, sceneId, demoItemId} = body - try{ - const SQL = `UPDATE demo_scenes_problem SET problemContent = ?, targetCustomers =?, targetCustomersRole = ?, scenesId = ?, demoItemId = ? WHERE id = ?;` - const [row] = await this.database.DB.execute(SQL, [problemContent, targetCustomers, targetCustomersRole, sceneId, demoItemId, problemId]) - }catch (e) { + public async editScenesProblem(body: EditScenesProblemDto) { + const { + problemContent, + targetCustomers, + targetCustomersRole, + problemId, + sceneId, + demoItemId, + } = body; + try { + const SQL = `UPDATE demo_scenes_problem SET problemContent = ?, targetCustomers =?, targetCustomersRole = ?, scenesId = ?, demoItemId = ? WHERE id = ?;`; + const [row] = await this.database.DB.execute(SQL, [ + problemContent, + targetCustomers, + targetCustomersRole, + sceneId, + demoItemId, + problemId, + ]); + } catch (e) { return { data: e, message: '编辑问题出现错误!', success: false, - } + }; } - return{ - data:{}, + return { + data: {}, message: '编辑问题成功!', success: true, - } + }; } // 修改问题利用状态 - public async changeScenesProblemUseState(body: ChangeUseStateDto){ - const {problemId} = body - try{ - const SQL = `UPDATE demo_scenes_problem SET isUse = 1 WHERE id = ?;` - const [row] = await this.database.DB.execute(SQL, [problemId]) - }catch (e) { + public async changeScenesProblemUseState(body: ChangeUseStateDto) { + const { problemId } = body; + try { + const SQL = `UPDATE demo_scenes_problem SET isUse = 1 WHERE id = ?;`; + const [row] = await this.database.DB.execute(SQL, [problemId]); + } catch (e) { return { data: e, message: '修改问题利用状态出现错误!', success: false, - } + }; } - return{ - data:{}, + return { + data: {}, message: '修改问题利用状态成功!', success: true, - } + }; } //#endregion diff --git a/tune.zip b/tune.zip new file mode 100644 index 0000000..4df24ff Binary files /dev/null and b/tune.zip differ