diff --git a/src/main/java/com/zsc/edu/gateway/framework/json/JsonTypeHandler.java b/src/main/java/com/zsc/edu/gateway/framework/json/JsonTypeHandler.java new file mode 100644 index 0000000..bec2b7a --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/framework/json/JsonTypeHandler.java @@ -0,0 +1,78 @@ +package com.zsc.edu.gateway.framework.json; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; +import org.springframework.stereotype.Component; + +import java.sql.CallableStatement; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author zhuang + */ +@Component +public class JsonTypeHandler extends BaseTypeHandler { + + private static final ObjectMapper objectMapper = new ObjectMapper(); + + @Override + public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException { + try { + String jsonString; + if (parameter instanceof Map) { + jsonString = objectMapper.writeValueAsString(parameter); + } else if (parameter instanceof String) { + jsonString = (String) parameter; + } else if (parameter instanceof List) { + jsonString = objectMapper.writeValueAsString(parameter); + } else { + throw new SQLException("Unsupported parameter type: " + parameter.getClass().getName()); + } + ps.setString(i, jsonString); + } catch (JsonProcessingException e) { + throw new SQLException("Error converting object to JSON", e); + } + } + + @Override + public Object getNullableResult(ResultSet rs, String columnName) throws SQLException { + String json = rs.getString(columnName); + return parseJson(json); + } + + @Override + public Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException { + String json = rs.getString(columnIndex); + return parseJson(json); + } + + @Override + public Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { + String json = cs.getString(columnIndex); + return parseJson(json); + } + + private Object parseJson(String json) { + if (json == null) { + return null; + } + try { + if (json.startsWith("{")) { + return objectMapper.readValue(json, HashMap.class); + } else if (json.startsWith("[")) { + return objectMapper.readValue(json, List.class); + } else { + throw new RuntimeException("Invalid JSON format"); + } + } catch (Exception e) { + throw new RuntimeException("Error parsing JSON", e); + } + } +} diff --git a/src/main/java/com/zsc/edu/gateway/framework/json/MapJsonTypeHandler.java b/src/main/java/com/zsc/edu/gateway/framework/json/MapJsonTypeHandler.java deleted file mode 100644 index 32ee136..0000000 --- a/src/main/java/com/zsc/edu/gateway/framework/json/MapJsonTypeHandler.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.zsc.edu.gateway.framework.json; - -import org.apache.ibatis.type.BaseTypeHandler; -import org.apache.ibatis.type.JdbcType; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.springframework.stereotype.Component; - -import java.sql.CallableStatement; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.HashMap; -import java.util.Map; - -/** - * @author zhuang - */ -@Component -public class MapJsonTypeHandler extends BaseTypeHandler> { - - private static final ObjectMapper objectMapper = new ObjectMapper(); - - @Override - public void setNonNullParameter(PreparedStatement ps, int i, Map parameter, JdbcType jdbcType) throws SQLException { - try { - ps.setString(i, objectMapper.writeValueAsString(parameter)); - } catch (JsonProcessingException e) { - throw new SQLException("Error converting map to JSON", e); - } - } - - @Override - public Map getNullableResult(ResultSet rs, String columnName) throws SQLException { - String json = rs.getString(columnName); - return parseJson(json); - } - - @Override - public Map getNullableResult(ResultSet rs, int columnIndex) throws SQLException { - String json = rs.getString(columnIndex); - return parseJson(json); - } - - @Override - public Map getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { - String json = cs.getString(columnIndex); - return parseJson(json); - } - - private Map parseJson(String json) { - if (json == null) { - return null; - } - try { - return objectMapper.readValue(json, HashMap.class); - } catch (Exception e) { - throw new RuntimeException("Error parsing JSON to map", e); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/BatchDeviceDto.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/BatchDeviceDto.java index 95dfec3..eb82a67 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/BatchDeviceDto.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/BatchDeviceDto.java @@ -7,7 +7,9 @@ import lombok.NoArgsConstructor; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import org.springframework.boot.configurationprocessor.json.JSONObject; +import java.util.List; import java.util.Map; /** @@ -33,11 +35,11 @@ public class BatchDeviceDto { /** * 扩展属性 */ - private Map extendParams; + private List> extendParams; /** * 设备物模型属性 */ - private Map properties; + private List> properties; /** * 固件版本 */ diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/DeviceDto.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/DeviceDto.java index 184ba49..a31bae9 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/DeviceDto.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/DeviceDto.java @@ -6,7 +6,9 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import jakarta.validation.constraints.NotBlank; +import org.springframework.boot.configurationprocessor.json.JSONObject; +import java.util.List; import java.util.Map; /** @@ -36,12 +38,13 @@ public class DeviceDto { /** * 扩展属性 */ - private Map extendParams; + + private List> extendParams; /** * 设备物模型属性 */ - private Map properties; + private List> properties; /** * 所属产品 diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/device/entity/Device.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/entity/Device.java index b50b1de..5636a4d 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/device/entity/Device.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/entity/Device.java @@ -4,15 +4,16 @@ import com.baomidou.mybatisplus.annotation.IEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.zsc.edu.gateway.common.enums.IState; -import com.zsc.edu.gateway.framework.json.MapJsonTypeHandler; +import com.zsc.edu.gateway.framework.json.JsonTypeHandler; import com.zsc.edu.gateway.modules.iot.product.entity.Product; import com.zsc.edu.gateway.modules.system.entity.BaseEntity; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import org.springframework.boot.configurationprocessor.json.JSONObject; -import java.util.Map; +import java.util.List; /** * @author 15864 @@ -64,14 +65,15 @@ public class Device extends BaseEntity { /** * 扩展配置 */ - @TableField(typeHandler = MapJsonTypeHandler.class) - private Map extendParams; + //TODO String + @TableField(typeHandler = JsonTypeHandler.class) + private List extendParams; /** * 设备属性 */ - @TableField(typeHandler = MapJsonTypeHandler.class) - private Map properties; + @TableField(typeHandler = JsonTypeHandler.class) + private List properties; /** * 所属产品ID diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/device/vo/DeviceVo.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/vo/DeviceVo.java index ff4cccf..6fe42ed 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/device/vo/DeviceVo.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/vo/DeviceVo.java @@ -6,8 +6,10 @@ import com.zsc.edu.gateway.modules.iot.device.entity.Device; import com.zsc.edu.gateway.modules.iot.product.entity.Product; import com.zsc.edu.gateway.modules.iot.tsl.entity.Param; import lombok.Data; +import org.springframework.boot.configurationprocessor.json.JSONObject; import java.time.LocalDateTime; +import java.util.List; import java.util.Map; import java.util.Set; @@ -61,12 +63,12 @@ public class DeviceVo { /** * 扩展配置 */ - private Map extendParams; + private List> extendParams; /** * 设备属性 */ - private Map properties; + private List> properties; /** * 备注说明 diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/RecordData.java b/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/RecordData.java index d5cd90f..8d6637e 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/RecordData.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/RecordData.java @@ -3,7 +3,7 @@ package com.zsc.edu.gateway.modules.iot.record.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.zsc.edu.gateway.framework.json.MapJsonTypeHandler; +import com.zsc.edu.gateway.framework.json.JsonTypeHandler; import lombok.*; import org.springframework.format.annotation.DateTimeFormat; @@ -26,7 +26,7 @@ public class RecordData { private String attachmentId; - @TableField(typeHandler = MapJsonTypeHandler.class) + @TableField(typeHandler = JsonTypeHandler.class) private Map content; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/impl/RecordDataServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/impl/RecordDataServiceImpl.java index 11b3128..942e6fa 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/impl/RecordDataServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/impl/RecordDataServiceImpl.java @@ -38,7 +38,6 @@ public class RecordDataServiceImpl extends ServiceImpl recordData(String clientId) { LocalDateTime recordTime = LocalDateTime.parse(redisUtils.get("serve:sendTime:photograph:" + clientId)); diff --git a/src/main/java/com/zsc/edu/gateway/modules/system/controller/UserController.java b/src/main/java/com/zsc/edu/gateway/modules/system/controller/UserController.java index 4fbadbe..277883e 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/system/controller/UserController.java +++ b/src/main/java/com/zsc/edu/gateway/modules/system/controller/UserController.java @@ -191,7 +191,7 @@ public class UserController { } /** - * 根据ID查询用户 + * 获取MENU * */ @GetMapping("/menu") public List menu(@AuthenticationPrincipal UserDetailsImpl userDetails) { diff --git a/src/main/java/com/zsc/edu/gateway/modules/system/entity/Menu.java b/src/main/java/com/zsc/edu/gateway/modules/system/entity/Menu.java index 76ad607..09ce7a6 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/system/entity/Menu.java +++ b/src/main/java/com/zsc/edu/gateway/modules/system/entity/Menu.java @@ -1,7 +1,9 @@ package com.zsc.edu.gateway.modules.system.entity; -import com.baomidou.mybatisplus.annotation.EnumValue; + +import com.baomidou.mybatisplus.annotation.IEnum; import com.baomidou.mybatisplus.annotation.TableName; +import com.zsc.edu.gateway.common.enums.IState; import lombok.*; /** @@ -29,14 +31,33 @@ public class Menu extends BaseEntity { private String permissions; private String authority; - @Getter - @AllArgsConstructor - public enum Type { + public enum Type implements IEnum, IState { + /** + * 页面 + */ PAGE(1, "页面"), + /** + * 操作 + */ OPERATION(2, "操作"); - @EnumValue - private final Integer code; - private final String desc; + + private final Integer value; + private final String description; + + Type(int value, String description) { + this.value = value; + this.description = description; + } + + @Override + public Integer getValue() { + return this.value; + } + + @Override + public String toString() { + return this.description; + } } } diff --git a/src/main/resources/mappers/iot/DeviceMapper.xml b/src/main/resources/mappers/iot/DeviceMapper.xml index dc7af49..d917639 100644 --- a/src/main/resources/mappers/iot/DeviceMapper.xml +++ b/src/main/resources/mappers/iot/DeviceMapper.xml @@ -14,9 +14,9 @@ + typeHandler="com.zsc.edu.gateway.framework.json.JsonTypeHandler"/> + typeHandler="com.zsc.edu.gateway.framework.json.JsonTypeHandler"/>