diff --git a/.gitignore b/.gitignore
index 667aaef..eb771b6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,3 +31,7 @@ build/
### VS Code ###
.vscode/
+
+/.mvn/
+mvnw
+mvnw.cmd
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 0000000..c0bcafe
--- /dev/null
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1,3 @@
+wrapperVersion=3.3.4
+distributionType=only-script
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.11/apache-maven-3.9.11-bin.zip
diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml
new file mode 100644
index 0000000..d97e823
--- /dev/null
+++ b/docker/docker-compose.yaml
@@ -0,0 +1,28 @@
+services:
+ tsdb:
+ image: tdengine/tsdb:3.3.8.8
+ hostname: tsdb
+ ports:
+ - "6030:6030"
+ - "6041:6041"
+ - "6043:6043"
+ - "6060:6060"
+ - "6044-6049:6044-6049"
+ - "6044-6045:6044-6045/udp"
+ - "6050:6050"
+ - "6055:6055"
+ - "6030-6060:6030-6060/udp"
+ restart: always
+
+ db:
+ image: postgres:15.15
+ hostname: postgres
+ ports:
+ - "5432:5432"
+ environment:
+ - TZ=Asia/Shanghai
+ - POSTGRES_USER=energy
+ - POSTGRES_PASSWORD=energy
+ - POSTGRES_DB=energy
+ restart: always
+
diff --git a/pom.xml b/pom.xml
index 7a3c9cd..4ef3f5f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,6 +35,41 @@
spring-boot-starter-web
+
+
+ cn.dev33
+ sa-token-spring-boot3-starter
+ 1.44.0
+
+
+
+
+ com.alibaba
+ druid-spring-boot-3-starter
+ 1.2.27
+
+
+ com.mybatis-flex
+ mybatis-flex-spring-boot3-starter
+ 1.11.4
+
+
+ com.mybatis-flex
+ mybatis-flex-processor
+ 1.11.4
+ provided
+
+
+ com.taosdata.jdbc
+ taos-jdbcdriver
+ 3.7.9
+
+
+ org.postgresql
+ postgresql
+ 42.7.8
+
+
org.projectlombok
lombok
@@ -58,6 +93,11 @@
org.projectlombok
lombok
+
+ com.mybatis-flex
+ mybatis-flex-processor
+ 1.11.4
+
diff --git a/src/main/java/com/xapg/energystoragesafety/EnergyStorageSafetyApplication.java b/src/main/java/com/xapg/energystoragesafety/EnergyStorageSafetyApplication.java
index 76a6f21..7e79400 100644
--- a/src/main/java/com/xapg/energystoragesafety/EnergyStorageSafetyApplication.java
+++ b/src/main/java/com/xapg/energystoragesafety/EnergyStorageSafetyApplication.java
@@ -1,13 +1,13 @@
package com.xapg.energystoragesafety;
+import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
+@MapperScan("com.xapg.energystoragesafety.mapper")
public class EnergyStorageSafetyApplication {
-
public static void main(String[] args) {
SpringApplication.run(EnergyStorageSafetyApplication.class, args);
}
-
}
diff --git a/src/main/java/com/xapg/energystoragesafety/entity/Account.java b/src/main/java/com/xapg/energystoragesafety/entity/Account.java
new file mode 100644
index 0000000..75872b4
--- /dev/null
+++ b/src/main/java/com/xapg/energystoragesafety/entity/Account.java
@@ -0,0 +1,18 @@
+package com.xapg.energystoragesafety.entity;
+
+import com.mybatisflex.annotation.Id;
+import com.mybatisflex.annotation.KeyType;
+import com.mybatisflex.annotation.Table;
+import lombok.Data;
+
+import java.sql.Date;
+
+@Data
+@Table("account")
+public class Account {
+ @Id(keyType = KeyType.Auto)
+ private Long id;
+ private String userName;
+ private Integer age;
+ private Date birthday;
+}
diff --git a/src/main/java/com/xapg/energystoragesafety/entity/Meters.java b/src/main/java/com/xapg/energystoragesafety/entity/Meters.java
new file mode 100644
index 0000000..3b596ea
--- /dev/null
+++ b/src/main/java/com/xapg/energystoragesafety/entity/Meters.java
@@ -0,0 +1,19 @@
+package com.xapg.energystoragesafety.entity;
+
+import com.mybatisflex.annotation.Id;
+import com.mybatisflex.annotation.Table;
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+@Data
+@Table(value = "meters", dataSource = "tsdb")
+public class Meters {
+ @Id
+ private Timestamp ts;
+ private Double current;
+ private Integer voltage;
+ private Double phase;
+ private Integer groupid;
+ private String location;
+}
diff --git a/src/main/java/com/xapg/energystoragesafety/mapper/AccountMapper.java b/src/main/java/com/xapg/energystoragesafety/mapper/AccountMapper.java
new file mode 100644
index 0000000..eb78979
--- /dev/null
+++ b/src/main/java/com/xapg/energystoragesafety/mapper/AccountMapper.java
@@ -0,0 +1,7 @@
+package com.xapg.energystoragesafety.mapper;
+
+import com.mybatisflex.core.BaseMapper;
+import com.xapg.energystoragesafety.entity.Account;
+
+public interface AccountMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/xapg/energystoragesafety/mapper/MetersMapper.java b/src/main/java/com/xapg/energystoragesafety/mapper/MetersMapper.java
new file mode 100644
index 0000000..ebb3909
--- /dev/null
+++ b/src/main/java/com/xapg/energystoragesafety/mapper/MetersMapper.java
@@ -0,0 +1,7 @@
+package com.xapg.energystoragesafety.mapper;
+
+import com.mybatisflex.core.BaseMapper;
+import com.xapg.energystoragesafety.entity.Meters;
+
+public interface MetersMapper extends BaseMapper {
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
deleted file mode 100644
index 64f48e3..0000000
--- a/src/main/resources/application.properties
+++ /dev/null
@@ -1 +0,0 @@
-spring.application.name=energy-storage-safety
diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml
new file mode 100644
index 0000000..efc5fde
--- /dev/null
+++ b/src/main/resources/application.yaml
@@ -0,0 +1,38 @@
+spring:
+ application:
+ name: energy-storage-safety
+
+############## Sa-Token 配置 (文档: https://sa-token.cc) ##############
+sa-token:
+ # token 名称(同时也是 cookie 名称)
+ token-name: energy-storage-safety
+ # token 有效期(单位:秒) 默认30天,-1 代表永久有效
+ timeout: 2592000
+ # token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结
+ active-timeout: -1
+ # 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录)
+ is-concurrent: true
+ # 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token)
+ is-share: false
+ # token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)
+ token-style: uuid
+ # 是否输出操作日志
+ is-log: true
+
+mybatis-flex:
+ configuration:
+ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+ datasource:
+ # 主数据源 - PostgreSQL
+ db:
+ url: jdbc:postgresql://localhost:5432/energy
+ username: energy
+ password: energy
+ driver-class-name: org.postgresql.Driver
+
+ # 从数据源 - TDengine
+ tsdb:
+ url: jdbc:TAOS-RS://localhost:6041/test?useSSL=false
+ username: root
+ password: taosdata
+ driver-class-name: com.taosdata.jdbc.rs.RestfulDriver
diff --git a/src/test/java/com/xapg/energystoragesafety/EnergyStorageSafetyApplicationTests.java b/src/test/java/com/xapg/energystoragesafety/EnergyStorageSafetyApplicationTests.java
index 5589f85..768412d 100644
--- a/src/test/java/com/xapg/energystoragesafety/EnergyStorageSafetyApplicationTests.java
+++ b/src/test/java/com/xapg/energystoragesafety/EnergyStorageSafetyApplicationTests.java
@@ -1,13 +1,17 @@
package com.xapg.energystoragesafety;
+import com.xapg.energystoragesafety.mapper.AccountMapper;
import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class EnergyStorageSafetyApplicationTests {
+ @Autowired
+ private AccountMapper accountMapper;
@Test
void contextLoads() {
+ System.out.println(accountMapper.selectAll());
}
-
}
diff --git a/src/test/java/com/xapg/energystoragesafety/TDengineTest.java b/src/test/java/com/xapg/energystoragesafety/TDengineTest.java
new file mode 100644
index 0000000..a5b5781
--- /dev/null
+++ b/src/test/java/com/xapg/energystoragesafety/TDengineTest.java
@@ -0,0 +1,26 @@
+package com.xapg.energystoragesafety;
+
+import com.mybatisflex.core.query.QueryWrapper;
+import com.xapg.energystoragesafety.mapper.MetersMapper;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import static com.xapg.energystoragesafety.Tables.METERS;
+
+@SpringBootTest
+public class TDengineTest {
+
+ @Autowired
+ private MetersMapper metersMapper;
+
+ @Test
+ public void testInsertAndQuery() {
+ QueryWrapper qw = QueryWrapper.create()
+ .select() // 可选:指定字段,如 .select(YOUR_ENTITY.ID, YOUR_ENTITY.NAME)
+ .from(METERS) // 替换为你的表常量
+ .limit(200); // 限制最多 200 条
+ // 创建测试数据
+ metersMapper.selectListByQuery(qw).forEach(System.out::println);
+ }
+}