Skip to content

Commit

Permalink
Merge pull request #6 from ChinaLym/dev
Browse files Browse the repository at this point in the history
0.6 released
  • Loading branch information
ChinaLym authored May 22, 2021
2 parents 7c9e4ea + e2c8721 commit de42afe
Show file tree
Hide file tree
Showing 449 changed files with 15,766 additions and 1,543 deletions.
64 changes: 43 additions & 21 deletions CHANGELOG.MD
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@

## 0.7(PLAN)

- 依赖
- spring boot: 升级到 2.3.10
- spring cloud: 升级到 hoxton 10

- DB
- 自动判断是否存在分布式事务问题,默认仅开发时生效
- TransactionSynchronizationManager.isActualTransactionActive() 判断是否有 @Transactional
Expand All @@ -17,7 +13,6 @@

- 操作日志
- 优化扩展,支持自定义解析逻辑,以支持在记录操作日志时,同时记录其他信息
- DTO添加更多常用字段,记录更详细

- batch
- 批处理模块支持导出导出,进度条等基本逻辑,上升至无依赖任务批处理
Expand All @@ -29,22 +24,14 @@
- 异常日志新增链路上下文打印
- 追踪日志更详细:digest、stat

- core
- 错误码,默认日志级别调整为 ERROR
- 增加错误上下文
- 结合世界国际化组织标准增加跨地域上下文以增强多语言、全球化能力

- 安全与加密-脱敏
- 敏感词过滤
- 字段名-脱敏 shielder 算法id-脱敏算法实现
- 注解形式,输出时自动脱敏

- 扩展模块
- 后台配置:开箱即用的轻量级配置管理模块

- redis 连接池事件监听聚合接口

## 0.6 (2021年1月4日 发布)
## 0.6 (2021年5月21日 发布)

0.6 版本主要致力于基本能力的完善,也是标志着基本使用方式确定,具体的实现可能有部分调整,方向不再大幅变动。

Expand All @@ -54,38 +41,73 @@

加解密部分代码规范性重构:密钥协商可以定制协商 / 加密算法、允许增删支持的算法;优化api更易于使用;符合http规范;

- 依赖升级
- spring boot: 升级到 2.4.5
- spring cloud: 升级到 2020.0.2
- 其他依赖小版本升级

- 接口文档选型
- 注解同时支持 swagger3(主)/swagger2
- 注释支持 smartDoc
- 可视化界面默认使用 knife4j

- core:
- 错误码,默认日志级别调整为 ERROR
- 使用 AppContext 作为变量共享中心,且支持自动跨线程
- 新增 instanceId 获取,并添加两种可选的方式(配置 / from redis),集群模式自动切换
- DelayTask 现在默认自动开启
- 新增线程池增强器接口,可以在这里定义全局线程增强
- 响应中增加错误上下文(在 ext 扩展字段中)
- 错误码
- 目前不推荐错误码与 log 级别 / HTTP 响应码绑定
- 新增错误码插件,在编译时,自动根据注释生成错误码文档,供项目使用
- i18n
- 消除启动时因个性化设置后且 baseFilePath 中包含 '*' 且文件不存在时的堆栈打印提醒
- 结合世界国际化组织标准增加跨地域上下文以增强多语言、全球化能力
- 增加日期转换器格式
- JsonUtil 反序列化日期支持格式增加,允许复用 core 中的枚举解析器反序列化枚举
- 新增 guid 标准接口,自动注入 guid 生成器

- 操作日志框架重构
- 日志上下文增加语法糖方法
- 包结构重构
- DTO添加更多常用字段,记录更详细,如用户端特征UA
- logger 增加 bufferedLogger,优化以 HTTP / MQ / Jdbc 形式记录日志的频繁写入性能
-@OperationLog 所在方法抛出异常时,若为 ErrorCode 及其子类,则自动记录错误码
- 更换跨线程增强方式,使用 shoulder-core 中定义的扩展点,提高 shoulder 框架内聚

- db
- 模板类重构
- 包路径变更 org.shoulder.data.mybatis.base -> org.shoulder.data.mybatis.template
- 泛型要求调整
- 确定依赖 mybatis-plus(其新分页插件存在5个月无法使用的bug修复)
- 增加 mybatis-plus 扩展方法,如针对 bizId 的

