From c3b2a2c43334238ff230606a275a8f9f24285973 Mon Sep 17 00:00:00 2001 From: zhonghua1 Date: Sat, 27 Dec 2025 16:39:00 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=B7=E6=B1=82=E6=96=B9=E6=B3=95=E6=94=B9?= =?UTF-8?q?=E4=B8=BApost?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HikariCP连接池问题分析.md | 3 +++ .../rj/common/AudioManagementConstants.java | 15 +++------------ .../rj/controller/AudioFileController.java | 4 ++-- .../controller/AudioManagementController.java | 12 +++++------- .../CustomerManagementController.java | 2 +- .../java/com/rj/entity/AudioManagement.java | 4 ++-- .../java/com/rj/entity/KnowledgeBase.java | 4 ++++ .../rj/example/AudioFileUploadExample.java | 5 +---- .../AudioMockInsertDataScheduler.java | 4 +--- .../impl/SoundRecordingUploadServiceImpl.java | 2 +- src/main/sql/陪练.log | 19 +++++++++++++++++++ .../service/AudioManagementServiceTest.java | 12 ++++++------ 12 files changed, 48 insertions(+), 38 deletions(-) diff --git a/HikariCP连接池问题分析.md b/HikariCP连接池问题分析.md index 31a09e7..8e16890 100644 --- a/HikariCP连接池问题分析.md +++ b/HikariCP连接池问题分析.md @@ -123,3 +123,6 @@ hikari: + + + diff --git a/src/main/java/com/rj/common/AudioManagementConstants.java b/src/main/java/com/rj/common/AudioManagementConstants.java index 9da97d1..86263ad 100644 --- a/src/main/java/com/rj/common/AudioManagementConstants.java +++ b/src/main/java/com/rj/common/AudioManagementConstants.java @@ -11,18 +11,9 @@ public class AudioManagementConstants { /** * 同步状态 - 服务中(默认值) */ - public static final String SYNC_STATUS_IN_SERVICE = "服务中"; - - /** - * 同步状态 - 未同步 - */ - public static final String SYNC_STATUS_NOT_SYNCED = "未同步"; - - /** - * 同步状态 - 已同步 - */ - public static final String SYNC_STATUS_SYNCED = "已同步"; - + public static final String SERVICE_STATUS_IN_SERVICE = "服务中"; + public static final String SERVICE_STATUS_SERVICE_FINISH = "服务结束"; + /** * 私有构造函数,防止实例化 */ diff --git a/src/main/java/com/rj/controller/AudioFileController.java b/src/main/java/com/rj/controller/AudioFileController.java index 3a0951e..27db0ed 100644 --- a/src/main/java/com/rj/controller/AudioFileController.java +++ b/src/main/java/com/rj/controller/AudioFileController.java @@ -1752,7 +1752,7 @@ public class AudioFileController { // 3. 根据sales_name和sales_phone去audio_management表查找sync_status='服务中'的记录 LambdaQueryWrapper audioQuery = new LambdaQueryWrapper<>(); audioQuery.eq(AudioManagement::getSalesPhone, salesPhone) - .eq(AudioManagement::getSyncStatus, "服务中") + .eq(AudioManagement::getServiceStatus, "服务中") .orderByDesc(AudioManagement::getCreateTime); // 按创建时间倒序 List audioList = serviceManager.getAudioManagementService().list(audioQuery); @@ -1804,7 +1804,7 @@ public class AudioFileController { newAudio.setTenantId(deviceManagement.getTenantId()); // 租户id newAudio.setDealershipName(deviceManagement.getDealershipName()); newAudio.setDealershipId(deviceManagement.getDealershipId()); - newAudio.setSyncStatus("服务中"); + newAudio.setServiceStatus("服务中"); newAudio.setCreateTime(TimeZoneUtils.now()); newAudio.setUpdateTime(TimeZoneUtils.now()); diff --git a/src/main/java/com/rj/controller/AudioManagementController.java b/src/main/java/com/rj/controller/AudioManagementController.java index b3633c5..bc903e6 100644 --- a/src/main/java/com/rj/controller/AudioManagementController.java +++ b/src/main/java/com/rj/controller/AudioManagementController.java @@ -20,11 +20,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import java.io.InputStream; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -179,8 +177,8 @@ public class AudioManagementController { audioManagement.setUploadTime(LocalDateTime.now()); // 设置同步状态默认值 - if (audioManagement.getSyncStatus() == null || audioManagement.getSyncStatus().trim().isEmpty()) { - audioManagement.setSyncStatus(AudioManagementConstants.SYNC_STATUS_IN_SERVICE); + if (audioManagement.getServiceStatus() == null || audioManagement.getServiceStatus().trim().isEmpty()) { + audioManagement.setServiceStatus(AudioManagementConstants.SERVICE_STATUS_IN_SERVICE); } // 保存录音记录到数据库 @@ -310,7 +308,7 @@ public class AudioManagementController { @Parameter(description = "所属销售姓名(模糊查询)") @RequestParam(required = false) String salesName, @Parameter(description = "所属门店ID") @RequestParam(required = false) String dealershipId, @Parameter(description = "意向级别") @RequestParam(required = false) String intentionLevel, - @Parameter(description = "同步状态") @RequestParam(required = false) String syncStatus, + @Parameter(description = "服务状态") @RequestParam(required = false) String serviceStatus , @Parameter(description = "销售人员电话(模糊查询)") @RequestParam(required = false) String salesPhone) { Map result = new HashMap<>(); try { @@ -339,8 +337,8 @@ public class AudioManagementController { if (salesPhone != null && !salesPhone.trim().isEmpty()) { queryWrapper.like(AudioManagement::getSalesPhone, salesPhone); } - if (syncStatus != null && !syncStatus.trim().isEmpty()) { - queryWrapper.eq(AudioManagement::getSyncStatus, syncStatus); + if (serviceStatus != null && !serviceStatus.trim().isEmpty()) { //AudioManagementConstants.SERVICE_STATUS_SERVICE_FINISH + queryWrapper.eq(AudioManagement::getServiceStatus, serviceStatus); } // 按创建时间倒序排列 diff --git a/src/main/java/com/rj/controller/CustomerManagementController.java b/src/main/java/com/rj/controller/CustomerManagementController.java index b8d9268..7dc5ccb 100644 --- a/src/main/java/com/rj/controller/CustomerManagementController.java +++ b/src/main/java/com/rj/controller/CustomerManagementController.java @@ -425,7 +425,7 @@ public class CustomerManagementController { audio.setRemarks(customer.getRemark()); audio.setInfoCarddescription(customer.getInfoCard()); audio.setCompanyType(customer.getCustomerSource()); - audio.setSyncStatus(AudioManagementConstants.SYNC_STATUS_IN_SERVICE); + audio.setServiceStatus(AudioManagementConstants.SERVICE_STATUS_IN_SERVICE); return audio; } } diff --git a/src/main/java/com/rj/entity/AudioManagement.java b/src/main/java/com/rj/entity/AudioManagement.java index bc62451..1823dc7 100644 --- a/src/main/java/com/rj/entity/AudioManagement.java +++ b/src/main/java/com/rj/entity/AudioManagement.java @@ -108,8 +108,8 @@ public class AudioManagement implements Serializable { private String uploadStatus; @Schema(description = "同步状态") - @TableField("sync_status") - private String syncStatus; + @TableField("service_status") + private String serviceStatus; @Schema(description = "是否合并(0否1是)") @TableField("is_merged") diff --git a/src/main/java/com/rj/entity/KnowledgeBase.java b/src/main/java/com/rj/entity/KnowledgeBase.java index b1cced1..0fff49c 100644 --- a/src/main/java/com/rj/entity/KnowledgeBase.java +++ b/src/main/java/com/rj/entity/KnowledgeBase.java @@ -89,4 +89,8 @@ public class KnowledgeBase implements Serializable { @Schema(description = "备注") @TableField("remark") private String remark; + + @Schema(description = "租户id") + @TableField("tenant_id") + private String tenantId; } diff --git a/src/main/java/com/rj/example/AudioFileUploadExample.java b/src/main/java/com/rj/example/AudioFileUploadExample.java index 7cae1a2..a546270 100644 --- a/src/main/java/com/rj/example/AudioFileUploadExample.java +++ b/src/main/java/com/rj/example/AudioFileUploadExample.java @@ -6,11 +6,8 @@ import com.rj.service.IAudioManagementService; import com.rj.service.IFileUploadService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.web.multipart.MultipartFile; import java.time.LocalDateTime; -import java.util.HashMap; -import java.util.Map; import java.util.UUID; /** @@ -51,7 +48,7 @@ public class AudioFileUploadExample { audio.setProjectName("汽车销售项目"); audio.setDuration(new java.math.BigDecimal("5.5")); audio.setIntentionLevel("高意向"); - audio.setSyncStatus(AudioManagementConstants.SYNC_STATUS_IN_SERVICE); + audio.setServiceStatus(AudioManagementConstants.SERVICE_STATUS_IN_SERVICE); audio.setCreateTime(LocalDateTime.now()); audio.setUpdateTime(LocalDateTime.now()); diff --git a/src/main/java/com/rj/scheduler/AudioMockInsertDataScheduler.java b/src/main/java/com/rj/scheduler/AudioMockInsertDataScheduler.java index 9a24c7d..17e6cba 100644 --- a/src/main/java/com/rj/scheduler/AudioMockInsertDataScheduler.java +++ b/src/main/java/com/rj/scheduler/AudioMockInsertDataScheduler.java @@ -5,8 +5,6 @@ import com.rj.controller.AudioManagementController; import com.rj.entity.AudioManagement; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; -import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.math.BigDecimal; @@ -193,7 +191,7 @@ public class AudioMockInsertDataScheduler { audio.setProjectName(project[1]); audio.setScriptModel(pick(SCRIPT_MODELS)); audio.setUploadStatus(pick(UPLOAD_STATUS)); - audio.setSyncStatus(AudioManagementConstants.SYNC_STATUS_IN_SERVICE); + audio.setServiceStatus(AudioManagementConstants.SERVICE_STATUS_IN_SERVICE); audio.setIsMerged(random.nextBoolean()); audio.setRemarks(buildRemarks(project[1], dealer[1], audio.getCustomerName())); audio.setCompanyType(pick(COMPANY_TYPES)); diff --git a/src/main/java/com/rj/service/impl/SoundRecordingUploadServiceImpl.java b/src/main/java/com/rj/service/impl/SoundRecordingUploadServiceImpl.java index 7b8108f..303ae71 100644 --- a/src/main/java/com/rj/service/impl/SoundRecordingUploadServiceImpl.java +++ b/src/main/java/com/rj/service/impl/SoundRecordingUploadServiceImpl.java @@ -118,7 +118,7 @@ public class SoundRecordingUploadServiceImpl implements ISoundRecordingUploadSer audioManagement.setAudioFileExtension(fileExtension); audioManagement.setUploadTime(LocalDateTime.now()); audioManagement.setUploadStatus("已上传"); - audioManagement.setSyncStatus(AudioManagementConstants.SYNC_STATUS_IN_SERVICE); + audioManagement.setServiceStatus(AudioManagementConstants.SERVICE_STATUS_IN_SERVICE); audioManagement.setIsMerged(chunkInfo.isLastChunk && chunkInfo.totalChunks > 1); // 如果有自定义编号,可以存储到备注中 diff --git a/src/main/sql/陪练.log b/src/main/sql/陪练.log index e69de29..11b6391 100644 --- a/src/main/sql/陪练.log +++ b/src/main/sql/陪练.log @@ -0,0 +1,19 @@ +虚拟人: +在汽车销售场景中, 客户人设是: XXXXX( 比如: 二次购车置换场景 + 职场精英男性) ,请帮我总结出他最可能问到的50个问题。 包括售前售中售后等场景 + + +1, 结合 “竞品对比型潜客 + 科技发烧友男性” 人设,问题将聚焦智能科技配置、核心技术参数、竞品差异点三大核心,同时覆盖售前选型、售中购车、售后保障全流程,突出 “技术较真”“横向对比”“体验优先” 的特点,以下是 40 个高频问题 +2,结合 “老客户转介绍潜客 + 企业主商务接待” 的核心人设,问题将围绕商务实用性、品牌信任背书、成本效益、服务保障、定制化需求五大核心维度展开,既体现转介绍带来的信任基础,也紧扣企业主的商务场景痛点(如接待体面、用车效率、长期成本等),以下是 30 个高频问题 +3,结合 “家庭多人共同选车 + 二胎家庭宝爸” 的核心人设,问题将围绕空间实用性、儿童安全保障、家庭出行适配、购车成本、后期养车便利性五大核心,覆盖售前选型、售中购车、售后保障全流程,兼顾宝爸对家人(尤其是两个孩子)的需求考量,以下是 40 个高频问题 +4,结合 “金融方案咨询与对比型 + 创业初期个体户” 人设,核心围绕资金灵活性、成本可控性、政策适配性、实用性价比展开,覆盖售前选型、金融方案、购车流程、后期养车全场景,突出个体户 “精打细算、现金流优先、兼顾经营需求” 的特点,以下是 50 +5,结合 “二次购车置换 + 职场精英男性” 人设,核心围绕置换流程效率、车型升级价值、商务场景适配、成本可控性、服务专业性展开,覆盖售前选型、置换对接、金融方案、售后保障全场景,突出精英男性 “注重效率、追求品质、理性决策、兼顾商务与实用” 的特点,以下是 50 个高频问题: +6,结合 “低预算高要求 + 女性议价型” 人设,核心围绕性价比极致追求、女性用车痛点、议价空间挖掘、全流程成本控制展开,覆盖售前选型、议价谈判、购车流程、售后保障全场景,突出女性 “细节敏感、实用优先、精打细算、注重安全感” 的特点,以下是 50 个高频问题: +7,结合 “社区地推陌生触达 + 时尚独立女性” 人设,核心围绕低门槛了解、颜值与实用性兼顾、决策成本可控、服务便捷性展开,覆盖售前初认知、车型适配、购车权益、售后保障全场景,突出时尚独立女性 “注重颜值、追求便捷、理性务实、关注细节” 的特点,以下是 50 个高频问题 + + + +陪练主表包括的字段: +id(uuid)主键, 租户id,陪练标题,陪练的场景,参与人姓名, 参与人电话, 日期,创建时间 + +陪练子表包括的字段: +id(uuid)主键,父id(uuid), 租户id,题目,题目答案 ,创建时间 diff --git a/src/test/java/com/rj/service/AudioManagementServiceTest.java b/src/test/java/com/rj/service/AudioManagementServiceTest.java index ca7352f..82fac8e 100644 --- a/src/test/java/com/rj/service/AudioManagementServiceTest.java +++ b/src/test/java/com/rj/service/AudioManagementServiceTest.java @@ -41,7 +41,7 @@ class AudioManagementServiceTest { audioManagement.setProjectName("奥迪A6L项目"); audioManagement.setScriptModel("标准话术"); audioManagement.setUploadStatus("已上传"); - audioManagement.setSyncStatus("已同步"); + audioManagement.setServiceStatus("已同步"); audioManagement.setIsMerged(false); audioManagement.setRemarks("测试录音备注"); audioManagement.setCompanyType("4S店"); @@ -79,7 +79,7 @@ class AudioManagementServiceTest { audioManagement.setProjectName("宝马5系项目"); audioManagement.setScriptModel("高级话术"); audioManagement.setUploadStatus("已上传"); - audioManagement.setSyncStatus("已同步"); + audioManagement.setServiceStatus("已同步"); audioManagement.setIsMerged(false); audioManagement.setRemarks("查询测试录音备注"); audioManagement.setCompanyType("4S店"); @@ -122,7 +122,7 @@ class AudioManagementServiceTest { audioManagement.setProjectName("奔驰E级项目"); audioManagement.setScriptModel("基础话术"); audioManagement.setUploadStatus("已上传"); - audioManagement.setSyncStatus("已同步"); + audioManagement.setServiceStatus("已同步"); audioManagement.setIsMerged(false); audioManagement.setRemarks("手机号查询测试备注"); audioManagement.setCompanyType("4S店"); @@ -179,7 +179,7 @@ class AudioManagementServiceTest { audioManagement.setProjectName("雷克萨斯ES项目"); audioManagement.setScriptModel("专业话术"); audioManagement.setUploadStatus("已上传"); - audioManagement.setSyncStatus("已同步"); + audioManagement.setServiceStatus("已同步"); audioManagement.setIsMerged(false); audioManagement.setRemarks("更新测试录音备注"); audioManagement.setCompanyType("4S店"); @@ -228,7 +228,7 @@ class AudioManagementServiceTest { audioManagement.setProjectName("沃尔沃S90项目"); audioManagement.setScriptModel("标准话术"); audioManagement.setUploadStatus("已上传"); - audioManagement.setSyncStatus("已同步"); + audioManagement.setServiceStatus("已同步"); audioManagement.setIsMerged(false); audioManagement.setRemarks("删除测试录音备注"); audioManagement.setCompanyType("4S店"); @@ -273,7 +273,7 @@ class AudioManagementServiceTest { audioManagement.setProjectName("项目" + i); audioManagement.setScriptModel(getRandomScriptModel()); audioManagement.setUploadStatus("已上传"); - audioManagement.setSyncStatus("已同步"); + audioManagement.setServiceStatus("已同步"); audioManagement.setIsMerged(i % 3 == 0); // 每3条数据合并一次 audioManagement.setRemarks("批量测试录音备注_" + i); audioManagement.setCompanyType("4S店");