| 
					
				 | 
			
			
				@@ -27,6 +27,10 @@ const RobotStatus = Object.freeze({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let appMap = new Map(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function getAppMap() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return appMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function getApp(key) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let app = { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -430,6 +434,55 @@ async function restartApp(param) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     logger.info(`重启完成!!!!!`); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+async function closeAppAll() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return new Promise(async (resolve, reject) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var appMap = getAppMap() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // console.log(appMap.size); // 输出Map的大小 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        appMap.forEach((value, key) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            console.log(key, value); // 输出Map的键值对 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // logger.info("???", key, value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var app = value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            logger.info(` 信号:  `, app.threadStatus); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            /*******新的删除方式*************/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //文件授权 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (app.childProcess !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var pid = app.childProcess.pid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                exec(`sudo kill ${pid}`, (error, stdout, stderr) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        logger.error(`进程${pid} 杀死失败: ${error}`); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    logger.info(`进程${pid} 杀死成功`); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    logger.info(`当前app:`, app); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    app.threadStatus = RobotStatus.STOP_PENDING 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    robotStatus(app) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        while (true) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var z = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await delay(1000) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var str = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            appMap.forEach((value, key) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                str += "机器人:"+key+",当前状态:"+value.threadStatus+"\t" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(value.threadStatus !== RobotStatus.STOPPED){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    z+=1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            logger.info(str) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(z===0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                logger.info(`策略全部关闭~~开始关闭node`); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                logger.info(`等待关闭~~策略!`); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return resolve(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /*******新的删除方式*************/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // 下载执行程序,使用的实行服务器指令的方式进行下载 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function downloadFileWithPowerShell(url, destination, headers, funBreak) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -521,5 +574,5 @@ function delRobot(app) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 module.exports = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    run, closeApp, restartApp, delRobot, robotStatus, robotAmount, appMap, RobotStatus 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    run, closeApp, restartApp, delRobot, robotStatus, robotAmount, closeAppAll, appMap, getAppMap, RobotStatus 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 |