- web
- 默认的 `RestController` 全局异常处理仅对 `json` 格式响应支持
- 默认的 `RestController` 全局异常处理仅对 `json` 格式响应支持
- 引入 字典、标签 通用功能暂时放置于 web
- 引入依赖于 db 的通用 controller 实现快速开接口

- validate
- 通用错误码提供枚举类
- 通用错误码提供枚举类
- 首次引入动态校验规则

- crypto
- 对称加解密较大重构(最后一个参数为 明文/密文),使用接口,而非静态工具类
- 统一参数位置,统一使用方法的最后一个参数作为待处理的明文/密文
- 密钥协商
- 完善协商协议,不再是固定使用最高银行加密级别 `AES256 CBC`,而是根据协商双发都支持的算法随机选择(可自行替换成安全性更低地以获得更高的性能)
- 修改协商请求头前缀为 `"X-S-"`
- 对称加解密较大重构(最后一个参数为 明文/密文),使用接口,而非静态工具类
- 统一参数位置,统一使用方法的最后一个参数作为待处理的明文/密文
- 密钥协商
- 完善协商协议,不再是固定使用最高银行加密级别 `AES256 CBC`,而是根据协商双发都支持的算法随机选择(可自行替换成安全性更低地以获得更高的性能)
- 修改协商请求头前缀为 `"X-S-"`

- 扩展模块
- 引入扩展模块
- 后台配置:ext-config 开箱即用的轻量级配置管理模块
- 后续引入动态表单:动态字段展示样式

- starters
- 完善一些自动配置的提示
- 引入 shoulder-starter-mysql 快速对接 mysql
- 允许监听 redis 重连、集群变更等事件

## 0.5 (2020年12月6日 发布)

Expand Down
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
<versions-maven-plugin.version>2.7</versions-maven-plugin.version>
<license-maven-plugin.version>2.0.0</license-maven-plugin.version>
<clirr-maven-plugin.version>2.7</clirr-maven-plugin.version>
<maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
<maven-gpg-plugin.version>3.0.1</maven-gpg-plugin.version>
<gpg.passphrase>${env.GPG_PASSPHRASE}</gpg.passphrase>
</properties>

Expand Down Expand Up @@ -258,7 +258,7 @@
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<version>1.6.8</version>
<extensions>true</extensions>

<configuration>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,48 @@
<artifactId>shoulder-starter-web</artifactId>
</dependency>

<!-- 数据库相关 -->
<!--<dependency>
<groupId>cn.itlym</groupId>
<artifactId>shoulder-starter-mysql</artifactId>
</dependency>-->

<!-- 对象转换 -->
<!--<dependency>
<groupId>cn.itlym</groupId>
<artifactId>shoulder-starter-beanmap</artifactId>
</dependency>-->

<!-- 操作日志 -->
<!--<dependency>
<groupId>cn.itlym</groupId>
<artifactId>shoulder-operation-log</artifactId>
</dependency>-->

<!-- 监控相关(附工具包:可监控的线程池) -->
<!--<dependency>
<groupId>cn.itlym</groupId>
<artifactId>shoulder-starter-monitor</artifactId>
</dependency>-->

<!-- 支持集群 -->
<!--<dependency>
<groupId>cn.itlym</groupId>
<artifactId>shoulder-cluster</artifactId>
</dependency>-->

<!-- =================================== test =================================== -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<!-- 去掉不推荐的 junit4 -->
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>

Expand Down Expand Up @@ -71,6 +107,15 @@
<filtering>true</filtering>
</resource>
</resources>
<!--单元测试时引用src/main/resources下的资源文件-->
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
<testResource>
<directory>src/main/resources</directory>
</testResource>
</testResources>

</build>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package ${package};

import org.junit.Test;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
Expand Down
1 change: 1 addition & 0 deletions shoulder-build/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
<modules>
<module>shoulder-base</module>
<module>shoulder-starters</module>
<module>shoulder-plugins</module>
</modules>

</project>
4 changes: 2 additions & 2 deletions shoulder-build/shoulder-base/shoulder-batch/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -88,15 +88,15 @@
<dependency>
<groupId>com.univocity</groupId>
<artifactId>univocity-parsers</artifactId>
<version>2.9.0</version>
<version>2.9.1</version>
<optional>true</optional>
</dependency>

