package com.cdzy.operations.utils; import cn.hutool.core.io.FileUtil; import com.cdzy.common.ex.EbikeException; import com.cdzy.common.utils.RemoteFileUtils; import com.cdzy.operations.enums.CommandType; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import java.io.File; import java.io.IOException; /** * @author attiya * @since 2025-10-30 */ public class CommandUtil { private static final ObjectMapper mapper = new ObjectMapper(); private static final String guang_he_tong_prefix = "ecu/cmd/cdzybms/"; private static final String guang_he_tong_broadcast = "ecu/cmd/cdzybms/broadcast"; public static String guang_he_tong(String ecuSn, String taskId, String code, String url, Integer idx, Boolean fullUpgrade) throws IOException { String topic = guang_he_tong_prefix + ecuSn; ObjectNode jsonNode = mapper.createObjectNode(); if (fullUpgrade) { topic = guang_he_tong_broadcast; } jsonNode.put("topic", topic); switch (code) { case CommandType.FIND_BIKE: String command_14 = "{\"c\":14,\"tid\":\"" + taskId + "\",\"param\":{\"volume\":50,\"idx\":5}}"; ObjectNode objectNode_14 = mapper.readValue(command_14, ObjectNode.class); jsonNode.put("command", objectNode_14.toString()); break; case CommandType.GPS: String command_34 = "{\"c\":34,\"tid\":\"" + taskId + "\"}"; ObjectNode objectNode_34 = mapper.readValue(command_34, ObjectNode.class); jsonNode.put("command", objectNode_34.toString()); break; case CommandType.OPEN_BATTERY_LOCK: String command_29 = "{\"c\":29,\"tid\":\"" + taskId + "\"}"; ObjectNode objectNode_29 = mapper.readValue(command_29, ObjectNode.class); jsonNode.put("command", objectNode_29.toString()); break; case CommandType.CLOSE_BATTERY_LOCK: String command_94 = "{\"c\":94,\"tid\":\"" + taskId + "\"}"; ObjectNode objectNode_94 = mapper.readValue(command_94, ObjectNode.class); jsonNode.put("command", objectNode_94.toString()); break; case CommandType.UNLOCK: String command_33 = "{\"c\":33,\"tid\":\"" + taskId + "\",\"param\":{\"acc\":1,\"idx\":14,\"stamp\":" + System.currentTimeMillis() + "}}"; ObjectNode objectNode_33 = mapper.readValue(command_33, ObjectNode.class); jsonNode.put("command", objectNode_33.toString()); break; case CommandType.LOCK: String command_4 = "{\"c\":4,\"tid\":\"" + taskId + "\",\"param\":{\"defend\":1,\"idx\":14,\"isTBeacon\":0}}"; ObjectNode objectNode_4 = mapper.readValue(command_4, ObjectNode.class); jsonNode.put("command", objectNode_4.toString()); break; case CommandType.OPEN_HELMET: String command_89 = "{\"tid\":\"" + taskId + "\",\"c\":89,\"param\":{\"opt\":0}}"; ObjectNode objectNode_89 = mapper.readValue(command_89, ObjectNode.class); jsonNode.put("command", objectNode_89.toString()); break; case CommandType.POWER_OFF: String command_100 = "{\"c\":100,\"tid\":\"" + taskId + "\",\"param\":{\"Dsg\":0}}"; ObjectNode objectNode_100 = mapper.readValue(command_100, ObjectNode.class); jsonNode.put("command", objectNode_100.toString()); break; case CommandType.UPGRADE: File tempFile = RemoteFileUtils.getRemoteFile(url); long size = FileUtil.size(tempFile); String command_35 = "{\"tid\":\"" + taskId + "\",\"c\":35,\"param\":{\"len\":" + size + ",\"url\":\"" + url + "\"}}"; ObjectNode objectNode_35 = mapper.readValue(command_35, ObjectNode.class); jsonNode.put("command", objectNode_35.toString()); break; case CommandType.UPGRADE_AUDIO: String command_30 = "{\"tid\":\"" + taskId + "\",\"c\":30,\"param\":{\"idx\":" + idx + ",\"url\":\"" + url + "\",\"default\":0}}"; ObjectNode objectNode_30 = mapper.readValue(command_30, ObjectNode.class); jsonNode.put("command", objectNode_30.toString()); break; default: throw new EbikeException("该命令暂未接入"); } return jsonNode.toString(); } }