修复bug

This commit is contained in:
zer0Black
2022-04-05 22:36:21 +08:00
parent ed5631782f
commit c5e94f945e
26 changed files with 263 additions and 67 deletions
@@ -26,7 +26,7 @@ public class YouBianCodeUtil {
*/
public static synchronized String getNextYouBianCode(String code) {
String newcode = "";
if (code == null || code =="") {
if (oConvertUtils.isEmpty(code)) {
String zimu = "A";
String num = getStrNum(1);
newcode = zimu + num;
@@ -1,14 +1,18 @@
package com.jero.config;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.actuate.trace.http.InMemoryHttpTraceRepository;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
@@ -72,9 +76,9 @@ public class WebMvcConfiguration implements WebMvcConfigurer {
}
/**
* 添加Long转json精度丢失的配置
* @Return: void
*/
* 添加Long转json精度丢失的配置
* @Return: void
*/
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
@@ -10,7 +10,7 @@ public interface BaseCommonMapper {
* 保存日志
* @param dto
*/
@InterceptorIgnore
@InterceptorIgnore(illegalSql = "true", tenantLine = "true")
void saveLog(@Param("dto")LogDTO dto);
}
@@ -10,7 +10,7 @@ import java.io.Serializable;
public class OnlCgformButton implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(
type = IdType.UUID
type = IdType.ASSIGN_UUID
)
private String id;
private String cgformHeadId;
@@ -10,7 +10,7 @@ import java.io.Serializable;
public class OnlCgformEnhanceJava implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(
type = IdType.UUID
type = IdType.ASSIGN_UUID
)
private String id;
private String cgformHeadId;
@@ -10,7 +10,7 @@ import java.io.Serializable;
public class OnlCgformEnhanceJs implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(
type = IdType.UUID
type = IdType.ASSIGN_UUID
)
private String id;
private String cgformHeadId;
@@ -10,7 +10,7 @@ import java.io.Serializable;
public class OnlCgformEnhanceSql implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(
type = IdType.UUID
type = IdType.ASSIGN_UUID
)
private String id;
private String cgformHeadId;
@@ -13,7 +13,7 @@ import org.springframework.format.annotation.DateTimeFormat;
public class OnlCgformField implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(
type = IdType.UUID
type = IdType.ASSIGN_UUID
)
private String id;
private String cgformHeadId;
@@ -13,7 +13,7 @@ import org.springframework.format.annotation.DateTimeFormat;
public class OnlCgformHead implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(
type = IdType.UUID
type = IdType.ASSIGN_UUID
)
private String id;
private String tableName;
@@ -13,7 +13,7 @@ import org.springframework.format.annotation.DateTimeFormat;
public class OnlCgformIndex implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(
type = IdType.UUID
type = IdType.ASSIGN_UUID
)
private String id;
private String cgformHeadId;
@@ -29,11 +29,7 @@
<!--加载hutool-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-crypto</artifactId>
<artifactId>hutool-all</artifactId>
</dependency>
<!--加载beanutils-->
<dependency>
@@ -37,7 +37,7 @@ public class SysGatewayRouteServiceImpl extends ServiceImpl<SysGatewayRouteMappe
@Override
public void addRoute2Redis(String key) {
List<SysGatewayRoute> ls = this.list(new LambdaQueryWrapper<SysGatewayRoute>().eq(SysGatewayRoute::getStatus, 1));
List<SysGatewayRoute> ls = this.list(new LambdaQueryWrapper<SysGatewayRoute>());
redisTemplate.opsForValue().set(key, JSON.toJSONString(ls));
}
@@ -77,9 +77,6 @@ spring:
#是否支持重试
retry:
enabled: true
#minidao
minidao :
base-package: com.jero.modules.jmreport.*
#jero专用配置
jero :
# 本地:local\Miniominio\阿里云:alioss
@@ -3,6 +3,7 @@ package com.jero.handler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import springfox.documentation.swagger.web.SwaggerResource;
import springfox.documentation.swagger.web.SwaggerResourcesProvider;
@@ -13,6 +14,7 @@ import java.util.*;
* 聚合各个服务的swagger接口
*/
@Component
@Primary
public class MySwaggerResourceProvider implements SwaggerResourcesProvider {
/**
* swagger2默认的url后缀
@@ -44,7 +46,7 @@ public class MySwaggerResourceProvider implements SwaggerResourcesProvider {
.filter(route -> !self.equals(route.getUri().getHost()))
.subscribe(route -> routeHosts.add(route.getUri().getHost()));
// 记录已经添加过的server,存在同一个应用注册了多个服务在eureka
// 记录已经添加过的server,存在同一个应用注册了多个服务在nacos
Set<String> dealed = new HashSet<>();
routeHosts.forEach(instance -> {
// 拼接url
@@ -128,7 +128,7 @@ public class DynamicRouteLoader implements ApplicationEventPublisherAware {
* @return
*/
private void loadRoutesByRedis() {
List<RouteDefinition> routes = Lists.newArrayList();
List<MyRouteDefinition> routes = Lists.newArrayList();
configService = createConfigService();
if (configService == null) {
log.warn("initConfigService fail");
@@ -143,9 +143,14 @@ public class DynamicRouteLoader implements ApplicationEventPublisherAware {
e.printStackTrace();
}
}
for (RouteDefinition definition : routes) {
for (MyRouteDefinition definition : routes) {
log.info("update route : {}", definition.toString());
dynamicRouteService.add(definition);
Integer status=definition.getStatus();
if(status.equals(0)){
dynamicRouteService.delete(definition.getId());
}else{
dynamicRouteService.add(definition);
}
}
this.publisher.publishEvent(new RefreshRoutesEvent(this));
}
@@ -160,13 +165,13 @@ public class DynamicRouteLoader implements ApplicationEventPublisherAware {
* @param array
* @return
*/
public static List<RouteDefinition> getRoutesByJson(JSONArray array) throws URISyntaxException {
List<RouteDefinition> ls = new ArrayList<>();
public static List<MyRouteDefinition> getRoutesByJson(JSONArray array) throws URISyntaxException {
List<MyRouteDefinition> ls = new ArrayList<>();
for (int i = 0; i < array.size(); i++) {
JSONObject obj = array.getJSONObject(i);
RouteDefinition route = new RouteDefinition();
MyRouteDefinition route = new MyRouteDefinition();
route.setId(obj.getString("routerId"));
route.setStatus(obj.getInteger("status"));
Object uri = obj.get("uri");
if (uri == null) {
route.setUri(new URI("lb://" + obj.getString("name")));
@@ -47,14 +47,13 @@ public class DynamicRouteService implements ApplicationEventPublisherAware {
* @param id
* @return
*/
public synchronized Mono<ResponseEntity<Object>> delete(String id) {
return this.repository.delete(Mono.just(id)).then(Mono.defer(() -> {
return Mono.just(ResponseEntity.ok().build());
})).onErrorResume((t) -> {
return t instanceof NotFoundException;
}, (t) -> {
return Mono.just(ResponseEntity.notFound().build());
});
public synchronized void delete(String id) {
try {
repository.delete(Mono.just(id)).subscribe();
this.publisher.publishEvent(new RefreshRoutesEvent(this));
}catch (Exception e){
e.printStackTrace();
}
}
/**
@@ -0,0 +1,22 @@
package com.jero.loader;
import org.springframework.cloud.gateway.route.RouteDefinition;
/**
* 自定义RouteDefinition
* @author zyf
*/
public class MyRouteDefinition extends RouteDefinition {
/**
* 路由状态
*/
private Integer status;
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
}
@@ -16,23 +16,23 @@ spring:
allowedMethods: "*"
allowedHeaders: "*"
#如果启用nacos或者数据库配置请删除一下配置
routes:
- id: jero-demo
uri: lb://jero-demo
predicates:
- Path=/mock/**,/test/**,/bigscreen/template1/**,/bigscreen/template2/**
- id: jero-system
uri: lb://jero-system
predicates:
- Path=/sys/**,/eoa/**,/v1/**,/joa/**,/online/**,/bigscreen/**,/jmreport/**,/desform/**,/act/**,/plug-in/**,/generic/**
- id: jero-system-websocket
uri: lb:ws://jero-system
predicates:
- Path=/websocket/**,/eoaSocket/**,/newsWebsocket/**
- id: jero-demo-websocket
uri: lb:ws://jero-demo
predicates:
- Path=/vxeSocket/**
# routes:
# - id: jero-demo
# uri: lb://jero-demo
# predicates:
# - Path=/mock/**,/test/**,/bigscreen/template1/**,/bigscreen/template2/**
# - id: jero-system
# uri: lb://jero-system
# predicates:
# - Path=/sys/**,/eoa/**,/v1/**,/joa/**,/online/**,/bigscreen/**,/jmreport/**,/desform/**,/act/**,/plug-in/**,/generic/**
# - id: jero-system-websocket
# uri: lb:ws://jero-system
# predicates:
# - Path=/websocket/**,/eoaSocket/**,/newsWebsocket/**
# - id: jero-demo-websocket
# uri: lb:ws://jero-demo
# predicates:
# - Path=/vxeSocket/**
# 全局熔断降级配置
default-filters:
- name: Hystrix
@@ -0,0 +1,15 @@
FROM anapsix/alpine-java:8_server-jre_unlimited
MAINTAINER jeroos@163.com
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN mkdir -p /jeecg-cloud-nacos
WORKDIR /jeecg-cloud-nacos
EXPOSE 8848
ADD ./target/jeecg-cloud-nacos-2.4.6.jar ./
CMD sleep 5;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jero-cloud-nacos-2.4.6.jar
@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>jero-cloud-module</artifactId>
<groupId>com.jero.boot</groupId>
<version>2.4.6</version>
</parent>
<artifactId>jero-cloud-nacos</artifactId>
<name>jero-cloud-nacos</name>
<description>nacos启动模块</description>
<repositories>
<repository>
<id>aliyun</id>
<name>aliyun Repository</name>
<url>https://maven.aliyun.com/repository/public</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>jeecg</id>
<name>jeecg Repository</name>
<url>https://maven.jeecg.org/nexus/content/repositories/jeecg</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.jeecgframework.nacos</groupId>
<artifactId>nacos-naming</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.jeecgframework.nacos</groupId>
<artifactId>nacos-istio</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.jeecgframework.nacos</groupId>
<artifactId>nacos-config</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.jeecgframework.nacos</groupId>
<artifactId>nacos-console</artifactId>
<version>1.4.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
@@ -0,0 +1,37 @@
package com.alibaba.nacos;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
* Nacos 启动类
* 引用的nacos console 源码运行,简化开发
* 生产建议从官网下载最新版配置运行
* @author zyf
*/
@SpringBootApplication(scanBasePackages = "com.alibaba.nacos")
@ServletComponentScan
@EnableScheduling
public class JeecgNacosApplication {
/**
* 是否单机模式启动
*/
private static String standalone = "true";
/**
* 是否开启鉴权
*/
private static String enabled = "false";
public static void main(String[] args) {
System.setProperty("nacos.standalone", standalone);
System.setProperty("nacos.core.auth.enabled", enabled);
System.setProperty("server.tomcat.basedir","logs");
//自定义启动端口号
System.setProperty("server.port","8848");
SpringApplication.run(JeecgNacosApplication.class, args);
}
}
@@ -0,0 +1,54 @@
server:
servlet:
contextPath: /nacos
tomcat:
accesslog:
enabled: true
pattern: '%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i'
basedir: ''
spring:
datasource:
platform: mysql
db:
num: 1
password:
'0': ${MYSQL-PWD:root}
url:
'0': jdbc:mysql://${MYSQL-HOST:jero-boot-mysql}:${MYSQL-PORT:3306}/${MYSQL-DB:nacos}?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
user:
'0': ${MYSQL-USER:root}
management:
metrics:
export:
elastic:
enabled: false
influx:
enabled: false
nacos:
core:
auth:
caching:
enabled: true
default:
token:
expire:
seconds: 18000
secret:
key: SecretKey012345678901234567890123456789012345678901234567890123456789
enabled: false
system:
type: nacos
istio:
mcp:
server:
enabled: false
naming:
empty-service:
auto-clean: true
clean:
initial-delay-ms: 50000
period-time-ms: 30000
security:
ignore:
urls: /,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
standalone: true
@@ -1,7 +1,7 @@
package com.jero.modules.cloud.lock;
import com.jero.boot.starter.lock.annotation.JLock;
import lombok.extern.slf4j.Slf4j;
import com.jero.boot.starter.lock.annotation.DistributedLock;
import com.jero.boot.starter.lock.client.RedissonLockClient;
import com.jero.boot.starter.rabbitmq.client.RabbitMqClient;
import com.jero.common.base.BaseMap;
@@ -28,7 +28,7 @@ public class DemoLockTest {
* 测试分布式锁【注解方式】
*/
@Scheduled(cron = "0/5 * * * * ?")
@DistributedLock(lockKey = CloudConstant.REDISSON_DEMO_LOCK_KEY1)
@JLock(lockKey = CloudConstant.REDISSON_DEMO_LOCK_KEY1)
public void execute() throws InterruptedException {
log.info("执行execute任务开始,休眠三秒");
Thread.sleep(3000);
+1
View File
@@ -17,6 +17,7 @@
<module>jero-cloud-monitor</module>
<module>jero-cloud-xxljob</module>
<module>jero-cloud-sentinel</module>
<module>jero-cloud-nacos</module>
</modules>
</project>
-11
View File
@@ -238,17 +238,6 @@
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>${hutool.version}</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-crypto</artifactId>
<version>${hutool.version}</version>
</dependency>
<!-- commons-beanutils -->
<dependency>
<groupId>commons-beanutils</groupId>