QQBot/src/main/java/com/yutou/qqbot/Controllers/JianRScriptController.java

241 lines
8.8 KiB
Java

package com.yutou.qqbot.Controllers;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.yutou.qqbot.data.jianr.AndroidDevice;
import com.yutou.qqbot.data.jianr.JianRScriptV2Data;
import com.yutou.qqbot.utlis.JianRTaskManager;
import com.yutou.qqbot.utlis.RedisTools;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.Map;
@Controller
public class JianRScriptController {
@RequestMapping("/jianr/run.do")
@ResponseBody
public JSONObject runScript(String task, String device, String modelName) {
JSONObject json = new JSONObject();
String data = RedisTools.getHashMap(JianRTaskManager.Redis_Script, task);
String deviceJsonString = RedisTools.getHashMap(JianRTaskManager.Redis_Device, device);
if (data == null || deviceJsonString == null) {
json.put("code", -1);
json.put("msg", "没有找到该方案或设备错误,请配置");
} else {
JianRScriptV2Data script = JSON.parseObject(data, JianRScriptV2Data.class);
AndroidDevice androidDevice = JSON.parseObject(deviceJsonString, AndroidDevice.class);
JianRTaskManager manager = JianRTaskManager.getInstance();
if (manager.isRunning()) {
manager.stop();
}
for (int i = 0; i < androidDevice.getDeviceDisplay().size(); i++) {
if (androidDevice.getDeviceDisplay().get(i).getTitle().equals(modelName)) {
manager.setModelId(i);
break;
}
}
manager.setTask(script, androidDevice);
manager.start();
json.put("code", 0);
json.put("msg", "任务创建成功");
}
return json;
}
@RequestMapping("/jianr/stop.do")
@ResponseBody
public JSONObject stop() {
JianRTaskManager.getInstance().stop();
JSONObject json = new JSONObject();
json.put("code", 0);
json.put("msg", "任务已停止");
return json;
}
@RequestMapping("/jianr/status.do")
@ResponseBody
public JSONObject status() {
JSONObject json = new JSONObject();
JSONObject data = new JSONObject();
JianRTaskManager manager = JianRTaskManager.getInstance();
data.put("status", manager.isRunning());
data.put("runIndex", manager.getRunIndex());
data.put("taskName", manager.getTaskName());
data.put("log", manager.getLog());
json.put("code", 0);
json.put("data", data);
return json;
}
@RequestMapping("/jianr/task/list.do")
@ResponseBody
public JSONObject tasks() {
JSONObject json = new JSONObject();
JSONArray array = new JSONArray();
Map<String, String> map = RedisTools.getHashMap(JianRTaskManager.Redis_Script);
array.addAll(map.keySet());
json.put("code", 0);
json.put("data", array);
return json;
}
@RequestMapping("/jianr/task/add.do")
@ResponseBody
public JSONObject addTask(String task) {
JSONObject json = new JSONObject();
JSONObject data = JSON.parseObject(task);
if (data == null) {
json.put("code", -1);
json.put("msg", "JSON格式错误");
} else {
String taskName = data.getString("title");
if (RedisTools.getHashMap(JianRTaskManager.Redis_Script).containsKey(taskName)) {
json.put("code", -1);
json.put("msg", "该任务名称已存在");
} else {
RedisTools.setHashMap(JianRTaskManager.Redis_Script, taskName, task);
json.put("code", 0);
json.put("msg", "任务创建成功");
}
}
return json;
}
@RequestMapping("/jianr/task/get.do")
@ResponseBody
public JSONObject getTask(String task) {
JSONObject json = new JSONObject();
json.put("code", 0);
json.put("data", RedisTools.getHashMap(JianRTaskManager.Redis_Script, task));
return json;
}
@RequestMapping("/jianr/task/remove.do")
@ResponseBody
public JSONObject removeTask(String task) {
RedisTools.removeHashMap(JianRTaskManager.Redis_Script, task);
JSONObject json = new JSONObject();
json.put("code", 0);
json.put("msg", "任务删除成功");
return json;
}
@RequestMapping("/jianr/device/connect.do")
@ResponseBody
public JSONObject connectDevice(String device) {
JSONObject json = new JSONObject();
JianRTaskManager.getInstance().connect(device);
json.put("code", 0);
json.put("msg", "成功");
return json;
}
@RequestMapping("/jianr/device/add.do")
@ResponseBody
public JSONObject addDevice(String device) {
Map<String, String> hashMap = RedisTools.getHashMap(JianRTaskManager.Redis_Device);
JSONObject deviceJson = JSON.parseObject(device);
JSONObject json = new JSONObject();
json.put("code", 0);
if (deviceJson == null) {
json.put("msg", "JSON格式错误");
} else {
if (hashMap.containsKey(device)) {
json.put("msg", "设备已存在");
} else {
json.put("msg", RedisTools.setHashMap(JianRTaskManager.Redis_Device,
deviceJson.getString("title"), device) ?
"设备添加成功" : "设备添加失败");
}
}
return json;
}
@RequestMapping("/jianr/device/edit.do")
@ResponseBody
public JSONObject editDevice(String device, String oldDevice) {
JSONObject deviceJson = JSON.parseObject(device);
JSONObject json = new JSONObject();
json.put("code", 0);
if (deviceJson == null) {
json.put("msg", "JSON格式错误");
} else {
RedisTools.removeHashMap(JianRTaskManager.Redis_Device, oldDevice);
json.put("msg", RedisTools.setHashMap(JianRTaskManager.Redis_Device,
deviceJson.getString("title"), device) ?
"设备修改成功" : "设备修改失败");
}
return json;
}
@RequestMapping("/jianr/device/del.do")
@ResponseBody
public JSONObject delDevice(String device) {
JSONObject deviceJson = JSON.parseObject(device);
JSONObject json = new JSONObject();
json.put("code", 0);
if (deviceJson == null) {
json.put("msg", "JSON格式错误");
} else {
json.put("msg", RedisTools.removeHashMap(JianRTaskManager.Redis_Device) ?
"设备修改成功" : "设备修改失败");
}
return json;
}
@RequestMapping("/jianr/device/list.do")
@ResponseBody
public JSONObject getDeviceList() {
Map<String, String> hashMap = RedisTools.getHashMap(JianRTaskManager.Redis_Device);
JSONObject json = new JSONObject();
JSONArray array = new JSONArray();
json.put("code", 0);
hashMap.keySet().forEach(key -> {
JSONObject device = JSONObject.parseObject(hashMap.get(key));
JSONArray child = new JSONArray();
JSONObject item = new JSONObject();
JSONObject del = new JSONObject();
JSONObject edit = new JSONObject();
JSONObject select = new JSONObject();
JSONObject connect = new JSONObject();
item.put("title", key);
del.put("title", "删除");
del.put("data", "del");
del.put("device", device);
edit.put("title", "编辑");
edit.put("data", "edit");
edit.put("device", device);
select.put("title", "选择");
select.put("data", "select");
select.put("device", device);
connect.put("title", "连接设备");
connect.put("data", "connect");
connect.put("device", device);
child.add(connect);
child.add(select);
child.add(del);
child.add(edit);
item.put("child", child);
array.add(item);
});
json.put("data", array);
return json;
}
public static void main(String[] args) {
Map<String, String> hashMap = RedisTools.getHashMap(JianRTaskManager.Redis_Device);
JSONObject json = new JSONObject();
JSONArray array = new JSONArray();
json.put("code", 0);
hashMap.keySet().forEach(key -> {
JSONObject item = JSONObject.parseObject(hashMap.get(key));
array.add(item);
});
json.put("data", array);
System.out.println(json);
}
}