Merge branch 'boot3' into h2

# Conflicts:
#	src/main/resources/application-dev.yml
This commit is contained in:
Jerry Yan
2025-06-13 16:41:05 +08:00
32 changed files with 152 additions and 149 deletions

Binary file not shown.

40
pom.xml
View File

@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId> <artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.18</version> <version>3.3.5</version>
</parent> </parent>
<groupId>com.genersoft</groupId> <groupId>com.genersoft</groupId>
@@ -56,6 +56,9 @@
<generated.asciidoc.directory>${project.build.directory}/asciidoc</generated.asciidoc.directory> <generated.asciidoc.directory>${project.build.directory}/asciidoc</generated.asciidoc.directory>
<asciidoctor.html.output.directory>${project.build.directory}/asciidoc/html</asciidoctor.html.output.directory> <asciidoctor.html.output.directory>${project.build.directory}/asciidoc/html</asciidoctor.html.output.directory>
<asciidoctor.pdf.output.directory>${project.build.directory}/asciidoc/pdf</asciidoctor.pdf.output.directory> <asciidoctor.pdf.output.directory>${project.build.directory}/asciidoc/pdf</asciidoctor.pdf.output.directory>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties> </properties>
<profiles> <profiles>
@@ -121,7 +124,7 @@
<dependency> <dependency>
<groupId>org.mybatis.spring.boot</groupId> <groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId> <artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version> <version>3.0.3</version>
<exclusions> <exclusions>
<exclusion> <exclusion>
<groupId>com.zaxxer</groupId> <groupId>com.zaxxer</groupId>
@@ -196,25 +199,31 @@
<!--在线文档 --> <!--在线文档 -->
<dependency> <dependency>
<groupId>org.springdoc</groupId> <groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>1.6.10</version> <version>2.5.0</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
<version>2.5.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springdoc</groupId> <groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-security</artifactId> <artifactId>springdoc-openapi-security</artifactId>
<version>1.6.10</version> <version>1.8.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.github.xiaoymin</groupId> <groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-springdoc-ui</artifactId> <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>3.0.3</version> <version>4.4.0</version>
</dependency> </dependency>
<!--参数校验 --> <!--参数校验 -->
<dependency> <dependency>
<groupId>javax.validation</groupId> <groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId> <artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency> </dependency>
<!-- 日志相关 --> <!-- 日志相关 -->
@@ -300,7 +309,14 @@
<dependency> <dependency>
<groupId>org.mitre.dsmiley.httpproxy</groupId> <groupId>org.mitre.dsmiley.httpproxy</groupId>
<artifactId>smiley-http-proxy-servlet</artifactId> <artifactId>smiley-http-proxy-servlet</artifactId>
<version>1.12.1</version> <version>2.0</version>
<scope>system</scope>
<systemPath>${basedir}/libs/smiley-http-proxy-servlet-2.0.jar</systemPath>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.14</version>
</dependency> </dependency>
<!--excel解析库--> <!--excel解析库-->
@@ -380,7 +396,7 @@
<plugin> <plugin>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId> <artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.2</version> <version>3.3.1</version>
<configuration> <configuration>
<includeSystemScope>true</includeSystemScope> <includeSystemScope>true</includeSystemScope>
<executable>true</executable> <executable>true</executable>
@@ -392,8 +408,8 @@
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version> <version>3.8.1</version>
<configuration> <configuration>
<source>1.8</source> <source>17</source>
<target>1.8</target> <target>17</target>
<annotationProcessorPaths> <annotationProcessorPaths>
<path> <path>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
@@ -418,7 +434,7 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId> <artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version> <version>3.2.5</version>
<configuration> <configuration>
<skipTests>true</skipTests> <skipTests>true</skipTests>
</configuration> </configuration>

View File

