commit:集成knife4j

This commit is contained in:
Jerry
2020-10-29 18:51:32 +08:00
parent c87e94d2e8
commit 6e57f10dfc
648 changed files with 6447 additions and 708 deletions

View File

@@ -60,12 +60,12 @@
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-csv:1.8" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.1.5" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.4.5" level="project" />
<orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.10.2" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.10.2" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.10.2" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.70" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.74" level="project" />
<orderEntry type="library" name="Maven: com.github.ben-manes.caffeine:caffeine:2.8.1" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.1.0" level="project" />
<orderEntry type="library" name="Maven: cn.jimmyshi:bean-query:1.1.5" level="project" />

View File

@@ -12,7 +12,7 @@ import java.util.Date;
* Controller的环绕拦截类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@ControllerAdvice
public class MyControllerAdvice {

View File

@@ -24,7 +24,7 @@ import java.util.concurrent.TimeoutException;
* 用不同的函数,处理不同类型的异常。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
@RestControllerAdvice("com.orange.demo")

View File

@@ -6,7 +6,7 @@ import java.lang.annotation.*;
* 主要用于标记逻辑删除字段。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)

View File

@@ -6,7 +6,7 @@ import java.lang.annotation.*;
* 主要用于标记更新字段。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)

View File

@@ -6,7 +6,7 @@ import java.lang.annotation.*;
* 主要用于标记Service所依赖的数据源类型。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)

View File

@@ -9,7 +9,7 @@ import java.lang.annotation.Target;
* 标记Controller中的方法参数参数解析器会根据该注解将请求中的JSON数据映射到参数中的绑定字段。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)

View File

@@ -6,7 +6,7 @@ import java.lang.annotation.*;
* 主要用于标记无需Token验证的接口
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)

View File

@@ -6,7 +6,7 @@ import java.lang.annotation.*;
* 标识Model和常量字典之间的关联关系。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)

View File

@@ -8,7 +8,7 @@ import java.lang.annotation.*;
* 标识Model之间的字典关联关系。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)

View File

