From fcc71e5d0f0eba3f192c581fad184cee0a43ce99 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期五, 10 四月 2026 16:37:18 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/controller/TvDeviceController.java | 121 +++++++++++++++++++++++++++++++++-------
1 files changed, 99 insertions(+), 22 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/TvDeviceController.java b/src/main/java/com/zy/asrs/controller/TvDeviceController.java
index ee1ec16..a3ed5ec 100644
--- a/src/main/java/com/zy/asrs/controller/TvDeviceController.java
+++ b/src/main/java/com/zy/asrs/controller/TvDeviceController.java
@@ -1,8 +1,8 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.annotations.ManagerAuth;
import com.core.common.Cools;
import com.core.common.R;
@@ -11,6 +11,8 @@
import com.zy.asrs.entity.TvDevice;
import com.zy.asrs.service.ApkBuildTaskService;
import com.zy.asrs.service.TvDeviceService;
+import com.zy.asrs.websocket.TvWebSocketServer;
+import jakarta.websocket.Session;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -41,7 +43,7 @@
@RequestMapping(value = "/tvDevice/{id}/auth")
@ManagerAuth
public R get(@PathVariable("id") Long id) {
- return R.ok(tvDeviceService.selectById(id));
+ return R.ok(tvDeviceService.getById(id));
}
/**
@@ -50,10 +52,10 @@
@RequestMapping(value = "/tvDevice/list/auth")
@ManagerAuth
public R list(@RequestParam(defaultValue = "1") Integer curr,
- @RequestParam(defaultValue = "10") Integer limit,
- @RequestParam Map<String, Object> param) {
+ @RequestParam(defaultValue = "10") Integer limit,
+ @RequestParam Map<String, Object> param) {
excludeTrash(param);
- EntityWrapper<TvDevice> wrapper = new EntityWrapper<>();
+ QueryWrapper<TvDevice> wrapper = new QueryWrapper<>();
for (Map.Entry<String, Object> entry : param.entrySet()) {
String key = entry.getKey();
@@ -68,8 +70,8 @@
}
}
- wrapper.orderBy("id", false);
- return R.ok(tvDeviceService.selectPage(new Page<>(curr, limit), wrapper));
+ wrapper.orderBy(true, false, "id");
+ return R.ok(tvDeviceService.page(new Page<>(curr, limit), wrapper));
}
/**
@@ -78,9 +80,9 @@
@RequestMapping(value = "/tvDevice/all/auth")
@ManagerAuth
public R listAll() {
- EntityWrapper<TvDevice> wrapper = new EntityWrapper<>();
- wrapper.orderBy("name", true);
- return R.ok(tvDeviceService.selectList(wrapper));
+ QueryWrapper<TvDevice> wrapper = new QueryWrapper<>();
+ wrapper.orderBy(true, true, "name");
+ return R.ok(tvDeviceService.list(wrapper));
}
/**
@@ -106,9 +108,9 @@
}
// 妫�鏌P鏄惁宸插瓨鍦�
- EntityWrapper<TvDevice> wrapper = new EntityWrapper<>();
+ QueryWrapper<TvDevice> wrapper = new QueryWrapper<>();
wrapper.eq("ip", device.getIp());
- if (tvDeviceService.selectCount(wrapper) > 0) {
+ if (tvDeviceService.count(wrapper) > 0) {
return R.error("璇P宸插瓨鍦�");
}
@@ -118,7 +120,7 @@
device.setStatus((short) 0);
device.setCreateTime(new Date());
device.setUpdateTime(new Date());
- tvDeviceService.insert(device);
+ tvDeviceService.save(device);
return R.ok(device);
}
@@ -134,9 +136,9 @@
// 妫�鏌P鏄惁宸茶鍏朵粬璁惧浣跨敤
if (!Cools.isEmpty(device.getIp())) {
- EntityWrapper<TvDevice> wrapper = new EntityWrapper<>();
+ QueryWrapper<TvDevice> wrapper = new QueryWrapper<>();
wrapper.eq("ip", device.getIp()).ne("id", device.getId());
- if (tvDeviceService.selectCount(wrapper) > 0) {
+ if (tvDeviceService.count(wrapper) > 0) {
return R.error("璇P宸茶鍏朵粬璁惧浣跨敤");
}
}
@@ -155,7 +157,7 @@
if (ids == null || ids.length == 0) {
return R.error();
}
- tvDeviceService.deleteBatchIds(Arrays.asList(ids));
+ tvDeviceService.removeByIds(Arrays.asList(ids));
return R.ok();
}
@@ -169,7 +171,7 @@
String result = tvDeviceService.testConnection(id);
Map<String, Object> data = new HashMap<>();
data.put("result", result);
- data.put("device", tvDeviceService.selectById(id));
+ data.put("device", tvDeviceService.getById(id));
return R.ok(data);
} catch (Exception e) {
return R.error("杩炴帴澶辫触: " + e.getMessage());
@@ -209,7 +211,7 @@
return R.error("璇烽�夋嫨瀹夎璁惧");
}
- ApkBuildTask task = apkBuildTaskService.selectById(taskId);
+ ApkBuildTask task = apkBuildTaskService.getById(taskId);
if (task == null) {
return R.error("鎵撳寘浠诲姟涓嶅瓨鍦�");
}
@@ -230,7 +232,7 @@
@RequestMapping(value = "/tvDevice/uploadAndInstall/auth", method = RequestMethod.POST)
@ManagerAuth
public R uploadAndInstall(@RequestParam("file") MultipartFile file,
- @RequestParam("deviceIds") String deviceIdsStr) {
+ @RequestParam("deviceIds") String deviceIdsStr) {
try {
if (file.isEmpty()) {
return R.error("璇烽�夋嫨APK鏂囦欢");
@@ -286,7 +288,7 @@
String result = tvDeviceService.launchApp(id, packageName);
Map<String, Object> data = new HashMap<>();
data.put("result", result);
- data.put("device", tvDeviceService.selectById(id));
+ data.put("device", tvDeviceService.getById(id));
return R.ok(data);
} catch (Exception e) {
return R.error("鍚姩澶辫触: " + e.getMessage());
@@ -324,10 +326,85 @@
String base64Image = tvDeviceService.captureScreen(id);
Map<String, Object> data = new HashMap<>();
data.put("image", base64Image);
- data.put("device", tvDeviceService.selectById(id));
+ data.put("device", tvDeviceService.getById(id));
return R.ok(data);
} catch (Exception e) {
return R.error("鎴浘澶辫触: " + e.getMessage());
}
}
+
+ /**
+ * 閲嶅惎璁惧涓婄殑搴旂敤
+ */
+ @RequestMapping(value = "/tvDevice/restartApp/{id}/auth", method = RequestMethod.POST)
+ @ManagerAuth
+ public R restartApp(@PathVariable("id") Long id, @RequestBody(required = false) JSONObject param) {
+ try {
+ String packageName = param != null ? param.getString("packageName") : null;
+ String result = tvDeviceService.restartApp(id, packageName);
+ Map<String, Object> data = new HashMap<>();
+ data.put("result", result);
+ data.put("device", tvDeviceService.getById(id));
+ return R.ok(data);
+ } catch (Exception e) {
+ return R.error("閲嶅惎澶辫触: " + e.getMessage());
+ }
+ }
+
+ /**
+ * 鎵归噺閲嶅惎璁惧涓婄殑搴旂敤
+ */
+ @RequestMapping(value = "/tvDevice/batchRestartApp/auth", method = RequestMethod.POST)
+ @ManagerAuth
+ public R batchRestartApp(@RequestBody JSONObject param) {
+ try {
+ List<Long> deviceIds = param.getJSONArray("deviceIds").toJavaList(Long.class);
+ String packageName = param.getString("packageName");
+
+ if (deviceIds == null || deviceIds.isEmpty()) {
+ return R.error("璇烽�夋嫨璁惧");
+ }
+
+ List<String> results = tvDeviceService.batchRestartApp(deviceIds, packageName);
+ return R.ok(results);
+ } catch (Exception e) {
+ return R.error("閲嶅惎澶辫触: " + e.getMessage());
+ }
+ }
+
+ /**
+ * 鏌ヨ鐢佃鏈篧ebSocket杩炴帴鐘舵��
+ */
+ @RequestMapping(value = "/tvDevice/tvWebSocket/status/auth")
+ @ManagerAuth
+ public R tvWebSocketStatus() {
+ Map<String, Session> sessions = TvWebSocketServer.getSessions();
+
+ // 鏌ヨ鎵�鏈夎澶囦俊鎭紝鐢ㄤ簬鍖归厤IP瀵瑰簲鐨勮澶囧悕绉�
+ List<TvDevice> allDevices = tvDeviceService.list();
+ Map<String, String> ipToDeviceName = new HashMap<>();
+ for (TvDevice device : allDevices) {
+ if (device.getIp() != null) {
+ ipToDeviceName.put(device.getIp(), device.getName());
+ }
+ }
+
+ List<Map<String, Object>> connections = new ArrayList<>();
+ for (Map.Entry<String, Session> entry : sessions.entrySet()) {
+ Map<String, Object> info = new HashMap<>();
+ String ip = entry.getKey();
+ Session session = entry.getValue();
+
+ info.put("ip", ip);
+ info.put("deviceName", ipToDeviceName.getOrDefault(ip, "-"));
+ info.put("sessionId", session.getId());
+ info.put("open", session.isOpen());
+ connections.add(info);
+ }
+
+ Map<String, Object> result = new HashMap<>();
+ result.put("total", sessions.size());
+ result.put("connections", connections);
+ return R.ok(result);
+ }
}
--
Gitblit v1.9.1