@@ -13,10 +13,10 @@ import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import javax.servlet.ServletContext; import jakarta.servlet.ServletContext;
import javax.servlet.ServletException; import jakarta.servlet.ServletException;
import javax.servlet.SessionCookieConfig; import jakarta.servlet.SessionCookieConfig;
import javax.servlet.SessionTrackingMode; import jakarta.servlet.SessionTrackingMode;
import java.util.Collections; import java.util.Collections;
/** /**

View File

@@ -6,7 +6,7 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import java.time.Instant; import java.time.Instant;
import java.util.Date; import java.util.Date;
import java.util.Map; import java.util.Map;

View File

@@ -15,9 +15,9 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import javax.servlet.ServletException; import jakarta.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.net.ConnectException; import java.net.ConnectException;

View File

@@ -10,8 +10,8 @@ import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;

View File

@@ -11,10 +11,10 @@ import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter; import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain; import jakarta.servlet.FilterChain;
import javax.servlet.ServletException; import jakarta.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;

View File

@@ -24,7 +24,7 @@ import org.springframework.beans.factory.InitializingBean;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import jakarta.annotation.Resource;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.File; import java.io.File;
import java.io.InputStream; import java.io.InputStream;
@@ -231,7 +231,7 @@ public class JwtUtils implements InitializingBean {
if (expirationTime != null) { if (expirationTime != null) {
// 判断是否即将过期, 默认剩余时间小于5分钟未即将过期 // 判断是否即将过期, 默认剩余时间小于5分钟未即将过期
// 剩余时间 (秒) // 剩余时间 (秒)
long timeRemaining = LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8)) - expirationTime.getValue(); long timeRemaining = expirationTime.getValue() - LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8));
if (timeRemaining < 5 * 60) { if (timeRemaining < 5 * 60) {
jwtUser.setStatus(JwtUser.TokenStatus.EXPIRING_SOON); jwtUser.setStatus(JwtUser.TokenStatus.EXPIRING_SOON);
} else { } else {

View File

@@ -5,9 +5,9 @@ import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.servlet.ServletException; import jakarta.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
/** /**

View File

@@ -7,14 +7,15 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider; import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.CorsConfigurationSource; import org.springframework.web.cors.CorsConfigurationSource;
@@ -35,7 +36,7 @@ import java.util.List;
@EnableGlobalMethodSecurity(prePostEnabled = true) @EnableGlobalMethodSecurity(prePostEnabled = true)
@Order(1) @Order(1)
@Slf4j @Slf4j
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { public class WebSecurityConfig {
@Autowired @Autowired
private UserSetting userSetting; private UserSetting userSetting;
@@ -55,15 +56,13 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired @Autowired
private JwtAuthenticationFilter jwtAuthenticationFilter; private JwtAuthenticationFilter jwtAuthenticationFilter;
@Bean
public AuthenticationManager authenticationManager(AuthenticationConfiguration config) throws Exception {
return config.getAuthenticationManager();
}
/** @Bean
* 配置认证方式 public AuthenticationProvider authProvider() {
*
* @param auth
* @throws Exception
*/
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
DaoAuthenticationProvider provider = new DaoAuthenticationProvider(); DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
// 设置不隐藏 未找到用户异常 // 设置不隐藏 未找到用户异常
provider.setHideUserNotFoundExceptions(true); provider.setHideUserNotFoundExceptions(true);
@@ -71,11 +70,11 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
provider.setUserDetailsService(userDetailsService); provider.setUserDetailsService(userDetailsService);
// 设置密码加密算法 // 设置密码加密算法
provider.setPasswordEncoder(passwordEncoder()); provider.setPasswordEncoder(passwordEncoder());
auth.authenticationProvider(provider); return provider;
} }
@Override @Bean
protected void configure(HttpSecurity http) throws Exception { public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
List<String> defaultExcludes = new ArrayList<>(); List<String> defaultExcludes = new ArrayList<>();
defaultExcludes.add("/"); defaultExcludes.add("/");
defaultExcludes.add("/#/**"); defaultExcludes.add("/#/**");
@@ -101,33 +100,29 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
defaultExcludes.add("/api/device/query/snap/**"); defaultExcludes.add("/api/device/query/snap/**");
defaultExcludes.add("/index/hook/abl/**"); defaultExcludes.add("/index/hook/abl/**");
if (userSetting.getInterfaceAuthentication() && !userSetting.getInterfaceAuthenticationExcludes().isEmpty()) { if (userSetting.getInterfaceAuthentication() && !userSetting.getInterfaceAuthenticationExcludes().isEmpty()) {
defaultExcludes.addAll(userSetting.getInterfaceAuthenticationExcludes()); defaultExcludes.addAll(userSetting.getInterfaceAuthenticationExcludes());
} }
http.headers().contentTypeOptions().disable() http
.and().cors().configurationSource(configurationSource()) .headers(headers -> headers.contentTypeOptions(contentType -> contentType.disable()))
.and().csrf().disable() .cors(cors -> cors.configurationSource(configurationSource()))
.sessionManagement() .csrf(csrf -> csrf.disable())
.sessionCreationPolicy(SessionCreationPolicy.STATELESS) .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.ALWAYS))
.addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class)
// 配置拦截规则 // 配置拦截规则
.and() .authorizeHttpRequests(auth -> auth
.authorizeRequests() .requestMatchers(CorsUtils::isPreFlightRequest).permitAll()
.requestMatchers(CorsUtils::isPreFlightRequest).permitAll() .requestMatchers(defaultExcludes.toArray(new String[0])).permitAll()
.antMatchers(defaultExcludes.toArray(new String[0])).permitAll() .anyRequest().authenticated()
.anyRequest().authenticated() )
// 异常处理器 // 异常处理器
.and() .exceptionHandling(exception -> exception.authenticationEntryPoint(anonymousAuthenticationEntryPoint))
.exceptionHandling() .logout(logout -> logout.logoutUrl("/api/user/logout")
.authenticationEntryPoint(anonymousAuthenticationEntryPoint) .permitAll()
.and().logout().logoutUrl("/api/user/logout").permitAll() .logoutSuccessHandler(logoutHandler));
.logoutSuccessHandler(logoutHandler)
;
http.addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
return http.build();
} }
CorsConfigurationSource configurationSource() { CorsConfigurationSource configurationSource() {
@@ -139,7 +134,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
if (userSetting.getAllowedOrigins() != null && !userSetting.getAllowedOrigins().isEmpty()) { if (userSetting.getAllowedOrigins() != null && !userSetting.getAllowedOrigins().isEmpty()) {
corsConfiguration.setAllowCredentials(true); corsConfiguration.setAllowCredentials(true);
corsConfiguration.setAllowedOrigins(userSetting.getAllowedOrigins()); corsConfiguration.setAllowedOrigins(userSetting.getAllowedOrigins());
}else { } else {
// 在SpringBoot 2.4及以上版本处理跨域时遇到错误提示当allowCredentials为true时allowedOrigins不能包含特殊值"*"。 // 在SpringBoot 2.4及以上版本处理跨域时遇到错误提示当allowCredentials为true时allowedOrigins不能包含特殊值"*"。
// 解决方法是明确指定allowedOrigins或使用allowedOriginPatterns。 // 解决方法是明确指定allowedOrigins或使用allowedOriginPatterns。
corsConfiguration.setAllowCredentials(true); corsConfiguration.setAllowCredentials(true);
@@ -156,17 +151,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
/** /**
* 描述: 密码加密算法 BCrypt 推荐使用 * 描述: 密码加密算法 BCrypt 推荐使用
**/ **/
@Bean
public BCryptPasswordEncoder passwordEncoder() { public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(); return new BCryptPasswordEncoder();
} }
}
/**
* 描述: 注入AuthenticationManager管理器
**/
@Override
@Bean
public AuthenticationManager authenticationManager() throws Exception {
return super.authenticationManager();
}
}

View File

@@ -2,13 +2,13 @@ package com.genersoft.iot.vmp.conf.webLog;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import javax.websocket.*; import jakarta.websocket.*;
import javax.websocket.server.ServerEndpoint; import jakarta.websocket.server.ServerEndpoint;
import java.io.IOException; import java.io.IOException;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentMap;
@ServerEndpoint(value = "/channel/log") @ServerEndpoint(value = "/channel/log")
@Slf4j @Slf4j
public class LogChannel { public class LogChannel {

View File

@@ -31,7 +31,7 @@ import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.async.DeferredResult; import org.springframework.web.context.request.async.DeferredResult;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.util.List; import java.util.List;

View File

@@ -31,8 +31,8 @@ import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.async.DeferredResult; import org.springframework.web.context.request.async.DeferredResult;
import javax.servlet.ServletOutputStream; import jakarta.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;

View File

@@ -31,7 +31,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.async.DeferredResult; import org.springframework.web.context.request.async.DeferredResult;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;

View File

@@ -19,7 +19,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
@Tag(name = "媒体流相关") @Tag(name = "媒体流相关")

View File

@@ -37,7 +37,7 @@ import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.async.DeferredResult; import org.springframework.web.context.request.async.DeferredResult;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.util.List; import java.util.List;

View File

@@ -33,7 +33,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.async.DeferredResult; import org.springframework.web.context.request.async.DeferredResult;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.sip.InvalidArgumentException; import javax.sip.InvalidArgumentException;
import javax.sip.SipException; import javax.sip.SipException;
import java.net.MalformedURLException; import java.net.MalformedURLException;

View File

@@ -8,8 +8,8 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import javax.annotation.Resource; import jakarta.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;

View File

@@ -6,7 +6,7 @@ import org.jetbrains.annotations.NotNull;
import org.springframework.context.ApplicationListener; import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import jakarta.annotation.Resource;
/** /**
* 报警事件监听器. * 报警事件监听器.

View File

@@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import jakarta.annotation.Resource;
/** /**
* curl http://localhost:18080/api/jt1078/start/live/18864197066/1 * curl http://localhost:18080/api/jt1078/start/live/18864197066/1

View File

@@ -20,7 +20,7 @@ import org.springframework.context.ApplicationEventPublisher;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.util.HashMap; import java.util.HashMap;

View File

@@ -13,7 +13,7 @@ import org.springframework.data.redis.connection.MessageListener;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import jakarta.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@@ -5,7 +5,7 @@ import com.genersoft.iot.vmp.conf.redis.RedisRpcConfig;
import com.genersoft.iot.vmp.conf.redis.bean.RedisRpcClassHandler; import com.genersoft.iot.vmp.conf.redis.bean.RedisRpcClassHandler;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import javax.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import java.lang.reflect.Method; import java.lang.reflect.Method;
public class RpcController { public class RpcController {

View File

@@ -23,7 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.util.Map; import java.util.Map;

View File

@@ -35,7 +35,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.async.DeferredResult; import org.springframework.web.context.request.async.DeferredResult;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.MalformedURLException; import java.net.MalformedURLException;

View File

@@ -29,8 +29,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.async.DeferredResult; import org.springframework.web.context.request.async.DeferredResult;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;

View File

@@ -16,8 +16,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.ServletOutputStream; import jakarta.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;

View File

@@ -42,7 +42,7 @@ import oshi.hardware.HardwareAbstractionLayer;
import oshi.hardware.NetworkIF; import oshi.hardware.NetworkIF;
import oshi.software.os.OperatingSystem; import oshi.software.os.OperatingSystem;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import java.io.File; import java.io.File;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.*; import java.util.*;

View File

@@ -24,8 +24,8 @@ import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.security.sasl.AuthenticationException; import javax.security.sasl.AuthenticationException;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;

View File

@@ -12,41 +12,42 @@ spring:
max-request-size: 100MB max-request-size: 100MB
cache: cache:
type: redis type: redis
# REDIS数据库配置 data:
redis: # REDIS数据库配置
# [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1 redis:
host: 10.59.3.218 # [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1
# [必须修改] 端口号 host: 127.0.0.1
port: 6379 # [必须修改] 端口号
# [可选] 数据库 DB port: 6379
database: 7 # [可选] 数据库 DB
# [可选] 访问密码,若你的redis服务器没有设置密码就不需要用密码去连接 database: 7
password: ZhEnTuAi # [可选] 访问密码,若你的redis服务器没有设置密码就不需要用密码去连接
# [可选] 超时时间 password: luna
timeout: 10000 # [可选] 超时时间
# mysql数据源 timeout: 10000
# datasource: # mysql数据源
# type: com.zaxxer.hikari.HikariDataSource
# driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://127.0.0.1:3306/wvp273数据库统合?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=true
# username: root
# password: 12345678
# h2数据库
datasource: datasource:
driver-class-name: org.h2.Driver type: com.zaxxer.hikari.HikariDataSource
url: jdbc:h2:mem:wvp driver-class-name: com.mysql.cj.jdbc.Driver
username: sa url: jdbc:mysql://127.0.0.1:3306/wvp273数据库统合?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=true
username: root
password: 12345678 password: 12345678
sql: # h2数据库
init: # datasource:
# 启动时仅初始化内置的数据库例如h2:mem # driver-class-name: org.h2.Driver
mode: embedded # url: jdbc:h2:mem:wvp
schema-locations: file:数据库/2.7.4-h2/h2-schema.sql # username: sa
data-locations: file:数据库/2.7.4-h2/h2-data.sql # password: 12345678
# # h2数据库控制台请注意仅在测试环境下使用 # sql:
# h2: # init:
# console: # # 启动时仅初始化内置的数据库例如h2:mem
# enabled: true # mode: embedded
# schema-locations: file:数据库/2.7.4-h2/h2-schema.sql
# data-locations: file:数据库/2.7.4-h2/h2-data.sql
# # h2数据库控制台请注意仅在测试环境下使用
# h2:
# console:
# enabled: true
#[可选] WVP监听的HTTP端口, 网页和接口调用都是这个端口 #[可选] WVP监听的HTTP端口, 网页和接口调用都是这个端口
server: server:
port: 18080 port: 18080

View File

@@ -6,18 +6,19 @@ spring:
max-request-size: 100MB max-request-size: 100MB
cache: cache:
type: redis type: redis
# REDIS数据库配置 data:
redis: # REDIS数据库配置
# [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1 redis:
host: ${REDIS_HOST:127.0.0.1} # [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1
# [必须修改] 端口号 host: ${REDIS_HOST:127.0.0.1}
port: ${REDIS_PORT:6379} # [必须修改] 端口号
# [可选] 数据库 DB port: ${REDIS_PORT:6379}
database: ${REDIS_DB:6} # [可选] 数据库 DB
# [可选] 访问密码,若你的redis服务器没有设置密码就不需要用密码去连接 database: ${REDIS_DB:6}
password: ${REDIS_PWD:root} # [可选] 访问密码,若你的redis服务器没有设置密码就不需要用密码去连接
# [可选] 超时时间 password: ${REDIS_PWD:root}
timeout: 10000 # [可选] 超时时间
timeout: 10000
# [必选] jdbc数据库配置 # [必选] jdbc数据库配置
datasource: datasource:
type: com.zaxxer.hikari.HikariDataSource type: com.zaxxer.hikari.HikariDataSource

View File

@@ -5,7 +5,7 @@ import request from '@/utils/request'
export function queryDeviceSyncStatus(deviceId) { export function queryDeviceSyncStatus(deviceId) {
return request({ return request({
method: 'get', method: 'get',
url: `/api/device/query/${deviceId}/sync_status/` url: `/api/device/query/${deviceId}/sync_status`
}) })
} }