From 083d007caafb61d225561ceccf3273ad5af5f405 Mon Sep 17 00:00:00 2001
From: laifeng <1572427111@qq.com>
Date: Fri, 3 Jan 2025 09:50:21 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 51 +++++
Dockerfile | 27 +++
pom.xml | 179 ++++++++++++++++++
.../com/sinenux/yshub/HubApplication.java | 39 ++++
.../yshub/config/IpWhitelistInterceptor.java | 43 +++++
.../com/sinenux/yshub/config/MongoConfig.java | 29 +++
.../com/sinenux/yshub/config/MysqlConfig.java | 61 ++++++
.../sinenux/yshub/config/WebMvcConfig.java | 18 ++
.../yshub/controller/DemoController.java | 13 ++
.../EnterprisePrefixController.java | 66 +++++++
.../controller/HandleInfoController.java | 36 ++++
.../yshub/controller/MainController.java | 45 +++++
.../yshub/controller/TemplateController.java | 47 +++++
.../com/sinenux/yshub/dto/HandleQuery.java | 34 ++++
.../yshub/dto/IdentityTemplateQuery.java | 90 +++++++++
.../yshub/entity/EnterprisePrefix.java | 80 ++++++++
.../yshub/entity/IdentityTemplate.java | 100 ++++++++++
.../yshub/entity/IdentityTemplateItem.java | 78 ++++++++
.../com/sinenux/yshub/entity/MHandleInfo.java | 62 ++++++
.../yshub/mapper/EnterprisePrefixMapper.java | 17 ++
.../yshub/mapper/EnterprisePrefixMapper.xml | 16 ++
.../mapper/IdentityTemplateItemMapper.java | 17 ++
.../mapper/IdentityTemplateItemMapper.xml | 8 +
.../yshub/mapper/IdentityTemplateMapper.java | 17 ++
.../yshub/mapper/IdentityTemplateMapper.xml | 8 +
.../service/IEnterprisePrefixService.java | 25 +++
.../impl/EnterprisePrefixServiceImpl.java | 48 +++++
.../com/sinenux/yshub/utils/MyDateUtil.java | 102 ++++++++++
src/main/resources/application-dev.yml | 13 ++
src/main/resources/application.yml | 3 +
.../sinenux/yshub/HubApplicationTests.java | 22 +++
31 files changed, 1394 insertions(+)
create mode 100644 .gitignore
create mode 100644 Dockerfile
create mode 100644 pom.xml
create mode 100644 src/main/java/com/sinenux/yshub/HubApplication.java
create mode 100644 src/main/java/com/sinenux/yshub/config/IpWhitelistInterceptor.java
create mode 100644 src/main/java/com/sinenux/yshub/config/MongoConfig.java
create mode 100644 src/main/java/com/sinenux/yshub/config/MysqlConfig.java
create mode 100644 src/main/java/com/sinenux/yshub/config/WebMvcConfig.java
create mode 100644 src/main/java/com/sinenux/yshub/controller/DemoController.java
create mode 100644 src/main/java/com/sinenux/yshub/controller/EnterprisePrefixController.java
create mode 100644 src/main/java/com/sinenux/yshub/controller/HandleInfoController.java
create mode 100644 src/main/java/com/sinenux/yshub/controller/MainController.java
create mode 100644 src/main/java/com/sinenux/yshub/controller/TemplateController.java
create mode 100644 src/main/java/com/sinenux/yshub/dto/HandleQuery.java
create mode 100644 src/main/java/com/sinenux/yshub/dto/IdentityTemplateQuery.java
create mode 100644 src/main/java/com/sinenux/yshub/entity/EnterprisePrefix.java
create mode 100644 src/main/java/com/sinenux/yshub/entity/IdentityTemplate.java
create mode 100644 src/main/java/com/sinenux/yshub/entity/IdentityTemplateItem.java
create mode 100644 src/main/java/com/sinenux/yshub/entity/MHandleInfo.java
create mode 100644 src/main/java/com/sinenux/yshub/mapper/EnterprisePrefixMapper.java
create mode 100644 src/main/java/com/sinenux/yshub/mapper/EnterprisePrefixMapper.xml
create mode 100644 src/main/java/com/sinenux/yshub/mapper/IdentityTemplateItemMapper.java
create mode 100644 src/main/java/com/sinenux/yshub/mapper/IdentityTemplateItemMapper.xml
create mode 100644 src/main/java/com/sinenux/yshub/mapper/IdentityTemplateMapper.java
create mode 100644 src/main/java/com/sinenux/yshub/mapper/IdentityTemplateMapper.xml
create mode 100644 src/main/java/com/sinenux/yshub/service/IEnterprisePrefixService.java
create mode 100644 src/main/java/com/sinenux/yshub/service/impl/EnterprisePrefixServiceImpl.java
create mode 100644 src/main/java/com/sinenux/yshub/utils/MyDateUtil.java
create mode 100644 src/main/resources/application-dev.yml
create mode 100644 src/main/resources/application.yml
create mode 100644 src/test/java/com/sinenux/yshub/HubApplicationTests.java
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2d81824
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,51 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!.mvn/wrapper/maven-wrapper.properties
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+.log
+*.class
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+# windows #
+Thumbs.db
+
+# Mac #
+.DS_Store
+
+# Package Files #
+*.jar
+*.war
+*.ear
+
+logs
+
+rebel.xml
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..8b26890
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,27 @@
+FROM adoptopenjdk/openjdk8-openj9:alpine-slim
+
+MAINTAINER dev@qingniaoiiot.com
+
+RUN echo "#aliyun" > /etc/apk/repositories
+RUN echo "https://mirrors.aliyun.com/alpine/v3.12/main/" >> /etc/apk/repositories
+RUN echo "https://mirrors.aliyun.com/alpine/v3.12/community/" >> /etc/apk/repositories
+RUN apk update
+
+RUN apk add --no-cache tzdata
+
+ENV TIME_ZONE="Asia/Shanghai"
+
+RUN set -xe \
+&& apk --no-cache add ttf-dejavu fontconfig
+
+RUN mkdir -p /snhub
+
+WORKDIR /snhub
+
+RUN ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime && echo '$TIME_ZONE' > /etc/timezone
+
+EXPOSE 9093
+
+ADD ./target/qn-sn-hub.jar ./app.jar
+
+ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..812bf5d
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,179 @@
+
+
+ 4.0.0
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.7.1
+
+
+
+ com.sinenux
+ qn-ys-hub
+ 1.0.0
+ SNHub
+ qn-ys-hub
+
+
+ qn-ys-hub
+
+ 8
+ 3.8.1
+
+
+ qn-ys-hub
+ 1.0.0
+
+ harbor
+ 192.168.1.251
+
+ http://${docker.registry.url}:2375
+ admin
+ 1.4.13
+ admin
+ Qingniao13542
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.projectlombok
+ lombok
+
+
+ mysql
+ mysql-connector-java
+
+
+ com.dream-orm
+ dream-orm-spring-boot-starter
+ 1.2.6
+
+
+
+
+ com.alibaba
+ fastjson
+ 2.0.25
+
+
+
+
+
+
+
+
+ com.bluebird
+ hulk-starter-mongo
+ 1.2.2.RELEASE
+
+
+ com.bluebird
+ hulk-core-launch
+
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.5.3.2
+
+
+
+
+
+
+
+
+
+ ${hub.project.name}
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+ com.spotify
+ dockerfile-maven-plugin
+ ${docker.plugin.version}
+
+ ${docker.username}
+ ${docker.password}
+ ${docker.registry.url}/${harbor.library}/${project.artifactId}
+ ${harbor.tag}
+ true
+
+ target/${project.build.finalName}.jar
+
+ false
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven.plugin.version}
+
+
+ compile
+ compile
+
+ compile
+
+
+
+ testCompile
+ test-compile
+
+ testCompile
+
+
+
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+ src/main/resources
+
+
+
+
+
+
+ aliyun-repos
+ https://maven.aliyun.com/nexus/content/groups/public/
+
+ false
+
+
+
+
+
+
+ aliyun-plugin
+ https://maven.aliyun.com/nexus/content/groups/public/
+
+ false
+
+
+
+
+
diff --git a/src/main/java/com/sinenux/yshub/HubApplication.java b/src/main/java/com/sinenux/yshub/HubApplication.java
new file mode 100644
index 0000000..e501d72
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/HubApplication.java
@@ -0,0 +1,39 @@
+package com.sinenux.yshub;
+
+import com.dream.boot.bean.ConfigurationBean;
+import com.dream.drive.listener.DebugListener;
+import com.dream.flex.annotation.FlexAPT;
+import com.dream.system.core.listener.Listener;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.context.annotation.Bean;
+import org.springframework.core.env.ConfigurableEnvironment;
+import org.springframework.core.env.StandardEnvironment;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+@MapperScan("com.sinenux.yshub.mapper")
+@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
+public class HubApplication {
+
+ public static void main(String[] args) {
+ // 创建一个SpringApplication实例
+ SpringApplication app = new SpringApplication(HubApplication.class);
+
+ // 读取环境变量,使用spring boot的规则
+ ConfigurableEnvironment environment = new StandardEnvironment();
+
+ // 检查是否存在名为 "spring.profiles.active" 的环境属性,如果不存在,则设置为 "dev"
+ if (environment.getProperty("spring.profiles.active") == null) {
+ app.setDefaultProperties(Collections.singletonMap("spring.profiles.active", "dev"));
+ }
+
+ // 启动应用程序
+ app.run(args);
+ }
+
+}
diff --git a/src/main/java/com/sinenux/yshub/config/IpWhitelistInterceptor.java b/src/main/java/com/sinenux/yshub/config/IpWhitelistInterceptor.java
new file mode 100644
index 0000000..2c67350
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/config/IpWhitelistInterceptor.java
@@ -0,0 +1,43 @@
+package com.sinenux.yshub.config;
+
+import com.bluebird.core.tool.utils.Func;
+import com.bluebird.core.tool.utils.WebUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.NotNull;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Arrays;
+import java.util.List;
+
+@Slf4j
+public class IpWhitelistInterceptor implements HandlerInterceptor {
+
+ // private final List allowedIpList = Arrays.asList("127.0.0.1", "192.168.1.100", "192.168.1.101");
+ private final String ips;
+
+ public IpWhitelistInterceptor(String ips) {
+ this.ips = ips;
+ }
+
+ @Override
+ public boolean preHandle(HttpServletRequest request, @NotNull HttpServletResponse response, @NotNull Object handler) {
+ if (Func.isBlank(ips) || Func.equals("0.0.0.0", ips)) {
+ return true;
+ }
+ log.info("SN-HUB ===================== IP白名单 为 {}", ips);
+
+ String[] ipArray = Func.split(ips, ",");
+ List allowedIpList = Arrays.asList(ipArray);
+
+ String requestIp = WebUtil.getIP(request);
+ log.info("SN-HUB ===================== 请求IP 为 {}", requestIp);
+ if (!allowedIpList.contains(requestIp)) {
+ response.setStatus(HttpServletResponse.SC_FORBIDDEN);
+ return false; // 不允许访问
+ }
+ return true; // 允许访问
+ }
+
+}
diff --git a/src/main/java/com/sinenux/yshub/config/MongoConfig.java b/src/main/java/com/sinenux/yshub/config/MongoConfig.java
new file mode 100644
index 0000000..7b350ec
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/config/MongoConfig.java
@@ -0,0 +1,29 @@
+package com.sinenux.yshub.config;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;
+
+@Slf4j
+@Configuration
+public class MongoConfig {
+
+ @Value("${MONGODB_URI}")
+ private String mongodbUri;
+
+ @Bean
+ public SimpleMongoClientDatabaseFactory mongoDbFactory() {
+ log.info("SN-HUB ===================== 获取到的 mongodbUri 为 {}", mongodbUri);
+ return new SimpleMongoClientDatabaseFactory(mongodbUri);
+
+ }
+
+ @Bean
+ public MongoTemplate mongoTemplate() {
+ return new MongoTemplate(mongoDbFactory());
+ }
+
+}
diff --git a/src/main/java/com/sinenux/yshub/config/MysqlConfig.java b/src/main/java/com/sinenux/yshub/config/MysqlConfig.java
new file mode 100644
index 0000000..56de48c
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/config/MysqlConfig.java
@@ -0,0 +1,61 @@
+package com.sinenux.yshub.config;
+
+import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
+import com.bluebird.core.tool.utils.Func;
+import com.dream.drive.factory.DriveDataSourceFactory;
+import com.dream.system.datasource.DataSourceFactory;
+import com.zaxxer.hikari.HikariDataSource;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.annotation.MapperScan;
+import org.mybatis.spring.transaction.SpringManagedTransactionFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.sql.DataSource;
+import java.sql.SQLException;
+
+@Configuration
+@Slf4j
+@MapperScan("com.sinenux.yshub.mapper")
+public class MysqlConfig {
+ @Value("${MYSQL_URL}")
+ private String url;
+ @Value("${MYSQL_USERNAME}")
+ private String username;
+ @Value("${MYSQL_PASSWORD}")
+ private String password;
+
+ @Bean
+ public DataSource mySqlDataSource() throws SQLException {
+ HikariDataSource dataSource = new HikariDataSource();
+ dataSource.setJdbcUrl(url);
+ dataSource.setUsername(username);
+ dataSource.setPassword(password);
+ dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
+ if (Func.isNotEmpty(url)) {
+ dataSource.getConnection().close();
+ }
+
+ return dataSource;
+ }
+
+ @Bean
+ public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
+ MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
+ sqlSessionFactory.setDataSource(dataSource);
+ sqlSessionFactory.setTypeAliasesPackage("com.sinenux.snhub.entity");
+
+ sqlSessionFactory.setTransactionFactory(new SpringManagedTransactionFactory());
+
+ return sqlSessionFactory.getObject();
+ }
+
+ @Bean
+ public DataSourceFactory dataSourceFactory(DataSource dataSource) {
+ return new DriveDataSourceFactory(dataSource);
+ }
+
+
+}
diff --git a/src/main/java/com/sinenux/yshub/config/WebMvcConfig.java b/src/main/java/com/sinenux/yshub/config/WebMvcConfig.java
new file mode 100644
index 0000000..eda0064
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/config/WebMvcConfig.java
@@ -0,0 +1,18 @@
+package com.sinenux.yshub.config;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class WebMvcConfig implements WebMvcConfigurer {
+
+ @Value("${REQUEST_IPS:0.0.0.0}")
+ private String requestIps;
+
+ @Override
+ public void addInterceptors(InterceptorRegistry registry) {
+ registry.addInterceptor(new IpWhitelistInterceptor(requestIps));
+ }
+}
diff --git a/src/main/java/com/sinenux/yshub/controller/DemoController.java b/src/main/java/com/sinenux/yshub/controller/DemoController.java
new file mode 100644
index 0000000..57caef1
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/controller/DemoController.java
@@ -0,0 +1,13 @@
+package com.sinenux.yshub.controller;
+
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/demo")
+public class DemoController {
+
+
+}
diff --git a/src/main/java/com/sinenux/yshub/controller/EnterprisePrefixController.java b/src/main/java/com/sinenux/yshub/controller/EnterprisePrefixController.java
new file mode 100644
index 0000000..f39dab5
--- /dev/null
+++ b/src/main/java/com/sinenux/yshub/controller/EnterprisePrefixController.java
@@ -0,0 +1,66 @@
+package com.sinenux.yshub.controller;
+
+import com.bluebird.core.tool.api.R;
+import com.sinenux.yshub.entity.EnterprisePrefix;
+import com.sinenux.yshub.service.IEnterprisePrefixService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 告警记录 控制器
+ *
+ * @author wtc
+ * @since 2023-05-24
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/enterprise/prefix")
+@Api(value = "企业前缀", tags = "企业前缀接口")
+public class EnterprisePrefixController {
+
+ private final IEnterprisePrefixService enterprisePrefixService;
+
+ /**
+ * 企业前缀top10
+ */
+ @GetMapping("/top")
+ @ApiOperation(value = "企业前缀top10", notes = "企业前缀top10")
+ public R> prefixTop() {
+ List list = enterprisePrefixService.getTop10();
+ return R.data(list);
+ }
+
+ /**
+ * 获取所有企业名称
+ */
+ @GetMapping("/allName")
+ @ApiOperation(value = "所有企业名称", notes = "所有企业名称")
+ public R> list() {
+ List list = enterprisePrefixService.lambdaQuery()
+ .select(EnterprisePrefix::getEntName)
+ .eq(EnterprisePrefix::getState, 1)
+ .list()
+ .stream()
+ .map(EnterprisePrefix::getEntName)
+ .collect(Collectors.toList());
+ return R.data(list);
+ }
+
+ /**
+ * 获取当前注册量,以及昨日注册量,增长量
+ */
+ @GetMapping("/statistics")
+ @ApiOperation(value = "前缀注册量统计", notes = "前缀注册量统计")
+ public R