<!-- xml 转换 https://github.com/x-stream/xstream/releases -->
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.15</version>
<version>1.4.16</version>
<optional>true</optional>
</dependency>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
import org.shoulder.batch.enums.BatchResultEnum;
import org.shoulder.batch.enums.ProcessStatusEnum;

import java.util.List;

Expand Down Expand Up @@ -36,7 +36,7 @@ public class BatchProcessDetail {
/**
* 失败原因(失败详情)
*
* @see BatchResultEnum
* @see ProcessStatusEnum
*/
@ApiModelProperty(value = "失败原因-错误码", example = "用户名已存在", position = 3)
private String errorCode;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
import org.shoulder.batch.enums.BatchResultEnum;
import org.shoulder.batch.enums.ProcessStatusEnum;

import java.util.List;

Expand Down Expand Up @@ -37,7 +37,7 @@ public class BatchRecordDetailResult {
/**
* 失败原因
*
* @see BatchResultEnum
* @see ProcessStatusEnum
*/
@ApiModelProperty(value = "失败原因:错误码", example = "用户名已存在", position = 3)
private String reason;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package org.shoulder.batch.endpoint;

/**
* 导出
*
* @param <Entity> 实体
* @param <PageQuery> 分页查询参数
* @author lym
* <p>
* 导出Excel
* @param params 参数
* @param request 请求
* @param response 响应
* <p>
* 预览Excel
* @param params 预览参数
* @return 预览html
* <p>
* 构建导出参数
* @param params 分页参数
* @param page 分页
* @return 导出参数
*/
/*
public interface ExportController<Entity, PageQuery> {
*/
/**
* 导出Excel
*
* @param params 参数
* @param request 请求
* @param response 响应
*//*
@ApiOperation(value = "导出Excel")
@RequestMapping(value = "/export", method = RequestMethod.POST, produces = "application/octet-stream")
@OperationLog(operation = OperationLog.Operations.EXPORT)
default void exportExcel(@RequestBody @Validated PageParams<PageQuery> params, HttpServletRequest request, HttpServletResponse response) {
IPage<Entity> page = params.buildPage();
ExportParams exportParams = getExportParams(params, page);
Map<String, Object> map = new HashMap<>(7);
map.put(NormalExcelConstants.DATA_LIST, page.getRecords());
map.put(NormalExcelConstants.CLASS, getEntityClass());
map.put(NormalExcelConstants.PARAMS, exportParams);
Object fileName = params.getExtra().getOrDefault(NormalExcelConstants.FILE_NAME, "临时文件");
map.put(NormalExcelConstants.FILE_NAME, fileName);
PoiBaseView.render(map, request, response, NormalExcelConstants.EASYPOI_EXCEL_VIEW);
}
*/
/**
* 预览Excel
*
* @param params 预览参数
* @return 预览html
*//*
@ApiOperation(value = "预览Excel")
@OperationLog(operation = OperationLog.Operations.EXPORT)
@RequestMapping(value = "/preview", method = RequestMethod.POST)
default BaseResult<String> preview(@RequestBody @Validated PageParams<PageQuery> params) {
IPage<Entity> page = params.buildPage();
ExportParams exportParams = getExportParams(params, page);
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, getEntityClass(), page.getRecords());
return BaseResult.success(ExcelXorHtmlUtil.excelToHtml(new ExcelToHtmlParams(workbook)));
}
*/
/**
* 构建导出参数
*
* @param params 分页参数
* @param page 分页
* @return 导出参数
*//*
default ExportParams getExportParams(PageParams<PageQuery> params, IPage<Entity> page) {
query(params, page, params.getSize() == -1 ? Convert.toLong(Integer.MAX_VALUE) : params.getSize());
Object title = params.getExtra().get("title");
Object type = params.getExtra().getOrDefault("type", ExcelType.XSSF.name());
Object sheetName = params.getExtra().getOrDefault("sheetName", "SheetName");
ExcelType excelType = ExcelType.XSSF.name().equals(type) ? ExcelType.XSSF : ExcelType.HSSF;
return new ExportParams(String.valueOf(title), sheetName.toString(), excelType);
}
}
*/
Loading

0 comments on commit de42afe

Please sign in to comment.