diff --git a/yudao-dependencies/pom.xml b/yudao-dependencies/pom.xml
index f5a03a90bd37ee038491dcf8ec7eb85f0e9923e7..025269a4fa4ae3d39d497d0d6e2e0fedaacc2343 100644
--- a/yudao-dependencies/pom.xml
+++ b/yudao-dependencies/pom.xml
@@ -31,7 +31,7 @@
3.26.0
8.1.3.62
- 2.2.3
+ 2.3.0
2.2.7
2.1.0
diff --git a/yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/rabbitmq/config/YudaoRabbitMQAutoConfiguration.java b/yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/rabbitmq/config/YudaoRabbitMQAutoConfiguration.java
index 770c50ff7da4c373e6ee09a616b41a4c20e48355..af1467376424280ea12452a83dad6885a30a4371 100644
--- a/yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/rabbitmq/config/YudaoRabbitMQAutoConfiguration.java
+++ b/yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/rabbitmq/config/YudaoRabbitMQAutoConfiguration.java
@@ -1,12 +1,11 @@
package cn.iocoder.yudao.framework.mq.rabbitmq.config;
-import cn.hutool.core.util.ReflectUtil;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.amqp.utils.SerializationUtils;
+import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
+import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-
-import java.lang.reflect.Field;
+import org.springframework.context.annotation.Bean;
/**
* RabbitMQ 消息队列配置类
@@ -18,12 +17,12 @@ import java.lang.reflect.Field;
@ConditionalOnClass(name = "org.springframework.amqp.rabbit.core.RabbitTemplate")
public class YudaoRabbitMQAutoConfiguration {
- static {
- // 强制设置 SerializationUtils 的 TRUST_ALL 为 true,避免 RabbitMQ Consumer 反序列化消息报错
- // 为什么不通过设置 spring.amqp.deserialization.trust.all 呢?因为可能在 SerializationUtils static 初始化后
- Field trustAllField = ReflectUtil.getField(SerializationUtils.class, "TRUST_ALL");
- ReflectUtil.removeFinalModify(trustAllField);
- ReflectUtil.setFieldValue(SerializationUtils.class, trustAllField, true);
+ /**
+ * Jackson2JsonMessageConverter Bean:使用 jackson 序列化消息
+ */
+ @Bean
+ public MessageConverter createMessageConverter() {
+ return new Jackson2JsonMessageConverter();
}
}
diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/clue/CrmClueServiceImpl.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/clue/CrmClueServiceImpl.java
index 70ebeb44da1ff790571721c1ffc904a508cbcd60..9724eeaf27498954efdaed098247043f465dc184 100644
--- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/clue/CrmClueServiceImpl.java
+++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/clue/CrmClueServiceImpl.java
@@ -120,7 +120,7 @@ public class CrmClueServiceImpl implements CrmClueService {
}
@Override
- @LogRecord(type = CRM_CLUE_TYPE, subType = CRM_CLUE_FOLLOW_UP_SUB_TYPE, bizNo = "{{#id}",
+ @LogRecord(type = CRM_CLUE_TYPE, subType = CRM_CLUE_FOLLOW_UP_SUB_TYPE, bizNo = "{{#id}}",
success = CRM_CLUE_FOLLOW_UP_SUCCESS)
@CrmPermission(bizType = CrmBizTypeEnum.CRM_CLUE, bizId = "#id", level = CrmPermissionLevelEnum.WRITE)
public void updateClueFollowUp(Long id, LocalDateTime contactNextTime, String contactLastContent) {
diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/statistics/CrmStatisticsCustomerMapper.xml b/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/statistics/CrmStatisticsCustomerMapper.xml
index 7c1016dffa4bf96af87b9dce5e9b6d01bc0b2b66..dc10f12218473538b77bd04396c078d527731904 100644
--- a/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/statistics/CrmStatisticsCustomerMapper.xml
+++ b/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/statistics/CrmStatisticsCustomerMapper.xml
@@ -243,14 +243,17 @@