| 
					
				 | 
			
			
				@@ -8,7 +8,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @version
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// const archiver = require('archiver');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const archiver = require('archiver');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const path = require('path');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const fs = require('fs');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 module.exports = app => {
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -100,44 +100,44 @@ module.exports = app => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          * @return {string} 压缩后的zip文件路径
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         async compressedFile(fileIds, zipPath) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // this.initSqlBuilder();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // this.sqlBuilder.setAndWhere('id', {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     value: fileIds,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     operate: 'in',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // const files = await this.db.query(sql, sqlParam);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // // const paths = files.map(item => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // //     return { name: item.filename + item.fileext, path: item.filepath }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // // })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // return new Promise(resolve => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     // 每次开一个新的archiver
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     const ziparchiver = archiver('zip');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     const outputPath = fs.createWriteStream(path.resolve(this.app.baseDir, zipPath));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     ziparchiver.pipe(outputPath);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     files.forEach(item => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //         ziparchiver.file(item.filepath, { name: item.filename + item.fileext });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.initSqlBuilder();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.sqlBuilder.setAndWhere('id', {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                value: fileIds,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                operate: 'in',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const files = await this.db.query(sql, sqlParam);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // const paths = files.map(item => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //     return { name: item.filename + item.fileext, path: item.filepath }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return new Promise(resolve => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 每次开一个新的archiver
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const ziparchiver = archiver('zip');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const outputPath = fs.createWriteStream(path.resolve(this.app.baseDir, zipPath));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ziparchiver.pipe(outputPath);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                files.forEach(item => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ziparchiver.file(item.filepath, { name: item.filename + item.fileext });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     // 存档警告
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     ziparchiver.on('warning', function(err) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //         if (err.code === 'ENOENT') {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //             console.warn('stat故障和其他非阻塞错误');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //         } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //             throw err;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 存档警告
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ziparchiver.on('warning', function(err) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (err.code === 'ENOENT') {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        console.warn('stat故障和其他非阻塞错误');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        throw err;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     // 存档出错
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     ziparchiver.on('error', function(err) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //         console.log(err);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //         throw err;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     ziparchiver.finalize();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     outputPath.on('close', () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //         resolve(ziparchiver.pointer());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 存档出错
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ziparchiver.on('error', function(err) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    console.log(err);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    throw err;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ziparchiver.finalize();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                outputPath.on('close', () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    resolve(ziparchiver.pointer());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return StageAtt;
 
			 |