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); + } +}