zhaoyiran
6 months ago
commit
20b6b78701
17 changed files with 908 additions and 0 deletions
@ -0,0 +1,34 @@ |
|||||
|
HELP.md |
||||
|
target/ |
||||
|
!.mvn/wrapper/maven-wrapper.jar |
||||
|
!**/src/main/**/target/ |
||||
|
!**/src/test/**/target/ |
||||
|
|
||||
|
### STS ### |
||||
|
.apt_generated |
||||
|
.classpath |
||||
|
.factorypath |
||||
|
.project |
||||
|
.settings |
||||
|
.springBeans |
||||
|
.sts4-cache |
||||
|
|
||||
|
### IntelliJ IDEA ### |
||||
|
.idea |
||||
|
*.iws |
||||
|
*.iml |
||||
|
*.ipr |
||||
|
|
||||
|
### NetBeans ### |
||||
|
/nbproject/private/ |
||||
|
/nbbuild/ |
||||
|
/dist/ |
||||
|
/nbdist/ |
||||
|
/.nb-gradle/ |
||||
|
build/ |
||||
|
!**/src/main/**/build/ |
||||
|
!**/src/test/**/build/ |
||||
|
|
||||
|
### VS Code ### |
||||
|
.vscode/ |
||||
|
/logs |
@ -0,0 +1,23 @@ |
|||||
|
## AdoptOpenJDK 停止发布 OpenJDK 二进制,而 Eclipse Temurin 是它的延伸,提供更好的稳定性 |
||||
|
## 感谢复旦核博士的建议!灰子哥,牛皮! |
||||
|
FROM eclipse-temurin:17-jre-alpine |
||||
|
|
||||
|
## 创建目录,并使用它作为工作目录 |
||||
|
RUN mkdir -p /opt/win-server |
||||
|
WORKDIR /opt/win-server |
||||
|
## 将后端项目的 Jar 文件,复制到镜像中 |
||||
|
COPY ./target/qad.jar qad.jar |
||||
|
|
||||
|
## 设置 TZ 时区 |
||||
|
ENV TZ=Asia/Shanghai |
||||
|
## 设置 JAVA_OPTS 环境变量,可通过 docker run -e "JAVA_OPTS=" 进行覆盖 |
||||
|
ENV JAVA_OPTS="" |
||||
|
|
||||
|
## 应用参数 |
||||
|
ENV ARGS="" |
||||
|
|
||||
|
## 暴露后端项目的 25110 端口 |
||||
|
EXPOSE 23300 |
||||
|
|
||||
|
## 启动后端项目 |
||||
|
CMD java ${JAVA_OPTS} -jar qad.jar $ARGS |
@ -0,0 +1,100 @@ |
|||||
|
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||
|
<modelVersion>4.0.0</modelVersion> |
||||
|
<parent> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-starter-parent</artifactId> |
||||
|
<version>2.7.15</version> |
||||
|
<relativePath/> <!-- lookup parent from repository --> |
||||
|
</parent> |
||||
|
<groupId>com.win</groupId> |
||||
|
<artifactId>qad</artifactId> |
||||
|
<version>1.0.0</version> |
||||
|
<name>mq</name> |
||||
|
<description>win mq</description> |
||||
|
<properties> |
||||
|
<java.version>17</java.version> |
||||
|
</properties> |
||||
|
<dependencies> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>com.jcraft</groupId> |
||||
|
<artifactId>jsch</artifactId> |
||||
|
<version>0.1.55</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>org.apache.commons</groupId> |
||||
|
<artifactId>commons-lang3</artifactId> |
||||
|
<version>3.9</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>org.apache.commons</groupId> |
||||
|
<artifactId>commons-exec</artifactId> |
||||
|
<version>1.3</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>com.alibaba</groupId> |
||||
|
<artifactId>fastjson</artifactId> |
||||
|
<version>1.2.83</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>org.projectlombok</groupId> |
||||
|
<artifactId>lombok</artifactId> |
||||
|
<version>1.18.28</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>com.alibaba</groupId> |
||||
|
<artifactId>druid-spring-boot-starter</artifactId> |
||||
|
<version>1.2.19</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>com.baomidou</groupId> |
||||
|
<artifactId>mybatis-plus-boot-starter</artifactId> |
||||
|
<version>3.5.3.2</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-starter</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-starter-test</artifactId> |
||||
|
<scope>test</scope> |
||||
|
</dependency> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-starter-web</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
</dependencies> |
||||
|
|
||||
|
<build> |
||||
|
<!-- 设置构建的 jar 包名 --> |
||||
|
<finalName>${project.artifactId}</finalName> |
||||
|
<plugins> |
||||
|
<!-- 打包 --> |
||||
|
<plugin> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-maven-plugin</artifactId> |
||||
|
<executions> |
||||
|
<execution> |
||||
|
<goals> |
||||
|
<goal>repackage</goal> <!-- 将引入的 jar 打入其中 --> |
||||
|
</goals> |
||||
|
</execution> |
||||
|
</executions> |
||||
|
</plugin> |
||||
|
</plugins> |
||||
|
</build> |
||||
|
|
||||
|
</project> |
@ -0,0 +1,18 @@ |
|||||
|
package com.win.qad; |
||||
|
|
||||
|
import org.springframework.boot.SpringApplication; |
||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication; |
||||
|
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; |
||||
|
|
||||
|
/** |
||||
|
* 启动程序 |
||||
|
* |
||||
|
* @author win |
||||
|
*/ |
||||
|
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) |
||||
|
public class Application { |
||||
|
public static void main(String[] args) { |
||||
|
SpringApplication.run(Application.class, args); |
||||
|
System.out.println("闻音启动成功"); |
||||
|
} |
||||
|
} |
@ -0,0 +1,112 @@ |
|||||
|
package com.win.qad.common; |
||||
|
|
||||
|
import com.fasterxml.jackson.annotation.JsonIgnore; |
||||
|
import com.win.qad.exception.ErrorCode; |
||||
|
import com.win.qad.exception.GlobalErrorCodeConstants; |
||||
|
import com.win.qad.exception.ServiceException; |
||||
|
import lombok.Data; |
||||
|
import org.springframework.util.Assert; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
import java.util.Objects; |
||||
|
|
||||
|
/** |
||||
|
* 通用返回 |
||||
|
* |
||||
|
* @param <T> 数据泛型 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class CommonResult<T> implements Serializable { |
||||
|
|
||||
|
/** |
||||
|
* 错误码 |
||||
|
* |
||||
|
* @see ErrorCode#getCode() |
||||
|
*/ |
||||
|
private Integer code; |
||||
|
/** |
||||
|
* 返回数据 |
||||
|
*/ |
||||
|
private T data; |
||||
|
/** |
||||
|
* 错误提示,用户可阅读 |
||||
|
* |
||||
|
* @see ErrorCode#getMsg() () |
||||
|
*/ |
||||
|
private String msg; |
||||
|
|
||||
|
/** |
||||
|
* 将传入的 result 对象,转换成另外一个泛型结果的对象 |
||||
|
* |
||||
|
* 因为 A 方法返回的 CommonResult 对象,不满足调用其的 B 方法的返回,所以需要进行转换。 |
||||
|
* |
||||
|
* @param result 传入的 result 对象 |
||||
|
* @param <T> 返回的泛型 |
||||
|
* @return 新的 CommonResult 对象 |
||||
|
*/ |
||||
|
public static <T> CommonResult<T> error(CommonResult<?> result) { |
||||
|
return error(result.getCode(), result.getMsg()); |
||||
|
} |
||||
|
|
||||
|
public static <T> CommonResult<T> error(Integer code, String message) { |
||||
|
Assert.isTrue(!GlobalErrorCodeConstants.SUCCESS.getCode().equals(code), "code 必须是错误的!"); |
||||
|
CommonResult<T> result = new CommonResult<>(); |
||||
|
result.code = code; |
||||
|
result.msg = message; |
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
public static <T> CommonResult<T> error(ErrorCode errorCode) { |
||||
|
return error(errorCode.getCode(), errorCode.getMsg()); |
||||
|
} |
||||
|
|
||||
|
public static <T> CommonResult<T> success(T data) { |
||||
|
CommonResult<T> result = new CommonResult<>(); |
||||
|
result.code = GlobalErrorCodeConstants.SUCCESS.getCode(); |
||||
|
result.data = data; |
||||
|
result.msg = ""; |
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
public static boolean isSuccess(Integer code) { |
||||
|
return Objects.equals(code, GlobalErrorCodeConstants.SUCCESS.getCode()); |
||||
|
} |
||||
|
|
||||
|
@JsonIgnore // 避免 jackson 序列化
|
||||
|
public boolean isSuccess() { |
||||
|
return isSuccess(code); |
||||
|
} |
||||
|
|
||||
|
@JsonIgnore // 避免 jackson 序列化
|
||||
|
public boolean isError() { |
||||
|
return !isSuccess(); |
||||
|
} |
||||
|
|
||||
|
// ========= 和 Exception 异常体系集成 =========
|
||||
|
|
||||
|
/** |
||||
|
* 判断是否有异常。如果有,则抛出 {@link ServiceException} 异常 |
||||
|
*/ |
||||
|
public void checkError() throws ServiceException { |
||||
|
if (isSuccess()) { |
||||
|
return; |
||||
|
} |
||||
|
// 业务异常
|
||||
|
throw new ServiceException(code, msg); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 判断是否有异常。如果有,则抛出 {@link ServiceException} 异常 |
||||
|
* 如果没有,则返回 {@link #data} 数据 |
||||
|
*/ |
||||
|
@JsonIgnore // 避免 jackson 序列化
|
||||
|
public T getCheckedData() { |
||||
|
checkError(); |
||||
|
return data; |
||||
|
} |
||||
|
|
||||
|
public static <T> CommonResult<T> error(ServiceException serviceException) { |
||||
|
return error(serviceException.getCode(), serviceException.getMessage()); |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,31 @@ |
|||||
|
package com.win.qad.config; |
||||
|
|
||||
|
import org.springframework.context.annotation.Bean; |
||||
|
import org.springframework.context.annotation.Configuration; |
||||
|
import org.springframework.http.client.ClientHttpRequestFactory; |
||||
|
import org.springframework.http.client.SimpleClientHttpRequestFactory; |
||||
|
import org.springframework.http.converter.StringHttpMessageConverter; |
||||
|
import org.springframework.web.client.RestTemplate; |
||||
|
|
||||
|
import java.nio.charset.StandardCharsets; |
||||
|
|
||||
|
@Configuration |
||||
|
public class RestTemplateConfig { |
||||
|
|
||||
|
@Bean |
||||
|
public RestTemplate restTemplate(ClientHttpRequestFactory factory) { |
||||
|
RestTemplate restTemplate = new RestTemplate(factory); |
||||
|
// 支持中文编码
|
||||
|
restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); |
||||
|
return restTemplate; |
||||
|
} |
||||
|
|
||||
|
@Bean |
||||
|
public ClientHttpRequestFactory simpleClientHttpRequestFactory() { |
||||
|
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); |
||||
|
factory.setReadTimeout(5000);//单位为ms
|
||||
|
factory.setConnectTimeout(5000);//单位为ms
|
||||
|
return factory; |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,26 @@ |
|||||
|
package com.win.qad.exception; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
/** |
||||
|
* 错误码对象 |
||||
|
* TODO 错误码设计成对象的原因,为未来的 i18 国际化做准备 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class ErrorCode { |
||||
|
|
||||
|
/** |
||||
|
* 错误码 |
||||
|
*/ |
||||
|
private final Integer code; |
||||
|
/** |
||||
|
* 错误提示 |
||||
|
*/ |
||||
|
private final String msg; |
||||
|
|
||||
|
public ErrorCode(Integer code, String message) { |
||||
|
this.code = code; |
||||
|
this.msg = message; |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,45 @@ |
|||||
|
package com.win.qad.exception; |
||||
|
|
||||
|
/** |
||||
|
* 全局错误码枚举 |
||||
|
* 0-999 系统异常编码保留 |
||||
|
* |
||||
|
* 一般情况下,使用 HTTP 响应状态码 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status
|
||||
|
* 虽然说,HTTP 响应状态码作为业务使用表达能力偏弱,但是使用在系统层面还是非常不错的 |
||||
|
* 比较特殊的是,因为之前一直使用 0 作为成功,就不使用 200 啦。 |
||||
|
* |
||||
|
* @author 闻荫源码 |
||||
|
*/ |
||||
|
public interface GlobalErrorCodeConstants { |
||||
|
|
||||
|
ErrorCode SUCCESS = new ErrorCode(0, "成功"); |
||||
|
|
||||
|
ErrorCode SIGN_ERROR = new ErrorCode(300, "签名不正确"); |
||||
|
ErrorCode TIMESTAMP_ERROR = new ErrorCode(301, "时间戳不正确"); |
||||
|
ErrorCode EXPIRE_ERROR = new ErrorCode(302, "请求已过期"); |
||||
|
ErrorCode INTERFACE_ERROR = new ErrorCode(303, "接口不正确"); |
||||
|
ErrorCode CONFIG_ERROR = new ErrorCode(304, "请先维护推送设置"); |
||||
|
ErrorCode SEND_ERROR = new ErrorCode(305, "发送消息失败"); |
||||
|
// ========== 客户端错误段 ==========
|
||||
|
|
||||
|
ErrorCode BAD_REQUEST = new ErrorCode(400, "请求参数不正确"); |
||||
|
ErrorCode UNAUTHORIZED = new ErrorCode(401, "账号未登录"); |
||||
|
ErrorCode FORBIDDEN = new ErrorCode(403, "没有该操作权限"); |
||||
|
ErrorCode NOT_FOUND = new ErrorCode(404, "请求未找到"); |
||||
|
ErrorCode METHOD_NOT_ALLOWED = new ErrorCode(405, "请求方法不正确"); |
||||
|
ErrorCode LOCKED = new ErrorCode(423, "请求失败,请稍后重试"); // 并发请求,不允许
|
||||
|
ErrorCode TOO_MANY_REQUESTS = new ErrorCode(429, "请求过于频繁,请稍后重试"); |
||||
|
|
||||
|
// ========== 服务端错误段 ==========
|
||||
|
|
||||
|
ErrorCode INTERNAL_SERVER_ERROR = new ErrorCode(500, "系统异常"); |
||||
|
ErrorCode NOT_IMPLEMENTED = new ErrorCode(501, "功能未实现/未开启"); |
||||
|
ErrorCode EXECUTE_FAIL = new ErrorCode(502, "执行失败"); |
||||
|
|
||||
|
// ========== 自定义错误段 ==========
|
||||
|
ErrorCode REPEATED_REQUESTS = new ErrorCode(900, "重复请求,请稍后重试"); // 重复请求
|
||||
|
ErrorCode DEMO_DENY = new ErrorCode(901, "演示模式,禁止写操作"); |
||||
|
|
||||
|
ErrorCode UNKNOWN = new ErrorCode(999, "未知错误"); |
||||
|
|
||||
|
} |
@ -0,0 +1,58 @@ |
|||||
|
package com.win.qad.exception; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
|
||||
|
/** |
||||
|
* 服务器异常 Exception |
||||
|
*/ |
||||
|
@Data |
||||
|
@EqualsAndHashCode(callSuper = true) |
||||
|
public final class ServerException extends RuntimeException { |
||||
|
|
||||
|
/** |
||||
|
* 全局错误码 |
||||
|
* |
||||
|
*/ |
||||
|
private Integer code; |
||||
|
/** |
||||
|
* 错误提示 |
||||
|
*/ |
||||
|
private String message; |
||||
|
|
||||
|
/** |
||||
|
* 空构造方法,避免反序列化问题 |
||||
|
*/ |
||||
|
public ServerException() { |
||||
|
} |
||||
|
|
||||
|
public ServerException(ErrorCode errorCode) { |
||||
|
this.code = errorCode.getCode(); |
||||
|
this.message = errorCode.getMsg(); |
||||
|
} |
||||
|
|
||||
|
public ServerException(Integer code, String message) { |
||||
|
this.code = code; |
||||
|
this.message = message; |
||||
|
} |
||||
|
|
||||
|
public Integer getCode() { |
||||
|
return code; |
||||
|
} |
||||
|
|
||||
|
public ServerException setCode(Integer code) { |
||||
|
this.code = code; |
||||
|
return this; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public String getMessage() { |
||||
|
return message; |
||||
|
} |
||||
|
|
||||
|
public ServerException setMessage(String message) { |
||||
|
this.message = message; |
||||
|
return this; |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,58 @@ |
|||||
|
package com.win.qad.exception; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
|
||||
|
/** |
||||
|
* 业务逻辑异常 Exception |
||||
|
*/ |
||||
|
@Data |
||||
|
@EqualsAndHashCode(callSuper = true) |
||||
|
public final class ServiceException extends RuntimeException { |
||||
|
|
||||
|
/** |
||||
|
* 业务错误码 |
||||
|
* |
||||
|
*/ |
||||
|
private Integer code; |
||||
|
/** |
||||
|
* 错误提示 |
||||
|
*/ |
||||
|
private String message; |
||||
|
|
||||
|
/** |
||||
|
* 空构造方法,避免反序列化问题 |
||||
|
*/ |
||||
|
public ServiceException() { |
||||
|
} |
||||
|
|
||||
|
public ServiceException(ErrorCode errorCode) { |
||||
|
this.code = errorCode.getCode(); |
||||
|
this.message = errorCode.getMsg(); |
||||
|
} |
||||
|
|
||||
|
public ServiceException(Integer code, String message) { |
||||
|
this.code = code; |
||||
|
this.message = message; |
||||
|
} |
||||
|
|
||||
|
public Integer getCode() { |
||||
|
return code; |
||||
|
} |
||||
|
|
||||
|
public ServiceException setCode(Integer code) { |
||||
|
this.code = code; |
||||
|
return this; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public String getMessage() { |
||||
|
return message; |
||||
|
} |
||||
|
|
||||
|
public ServiceException setMessage(String message) { |
||||
|
this.message = message; |
||||
|
return this; |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,63 @@ |
|||||
|
package com.win.qad.handler; |
||||
|
|
||||
|
import com.win.qad.common.CommonResult; |
||||
|
import com.win.qad.exception.ServiceException; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.web.bind.annotation.ExceptionHandler; |
||||
|
import org.springframework.web.bind.annotation.RestControllerAdvice; |
||||
|
|
||||
|
import javax.servlet.http.HttpServletRequest; |
||||
|
|
||||
|
import static com.win.qad.exception.GlobalErrorCodeConstants.INTERFACE_ERROR; |
||||
|
import static com.win.qad.exception.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR; |
||||
|
|
||||
|
/** |
||||
|
* 全局异常处理器,将 Exception 翻译成 CommonResult + 对应的异常编号 |
||||
|
* |
||||
|
* @author 闻荫源码 |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@RestControllerAdvice |
||||
|
public class GlobalExceptionHandler { |
||||
|
|
||||
|
/** |
||||
|
* 接口未找到业务异常 NoSuchMethodException |
||||
|
*/ |
||||
|
@ExceptionHandler(NoSuchMethodException.class) |
||||
|
public CommonResult<?> noSuchMethodExceptionHandler(NoSuchMethodException e) { |
||||
|
log.error("[serviceExceptionHandler]", e); |
||||
|
return CommonResult.error(INTERFACE_ERROR.getCode(), INTERFACE_ERROR.getMsg()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 处理业务异常 ServiceException |
||||
|
* |
||||
|
* 例如说,商品库存不足,用户手机号已存在。 |
||||
|
*/ |
||||
|
@ExceptionHandler(ServiceException.class) |
||||
|
public CommonResult<?> serviceExceptionHandler(ServiceException ex, HttpServletRequest request) { |
||||
|
log.error("[serviceExceptionHandler]", ex); |
||||
|
return CommonResult.error(INTERNAL_SERVER_ERROR.getCode(), INTERNAL_SERVER_ERROR.getMsg()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 处理业务异常 ServiceException |
||||
|
* |
||||
|
* 例如说,商品库存不足,用户手机号已存在。 |
||||
|
*/ |
||||
|
@ExceptionHandler(RuntimeException.class) |
||||
|
public CommonResult<?> runtimeExceptionHandler(ServiceException ex, HttpServletRequest request) { |
||||
|
log.error("[runtimeExceptionHandler]", ex); |
||||
|
return CommonResult.error(INTERNAL_SERVER_ERROR.getCode(), INTERNAL_SERVER_ERROR.getMsg()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 处理系统异常,兜底处理所有的一切 |
||||
|
*/ |
||||
|
@ExceptionHandler(Exception.class) |
||||
|
public CommonResult<?> defaultExceptionHandler(Throwable ex, HttpServletRequest request) { |
||||
|
log.error("[defaultExceptionHandler]", ex); |
||||
|
return CommonResult.error(INTERNAL_SERVER_ERROR.getCode(), INTERNAL_SERVER_ERROR.getMsg()); |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,58 @@ |
|||||
|
# 开发环境配置 |
||||
|
server: |
||||
|
# 服务器的HTTP端口,默认为8080 |
||||
|
port: 18080 |
||||
|
servlet: |
||||
|
# 应用的访问路径 |
||||
|
context-path: / |
||||
|
tomcat: |
||||
|
# tomcat的URI编码 |
||||
|
uri-encoding: UTF-8 |
||||
|
# 连接数满后的排队数,默认为100 |
||||
|
accept-count: 100 |
||||
|
threads: |
||||
|
# tomcat最大线程数,默认为200 |
||||
|
max: 100 |
||||
|
# Tomcat启动初始化的线程数,默认值10 |
||||
|
min-spare: 10 |
||||
|
|
||||
|
spring: |
||||
|
autoconfigure: |
||||
|
exclude: |
||||
|
- com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源 |
||||
|
datasource: |
||||
|
type: com.alibaba.druid.pool.DruidDataSource |
||||
|
driverClassName: com.mysql.cj.jdbc.Driver |
||||
|
url: jdbc:mysql://dev.ccwin-in.com:23113/qad_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
||||
|
username: learun |
||||
|
password: Microdoft@2021 |
||||
|
|
||||
|
# 日志配置 |
||||
|
logging: |
||||
|
file: |
||||
|
path: logs |
||||
|
level: |
||||
|
com.win: debug |
||||
|
org.springframework: warn |
||||
|
|
||||
|
shell: |
||||
|
jlht: |
||||
|
qad-domain: JLHT |
||||
|
company-code: CCWININ |
||||
|
server-id: master |
||||
|
ip: 222.169.228.163 |
||||
|
port: 6122 |
||||
|
linux-id: mfg |
||||
|
linux-password: mfgpro |
||||
|
qad-user: mfg |
||||
|
qad-password: Qadwin1 |
||||
|
jlht2: |
||||
|
qad-domain: JLHT2 |
||||
|
company-code: CCWININ |
||||
|
server-id: master |
||||
|
ip: 222.169.228.163 |
||||
|
port: 6122 |
||||
|
linux-id: mfg |
||||
|
linux-password: mfgpro |
||||
|
qad-user: mfg |
||||
|
qad-password: Qadwin1 |
@ -0,0 +1,47 @@ |
|||||
|
# 数据源配置 |
||||
|
spring: |
||||
|
datasource: |
||||
|
druid: |
||||
|
# 初始连接数 |
||||
|
initialSize: 20 |
||||
|
# 最小连接池数量 |
||||
|
minIdle: 20 |
||||
|
# 最大连接池数量 |
||||
|
maxActive: 200 |
||||
|
# 配置获取连接等待超时的时间 |
||||
|
maxWait: 60000 |
||||
|
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 |
||||
|
timeBetweenEvictionRunsMillis: 60000 |
||||
|
# 配置一个连接在池中最小生存的时间,单位是毫秒 |
||||
|
minEvictableIdleTimeMillis: 300000 |
||||
|
# 配置一个连接在池中最大生存的时间,单位是毫秒 |
||||
|
maxEvictableIdleTimeMillis: 900000 |
||||
|
# 配置检测连接是否有效 |
||||
|
validationQuery: SELECT 1 FROM DUAL |
||||
|
testWhileIdle: true |
||||
|
testOnBorrow: false |
||||
|
testOnReturn: false |
||||
|
webStatFilter: |
||||
|
enabled: false |
||||
|
url-pattern: /* # 过滤所有url |
||||
|
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" # 排除一些不必要的url |
||||
|
session-stat-enable: true # 开启session统计功能 |
||||
|
session-stat-max-count: 1000 # session的最大个数,默认100 |
||||
|
statViewServlet: |
||||
|
enabled: true |
||||
|
# 设置白名单,不填则允许所有访问 |
||||
|
allow: |
||||
|
url-pattern: /druid/* |
||||
|
# 控制台管理用户名和密码 |
||||
|
login-username: win |
||||
|
login-password: 123456 |
||||
|
filter: |
||||
|
stat: |
||||
|
enabled: true |
||||
|
# 慢SQL记录 |
||||
|
log-slow-sql: true |
||||
|
slow-sql-millis: 1000 |
||||
|
merge-sql: true |
||||
|
wall: |
||||
|
config: |
||||
|
multi-statement-allow: true |
@ -0,0 +1,47 @@ |
|||||
|
# 开发环境配置 |
||||
|
server: |
||||
|
# 服务器的HTTP端口,默认为8080 |
||||
|
port: 23300 |
||||
|
servlet: |
||||
|
# 应用的访问路径 |
||||
|
context-path: / |
||||
|
tomcat: |
||||
|
# tomcat的URI编码 |
||||
|
uri-encoding: UTF-8 |
||||
|
# 连接数满后的排队数,默认为100 |
||||
|
accept-count: 100 |
||||
|
threads: |
||||
|
# tomcat最大线程数,默认为200 |
||||
|
max: 100 |
||||
|
# Tomcat启动初始化的线程数,默认值10 |
||||
|
min-spare: 10 |
||||
|
|
||||
|
# 日志配置 |
||||
|
logging: |
||||
|
file: |
||||
|
path: logs |
||||
|
level: |
||||
|
com.win: debug |
||||
|
org.springframework: warn |
||||
|
|
||||
|
shell: |
||||
|
jlht: |
||||
|
qad-domain: JLHT |
||||
|
company-code: CCWININ |
||||
|
server-id: master |
||||
|
ip: 222.169.228.163 |
||||
|
port: 6122 |
||||
|
linux-id: mfg |
||||
|
linux-password: mfgpro |
||||
|
qad-user: mfg |
||||
|
qad-password: Qadwin1 |
||||
|
jlht2: |
||||
|
qad-domain: JLHT2 |
||||
|
company-code: CCWININ |
||||
|
server-id: master |
||||
|
ip: 222.169.228.163 |
||||
|
port: 6122 |
||||
|
linux-id: mfg |
||||
|
linux-password: mfgpro |
||||
|
qad-user: mfg |
||||
|
qad-password: Qadwin1 |
@ -0,0 +1,47 @@ |
|||||
|
# 开发环境配置 |
||||
|
server: |
||||
|
# 服务器的HTTP端口,默认为8080 |
||||
|
port: 23300 |
||||
|
servlet: |
||||
|
# 应用的访问路径 |
||||
|
context-path: / |
||||
|
tomcat: |
||||
|
# tomcat的URI编码 |
||||
|
uri-encoding: UTF-8 |
||||
|
# 连接数满后的排队数,默认为100 |
||||
|
accept-count: 100 |
||||
|
threads: |
||||
|
# tomcat最大线程数,默认为200 |
||||
|
max: 100 |
||||
|
# Tomcat启动初始化的线程数,默认值10 |
||||
|
min-spare: 10 |
||||
|
|
||||
|
# 日志配置 |
||||
|
logging: |
||||
|
file: |
||||
|
path: logs |
||||
|
level: |
||||
|
com.win: debug |
||||
|
org.springframework: warn |
||||
|
|
||||
|
shell: |
||||
|
jlht: |
||||
|
qad-domain: JLHT |
||||
|
company-code: CCWININ |
||||
|
server-id: master |
||||
|
ip: 222.169.228.163 |
||||
|
port: 6122 |
||||
|
linux-id: mfg |
||||
|
linux-password: mfgpro |
||||
|
qad-user: mfg |
||||
|
qad-password: Qadwin1 |
||||
|
jlht2: |
||||
|
qad-domain: JLHT2 |
||||
|
company-code: CCWININ |
||||
|
server-id: master |
||||
|
ip: 222.169.228.163 |
||||
|
port: 6122 |
||||
|
linux-id: mfg |
||||
|
linux-password: mfgpro |
||||
|
qad-user: mfg |
||||
|
qad-password: Qadwin1 |
@ -0,0 +1,33 @@ |
|||||
|
spring: |
||||
|
application: |
||||
|
name: win |
||||
|
profiles: |
||||
|
include: druid |
||||
|
active: dev |
||||
|
main: |
||||
|
allow-bean-definition-overriding: true |
||||
|
servlet: |
||||
|
multipart: |
||||
|
enabled: true |
||||
|
max-file-size: 200MB |
||||
|
max-request-size: 1000MB |
||||
|
|
||||
|
# MyBatis Plus 的配置项 |
||||
|
mybatis-plus: |
||||
|
configuration: |
||||
|
map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。 |
||||
|
logImpl: org.apache.ibatis.logging.slf4j.Slf4jImpl |
||||
|
# 开启缓存 |
||||
|
cache-enabled: true |
||||
|
global-config: |
||||
|
db-config: |
||||
|
id-type: NONE # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。 |
||||
|
logic-delete-value: 1 # 逻辑已删除值(默认为 1) |
||||
|
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0) |
||||
|
banner: false # 关闭控制台的 Banner 打印 |
||||
|
type-aliases-package: com.win.dao |
||||
|
encryptor: |
||||
|
password: XDV71a+xqStEA3WH # 加解密的秘钥,可使用 https://www.imaegoo.com/2020/aes-key-generator/ 网站生成 |
||||
|
|
||||
|
mybatis-plus-join: |
||||
|
banner: false # 关闭控制台的 Banner 打印 |
@ -0,0 +1,108 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<configuration> |
||||
|
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
||||
|
<!-- 日志存放路径 --> |
||||
|
<property name="log.path" value="${logPath}" /> |
||||
|
|
||||
|
<!--0. 日志格式和颜色渲染 --> |
||||
|
<!-- 彩色日志依赖的渲染类 --> |
||||
|
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /> |
||||
|
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /> |
||||
|
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /> |
||||
|
<!-- 彩色日志格式 --> |
||||
|
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" /> |
||||
|
<!-- 日志输出格式 --> |
||||
|
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" /> |
||||
|
|
||||
|
<!-- 控制台输出 --> |
||||
|
<appender name="console" class="ch.qos.logback.core.ConsoleAppender"> |
||||
|
<!-- 此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息 --> |
||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> |
||||
|
<level>debug</level> |
||||
|
</filter> |
||||
|
<encoder> |
||||
|
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern> |
||||
|
<!-- 设置字符集 --> |
||||
|
<charset>UTF-8</charset> |
||||
|
</encoder> |
||||
|
</appender> |
||||
|
|
||||
|
<!-- 系统日志输出 --> |
||||
|
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
|
<file>${log.path}/sys-info.log</file> |
||||
|
<!-- 循环政策:基于时间创建日志文件 --> |
||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
||||
|
<!-- 日志文件名格式 --> |
||||
|
<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern> |
||||
|
<!-- 日志最大的历史 60天 --> |
||||
|
<maxHistory>60</maxHistory> |
||||
|
</rollingPolicy> |
||||
|
<encoder> |
||||
|
<pattern>${log.pattern}</pattern> |
||||
|
</encoder> |
||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter"> |
||||
|
<!-- 过滤的级别 --> |
||||
|
<level>INFO</level> |
||||
|
<!-- 匹配时的操作:接收(记录) --> |
||||
|
<onMatch>ACCEPT</onMatch> |
||||
|
<!-- 不匹配时的操作:拒绝(不记录) --> |
||||
|
<onMismatch>DENY</onMismatch> |
||||
|
</filter> |
||||
|
</appender> |
||||
|
|
||||
|
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
|
<file>${log.path}/sys-error.log</file> |
||||
|
<!-- 循环政策:基于时间创建日志文件 --> |
||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
||||
|
<!-- 日志文件名格式 --> |
||||
|
<fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern> |
||||
|
<!-- 日志最大的历史 60天 --> |
||||
|
<maxHistory>60</maxHistory> |
||||
|
</rollingPolicy> |
||||
|
<encoder> |
||||
|
<pattern>${log.pattern}</pattern> |
||||
|
</encoder> |
||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter"> |
||||
|
<!-- 过滤的级别 --> |
||||
|
<level>ERROR</level> |
||||
|
<!-- 匹配时的操作:接收(记录) --> |
||||
|
<onMatch>ACCEPT</onMatch> |
||||
|
<!-- 不匹配时的操作:拒绝(不记录) --> |
||||
|
<onMismatch>DENY</onMismatch> |
||||
|
</filter> |
||||
|
</appender> |
||||
|
|
||||
|
<!-- 用户访问日志输出 --> |
||||
|
<appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
|
<file>${log.path}/sys-user.log</file> |
||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
||||
|
<!-- 按天回滚 daily --> |
||||
|
<fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern> |
||||
|
<!-- 日志最大的历史 60天 --> |
||||
|
<maxHistory>60</maxHistory> |
||||
|
</rollingPolicy> |
||||
|
<encoder> |
||||
|
<pattern>${log.pattern}</pattern> |
||||
|
</encoder> |
||||
|
</appender> |
||||
|
|
||||
|
<!-- 系统模块日志级别控制 --> |
||||
|
<logger name="com.hc" level="info" /> |
||||
|
<!-- Spring日志级别控制 --> |
||||
|
<logger name="org.springframework" level="warn" /> |
||||
|
|
||||
|
<root level="error"> |
||||
|
<appender-ref ref="console" /> |
||||
|
</root> |
||||
|
|
||||
|
<!--系统操作日志--> |
||||
|
<root level="info"> |
||||
|
<appender-ref ref="file_info" /> |
||||
|
<appender-ref ref="file_error" /> |
||||
|
</root> |
||||
|
|
||||
|
<!--系统用户操作日志--> |
||||
|
<logger name="sys-user" level="info"> |
||||
|
<appender-ref ref="sys-user"/> |
||||
|
</logger> |
||||
|
</configuration> |
Loading…
Reference in new issue