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> statistics() { + Map map = enterprisePrefixService.prefixStatistics(); + return R.data(map); + } +} diff --git a/src/main/java/com/sinenux/yshub/controller/HandleInfoController.java b/src/main/java/com/sinenux/yshub/controller/HandleInfoController.java new file mode 100644 index 0000000..ae1e04d --- /dev/null +++ b/src/main/java/com/sinenux/yshub/controller/HandleInfoController.java @@ -0,0 +1,36 @@ +package com.sinenux.yshub.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bluebird.core.tool.api.R; +import com.sinenux.yshub.dto.HandleQuery; +import com.sinenux.yshub.entity.MHandleInfo; +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; + +/** + * 标识 控制器 + */ +@RestController +@AllArgsConstructor +@RequestMapping("/handle") +@Api(value = "标识表", tags = "标识接口") +public class HandleInfoController { + + private final IHandleInfoService handleInfoRepository; + + /** + * 标识列表分页 + */ + @GetMapping("/page") + @ApiOperation(value = "分页", notes = "传入handleInput") + public R> page(HandleQuery handleQuery) { + + Page page = handleInfoRepository.selectPage(handleQuery); + return R.data(page); + } + +} diff --git a/src/main/java/com/sinenux/yshub/controller/MainController.java b/src/main/java/com/sinenux/yshub/controller/MainController.java new file mode 100644 index 0000000..c1b9214 --- /dev/null +++ b/src/main/java/com/sinenux/yshub/controller/MainController.java @@ -0,0 +1,45 @@ +package com.sinenux.yshub.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.bluebird.core.tool.api.R; +import com.dream.jdbc.mapper.JdbcMapper; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +/** + * 超级接口 + */ +@RestController +@RequestMapping("/super") +@AllArgsConstructor +public class MainController { + private final JdbcMapper jdbcMapper; + + @PostMapping("/selectList") + public R test(@RequestParam String sql) { + try { + sql = AESUtil.AESDncode(sql); + JSONArray jsonArray = new JSONArray(jdbcMapper.queryForList(sql, JSONObject.class)); + return R.data(jsonArray); + } catch (Exception e) { + return R.fail("sql语句错误"); + } + } + + @PostMapping("/selectOne") + public R test2(@RequestParam String sql) { + try { + sql = AESUtil.AESDncode(sql); + JSONObject jsonObject = jdbcMapper.queryForObject(sql, JSONObject.class); + return R.data(jsonObject); + } catch (Exception e) { + return R.fail("sql语句错误"); + + } + } + +} diff --git a/src/main/java/com/sinenux/yshub/controller/TemplateController.java b/src/main/java/com/sinenux/yshub/controller/TemplateController.java new file mode 100644 index 0000000..a3c1a75 --- /dev/null +++ b/src/main/java/com/sinenux/yshub/controller/TemplateController.java @@ -0,0 +1,47 @@ +package com.sinenux.yshub.controller; + +import com.bluebird.core.tool.api.R; +import com.bluebird.core.tool.utils.Func; +import com.sinenux.yshub.dto.IdentityTemplateQuery; +import com.sinenux.yshub.entity.IdentityTemplate; +import com.sinenux.yshub.entity.IdentityTemplateItem; +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.Date; +import java.util.List; + +/** + * 标识模板 控制器 + */ +@RestController +@RequestMapping("/template") +@AllArgsConstructor +public class TemplateController { + private final IIdentityTemplateService identityTemplateService; + private final IIdentityTemplateItemService identityTemplateItemService; + + @GetMapping("/list") + public R test(IdentityTemplateQuery identityTemplate) { + List identityTemplates = identityTemplateService.queryContent(identityTemplate); + return R.data(identityTemplates); + } + + @GetMapping("/list/item") + public R test2(IdentityTemplateItem identityTemplateItem) { + List list = identityTemplateService.queryContentItem(identityTemplateItem); + return R.data(list); + } + + @GetMapping("/list/item/date") + public R test3(Date startDate, Date endDate) { + List list = identityTemplateItemService.lambdaQuery() + .ge(Func.isNotEmpty(startDate), IdentityTemplateItem::getUpdateDate, startDate) + .le(Func.isNotEmpty(endDate), IdentityTemplateItem::getUpdateDate, endDate) + .list(); + return R.data(list); + } + +} diff --git a/src/main/java/com/sinenux/yshub/dto/HandleQuery.java b/src/main/java/com/sinenux/yshub/dto/HandleQuery.java new file mode 100644 index 0000000..f944ac5 --- /dev/null +++ b/src/main/java/com/sinenux/yshub/dto/HandleQuery.java @@ -0,0 +1,34 @@ +package com.sinenux.yshub.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author laifeng + * @since 2023/3/24 + */ +@Data +public class HandleQuery implements Serializable { + private static final long serialVersionUID = 1L; + @ApiModelProperty("页码") + String pageNo; + @ApiModelProperty("页面数量") + String pageSize; + + @ApiModelProperty("企业前缀") + private String prefix; + + @ApiModelProperty("标识名称") + private String handleName; + + + @ApiModelProperty("开始时间") + private String startTime; + + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/src/main/java/com/sinenux/yshub/dto/IdentityTemplateQuery.java b/src/main/java/com/sinenux/yshub/dto/IdentityTemplateQuery.java new file mode 100644 index 0000000..18d6da6 --- /dev/null +++ b/src/main/java/com/sinenux/yshub/dto/IdentityTemplateQuery.java @@ -0,0 +1,90 @@ +package com.sinenux.yshub.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +/** + * 标识模板 查询类 + * + * @author laifeng + * @since 2023-11-27 + */ +@Data +public class IdentityTemplateQuery { + + /** + * 主键id + */ + private Long id; + /** + * 描述 + */ + private String description; + + /** + * 企业前缀 + */ + private String prefix; + + /** + * 版本型号 + */ + private String version; + + /** + * 标识模板 + */ + private String handle; + + /** + * 行业门类 + */ + private String industryCategory; + /** + * 行业大类 + */ + private String industrySpecific; + + /** + * 行业中类 + */ + private String industryTrade; + + /** + * 行业小类 + */ + private String industrySubclass; + + /** + * 模板类型 + */ + private Integer type; + + /** + * 是否删除 + */ + private Integer isDeleted; + + /** + * 开始时间 + */ + @DateTimeFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + @JsonFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + private String startDate; + + /** + * 结束时间 + */ + @DateTimeFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + @JsonFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + private String endDate; +} diff --git a/src/main/java/com/sinenux/yshub/entity/EnterprisePrefix.java b/src/main/java/com/sinenux/yshub/entity/EnterprisePrefix.java new file mode 100644 index 0000000..5c87f89 --- /dev/null +++ b/src/main/java/com/sinenux/yshub/entity/EnterprisePrefix.java @@ -0,0 +1,80 @@ +package com.sinenux.yshub.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 企业前缀 实体类(只写了部分字段) + * + * @author cgm + * @since 2021-09-01 + */ +@Data +@TableName("nbms_ent_prefix") +@ApiModel(value = "AliIotConfig对象", description = "云对接-阿里云物联网配置表") +public class EnterprisePrefix { + + /** + * 主键Id + */ + @JsonSerialize( + using = ToStringSerializer.class + ) + @ApiModelProperty("主键Id") + @TableId( + value = "id" + ) + private Long id; + + + /** + * 创建时间 + */ + @DateTimeFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + @JsonFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + @ApiModelProperty(value = "创建时间", hidden = true) + private Date createDate; + + + /** + * 更新时间 + */ + @DateTimeFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + @JsonFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + @ApiModelProperty(value = "更新时间", hidden = true) + private Date updateDate; + + /** + * 业务状态 + */ + @ApiModelProperty(value = "状态是否有效 1启用2停用") + private Integer state; + /** + * 标识前缀 + */ + @ApiModelProperty(value = "标识前缀") + private String entPrefix; + + /** + * 企业名称 + */ + @ApiModelProperty(value = "企业名称") + private String entName; +} diff --git a/src/main/java/com/sinenux/yshub/entity/IdentityTemplate.java b/src/main/java/com/sinenux/yshub/entity/IdentityTemplate.java new file mode 100644 index 0000000..cfaa4f7 --- /dev/null +++ b/src/main/java/com/sinenux/yshub/entity/IdentityTemplate.java @@ -0,0 +1,100 @@ +package com.sinenux.yshub.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 标识模板 实体类 + * + * @author laifeng + * @since 2023-11-27 + */ +@Data +@TableName("nbms_identity_template") +@ApiModel(value = "nbms_identity_template对象", description = "标识模板") +public class IdentityTemplate { + + /** + * 主键id + */ + @TableId( + value = "id" + ) + private Long id; + /** + * 描述 + */ + private String description; + + /** + * 企业前缀 + */ + private String prefix; + + /** + * 版本型号 + */ + private String version; + + /** + * 标识模板 + */ + private String handle; + + /** + * 行业门类 + */ + private String industryCategory; + /** + * 行业大类 + */ + private String industrySpecific; + + /** + * 行业中类 + */ + private String industryTrade; + + /** + * 行业小类 + */ + private String industrySubclass; + + /** + * 模板类型 + */ + private Integer type; + + /** + * 是否删除 + */ + private Integer isDeleted; + + /** + * 创建时间 + */ + @DateTimeFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + @JsonFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + private Date createDate; + + /** + * 更新时间 + */ + @DateTimeFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + @JsonFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + private Date updateDate; +} diff --git a/src/main/java/com/sinenux/yshub/entity/IdentityTemplateItem.java b/src/main/java/com/sinenux/yshub/entity/IdentityTemplateItem.java new file mode 100644 index 0000000..55baf5f --- /dev/null +++ b/src/main/java/com/sinenux/yshub/entity/IdentityTemplateItem.java @@ -0,0 +1,78 @@ +package com.sinenux.yshub.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 标识模板内容 实体类 + * + * @author laifeng + * @since 2023-11-27 + */ +@Data +@TableName("nbms_identity_template_item") +@ApiModel(value = "nbms_identity_template对象", description = "标识模板内容") +public class IdentityTemplateItem { + + /** + * 主键id + */ + @TableId( + value = "id" + ) + private Long id; + /** + * 权限码 + */ + private String authorizationKey; + /** + * 下标 + */ + private Integer idIndex; + /** + * 英文名称 + */ + private String idType; + /** + * 中文名称 + */ + private String name; + + /** + * 模板id + */ + private Long tid; + + /** + * 禁用状态(0:禁用 1:启用) + */ + private Integer state; + + /** + * 创建时间 + */ + @DateTimeFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + @JsonFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + private Date createDate; + + /** + * 更新时间 + */ + @DateTimeFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + @JsonFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + private Date updateDate; +} diff --git a/src/main/java/com/sinenux/yshub/entity/MHandleInfo.java b/src/main/java/com/sinenux/yshub/entity/MHandleInfo.java new file mode 100644 index 0000000..f1b1d30 --- /dev/null +++ b/src/main/java/com/sinenux/yshub/entity/MHandleInfo.java @@ -0,0 +1,62 @@ +package com.sinenux.yshub.entity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; +import org.springframework.data.mongodb.core.mapping.Field; + +import java.io.Serializable; +import java.util.Date; + +/** + * 标识Mongo实体类(只写了部份字段) + * + * @author laifeng + * @date 2023-3-24 + */ +@Data +@Document("handle_info") +@ApiModel(value = "handle_info对象", description = "标识统计表") +public class MHandleInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + @Id + @ApiModelProperty("主键id") + private String id; + + /** + * 企业前缀 + */ + @ApiModelProperty("企业前缀") + private String prefix; + + /** + * 二级前缀 + */ + @ApiModelProperty("二级前缀") + private String subPrefix; + + /** + * 标识名称 + */ + @ApiModelProperty("标识名称") + @Field("handle_name") + private String handleName; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间", hidden = true) + @Field("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(value = "更新时间", hidden = true) + @Field("update_time") + private Date updateTime; +} diff --git a/src/main/java/com/sinenux/yshub/mapper/EnterprisePrefixMapper.java b/src/main/java/com/sinenux/yshub/mapper/EnterprisePrefixMapper.java new file mode 100644 index 0000000..a86ccef --- /dev/null +++ b/src/main/java/com/sinenux/yshub/mapper/EnterprisePrefixMapper.java @@ -0,0 +1,17 @@ +package com.sinenux.yshub.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.sinenux.yshub.entity.EnterprisePrefix; +import org.apache.ibatis.annotations.Mapper; + +/** + * 告警规则表 Mapper 接口 + * + * @author acX + * @since 2023-04-24 + */ +@Mapper +public interface EnterprisePrefixMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/sinenux/yshub/mapper/EnterprisePrefixMapper.xml b/src/main/java/com/sinenux/yshub/mapper/EnterprisePrefixMapper.xml new file mode 100644 index 0000000..e39daeb --- /dev/null +++ b/src/main/java/com/sinenux/yshub/mapper/EnterprisePrefixMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateItemMapper.java b/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateItemMapper.java new file mode 100644 index 0000000..2fa2360 --- /dev/null +++ b/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateItemMapper.java @@ -0,0 +1,17 @@ +package com.sinenux.yshub.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.sinenux.yshub.entity.IdentityTemplateItem; +import org.apache.ibatis.annotations.Mapper; + +/** + * 模板内容表 Mapper 接口 + * + * @author laifeng + * @since 2023-11-27 + */ +@Mapper +public interface IdentityTemplateItemMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateItemMapper.xml b/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateItemMapper.xml new file mode 100644 index 0000000..dd916c7 --- /dev/null +++ b/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateItemMapper.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateMapper.java b/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateMapper.java new file mode 100644 index 0000000..50b83be --- /dev/null +++ b/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateMapper.java @@ -0,0 +1,17 @@ +package com.sinenux.yshub.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.sinenux.yshub.entity.IdentityTemplate; +import org.apache.ibatis.annotations.Mapper; + +/** + * 模板表 Mapper 接口 + * + * @author laifeng + * @since 2023-11-27 + */ +@Mapper +public interface IdentityTemplateMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateMapper.xml b/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateMapper.xml new file mode 100644 index 0000000..e9e983a --- /dev/null +++ b/src/main/java/com/sinenux/yshub/mapper/IdentityTemplateMapper.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/sinenux/yshub/service/IEnterprisePrefixService.java b/src/main/java/com/sinenux/yshub/service/IEnterprisePrefixService.java new file mode 100644 index 0000000..0f060e7 --- /dev/null +++ b/src/main/java/com/sinenux/yshub/service/IEnterprisePrefixService.java @@ -0,0 +1,25 @@ +package com.sinenux.yshub.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.sinenux.yshub.entity.EnterprisePrefix; + +import java.util.List; +import java.util.Map; + +/** + * 企业前缀 服务类 + * + * @author laifeng + * @since 2023-11-08 + */ + +public interface IEnterprisePrefixService extends IService { + + /** + * 获取企业前缀Top10 + */ + List getTop10(); + + Map prefixStatistics(); +} diff --git a/src/main/java/com/sinenux/yshub/service/impl/EnterprisePrefixServiceImpl.java b/src/main/java/com/sinenux/yshub/service/impl/EnterprisePrefixServiceImpl.java new file mode 100644 index 0000000..7f7a2d6 --- /dev/null +++ b/src/main/java/com/sinenux/yshub/service/impl/EnterprisePrefixServiceImpl.java @@ -0,0 +1,48 @@ +package com.sinenux.yshub.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bluebird.core.tool.utils.DateUtil; +import com.sinenux.yshub.entity.EnterprisePrefix; +import com.sinenux.yshub.mapper.EnterprisePrefixMapper; +import com.sinenux.yshub.service.IEnterprisePrefixService; +import com.sinenux.yshub.utils.MyDateUtil; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +@AllArgsConstructor +public class EnterprisePrefixServiceImpl extends ServiceImpl implements IEnterprisePrefixService { + private final EnterprisePrefixMapper enterprisePrefixMapper; + + @Override + public List getTop10() { + List list = this.lambdaQuery().eq(EnterprisePrefix::getState, 1) + .orderByDesc(EnterprisePrefix::getCreateDate) + .last("limit 10") + .list(); + return list; + } + + @Override + public Map prefixStatistics() { + Date date = MyDateUtil.getDateOfHour(DateUtil.now()); + + Long totalCount = this.lambdaQuery() + .eq(EnterprisePrefix::getState, 1) + .count(); + Long yesterdayCount = this.lambdaQuery() + .eq(EnterprisePrefix::getState, 1) + .lt(EnterprisePrefix::getCreateDate, date) + .count(); + HashMap map = new HashMap<>(); + map.put("totalCount", totalCount); + map.put("yesterdayCount", yesterdayCount); + map.put("increaseCount", totalCount - yesterdayCount); + return map; + } +} diff --git a/src/main/java/com/sinenux/yshub/utils/MyDateUtil.java b/src/main/java/com/sinenux/yshub/utils/MyDateUtil.java new file mode 100644 index 0000000..bc869a7 --- /dev/null +++ b/src/main/java/com/sinenux/yshub/utils/MyDateUtil.java @@ -0,0 +1,102 @@ +package com.sinenux.yshub.utils; + +import com.bluebird.core.tool.utils.ConcurrentDateFormat; +import com.bluebird.core.tool.utils.DateUtil; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +/** + * 日期工具类(补充) + * + * @author cgm + * @date 2022/2/15 17:17 + */ +public class MyDateUtil { + public static final ConcurrentDateFormat YEAR_FORMAT = ConcurrentDateFormat.of("yyyy"); + public static final ConcurrentDateFormat MONTH_FORMAT = ConcurrentDateFormat.of("yyyyMM"); + + public static String formatYear(Date date) { + return YEAR_FORMAT.format(date); + } + + public static String formatMonth(Date date) { + return MONTH_FORMAT.format(date); + } + + /** + * 获取当月所有日期 + */ + public static List getAllDateOfTheMonth(Date date) { + List list = new ArrayList<>(); + + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.set(Calendar.DATE, 1); + + int month = calendar.get(Calendar.MONTH); + while (calendar.get(Calendar.MONTH) == month) { + list.add(calendar.getTime()); + calendar.add(Calendar.DATE, 1); + } + + return list; + } + + /** + * 将当前时间 分秒归零 + */ + public static Date getDateOfMinute(Date date) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + String time = DateUtil.formatDateTime(calendar.getTime()); + return DateUtil.parse(time, DateUtil.DATETIME_FORMAT); + } + + /** + * 将当前时间 时分秒归零 + */ + public static Date getDateOfHour(Date date) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + String time = DateUtil.formatDateTime(calendar.getTime()); + return DateUtil.parse(time, DateUtil.DATETIME_FORMAT); + } + + /** + * 将yyyy-mm-dd格式 或者 yyyy-MM 格式 转换成 yyyy-MM-dd HH:mm:ss + * + * @param + * @return + */ + public static String formatShortTimeToLong(String shortTimeStr) { + if (shortTimeStr == null) { + return null; + } + // 定义SimpleDateFormat的格式 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + + // 解析日期字符串 + Date date = null; + try { + date = sdf.parse(shortTimeStr); + } catch (ParseException e) { + return null; + } + + // 将Date转换为带时间的字符串格式并返回 + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return sdf2.format(date); + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml new file mode 100644 index 0000000..bf7055c --- /dev/null +++ b/src/main/resources/application-dev.yml @@ -0,0 +1,13 @@ +#本地测试使用 +MONGODB_URI: mongodb://idis_user:Teleinfo-88@223.99.228.240:27017/idis_lhs?authSource=admin +REQUEST_IPS: 0.0.0.0 +MYSQL_URL: jdbc:mysql://223.99.228.240:3306/snms?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&tinyInt1isBit=false&serverTimezone=Asia/Shanghai +MYSQL_USERNAME: idis_user +MYSQL_PASSWORD: Teleinfo-88 +#MYSQL_URL: jdbc:mysql://47.97.5.58:3306/cat_app?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&tinyInt1isBit=false&serverTimezone=Asia/Shanghai +#MYSQL_USERNAME: root +#MYSQL_PASSWORD: 157242 +logging: + level: + org.springframework.data.mongodb.core: debug + diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..d104007 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,3 @@ +#服务器端口 +server: + port: 9093 diff --git a/src/test/java/com/sinenux/yshub/HubApplicationTests.java b/src/test/java/com/sinenux/yshub/HubApplicationTests.java new file mode 100644 index 0000000..c7f53b9 --- /dev/null +++ b/src/test/java/com/sinenux/yshub/HubApplicationTests.java @@ -0,0 +1,22 @@ +package com.sinenux.yshub; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.mapping.Document; +import org.springframework.data.mongodb.core.query.Query; + +@SpringBootTest +class HubApplicationTests { + @Autowired + private MongoTemplate mongoTemplate; + + @Test + void contextLoads() { + Query query = new Query(); + Document one = mongoTemplate.findOne(query, Document.class); + System.out.println(one); + } + +}