@@ -4,9 +4,11 @@ import java.lang.annotation.*;
/**
* 标注多对多的Model关系。
* 重要提示:由于多对多关联表数据,很多时候都不需要跟随主表数据返回,所以该注解不会在
* 生成的时候自动添加到实体类字段上,需要的时候,用户可自行手动添加。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)

View File

@@ -8,7 +8,7 @@ import java.lang.annotation.*;
* 主要用于多对多的Model关系。标注通过从表关联字段或者关联表关联字段计算主表聚合计算字段的规则。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)

View File

@@ -8,7 +8,7 @@ import java.lang.annotation.*;
* 主要用于一对多的Model关系。标注通过从表关联字段计算主表聚合计算字段的规则。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)

View File

@@ -8,7 +8,7 @@ import java.lang.annotation.*;
* 标识Model之间的一对一关联关系。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)

View File

@@ -8,7 +8,7 @@ import java.lang.annotation.*;
* 用于标记支持数据上传和下载的字段。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)

View File

@@ -26,7 +26,7 @@ import java.util.List;
* 记录接口的链路traceId、请求参数、应答数据、错误信息和调用时长。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Aspect
@Component

View File

@@ -14,7 +14,7 @@ import java.util.Set;
* @param <D> 主DomainDto域数据对象类型。
* @param <K> 主键类型。
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public interface BaseClient<D, K> {

View File

@@ -33,7 +33,7 @@ import java.util.stream.Collectors;
* @param <D> 主DomainDto域对象类型。
* @param <K> 主键类型。
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
public abstract class BaseController<M, D, K> {

View File

@@ -14,7 +14,7 @@ import java.util.Map;
*
* @param <M> 主Model实体对象。
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@RegisterMapper
public interface BaseDaoMapper<M> extends Mapper<M>, InsertListMapper<M> {

View File

@@ -12,7 +12,7 @@ import java.util.stream.Collectors;
* @param <D> Domain域对象类型。
* @param <M> Model实体对象类型。
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public interface BaseModelMapper<D, M> {

View File

@@ -8,7 +8,7 @@ import java.util.List;
*
* @param <M> 数据类型。
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class DummyModelMapper<M> implements BaseModelMapper<M, M> {

View File

@@ -17,7 +17,7 @@ import java.util.List;
* @param <D> Model对应的DomainDto域对象类型。
* @param <K> Model对象主键的类型。
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
public abstract class BaseDictService<M, D, K> extends BaseService<M, D, K> {

View File

@@ -40,7 +40,7 @@ import static java.util.stream.Collectors.*;
* @param <D> Model对应的Dto对象类型。
* @param <K> Model对象主键的类型。
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
public abstract class BaseService<M, D, K> {

View File

@@ -9,7 +9,7 @@ import java.util.Set;
* @param <K> 字典表主键类型。
* @param <V> 字典表对象类型。
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public interface DictionaryCache<K, V> {

View File

@@ -9,7 +9,7 @@ import java.util.function.Function;
* @param <K> 字典表主键类型。
* @param <V> 字典表对象类型。
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class MapDictionaryCache<K, V> implements DictionaryCache<K, V> {

View File

@@ -12,7 +12,7 @@ import java.util.function.Function;
* @param <K> 字典表主键类型。
* @param <V> 字典表对象类型。
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class MapTreeDictionaryCache<K, V> extends MapDictionaryCache<K, V> {

View File

@@ -21,7 +21,7 @@ import java.util.List;
* 所有的项目拦截器、参数解析器、消息对象转换器都在这里集中配置。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Configuration
public class CommonWebMvcConfig implements WebMvcConfigurer {

View File

@@ -8,7 +8,7 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
* 目前用于用户密码加密UAA接入应用客户端的client_secret加密。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Configuration
public class EncryptConfig {

View File

@@ -11,7 +11,7 @@ import org.springframework.context.annotation.Configuration;
* FeignClient的配置对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Configuration
public class FeignConfig implements RequestInterceptor {

View File

@@ -24,7 +24,7 @@ import java.util.List;
* RestTemplate连接池配置对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Configuration
public class RestTemplateConfig {

View File

@@ -10,7 +10,7 @@ import org.springframework.context.annotation.Configuration;
* tomcat配置对象。当前配置禁用了PUT和DELETE方法防止渗透攻击。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Configuration
public class TomcatConfig {

View File

@@ -4,7 +4,7 @@ package com.orange.demo.common.core.constant;
* 在跨服务调用时,需要传递的聚合分类常量对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public final class AggregationKind {

View File

@@ -7,7 +7,7 @@ import java.util.Map;
* 聚合计算的常量类型对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public final class AggregationType {

View File

@@ -4,7 +4,7 @@ package com.orange.demo.common.core.constant;
* 应用程序的常量声明对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public final class ApplicationConstant {

View File

@@ -4,7 +4,7 @@ package com.orange.demo.common.core.constant;
* 返回应答中的错误代码和错误信息。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public enum ErrorCodeEnum {

View File

@@ -4,7 +4,7 @@ package com.orange.demo.common.core.constant;
* 数据记录逻辑删除标记常量。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public final class GlobalDeletedFlag {

View File

@@ -4,7 +4,7 @@ package com.orange.demo.common.core.exception;
* 数据验证失败的自定义异常。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class DataValidationException extends RuntimeException {

View File

@@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode;
* 无效的类对象字段的自定义异常。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode;
* 无效的实体对象字段的自定义异常。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode;
* 无效的实体对象的自定义异常。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@@ -5,7 +5,7 @@ package com.orange.demo.common.core.exception;
* NOTE主要是为了避免SonarQube进行代码质量扫描时给出警告。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class MyRuntimeException extends RuntimeException {

View File

@@ -4,7 +4,7 @@ package com.orange.demo.common.core.exception;
* 没有数据被修改的自定义异常。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class NoDataAffectException extends RuntimeException {

View File

@@ -4,7 +4,7 @@ package com.orange.demo.common.core.exception;
* 没有数据访问权限的自定义异常。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class NoDataPermException extends RuntimeException {

View File

@@ -4,7 +4,7 @@ package com.orange.demo.common.core.exception;
* Redis缓存访问失败。比如获取分布式数据锁超时、等待线程中断等。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class RedisCacheAccessException extends RuntimeException {

View File

@@ -4,7 +4,7 @@ package com.orange.demo.common.core.exception;
* 关联远程服务数据失败的自定义异常。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class RemoteDataBuildException extends RuntimeException {

View File

@@ -29,7 +29,7 @@ import java.util.*;
* 2、多个对象需要封装到一个对象里才可以用@RequestBody接收。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class MyRequestArgumentResolver implements HandlerMethodArgumentResolver {

View File

@@ -11,7 +11,7 @@ import java.util.Map;
* 应用程序启动后的事件监听对象。主要负责加载Model之间的字典关联和一对一关联所对应的Service结构关系。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Component
public class LoadCachedDataListener implements ApplicationListener<ApplicationReadyEvent> {

View File

@@ -11,7 +11,7 @@ import java.util.Map;
* 应用程序启动后的事件监听对象。主要负责加载Model之间的字典关联和一对一关联所对应的Service结构关系。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Component
public class LoadServiceRelationListener implements ApplicationListener<ApplicationReadyEvent> {

View File

@@ -8,7 +8,7 @@ import lombok.Data;
* 同时为了提升效率减少查询次数可以根据具体的需求将部分验证关联对象存入data字段以供Controller使用。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
public class CallResult {

View File

@@ -4,7 +4,7 @@ package com.orange.demo.common.core.object;
* 哑元对象,主要用于注解中的缺省对象占位符。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public final class DummyClass {

View File

@@ -10,7 +10,7 @@ import java.util.Set;
* 分组聚合查询参数。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
public class MyAggregationParam {

View File

@@ -7,7 +7,7 @@ import lombok.Data;
* Mybatis Mapper.xml中所需的分组条件对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
@AllArgsConstructor

View File

@@ -20,7 +20,7 @@ import java.util.List;
* 查询分组参数请求对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@EqualsAndHashCode(callSuper = true)
@Slf4j

View File

@@ -18,7 +18,7 @@ import java.util.*;
* Controller参数中的排序请求对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@EqualsAndHashCode(callSuper = true)
@Slf4j
@@ -44,6 +44,9 @@ public class MyOrderParam extends ArrayList<MyOrderParam.OrderInfo> {
int i = 0;
StringBuilder orderBy = new StringBuilder(128);
for (OrderInfo orderInfo : orderParam) {
if (StringUtils.isBlank(orderInfo.getFieldName())) {
continue;
}
OrderBaseData orderBaseData = parseOrderBaseData(orderInfo, modelClazz);
if (StringUtils.isBlank(orderBaseData.tableName)) {
throw new InvalidDataModelException(orderBaseData.modelName);
@@ -83,9 +86,6 @@ public class MyOrderParam extends ArrayList<MyOrderParam.OrderInfo> {
private static OrderBaseData parseOrderBaseData(OrderInfo orderInfo, Class<?> modelClazz) {
OrderBaseData orderBaseData = new OrderBaseData();
if (StringUtils.isBlank(orderInfo.getFieldName())) {
return orderBaseData;
}
orderBaseData.fieldName = StringUtils.substringBefore(orderInfo.fieldName, DICT_MAP);
String[] stringArray = StringUtils.split(orderBaseData.fieldName, '.');
if (stringArray.length == 1) {
@@ -230,7 +230,7 @@ public class MyOrderParam extends ArrayList<MyOrderParam.OrderInfo> {
@Data
public static class OrderInfo {
/**
* Java对象的字段名。目前主要包含三种格式
* Java对象的字段名。如果fieldName为空则忽略跳过。目前主要包含三种格式:
* 1. 简单的属性名称如userId将会直接映射到与其关联的数据库字段。表名为当前ModelClazz所对应的表名。
* 映射结果或为 my_main_table.user_id
* 2. 字典属性名称如userIdDictMap.id由于仅仅支持字典中Id数据的排序所以直接截取DictMap之前的字符串userId作为排序属性。

View File

@@ -0,0 +1,23 @@
package com.orange.demo.common.core.object;
import lombok.Data;
import java.util.List;
/**
* 分页数据的应答返回对象。
*
* @author Jerry
* @date 2020-08-08
*/
@Data
public class MyPageData<T> {
/**
* 数据列表。
*/
private List<T> dataList;
/**
* 数据总数量。
*/
private Long totalCount;
}

