From 364d7d23d59a5490fa75b00b217d31b8ae7384dd Mon Sep 17 00:00:00 2001 From: liu Date: Tue, 2 Apr 2024 15:47:44 +0800 Subject: [PATCH] init --- .../com/supervision/config/MinioConfig.java | 24 ----- .../supervision/config/MinioProperties.java | 19 ---- .../com/supervision/config/WebConfig.java | 2 +- .../java/com/supervision/util/MinioUtil.java | 95 ---------------- kbqa-graph/pom.xml | 94 ++++++++++++++++ .../KnowledgeGraphApplication.java | 13 +++ .../supervision/config/PkGeneratorConfig.java | 26 +++++ .../config/SnowflakePKGenerator.java | 16 +++ .../controller/TestController.java | 32 ++++++ .../ngbatis/dao/ItemBranchDao.java | 9 ++ .../ngbatis/domain/ItemBranch.java | 17 +++ .../src/main/resources/application-dev.yml | 0 kbqa-graph/src/main/resources/application.yml | 102 ++++++++++++++++++ .../resources/nebulaMapper/ItemBranchDao.xml | 3 + .../controller/TestController.java | 18 ---- .../controller/UserController.java | 4 + pom.xml | 1 + 17 files changed, 318 insertions(+), 157 deletions(-) delete mode 100644 kbqa-common/src/main/java/com/supervision/config/MinioConfig.java delete mode 100644 kbqa-common/src/main/java/com/supervision/config/MinioProperties.java delete mode 100644 kbqa-common/src/main/java/com/supervision/util/MinioUtil.java create mode 100644 kbqa-graph/pom.xml create mode 100644 kbqa-graph/src/main/java/com/supervision/KnowledgeGraphApplication.java create mode 100644 kbqa-graph/src/main/java/com/supervision/config/PkGeneratorConfig.java create mode 100644 kbqa-graph/src/main/java/com/supervision/config/SnowflakePKGenerator.java create mode 100644 kbqa-graph/src/main/java/com/supervision/controller/TestController.java create mode 100644 kbqa-graph/src/main/java/com/supervision/ngbatis/dao/ItemBranchDao.java create mode 100644 kbqa-graph/src/main/java/com/supervision/ngbatis/domain/ItemBranch.java create mode 100644 kbqa-graph/src/main/resources/application-dev.yml create mode 100644 kbqa-graph/src/main/resources/application.yml create mode 100644 kbqa-graph/src/main/resources/nebulaMapper/ItemBranchDao.xml diff --git a/kbqa-common/src/main/java/com/supervision/config/MinioConfig.java b/kbqa-common/src/main/java/com/supervision/config/MinioConfig.java deleted file mode 100644 index 92329f1..0000000 --- a/kbqa-common/src/main/java/com/supervision/config/MinioConfig.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.supervision.config; - -import io.minio.MinioClient; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Configuration -public class MinioConfig { - - /** - * 创建基于Java端的MinioClient - */ - @Bean - @ConditionalOnProperty(prefix = "minio",name = "url") - public MinioClient minioClient(MinioProperties minioProperties) { - return MinioClient.builder().endpoint(minioProperties.getUrl()) - .credentials(minioProperties.getAccessKey(), minioProperties.getSecretKey()) - .build(); - } - - -} diff --git a/kbqa-common/src/main/java/com/supervision/config/MinioProperties.java b/kbqa-common/src/main/java/com/supervision/config/MinioProperties.java deleted file mode 100644 index d846f18..0000000 --- a/kbqa-common/src/main/java/com/supervision/config/MinioProperties.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.supervision.config; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -@Data -@Component -@ConfigurationProperties(prefix = "minio") -public class MinioProperties { - - private String url; - - private String accessKey; - - private String secretKey; - - private String bucketName; -} diff --git a/kbqa-common/src/main/java/com/supervision/config/WebConfig.java b/kbqa-common/src/main/java/com/supervision/config/WebConfig.java index f2bf55e..c095b8c 100644 --- a/kbqa-common/src/main/java/com/supervision/config/WebConfig.java +++ b/kbqa-common/src/main/java/com/supervision/config/WebConfig.java @@ -43,7 +43,7 @@ public class WebConfig implements WebMvcConfigurer { paths.add("/favicon.ico"); paths.add("/user/login"); // 开发环境,放开不校验token.每次修改这里需要重启(热部署不行) -// paths.add("/**"); + paths.add("/**"); return paths; } diff --git a/kbqa-common/src/main/java/com/supervision/util/MinioUtil.java b/kbqa-common/src/main/java/com/supervision/util/MinioUtil.java deleted file mode 100644 index 8b02abc..0000000 --- a/kbqa-common/src/main/java/com/supervision/util/MinioUtil.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.supervision.util; - -import com.supervision.config.MinioProperties; -import io.minio.*; -import io.minio.http.Method; -import lombok.extern.slf4j.Slf4j; - -import java.io.InputStream; -import java.util.UUID; - -@Slf4j -public class MinioUtil { - private static final MinioClient minioClient = SpringBeanUtil.getBean(MinioClient.class); - - private static final String bucketName = SpringBeanUtil.getBean(MinioProperties.class).getBucketName(); - - static { - try { - if (!minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())) { - - log.info("未找到bucket,自动建立"); - minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build()); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - - /** - * 上传一个文件 - */ - public static String uploadFile(InputStream stream) throws Exception { - ObjectWriteResponse objectWriteResponse = minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(UUID.randomUUID().toString()) - .stream(stream, stream.available(), -1).build()); - return objectWriteResponse.object(); - } - - /** - * 上传文件 - * @param stream 文件流 - * @param contentType 文件类型 - * @return 文件id - * @throws Exception - */ - public static String uploadFile(InputStream stream,String contentType) throws Exception { - ObjectWriteResponse objectWriteResponse = minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(UUID.randomUUID().toString()) - .stream(stream, stream.available(), -1).contentType(contentType).build()); - return objectWriteResponse.object(); - } - - /** - * 下载一个文件 - */ - public static InputStream download(String fileId) throws Exception { - return minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileId).build()); - } - - - /** - * 删除一个对象 - */ - public static void deleteObject(String fileId) throws Exception { - minioClient.removeObject(RemoveObjectArgs.builder().bucket(bucketName).object(fileId).build()); - } - - - /** - * 获取文件信息 - * - * @Param: [bucket, objectName] - * @return: java.lang.String - * @Author: MrFugui - * @Date: 2021/11/15 - */ - public static String getObjectInfo(String fileId) throws Exception { - return minioClient.statObject(StatObjectArgs.builder().bucket(bucketName).object(fileId).build()).toString(); - } - - /** - * 生成一个给HTTP GET请求用的presigned URL。浏览器/移动端的客户端可以用这个URL进行下载,即使其所在的存储桶是私有的。 - * - * @Param: [bucketName, objectName, expires] - * @return: java.lang.String - * @Author: MrFugui - * @Date: 2021/11/15 - */ - public static String getPresignedObjectUrl(String bucketName, String objectName, Integer expires) throws Exception { - GetPresignedObjectUrlArgs build = GetPresignedObjectUrlArgs - .builder().bucket(bucketName).object(objectName).expiry(expires).method(Method.GET).build(); - return minioClient.getPresignedObjectUrl(build); - } - - -} diff --git a/kbqa-graph/pom.xml b/kbqa-graph/pom.xml new file mode 100644 index 0000000..36c8d4e --- /dev/null +++ b/kbqa-graph/pom.xml @@ -0,0 +1,94 @@ + + + 4.0.0 + + + com.supervision + KBQA + 1.0-SNAPSHOT + + kbqa-graph + 0.0.1-SNAPSHOT + knowledge-report + + + + + com.supervision + kbqa-common + 1.0-SNAPSHOT + + + io.minio + minio + + + + + org.springframework.boot + spring-boot-starter + + + + org.projectlombok + lombok + true + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + org.springframework.boot + spring-boot-starter-undertow + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + mysql + mysql-connector-java + + + + org.nebula-contrib + ngbatis + 1.2.1 + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + diff --git a/kbqa-graph/src/main/java/com/supervision/KnowledgeGraphApplication.java b/kbqa-graph/src/main/java/com/supervision/KnowledgeGraphApplication.java new file mode 100644 index 0000000..cf2b751 --- /dev/null +++ b/kbqa-graph/src/main/java/com/supervision/KnowledgeGraphApplication.java @@ -0,0 +1,13 @@ +package com.supervision; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication(scanBasePackages = {"com.supervision.**","org.nebula"}) +public class KnowledgeGraphApplication { + + public static void main(String[] args) { + SpringApplication.run(KnowledgeGraphApplication.class, args); + } + +} diff --git a/kbqa-graph/src/main/java/com/supervision/config/PkGeneratorConfig.java b/kbqa-graph/src/main/java/com/supervision/config/PkGeneratorConfig.java new file mode 100644 index 0000000..e9e531f --- /dev/null +++ b/kbqa-graph/src/main/java/com/supervision/config/PkGeneratorConfig.java @@ -0,0 +1,26 @@ +package com.supervision.config; + +// Copyright (c) 2022 All project authors. All rights reserved. +// +// This source code is licensed under Apache 2.0 License. + +import org.nebula.contrib.ngbatis.PkGenerator; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * 主键生成样例 + * + * @author yeweicheng + * @since 2022-06-14 12:32 + *
Now is history! + */ +@Configuration +public class PkGeneratorConfig { + + @Bean + public PkGenerator pkGenerator() { + return new SnowflakePKGenerator(); + } + +} diff --git a/kbqa-graph/src/main/java/com/supervision/config/SnowflakePKGenerator.java b/kbqa-graph/src/main/java/com/supervision/config/SnowflakePKGenerator.java new file mode 100644 index 0000000..2bf1219 --- /dev/null +++ b/kbqa-graph/src/main/java/com/supervision/config/SnowflakePKGenerator.java @@ -0,0 +1,16 @@ +package com.supervision.config; + +import cn.hutool.core.util.IdUtil; +import org.nebula.contrib.ngbatis.PkGenerator; + +public class SnowflakePKGenerator implements PkGenerator { + + @Override + @SuppressWarnings("all") + public T generate(String tagName, Class pkType) { + if (pkType == String.class) { + return (T) IdUtil.getSnowflakeNextIdStr(); + } + return (T) Long.valueOf(IdUtil.getSnowflakeNextIdStr()); + } +} diff --git a/kbqa-graph/src/main/java/com/supervision/controller/TestController.java b/kbqa-graph/src/main/java/com/supervision/controller/TestController.java new file mode 100644 index 0000000..f413c32 --- /dev/null +++ b/kbqa-graph/src/main/java/com/supervision/controller/TestController.java @@ -0,0 +1,32 @@ +package com.supervision.controller; + +import com.supervision.ngbatis.dao.ItemBranchDao; +import com.supervision.ngbatis.domain.ItemBranch; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + + +@RestController +@RequestMapping("test") +@RequiredArgsConstructor +public class TestController { + + @Resource + private ItemBranchDao itemBranchDao; + + @GetMapping("hello") + public void hello() { + ItemBranch itemBranch = new ItemBranch(); + itemBranch.setItemName("退休"); + itemBranchDao.insert(itemBranch); + } + + + + + +} diff --git a/kbqa-graph/src/main/java/com/supervision/ngbatis/dao/ItemBranchDao.java b/kbqa-graph/src/main/java/com/supervision/ngbatis/dao/ItemBranchDao.java new file mode 100644 index 0000000..595bd03 --- /dev/null +++ b/kbqa-graph/src/main/java/com/supervision/ngbatis/dao/ItemBranchDao.java @@ -0,0 +1,9 @@ +package com.supervision.ngbatis.dao; + +import com.supervision.ngbatis.domain.ItemBranch; +import org.nebula.contrib.ngbatis.proxy.NebulaDaoBasic; + +public interface ItemBranchDao extends NebulaDaoBasic { + + +} diff --git a/kbqa-graph/src/main/java/com/supervision/ngbatis/domain/ItemBranch.java b/kbqa-graph/src/main/java/com/supervision/ngbatis/domain/ItemBranch.java new file mode 100644 index 0000000..1df88a4 --- /dev/null +++ b/kbqa-graph/src/main/java/com/supervision/ngbatis/domain/ItemBranch.java @@ -0,0 +1,17 @@ +package com.supervision.ngbatis.domain; + +import lombok.Data; + +import javax.persistence.Id; +import javax.persistence.Table; + +@Data +@Table(name = "itemBranchTag") +public class ItemBranch { + + @Id + private String id; + + private String itemName; + +} diff --git a/kbqa-graph/src/main/resources/application-dev.yml b/kbqa-graph/src/main/resources/application-dev.yml new file mode 100644 index 0000000..e69de29 diff --git a/kbqa-graph/src/main/resources/application.yml b/kbqa-graph/src/main/resources/application.yml new file mode 100644 index 0000000..035d986 --- /dev/null +++ b/kbqa-graph/src/main/resources/application.yml @@ -0,0 +1,102 @@ +server: + port: 9810 + servlet: + context-path: /knowledge-graph + undertow: + # HTTP post内容的最大大小。当值为-1时,默认值为大小是无限的 + max-http-post-size: -1 + # 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理 + # 每块buffer的空间大小,越小的空间被利用越充分 + buffer-size: 512 + # 是否分配的直接内存 + direct-buffers: true + +spring: + profiles: + active: dev + application: + name: knowledge-graph + servlet: + multipart: + max-file-size: 100MB + max-request-size: 100MB + datasource: + type: com.alibaba.druid.pool.DruidDataSource + druid: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://192.168.10.137:3306/knowledge_report?useUnicode=true&characterEncoding=utf-8&useSSL=true&nullCatalogMeansCurrent=true&serverTimezone=GMT%2B8 + username: root + password: '123456' + initial-size: 5 # 初始化大小 + min-idle: 10 # 最小连接数 + max-active: 20 # 最大连接数 + max-wait: 60000 # 获取连接时的最大等待时间 + min-evictable-idle-time-millis: 300000 # 一个连接在池中最小生存的时间,单位是毫秒 + time-between-eviction-runs-millis: 60000 # 多久才进行一次检测需要关闭的空闲连接,单位是毫秒 + filters: stat,wall # 配置扩展插件:stat-监控统计,log4j-日志,wall-防火墙(防止SQL注入),去掉后,监控界面的sql无法统计 + validation-query: SELECT 1 # 检测连接是否有效的 SQL语句,为空时以下三个配置均无效 + test-on-borrow: true # 申请连接时执行validationQuery检测连接是否有效,默认true,开启后会降低性能 + test-on-return: true # 归还连接时执行validationQuery检测连接是否有效,默认false,开启后会降低性能 + test-while-idle: true # 申请连接时如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效,默认false,建议开启,不影响性能 + stat-view-servlet: + enabled: false # 是否开启 StatViewServlet + filter: + stat: + enabled: true # 是否开启 FilterStat,默认true + log-slow-sql: true # 是否开启 慢SQL 记录,默认false + slow-sql-millis: 5000 # 慢 SQL 的标准,默认 3000,单位:毫秒 + merge-sql: false # 合并多个连接池的监控数据,默认false + redis: + host: 192.168.10.137 + port: 6379 + password: 123456 +minio: + url: http://192.168.10.137:9002 + accessKey: admin + secretKey: 12345678 + bucketName: kbqa-dev + +mybatis-plus: + mapper-locations: classpath*:mapper/**/*.xml + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + +nebula: + ngbatis: + # ^v1.1.2 + # 连接使用 nebula-java 中的 SessionPool + use-session-pool: true + # 填入 graphd 的 ip 和端口号,下面仅供参考 + hosts: 192.168.10.137:9669 + # 连接图数据库所用的用户名 + username: root + # 连接图数据库所用的密码 + password: 123456 + # 所要连接的图数据库图空间名 + space: kbqa + # 连接池配置 + pool-config: + # 连接池中最小空闲连接数 + min-conns-size: 0 + # 连接池中最大空闲连接数 + max-conns-size: 10 + # 客户端同服务端建立连接的超时时间设置,单位为 ms;超过设定时间未建立起连接,则报错 + timeout: 0 + # 连接空闲时间,为 0 表示连接永不删除,单位为 ms + idle-time: 0 + # 连接池检测空闲连接的时间间隔,为 -1 表示不进行检测 + interval-idle: -1 + # 连接等候时间,超过则不再等候连接 + wait-time: 0 + # 集群允许最小的服务可用率,1.0 表示为所有机器 graphd 可用,0.25 表示集群中 1/4 机器可用即可 + min-cluster-health-rate: 1.0 + # 是否允许 SSL 连接,目前暂不支持 + enable-ssl: false +cql: + parser: + # 更换开发者自定义的 xml 所在位置 + mapper-locations: nebulaMapper/**/*.xml # 默认为 mapper/**/*.xml + +logging: + level: + org.nebula.contrib: DEBUG \ No newline at end of file diff --git a/kbqa-graph/src/main/resources/nebulaMapper/ItemBranchDao.xml b/kbqa-graph/src/main/resources/nebulaMapper/ItemBranchDao.xml new file mode 100644 index 0000000..1952da4 --- /dev/null +++ b/kbqa-graph/src/main/resources/nebulaMapper/ItemBranchDao.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/kbqa-report/src/main/java/com/supervision/controller/TestController.java b/kbqa-report/src/main/java/com/supervision/controller/TestController.java index 346fd78..194e705 100644 --- a/kbqa-report/src/main/java/com/supervision/controller/TestController.java +++ b/kbqa-report/src/main/java/com/supervision/controller/TestController.java @@ -21,26 +21,8 @@ public class TestController { return "OK"; } - public static void main(String[] args) { - // 创建 Trie 对象 - Trie trie = Trie.builder() - .addKeyword("果果") - .addKeyword("香蕉") - .build(); - // 需要匹配的中文文本 - String text = "我喜欢吃苹果和香蕉,水果是我的最爱。"; - - // 在中文文本中查找匹配关键词 - Collection emits = trie.parseText(text); - - // 输出匹配结果 - for (Emit emit : emits) { - System.out.println("在文本中找到关键词 '" + emit.getKeyword() + "',位置:" + emit.getStart()); - } - - } } diff --git a/kbqa-report/src/main/java/com/supervision/controller/UserController.java b/kbqa-report/src/main/java/com/supervision/controller/UserController.java index edf774c..221213e 100644 --- a/kbqa-report/src/main/java/com/supervision/controller/UserController.java +++ b/kbqa-report/src/main/java/com/supervision/controller/UserController.java @@ -3,6 +3,9 @@ package com.supervision.controller; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.tokenizer.Result; +import cn.hutool.extra.tokenizer.TokenizerEngine; +import cn.hutool.extra.tokenizer.TokenizerUtil; import cn.hutool.json.JSONUtil; import com.supervision.exception.BusinessException; import com.supervision.util.TokenUtil; @@ -39,4 +42,5 @@ public class UserController { return null; } + } diff --git a/pom.xml b/pom.xml index 8979885..5ca3c1c 100644 --- a/pom.xml +++ b/pom.xml @@ -20,6 +20,7 @@ kbqa-report kbqa-common kbqa-model + kbqa-graph