liujie
2026-07-23 ce9ba63127821699be67f70004be2d45cfcb76eb
监控
1个文件已修改
18 ■■■■■ 已修改文件
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/EzvizOpenApiUtils.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/EzvizOpenApiUtils.java
@@ -24,7 +24,9 @@
    private static final String SUCCESS_CODE = "200";
    private static final String TOKEN_EXPIRED_CODE = "10002";
    private static final String PTZ_CURRENT_OPERATION_FAILED_CODE = "60006";
    private static final long TOKEN_EXPIRE_ADVANCE_MS = 5 * 60 * 1000L;
    private static final Integer[] PTZ_STOP_DIRECTIONS = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
    @Value("${ezviz.open.base-url:https://open.ys7.com}")
    private String baseUrl;
@@ -119,7 +121,7 @@
            form.put("speed", normalizePtzSpeed(speed));
            JSONObject result = postFormWithToken("/api/lapp/device/ptz/start", form);
            if (isCurrentOperationFailed(result)) {
                postFormWithToken("/api/lapp/device/ptz/stop", form);
                stopAllPtzDirections(deviceSerial, channelNo);
                result = postFormWithToken("/api/lapp/device/ptz/start", form);
            }
            return result;
@@ -174,8 +176,18 @@
    private boolean isCurrentOperationFailed(JSONObject result) {
        return result != null
                && !SUCCESS_CODE.equals(result.getString("code"))
                && StringUtils.hasText(result.getString("msg"))
                && result.getString("msg").contains("当前操作失败");
                && (PTZ_CURRENT_OPERATION_FAILED_CODE.equals(result.getString("code"))
                || StringUtils.hasText(result.getString("msg")) && result.getString("msg").contains("当前操作失败"));
    }
    private void stopAllPtzDirections(String deviceSerial, Integer channelNo) {
        for (Integer direction : PTZ_STOP_DIRECTIONS) {
            Map<String, Object> form = new LinkedHashMap<>();
            form.put("deviceSerial", deviceSerial);
            form.put("channelNo", channelNo == null ? 1 : channelNo);
            form.put("direction", direction);
            postFormWithToken("/api/lapp/device/ptz/stop", form);
        }
    }
    /**