diff --git a/postdischarge-admin/src/main/resources/application-dev.yml b/postdischarge-admin/src/main/resources/application-dev.yml index e5aa3b05..4e4465ca 100644 --- a/postdischarge-admin/src/main/resources/application-dev.yml +++ b/postdischarge-admin/src/main/resources/application-dev.yml @@ -12,10 +12,10 @@ spring: # 从库数据源 slave: # 从数据源开关/默认关闭 - enabled: false - url: - username: - password: + enabled: true + url: jdbc:mysql://8.131.93.145:54081/aiob_callback?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true + username: root + password: 1qaz!@#$ hkhis: # 从数据源开关/默认关闭 enabled: true diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/aiob/AIOBCallbackEntity.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/aiob/AIOBCallbackEntity.java new file mode 100644 index 00000000..1b2e682e --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/aiob/AIOBCallbackEntity.java @@ -0,0 +1,43 @@ +package com.xinelu.manage.domain.aiob; + +import java.util.Date; +import lombok.Data; + +/** + * @description: 阿里云百度外呼回调对象 + * @author: haown + * @create: 2025-12-22 15:11 + **/ +@Data +public class AIOBCallbackEntity { + + /** + * 主键 + */ + private Integer id; + + /** + * 回调数据类型, 0-任务呼叫单通电话回调 1-号码组终态回调 2-任务状态变更回调 3-实时呼叫单通电话回调 + */ + private Integer callbackType; + + /** + * 回调数据 + */ + private String callbackData; + + /** + * 已读状态,0:未读,1:已读 + */ + private Integer readState; + + /** + * 创建时间 + */ + private Date createDate; + + /** + * 修改时间 + */ + private Date updateDate; +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/aiob/AIOBCallbackMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/aiob/AIOBCallbackMapper.java new file mode 100644 index 00000000..1ae97fcb --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/aiob/AIOBCallbackMapper.java @@ -0,0 +1,22 @@ +package com.xinelu.manage.mapper.aiob; + +import com.xinelu.common.annotation.DataSource; +import com.xinelu.common.enums.DataSourceType; +import com.xinelu.manage.domain.aiob.AIOBCallbackEntity; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +/** + * @description 阿里云服务器百度外呼回调Mapper接口 + * @Author haown + * @Date 2025-12-23 15:45 +*/ +@DataSource(DataSourceType.SLAVE) +public interface AIOBCallbackMapper { + + List getList(AIOBCallbackEntity query); + + Integer updateReadState(@Param("readState")Integer readState, @Param("id")Integer id); + + Integer deleteData(); +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/aiob/IAIOBCallbackService.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/aiob/IAIOBCallbackService.java new file mode 100644 index 00000000..b4020959 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/aiob/IAIOBCallbackService.java @@ -0,0 +1,18 @@ +package com.xinelu.manage.service.aiob; + +import com.xinelu.manage.domain.aiob.AIOBCallbackEntity; +import java.util.List; + +/** + * @description: 阿里云服务器百度外呼回调Service接口 + * @author: haown + * @create: 2025-12-23 15:22 + **/ +public interface IAIOBCallbackService { + + List getList(AIOBCallbackEntity query); + + Integer updateReadState(Integer readState, Integer id); + + Integer deleteData(); +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/aiob/impl/AIOBCallbackServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/aiob/impl/AIOBCallbackServiceImpl.java new file mode 100644 index 00000000..8d9d7afe --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/aiob/impl/AIOBCallbackServiceImpl.java @@ -0,0 +1,31 @@ +package com.xinelu.manage.service.aiob.impl; + +import com.xinelu.manage.domain.aiob.AIOBCallbackEntity; +import com.xinelu.manage.mapper.aiob.AIOBCallbackMapper; +import com.xinelu.manage.service.aiob.IAIOBCallbackService; +import java.util.List; +import javax.annotation.Resource; +import org.springframework.stereotype.Service; + +/** + * @description: 阿里云服务器百度外呼回调Service实现 + * @author: haown + * @create: 2025-12-23 15:30 + **/ +@Service +public class AIOBCallbackServiceImpl implements IAIOBCallbackService { + @Resource + private AIOBCallbackMapper aiobCallbackMapper; + @Override + public List getList(AIOBCallbackEntity query) { + return aiobCallbackMapper.getList(query); + } + + @Override public Integer updateReadState(Integer readState, Integer id) { + return aiobCallbackMapper.updateReadState(readState, id); + } + + @Override public Integer deleteData() { + return aiobCallbackMapper.deleteData(); + } +} diff --git a/postdischarge-manage/src/main/resources/mapper/manage/aiob/AIOBCallbackMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/aiob/AIOBCallbackMapper.xml new file mode 100644 index 00000000..800dabac --- /dev/null +++ b/postdischarge-manage/src/main/resources/mapper/manage/aiob/AIOBCallbackMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + id, callback_type, callback_data, read_state, create_date, update_date + + + + + + update aiob_callback_data set read_state = #{readState}, update_date = sysdate() + where id = #{id} + + + + delete from aiob_callback_data where read_state = 1 and DATE(create_date) < DATE_SUB(CURDATE(), INTERVAL 1 MONTH) + + diff --git a/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/GetAiobCallbackDataTask.java b/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/GetAiobCallbackDataTask.java new file mode 100644 index 00000000..9267058e --- /dev/null +++ b/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/GetAiobCallbackDataTask.java @@ -0,0 +1,57 @@ +package com.xinelu.quartz.task; + +import com.alibaba.fastjson.JSON; +import com.aliyuncs.exceptions.ClientException; +import com.xinelu.manage.domain.aiob.AIOBCallbackEntity; +import com.xinelu.manage.dto.aiob.TaskCallbackDataDto; +import com.xinelu.manage.service.aiob.IAIOBCallbackService; +import com.xinelu.manage.service.aiob.IAIOBService; +import java.util.List; +import javax.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +/** + * @description: 获取百度外呼回调数据 + * @author: haown + * @create: 2025-12-23 15:12 + **/ +@Slf4j +@Component("GetAiobCallbackDataTask") +public class GetAiobCallbackDataTask { + @Resource + private IAIOBService aiobService; + @Resource + private IAIOBCallbackService aiobCallbackService; + + public void syncCallbackData() { + log.info("开始执行同步百度外呼回调数据定时任务......"); + AIOBCallbackEntity aiobCallbackEntity = new AIOBCallbackEntity(); + aiobCallbackEntity.setReadState(0); + List callbackEntityList = aiobCallbackService.getList(aiobCallbackEntity); + if (!CollectionUtils.isEmpty(callbackEntityList)) { + // 回调数据解析 + callbackEntityList.forEach(callbackEntity -> { + // JSONString 转 TaskCallbackDataDto + TaskCallbackDataDto taskCallbackDataDto = JSON.parseObject(callbackEntity.getCallbackData(), TaskCallbackDataDto.class); + try { + // 执行回调 + aiobService.taskCallBack(callbackEntity.getCallbackType(), taskCallbackDataDto); + // 修改阿里云服务器回调数据已读状态 + aiobCallbackService.updateReadState(1, callbackEntity.getId()); + } catch (ClientException e) { + throw new RuntimeException(e); + } + }); + } + log.info("完成同步百度外呼回调数据定时任务......"); + } + + public void clearCallbackData() { + log.info("开始执行清除过期的百度外呼回调数据定时任务......"); + // 清除一个月前的数据 + int count = aiobCallbackService.deleteData(); + log.info("完成清除过期的百度外呼回调数据定时任务,共清除" + count +"条......"); + } +}