diff --git a/cf-dependencies/pom.xml b/cf-dependencies/pom.xml
index 748a3d17a..0c0122051 100644
--- a/cf-dependencies/pom.xml
+++ b/cf-dependencies/pom.xml
@@ -376,16 +376,6 @@
org.apache.skywalking
apm-toolkit-opentracing
${skywalking.version}
-
-
-
-
-
-
-
-
-
-
io.opentracing
diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/enums/WebFilterOrderEnum.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/enums/WebFilterOrderEnum.java
index 604738cec..eb9269dfe 100644
--- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/enums/WebFilterOrderEnum.java
+++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/enums/WebFilterOrderEnum.java
@@ -7,30 +7,27 @@ package com.cf.imes.framework.common.enums;
*
* @author 晨丰科技
*/
-public interface WebFilterOrderEnum {
+public class WebFilterOrderEnum {
- int CORS_FILTER = Integer.MIN_VALUE;
+ public static int CORS_FILTER = Integer.MIN_VALUE;
- int TRACE_FILTER = CORS_FILTER + 1;
+ public static int TRACE_FILTER = CORS_FILTER + 1;
- int ENV_TAG_FILTER = TRACE_FILTER + 1;
+ public static int ENV_TAG_FILTER = TRACE_FILTER + 1;
- int REQUEST_BODY_CACHE_FILTER = Integer.MIN_VALUE + 500;
+ public static int REQUEST_BODY_CACHE_FILTER = Integer.MIN_VALUE + 500;
// OrderedRequestContextFilter 默认为 -105,用于国际化上下文等等
- int TENANT_CONTEXT_FILTER = - 104; // 需要保证在 ApiAccessLogFilter 前面
+ public static int TENANT_CONTEXT_FILTER = - 104; // 需要保证在 ApiAccessLogFilter 前面
- int API_ACCESS_LOG_FILTER = -103; // 需要保证在 RequestBodyCacheFilter 后面
+ public static int API_ACCESS_LOG_FILTER = -103; // 需要保证在 RequestBodyCacheFilter 后面
- int XSS_FILTER = -102; // 需要保证在 RequestBodyCacheFilter 后面
+ public static int XSS_FILTER = -102; // 需要保证在 RequestBodyCacheFilter 后面
// Spring Security Filter 默认为 -100,可见 org.springframework.boot.autoconfigure.security.SecurityProperties 配置属性类
- int TENANT_SECURITY_FILTER = -99; // 需要保证在 Spring Security 过滤器后面
-
- int FLOWABLE_FILTER = -98; // 需要保证在 Spring Security 过滤后面
-
- int DEMO_FILTER = Integer.MAX_VALUE;
+ public static int TENANT_SECURITY_FILTER = -99; // 需要保证在 Spring Security 过滤器后面
+ public static int FLOWABLE_FILTER = -98; // 需要保证在 Spring Security 过滤后面
}
diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/exception/enums/GlobalErrorCodeConstants.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/exception/enums/GlobalErrorCodeConstants.java
index 586bc20fd..7d3b717ca 100644
--- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/exception/enums/GlobalErrorCodeConstants.java
+++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/exception/enums/GlobalErrorCodeConstants.java
@@ -30,11 +30,12 @@ public interface GlobalErrorCodeConstants {
// ========== 服务端错误段 ==========
- ErrorCode INTERNAL_SERVER_ERROR = new ErrorCode(500, "系统异常");
+ ErrorCode INTERNAL_SERVER_ERROR = new ErrorCode(500, "系统异常,请联系客服处理");
ErrorCode NOT_IMPLEMENTED = new ErrorCode(501, "功能未实现/未开启");
ErrorCode ERROR_CONFIGURATION = new ErrorCode(502, "错误的配置项");
ErrorCode ES_ERROR_UPDATE = new ErrorCode(503, "ES文档更新失败");
ErrorCode ES_ERROR_DELETE = new ErrorCode(504, "ES文档删除失败");
+ ErrorCode DATA_EXCEPTION_ERROR = new ErrorCode(505, "数据异常,请联系客服处理");
// ========== 自定义错误段 ==========
ErrorCode REPEATED_REQUESTS = new ErrorCode(900, "重复请求,请稍后重试"); // 重复请求
diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/Assert/AssertUtils.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/Assert/AssertUtils.java
new file mode 100644
index 000000000..463a2ecf0
--- /dev/null
+++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/Assert/AssertUtils.java
@@ -0,0 +1,49 @@
+package com.cf.imes.framework.common.util.Assert;
+
+
+import com.cf.imes.framework.common.exception.ErrorCode;
+import org.springframework.util.ObjectUtils;
+
+import java.util.List;
+
+import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
+
+
+
+/**
+ * 断言工具类:用于代码抛出异常,提升代码的简洁度
+ *
+ * @author 晨丰科技
+ */
+public class AssertUtils {
+
+ /*
+ * 判断是否为空,可以不用if语句,简化代码
+ * */
+ public static void notEmpty(List> array, ErrorCode errorCode) {
+ if (ObjectUtils.isEmpty(array)) {
+ throw exception(errorCode);
+ }
+ }
+
+ public static void empty(List> array, ErrorCode errorCode) {
+ if (!ObjectUtils.isEmpty(array)) {
+ throw exception(errorCode);
+ }
+ }
+
+
+ public static void notEmpty(Object object, ErrorCode errorCode) {
+ if (object == null) {
+ throw exception(errorCode);
+ }
+ }
+
+
+ public static void notEmpty(List> array ,Object object, ErrorCode errorCode) {
+ if (object == null || ObjectUtils.isEmpty(array)) {
+ throw exception(errorCode);
+ }
+ }
+
+}
diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/encrypt/AesUtils.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/encrypt/AesUtils.java
index 77a3b4733..abe43560e 100644
--- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/encrypt/AesUtils.java
+++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/encrypt/AesUtils.java
@@ -1,13 +1,12 @@
package com.cf.imes.framework.common.util.encrypt;
-import cn.hutool.core.util.CharsetUtil;
import lombok.extern.slf4j.Slf4j;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
-import javax.crypto.spec.IvParameterSpec;
-import java.security.GeneralSecurityException;
+import javax.crypto.spec.GCMParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Base64;
@@ -23,7 +22,7 @@ public class AesUtils {
private static final String AES_ALG = "AES";
- private static final String AES_CBC_PCK_ALG = "AES/CBC/PKCS5Padding";
+ private static final String DEFAULT_CIPHER_ALGORITHM = "AES/GCM/NoPadding";
/**
@@ -34,14 +33,14 @@ public class AesUtils {
* @return
* @throws Exception
*/
- public static String decrypt(String content, String aesKey) {
+ public static String decrypt(String base64Content, String aesKey) {
try {
- Cipher cipher = Cipher.getInstance(AES_CBC_PCK_ALG);
- IvParameterSpec iv = new IvParameterSpec(initIv(AES_CBC_PCK_ALG));
- cipher.init(Cipher.DECRYPT_MODE, generateKey(aesKey.getBytes()), iv);
-
- byte[] cleanBytes = cipher.doFinal(Base64.getDecoder().decode(content.getBytes()));
- return new String(cleanBytes, CharsetUtil.UTF_8);
+ byte[] content = Base64.getDecoder().decode(base64Content);
+ GCMParameterSpec params = new GCMParameterSpec(128, content, 0, 12);
+ Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);
+ cipher.init(Cipher.DECRYPT_MODE, getSecretKey(aesKey), params);
+ byte[] decryptData = cipher.doFinal(content, 12, content.length - 12);
+ return new String(decryptData);
} catch (Exception e) {
log.error("[AesUtils][decrypt]解密失败:{}", e.getMessage(), e);
// nacos热发布配置,空字符串会导致nacos轮训刷新配置
@@ -56,44 +55,16 @@ public class AesUtils {
* @return
* @throws NoSuchAlgorithmException
*/
- private static SecretKey generateKey(byte[] bytes) throws NoSuchAlgorithmException {
+ private static SecretKey getSecretKey(String key) throws NoSuchAlgorithmException {
// 生成随机数
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
// 设置随机数种子
- random.setSeed(bytes);
+ random.setSeed(key.getBytes());
// aes算法生成器
KeyGenerator keyGen = KeyGenerator.getInstance(AES_ALG);
keyGen.init(128, random); // 使用128位的密钥
- return keyGen.generateKey();
- }
-
-
- /**
- * 初始向量的方法, 全部为0. 这里的写法适合于其它算法,针对AES算法的话,IV值一定是128位的(16字节).
- *
- * @param fullAlg
- * @return
- * @throws GeneralSecurityException
- */
- private static byte[] initIv(String fullAlg) {
-
- try {
- Cipher cipher = Cipher.getInstance(fullAlg);
- int blockSize = cipher.getBlockSize();
- byte[] iv = new byte[blockSize];
- for (int i = 0; i < blockSize; ++i) {
- iv[i] = 0;
- }
- return iv;
- } catch (Exception e) {
-
- int blockSize = 16;
- byte[] iv = new byte[blockSize];
- for (int i = 0; i < blockSize; ++i) {
- iv[i] = 0;
- }
- return iv;
- }
+ SecretKey secretKey = keyGen.generateKey();
+ return new SecretKeySpec(secretKey.getEncoded(), AES_ALG);
}
}
diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/json/JsonUtils.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/json/JsonUtils.java
index 31c0bd586..238b9f90d 100644
--- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/json/JsonUtils.java
+++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/json/JsonUtils.java
@@ -2,7 +2,6 @@ package com.cf.imes.framework.common.util.json;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.PrimitiveArrayUtil;
-import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.type.TypeReference;
@@ -144,7 +143,7 @@ public class JsonUtils {
}
public static List parseArray(String text, Class clazz) {
- if (StrUtil.isEmpty(text)) {
+ if (CharSequenceUtil.isEmpty(text)) {
return new ArrayList<>();
}
try {
@@ -156,7 +155,7 @@ public class JsonUtils {
}
public static List parseArray(String text, String path, Class clazz) {
- if (StrUtil.isEmpty(text)) {
+ if (CharSequenceUtil.isEmpty(text)) {
return null;
}
try {
diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/number/NumberUtils.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/number/NumberUtils.java
index 3c46e3dcc..f99eb7cfe 100644
--- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/number/NumberUtils.java
+++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/number/NumberUtils.java
@@ -1,6 +1,6 @@
package com.cf.imes.framework.common.util.number;
-import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.text.CharSequenceUtil;
/**
* 数字的工具类,补全 {@link cn.hutool.core.util.NumberUtil} 的功能
@@ -10,7 +10,7 @@ import cn.hutool.core.util.StrUtil;
public class NumberUtils {
public static Long parseLong(String str) {
- return StrUtil.isNotEmpty(str) ? Long.valueOf(str) : null;
+ return CharSequenceUtil.isNotEmpty(str) ? Long.valueOf(str) : null;
}
/**
diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/servlet/ServletUtils.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/servlet/ServletUtils.java
index 0875b5a70..43de06bf0 100644
--- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/servlet/ServletUtils.java
+++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/servlet/ServletUtils.java
@@ -1,7 +1,7 @@
package com.cf.imes.framework.common.util.servlet;
import cn.hutool.core.io.IoUtil;
-import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.extra.servlet.ServletUtil;
import com.cf.imes.framework.common.util.json.JsonUtils;
import org.springframework.http.MediaType;
@@ -89,7 +89,7 @@ public class ServletUtils {
}
public static boolean isJsonRequest(ServletRequest request) {
- return StrUtil.startWithIgnoreCase(request.getContentType(), MediaType.APPLICATION_JSON_VALUE);
+ return CharSequenceUtil.startWithIgnoreCase(request.getContentType(), MediaType.APPLICATION_JSON_VALUE);
}
public static String getBody(HttpServletRequest request) {
diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/string/StrUtils.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/string/StrUtils.java
index 41956d202..1f80ac960 100644
--- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/string/StrUtils.java
+++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/string/StrUtils.java
@@ -1,7 +1,7 @@
package com.cf.imes.framework.common.util.string;
+import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ArrayUtil;
-import cn.hutool.core.util.StrUtil;
import java.util.Arrays;
import java.util.Collection;
@@ -16,7 +16,7 @@ import java.util.stream.Collectors;
public class StrUtils {
public static String maxLength(CharSequence str, int maxLength) {
- return StrUtil.maxLength(str, maxLength - 3); // -3 的原因,是该方法会补充 ... 恰好
+ return CharSequenceUtil.maxLength(str, maxLength - 3); // -3 的原因,是该方法会补充 ... 恰好
}
/**
@@ -28,12 +28,12 @@ public class StrUtils {
* @since 3.0.6
*/
public static boolean startWithAny(String str, Collection prefixes) {
- if (StrUtil.isEmpty(str) || ArrayUtil.isEmpty(prefixes)) {
+ if (CharSequenceUtil.isEmpty(str) || ArrayUtil.isEmpty(prefixes)) {
return false;
}
for (CharSequence suffix : prefixes) {
- if (StrUtil.startWith(str, suffix, false)) {
+ if (CharSequenceUtil.startWith(str, suffix, false)) {
return true;
}
}
@@ -41,12 +41,12 @@ public class StrUtils {
}
public static List splitToLong(String value, CharSequence separator) {
- long[] longs = StrUtil.splitToLong(value, separator);
+ long[] longs = CharSequenceUtil.splitToLong(value, separator);
return Arrays.stream(longs).boxed().collect(Collectors.toList());
}
public static List splitToInteger(String value, CharSequence separator) {
- int[] integers = StrUtil.splitToInt(value, separator);
+ int[] integers = CharSequenceUtil.splitToInt(value, separator);
return Arrays.stream(integers).boxed().collect(Collectors.toList());
}
@@ -58,7 +58,7 @@ public class StrUtils {
* @return 移除后的字符串
*/
public static String removeLineContains(String content, String sequence) {
- if (StrUtil.isEmpty(content) || StrUtil.isEmpty(sequence)) {
+ if (CharSequenceUtil.isEmpty(content) || CharSequenceUtil.isEmpty(sequence)) {
return content;
}
return Arrays.stream(content.split("\n"))
diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/InEnumCollectionValidator.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/InEnumCollectionValidator.java
index fc0f420a2..70897a93c 100644
--- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/InEnumCollectionValidator.java
+++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/InEnumCollectionValidator.java
@@ -34,7 +34,7 @@ public class InEnumCollectionValidator implements ConstraintValidator {
// 校验不通过,自定义提示语句(因为,注解上的 value 是枚举类,无法获得枚举类的实际值)
context.disableDefaultConstraintViolation(); // 禁用默认的 message 的值
context.buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate()
- .replaceAll("\\{value}", values.toString())).addConstraintViolation(); // 重新添加错误提示语句
+ .replace("\\{value}", values.toString())).addConstraintViolation(); // 重新添加错误提示语句
return false;
}
diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/MobileValidator.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/MobileValidator.java
index 9ecd27c4c..5e8fc95f6 100644
--- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/MobileValidator.java
+++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/MobileValidator.java
@@ -1,6 +1,6 @@
package com.cf.imes.framework.common.validation;
-import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.text.CharSequenceUtil;
import com.cf.imes.framework.common.util.validation.ValidationUtils;
import javax.validation.ConstraintValidator;
@@ -8,14 +8,10 @@ import javax.validation.ConstraintValidatorContext;
public class MobileValidator implements ConstraintValidator {
- @Override
- public void initialize(Mobile annotation) {
- }
-
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
// 如果手机号为空,默认不校验,即校验通过
- if (StrUtil.isEmpty(value)) {
+ if (CharSequenceUtil.isEmpty(value)) {
return true;
}
// 校验手机
diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/TelephoneValidator.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/TelephoneValidator.java
index ee3f698cd..6ce44cb45 100644
--- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/TelephoneValidator.java
+++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/TelephoneValidator.java
@@ -8,10 +8,6 @@ import javax.validation.ConstraintValidatorContext;
public class TelephoneValidator implements ConstraintValidator {
- @Override
- public void initialize(Telephone annotation) {
- }
-
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
// 如果手机号为空,默认不校验,即校验通过
diff --git a/cf-framework/cf-spring-boot-starter-biz-data-permission/src/main/java/com/cf/imes/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java b/cf-framework/cf-spring-boot-starter-biz-data-permission/src/main/java/com/cf/imes/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java
index fb1e9b3a3..84d73d585 100644
--- a/cf-framework/cf-spring-boot-starter-biz-data-permission/src/main/java/com/cf/imes/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java
+++ b/cf-framework/cf-spring-boot-starter-biz-data-permission/src/main/java/com/cf/imes/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java
@@ -1,8 +1,8 @@
package com.cf.imes.framework.datapermission.core.rule.dept;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
import com.cf.imes.framework.common.enums.UserTypeEnum;
import com.cf.imes.framework.common.util.collection.CollectionUtils;
import com.cf.imes.framework.common.util.json.JsonUtils;
@@ -147,7 +147,7 @@ public class DeptDataPermissionRule implements DataPermissionRule {
private Expression buildDeptExpression(String tableName, Alias tableAlias, Set deptIds) {
// 如果不存在配置,则无需作为条件
String columnName = deptColumns.get(tableName);
- if (StrUtil.isEmpty(columnName)) {
+ if (CharSequenceUtil.isEmpty(columnName)) {
return null;
}
// 如果为空,则无条件
@@ -165,7 +165,7 @@ public class DeptDataPermissionRule implements DataPermissionRule {
return null;
}
String columnName = userColumns.get(tableName);
- if (StrUtil.isEmpty(columnName)) {
+ if (CharSequenceUtil.isEmpty(columnName)) {
return null;
}
// 拼接条件
diff --git a/cf-framework/cf-spring-boot-starter-biz-operatelog/src/main/java/com/cf/imes/framework/operatelog/core/aop/OperateLogAspect.java b/cf-framework/cf-spring-boot-starter-biz-operatelog/src/main/java/com/cf/imes/framework/operatelog/core/aop/OperateLogAspect.java
index d728ff7d4..b7fb828ff 100644
--- a/cf-framework/cf-spring-boot-starter-biz-operatelog/src/main/java/com/cf/imes/framework/operatelog/core/aop/OperateLogAspect.java
+++ b/cf-framework/cf-spring-boot-starter-biz-operatelog/src/main/java/com/cf/imes/framework/operatelog/core/aop/OperateLogAspect.java
@@ -2,9 +2,8 @@ package com.cf.imes.framework.operatelog.core.aop;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.exceptions.ExceptionUtil;
+import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ArrayUtil;
-import cn.hutool.core.util.StrUtil;
-import com.cf.imes.framework.common.enums.UserTypeEnum;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.framework.common.util.json.JsonUtils;
import com.cf.imes.framework.common.util.monitor.TracerUtils;
@@ -172,15 +171,15 @@ public class OperateLogAspect {
if (operateLog != null) {
operateLogObj.setModule(operateLog.module());
}
- if (StrUtil.isEmpty(operateLogObj.getModule())) {
+ if (CharSequenceUtil.isEmpty(operateLogObj.getModule())) {
Tag tag = getClassAnnotation(joinPoint, Tag.class);
if (tag != null) {
// 优先读取 @Tag 的 name 属性
- if (StrUtil.isNotEmpty(tag.name())) {
+ if (CharSequenceUtil.isNotEmpty(tag.name())) {
operateLogObj.setModule(tag.name());
}
// 没有的话,读取 @API 的 description 属性
- if (StrUtil.isEmpty(operateLogObj.getModule()) && ArrayUtil.isNotEmpty(tag.description())) {
+ if (CharSequenceUtil.isEmpty(operateLogObj.getModule()) && ArrayUtil.isNotEmpty(tag.description())) {
operateLogObj.setModule(tag.description());
}
}
@@ -189,7 +188,7 @@ public class OperateLogAspect {
if (operateLog != null) {
operateLogObj.setName(operateLog.name());
}
- if (StrUtil.isEmpty(operateLogObj.getName()) && operation != null) {
+ if (CharSequenceUtil.isEmpty(operateLogObj.getName()) && operation != null) {
operateLogObj.setName(operation.summary());
}
// type 属性
diff --git a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/job/OrganJobAspect.java b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/job/OrganJobAspect.java
index 34b483a23..362a38f02 100644
--- a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/job/OrganJobAspect.java
+++ b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/job/OrganJobAspect.java
@@ -2,7 +2,7 @@ package com.cf.imes.framework.organ.core.job;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.ExceptionUtil;
-import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.text.CharSequenceUtil;
import com.cf.imes.framework.common.util.json.JsonUtils;
import com.cf.imes.framework.organ.core.service.OrganFrameworkService;
import com.cf.imes.framework.organ.core.util.OrganUtils;
@@ -51,7 +51,7 @@ public class OrganJobAspect {
} catch (Throwable e) {
results.put(organId, ExceptionUtil.getRootCauseMessage(e));
// 打印异常
- XxlJobHelper.log(StrUtil.format("[多组织({}) 执行任务({}),发生异常:{}]",
+ XxlJobHelper.log(CharSequenceUtil.format("[多组织({}) 执行任务({}),发生异常:{}]",
organId, joinPoint.getSignature(), ExceptionUtils.getStackTrace(e)));
}
});
diff --git a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/kafka/OrganKafkaEnvironmentPostProcessor.java b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/kafka/OrganKafkaEnvironmentPostProcessor.java
index ac1d22c23..7856f153c 100644
--- a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/kafka/OrganKafkaEnvironmentPostProcessor.java
+++ b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/kafka/OrganKafkaEnvironmentPostProcessor.java
@@ -1,6 +1,6 @@
package com.cf.imes.framework.organ.core.mq.kafka;
-import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.text.CharSequenceUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.env.EnvironmentPostProcessor;
@@ -23,7 +23,7 @@ public class OrganKafkaEnvironmentPostProcessor implements EnvironmentPostProces
// 添加 OrganKafkaProducerInterceptor 拦截器
try {
String value = environment.getProperty(PROPERTY_KEY_INTERCEPTOR_CLASSES);
- if (StrUtil.isEmpty(value)) {
+ if (CharSequenceUtil.isEmpty(value)) {
value = OrganKafkaProducerInterceptor.class.getName();
} else {
value += "," + OrganKafkaProducerInterceptor.class.getName();
diff --git a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/redis/OrganRedisMessageInterceptor.java b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/redis/OrganRedisMessageInterceptor.java
index c5c5cd41a..035c52039 100644
--- a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/redis/OrganRedisMessageInterceptor.java
+++ b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/redis/OrganRedisMessageInterceptor.java
@@ -1,6 +1,6 @@
package com.cf.imes.framework.organ.core.mq.redis;
-import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.text.CharSequenceUtil;
import com.cf.imes.framework.mq.redis.core.interceptor.RedisMessageInterceptor;
import com.cf.imes.framework.mq.redis.core.message.AbstractRedisMessage;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
@@ -28,7 +28,7 @@ public class OrganRedisMessageInterceptor implements RedisMessageInterceptor {
@Override
public void consumeMessageBefore(AbstractRedisMessage message) {
String organIdStr = message.getHeader(HEADER_ORGAN_ID);
- if (StrUtil.isNotEmpty(organIdStr)) {
+ if (CharSequenceUtil.isNotEmpty(organIdStr)) {
OrganContextHolder.setOrganId(Long.valueOf(organIdStr));
}
}
diff --git a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/rocketmq/OrganRocketMQConsumeMessageHook.java b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/rocketmq/OrganRocketMQConsumeMessageHook.java
index 028e4d174..5c732a625 100644
--- a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/rocketmq/OrganRocketMQConsumeMessageHook.java
+++ b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/rocketmq/OrganRocketMQConsumeMessageHook.java
@@ -1,7 +1,7 @@
package com.cf.imes.framework.organ.core.mq.rocketmq;
import cn.hutool.core.lang.Assert;
-import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.text.CharSequenceUtil;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import org.apache.rocketmq.client.hook.ConsumeMessageContext;
import org.apache.rocketmq.client.hook.ConsumeMessageHook;
@@ -33,7 +33,7 @@ public class OrganRocketMQConsumeMessageHook implements ConsumeMessageHook {
Assert.isTrue(messages.size() == 1, "消息条数({})不正确", messages.size());
// 设置组织编号
String organId = messages.get(0).getUserProperty(HEADER_ORGAN_ID);
- if (StrUtil.isNotEmpty(organId)) {
+ if (CharSequenceUtil.isNotEmpty(organId)) {
OrganContextHolder.setOrganId(Long.parseLong(organId));
}
}
diff --git a/cf-framework/cf-spring-boot-starter-biz-pay/src/main/java/com/cf/imes/framework/pay/core/client/impl/alipay/AbstractAlipayPayClient.java b/cf-framework/cf-spring-boot-starter-biz-pay/src/main/java/com/cf/imes/framework/pay/core/client/impl/alipay/AbstractAlipayPayClient.java
index fd49fef79..6de95159a 100644
--- a/cf-framework/cf-spring-boot-starter-biz-pay/src/main/java/com/cf/imes/framework/pay/core/client/impl/alipay/AbstractAlipayPayClient.java
+++ b/cf-framework/cf-spring-boot-starter-biz-pay/src/main/java/com/cf/imes/framework/pay/core/client/impl/alipay/AbstractAlipayPayClient.java
@@ -4,7 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.map.MapUtil;
-import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.http.HttpUtil;
import com.cf.imes.framework.common.util.json.JsonUtils;
import com.cf.imes.framework.common.util.object.ObjectUtils;
@@ -98,7 +98,7 @@ public abstract class AbstractAlipayPayClient extends AbstractPayClient) () -> {
- throw new IllegalArgumentException(StrUtil.format("body({}) 的 trade_status 不正确", body));
+ throw new IllegalArgumentException(CharSequenceUtil.format("body({}) 的 trade_status 不正确", body));
});
return PayOrderRespDTO.of(status, bodyObj.get("trade_no"), bodyObj.get("seller_id"), parseTime(params.get("gmt_payment")),
bodyObj.get("out_trade_no"), body);
@@ -126,7 +126,7 @@ public abstract class AbstractAlipayPayClient extends AbstractPayClient {
- throw new IllegalArgumentException(StrUtil.format("body({}) 的 trade_status 不正确", response.getBody()));
+ throw new IllegalArgumentException(CharSequenceUtil.format("body({}) 的 trade_status 不正确", response.getBody()));
});
return PayOrderRespDTO.of(status, response.getTradeNo(), response.getBuyerUserId(), LocalDateTimeUtil.of(response.getSendPayDate()),
outTradeNo, response);
@@ -248,11 +248,11 @@ public abstract class AbstractAlipayPayClient extends AbstractPayClient {
@Override
protected void doInit() {
+ // nothing
}
@Override
diff --git a/cf-framework/cf-spring-boot-starter-biz-pay/src/main/java/com/cf/imes/framework/pay/core/client/impl/weixin/AbstractWxPayClient.java b/cf-framework/cf-spring-boot-starter-biz-pay/src/main/java/com/cf/imes/framework/pay/core/client/impl/weixin/AbstractWxPayClient.java
index 170bacc48..2223d38e5 100644
--- a/cf-framework/cf-spring-boot-starter-biz-pay/src/main/java/com/cf/imes/framework/pay/core/client/impl/weixin/AbstractWxPayClient.java
+++ b/cf-framework/cf-spring-boot-starter-biz-pay/src/main/java/com/cf/imes/framework/pay/core/client/impl/weixin/AbstractWxPayClient.java
@@ -5,7 +5,7 @@ import cn.hutool.core.codec.Base64;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.date.TemporalAccessorUtil;
-import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.text.CharSequenceUtil;
import com.cf.imes.framework.common.util.io.FileUtils;
import com.cf.imes.framework.common.util.object.ObjectUtils;
import com.cf.imes.framework.pay.core.client.dto.order.PayOrderRespDTO;
@@ -43,6 +43,12 @@ import static cn.hutool.core.date.DatePattern.*;
@Slf4j
public abstract class AbstractWxPayClient extends AbstractPayClient {
+ private static final String UNKOWN_API_VERSION_NOTIFICATION = "未知的 API 版本(%s)";
+
+ private static final String SUCCESS_CODE = "SUCCESS";
+
+ private static final String PROCESSING_STATUS_CODE = "PROCESSING";
+
protected WxPayService client;
public AbstractWxPayClient(Long channelId, String channelCode, WxPayClientConfig config) {
@@ -63,10 +69,10 @@ public abstract class AbstractWxPayClient extends AbstractPayClient idx
@@ -77,7 +77,7 @@ public class ESDocumentServiceImpl implements ESDocumentService {
document.setUpdateTime(simpleDateFormat.format(date));
IndexRequest.Builder