View File

@@ -6,7 +6,7 @@ import lombok.Getter;
* Controller参数中的分页请求对象
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Getter
public class MyPageParam {

View File

@@ -9,7 +9,7 @@ import java.util.*;
* 查询参数。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
public class MyQueryParam {

View File

@@ -8,7 +8,7 @@ import lombok.Data;
* BaseService中的实体对象数据组装函数会根据该参数对象进行数据组装。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
@Builder

View File

@@ -16,7 +16,7 @@ import java.util.List;
* Where中的条件语句。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
@Data

View File

@@ -13,7 +13,7 @@ import java.io.PrintWriter;
* 接口返回对象
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
public class ResponseResult<T> {

View File

@@ -16,7 +16,7 @@ import java.nio.charset.StandardCharsets;
* 基于Jwt用于前后端传递的令牌对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
@ToString

View File

@@ -4,7 +4,7 @@ package com.orange.demo.common.core.object;
* 二元组对象。主要用于可以一次返回多个结果的场景,同时还能避免强制转换。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class Tuple2<T1, T2> {

View File

@@ -19,7 +19,7 @@ import java.util.List;
* 包含存储本地文件的功能,以及上传和下载所需的通用方法。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
public abstract class BaseUpDownloader {

View File

@@ -22,7 +22,7 @@ import java.util.Objects;
* 存储本地文件的上传下载实现类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
@Component
@@ -75,7 +75,7 @@ public class LocalUpDownloader extends BaseUpDownloader {
i = bis.read(buff);
}
} catch (IOException e) {
log.error("Failed to call UpDownloadUtil.doDownload", e);
log.error("Failed to call LocalUpDownloader.doDownload", e);
}
}

View File

@@ -9,7 +9,7 @@ import java.util.Map;
* 业务对象根据上传下载存储类型,获取上传下载对象的工厂类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Component
public class UpDownloaderFactory {

View File

@@ -6,7 +6,7 @@ import lombok.Data;
* 数据上传操作的应答信息对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
public class UploadResponseInfo {

View File

@@ -6,7 +6,7 @@ import lombok.Data;
* 上传数据存储信息对象。这里之所以使用对象,主要是便于今后扩展。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
public class UploadStoreInfo {

View File

@@ -4,7 +4,7 @@ package com.orange.demo.common.core.upload;
* 上传数据存储介质类型枚举。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public enum UploadStoreTypeEnum {

View File

@@ -11,7 +11,7 @@ import java.lang.reflect.Field;
* 获取JDK动态代理/CGLIB代理对象代理的目标对象的工具类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
public class AopTargetUtil {

View File

@@ -10,7 +10,7 @@ import org.springframework.stereotype.Component;
* Spring 系统启动应用感知对象主要用于获取Spring Bean的上下文对象后续的代码中可以直接查找系统中加载的Bean对象。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Component
public class ApplicationContextHolder implements ApplicationContextAware {

View File

@@ -10,7 +10,7 @@ import javax.servlet.http.HttpServletResponse;
* 获取Servlet HttpRequest和HttpResponse的工具类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class ContextUtil {

View File

@@ -23,7 +23,7 @@ import java.util.*;
* 导出工具类目前支持xlsx和csv两种类型。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
public class ExportUtil {

View File

@@ -22,7 +22,7 @@ import java.util.stream.Collectors;
* 导入工具类目前支持xlsx和csv两种类型。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
public class ImportUtil {
@@ -122,7 +122,7 @@ public class ImportUtil {
* @param rowIndex 当前行号。
* @param row 当前行数据列表对象。
*/
public void doImport(int rowIndex, List<Object> row) {
public void doImport(long rowIndex, List<Object> row) {
if (row == null) {
doProcess(batchRowList);
doFinish();

View File

@@ -17,7 +17,7 @@ import java.util.List;
* Ip工具类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
public class IpUtil {

View File

@@ -12,7 +12,7 @@ import java.util.Map;
* 基于JWT的Token生成工具类
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
public class JwtUtil {

View File

@@ -6,7 +6,7 @@ package com.orange.demo.common.core.util;
* 提高代码的规范度和可维护性。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class LogMessageUtil {

View File

@@ -1,5 +1,6 @@
package com.orange.demo.common.core.util;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.crypto.digest.DigestUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -7,16 +8,15 @@ import org.apache.commons.lang3.StringUtils;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Collection;
import java.util.Iterator;
import java.util.Set;
import java.util.UUID;
import java.lang.reflect.Field;
import java.util.*;
import java.util.stream.Collectors;
/**
* 脚手架中常用的基本工具方法集合,一般而言工程内部使用的方法。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class MyCommonUtil {
@@ -53,7 +53,7 @@ public class MyCommonUtil {
* @param objs 一组参数。
* @return 返回是否存在null或空字符串的参数。
*/
public static boolean existBlankArgument(Object...objs) {
public static boolean existBlankArgument(Object... objs) {
for (Object obj : objs) {
if (MyCommonUtil.isBlankOrNull(obj)) {
return true;
@@ -68,7 +68,7 @@ public class MyCommonUtil {
* @param objs 一组参数。
* @return 返回是否存在null或空字符串的参数。
*/
public static boolean existNotBlankArgument(Object...objs) {
public static boolean existNotBlankArgument(Object... objs) {
for (Object obj : objs) {
if (!MyCommonUtil.isBlankOrNull(obj)) {
return true;
@@ -107,7 +107,7 @@ public class MyCommonUtil {
* @param groups Validate绑定的校验组。
* @return 没有错误返回null否则返回具体的错误信息。
*/
public static <T> String getModelValidationError(T model, Class<?>...groups) {
public static <T> String getModelValidationError(T model, Class<?>... groups) {
Set<ConstraintViolation<T>> constraintViolations = validator.validate(model, groups);
if (!constraintViolations.isEmpty()) {
Iterator<ConstraintViolation<T>> it = constraintViolations.iterator();
@@ -136,6 +136,25 @@ public class MyCommonUtil {
return sb.toString();
}
/**
* 获取对象中,非空字段的名字列表。
*
* @param object 数据对象。
* @param clazz 数据对象的class类型。
* @param <T> 数据对象类型。
* @return 数据对象中值不为NULL的字段数组。
*/
public static <T> String[] getNotNullFieldNames(T object, Class<T> clazz) {
Field[] fields = ReflectUtil.getFields(clazz);
List<String> fieldNameList = Arrays.stream(fields).
filter(f -> ReflectUtil.getFieldValue(object, f) != null)
.map(Field::getName).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(fieldNameList)) {
return fieldNameList.toArray(new String[]{});
}
return new String[]{};
}
/**
* 私有构造函数,明确标识该常量类的作用。
*/

View File

@@ -16,7 +16,7 @@ import static org.joda.time.PeriodType.days;
* 日期工具类主要封装了部分joda-time中的方法让很多代码一行完成同时统一了日期到字符串的pattern格式。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class MyDateUtil {

View File

@@ -28,7 +28,7 @@ import java.util.stream.Collectors;
* 负责Model数据操作、类型转换和关系关联等行为的工具类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
public class MyModelUtil {

View File

@@ -2,6 +2,7 @@ package com.orange.demo.common.core.util;
import cn.jimmyshi.beanquery.BeanQuery;
import com.alibaba.fastjson.JSONObject;
import com.orange.demo.common.core.object.MyPageData;
import com.github.pagehelper.Page;
import com.orange.demo.common.core.base.mapper.BaseModelMapper;
import com.orange.demo.common.core.object.Tuple2;
@@ -13,7 +14,7 @@ import java.util.List;
* 生成带有分页信息的数据列表
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class MyPageUtil {
@@ -42,13 +43,13 @@ public class MyPageUtil {
*
* @param dataList 数据列表该参数必须是调用PageMethod.startPage之后立即执行mybatis查询操作的结果集。
* @param <T> 源数据类型。
* @return 返回结果集和TotalCount
* @return 返回分页数据对象
*/
public static <T> JSONObject makeResponseData(List<T> dataList) {
JSONObject pageData = new JSONObject();
pageData.put(DATA_LIST_LITERAL, dataList);
public static <T> MyPageData<T> makeResponseData(List<T> dataList) {
MyPageData<T> pageData = new MyPageData<>();
pageData.setDataList(dataList);
if (dataList instanceof Page) {
pageData.put(TOTAL_COUNT_LITERAL, ((Page<?>)dataList).getTotal());
pageData.setTotalCount(((Page<?>)dataList).getTotal());
}
return pageData;
}
@@ -59,13 +60,13 @@ public class MyPageUtil {
* @param dataList 数据列表该参数必须是调用PageMethod.startPage之后立即执行mybatis查询操作的结果集。
* @param totalCount 总数量。
* @param <T> 源数据类型。
* @return 返回结果集和TotalCount
* @return 返回分页数据对象
*/
public static <T> JSONObject makeResponseData(List<T> dataList, Long totalCount) {
JSONObject pageData = new JSONObject();
pageData.put(DATA_LIST_LITERAL, dataList);
public static <T> MyPageData<T> makeResponseData(List<T> dataList, Long totalCount) {
MyPageData<T> pageData = new MyPageData<>();
pageData.setDataList(dataList);
if (totalCount != null) {
pageData.put(TOTAL_COUNT_LITERAL, totalCount);
pageData.setTotalCount(totalCount);
}
return pageData;
}
@@ -77,12 +78,13 @@ public class MyPageUtil {
* @param modelMapper 实体对象到Dto对象的数据映射器。
* @param <D> Dto对象类型。
* @param <T> 实体对象类型。
* @return JSON对象中将包含转换后的Dto数据列表如果dataList是Page分页对象返回数据中要将包含分页信息
* @return 返回分页数据对象
*/
public static <D, T> JSONObject makeResponseData(List<T> dataList, BaseModelMapper<D, T> modelMapper) {
public static <D, T> MyPageData<D> makeResponseData(List<T> dataList, BaseModelMapper<D, T> modelMapper) {
MyPageData<D> pageData = new MyPageData<>();
if (CollectionUtils.isEmpty(dataList)) {
// 这里需要构建分页数据对象,统一前端数据格式
return MyPageUtil.makeResponseData(dataList);
return pageData;
}
long totalCount = 0L;
if (dataList instanceof Page) {
@@ -96,9 +98,9 @@ public class MyPageUtil {
*
* @param responseData 第一个数据时数据列表,第二个是列表数量。
* @param <T> 源数据类型。
* @return 返回结果集和TotalCount
* @return 返回分页数据对象
*/
public static <T> JSONObject makeResponseData(Tuple2<List<T>, Long> responseData) {
public static <T> MyPageData<T> makeResponseData(Tuple2<List<T>, Long> responseData) {
return makeResponseData(responseData.getFirst(), responseData.getSecond());
}

View File

@@ -4,7 +4,7 @@ package com.orange.demo.common.core.util;
* Redis 键生成工具类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class RedisKeyUtil {

View File

@@ -15,7 +15,7 @@ import java.util.Map;
* Java RSA 加密工具类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class RsaUtil {

View File

@@ -15,7 +15,7 @@ import java.util.function.Function;
* @param <K> 节点之间关联键的类型。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
public class TreeNode<T, K> {

View File

@@ -4,7 +4,7 @@ package com.orange.demo.common.core.validator;
* 数据增加的验证分组。通常用于数据新增场景。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public interface AddGroup {
}

View File

@@ -11,7 +11,7 @@ import java.lang.annotation.Target;
* 定义在Model对象中标注字段值引用自指定的常量字典和ConstDictRefValidator对象配合完成数据验证。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)

View File

@@ -10,7 +10,7 @@ import java.lang.reflect.Method;
* 数据字段自定义验证用于验证Model中字符串字段的最大长度和最小长度。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class ConstDictValidator implements ConstraintValidator<ConstDictRef, Object> {

View File

@@ -11,7 +11,7 @@ import java.lang.annotation.Target;
* 定义在Model或Dto对象中UTF-8编码的字符串字段长度的上限和下限和TextLengthValidator对象配合完成数据验证。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)

View File

@@ -9,7 +9,7 @@ import javax.validation.ConstraintValidatorContext;
* 数据字段自定义验证用于验证Model中UTF-8编码的字符串字段的最大长度和最小长度。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public class TextLengthValidator implements ConstraintValidator<TextLength, String> {

View File

@@ -4,7 +4,7 @@ package com.orange.demo.common.core.validator;
* 数据修改的验证分组。通常用于数据更新的场景。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
public interface UpdateGroup {

View File

@@ -62,9 +62,9 @@
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-csv:1.8" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.1.5" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.4.5" level="project" />
<orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.70" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.74" level="project" />
<orderEntry type="library" name="Maven: com.github.ben-manes.caffeine:caffeine:2.8.1" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.1.0" level="project" />
<orderEntry type="library" name="Maven: cn.jimmyshi:bean-query:1.1.5" level="project" />

View File

@@ -11,7 +11,7 @@ import org.springframework.context.annotation.Bean;
* common-minio模块的自动配置引导类。仅当配置项minio.enabled为true的时候加载。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@EnableConfigurationProperties(MinioProperties.class)
@ConditionalOnProperty(prefix = "minio", name = "enabled")

View File

@@ -7,7 +7,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* common-minio模块的配置类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Data
@ConfigurationProperties(prefix = "minio")

View File

@@ -22,7 +22,7 @@ import java.util.Objects;
* 基于Minio上传和下载文件操作的工具类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
@Component

View File

@@ -14,7 +14,7 @@ import java.io.InputStream;
* 封装的minio客户端模板类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
public class MinioTemplate {

View File

@@ -50,9 +50,9 @@
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-csv:1.8" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.1.5" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.4.5" level="project" />
<orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.70" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.74" level="project" />
<orderEntry type="library" name="Maven: com.github.ben-manes.caffeine:caffeine:2.8.1" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.1.0" level="project" />
<orderEntry type="library" name="Maven: cn.jimmyshi:bean-query:1.1.5" level="project" />

View File

@@ -21,7 +21,7 @@ import java.util.stream.Collectors;
* @param <K> 字典表主键类型。
* @param <V> 字典表对象类型。
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
public class RedisDictionaryCache<K, V> implements DictionaryCache<K, V> {

View File

@@ -21,7 +21,7 @@ import java.util.stream.Collectors;
* @param <K> 字典表主键类型。
* @param <V> 字典表对象类型。
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Slf4j
public class RedisTreeDictionaryCache<K, V> extends RedisDictionaryCache<K, V> {

View File

@@ -15,7 +15,7 @@ import java.util.Map;
* 使用Redisson作为Redis的分布式缓存库。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Configuration
@EnableCaching

View File

@@ -13,7 +13,7 @@ import java.util.Set;
* Session数据缓存辅助类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@SuppressWarnings("unchecked")
@Component

View File

@@ -11,7 +11,7 @@ import redis.clients.jedis.JedisPoolConfig;
* Redis配置类。
*
* @author Jerry
* @date 2020-10-19
* @date 2020-08-08
*/
@Configuration
@ConditionalOnProperty(name = "redis.jedis.enabled", havingValue = "true")

Some files were not shown because too many files have changed in this diff Show More