#
lty
5 天以前 fcc71e5d0f0eba3f192c581fad184cee0a43ce99
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 @@
        }
        // 检查IP是否已存在
        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("该IP已存在");
        }
@@ -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 @@
        // 检查IP是否已被其他设备使用
        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("该IP已被其他设备使用");
            }
        }
@@ -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,7 +326,7 @@
            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());
@@ -342,7 +344,7 @@
            String result = tvDeviceService.restartApp(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());
@@ -369,4 +371,40 @@
            return R.error("重启失败: " + e.getMessage());
        }
    }
    /**
     * 查询电视机WebSocket连接状态
     */
    @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);
    }
}