特邀发言官 补偿机制
This commit is contained in:
@@ -23,7 +23,7 @@ public class InvitedSpeakerJob {
|
|||||||
public ResultMsg invitedSpeakerJobTask() {
|
public ResultMsg invitedSpeakerJobTask() {
|
||||||
try {
|
try {
|
||||||
log.info("invitedSpeakerJobTask 开始执行特邀发言官定时任务补偿处理消息");
|
log.info("invitedSpeakerJobTask 开始执行特邀发言官定时任务补偿处理消息");
|
||||||
spokesmanService.spokesManCallBack("111");
|
spokesmanService.spokesManTask();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("invitedSpeakerJobTask 定时任务补偿处理消息异常",e.getMessage());
|
log.error("invitedSpeakerJobTask 定时任务补偿处理消息异常",e.getMessage());
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
package com.volvo.ai.analytic.center.service;
|
package com.volvo.ai.analytic.center.service;
|
||||||
|
|
||||||
|
import com.alibaba.cloud.commons.lang.StringUtils;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.volvo.ai.analytic.center.dto.req.DiFyReq;
|
import com.volvo.ai.analytic.center.dto.req.*;
|
||||||
import com.volvo.ai.analytic.center.dto.req.DifyImageWorkFlow;
|
|
||||||
import com.volvo.ai.analytic.center.dto.req.SpokesManDTO;
|
|
||||||
import com.volvo.ai.analytic.center.entity.AiAnalysisErrors;
|
import com.volvo.ai.analytic.center.entity.AiAnalysisErrors;
|
||||||
import com.volvo.ai.analytic.center.entity.AiAnalysisRequestLogs;
|
import com.volvo.ai.analytic.center.entity.AiAnalysisRequestLogs;
|
||||||
import com.volvo.ai.analytic.center.entity.AiAnalyticBusinessConfig;
|
import com.volvo.ai.analytic.center.entity.AiAnalyticBusinessConfig;
|
||||||
@@ -66,14 +67,12 @@ public class SpokesManService {
|
|||||||
// 生成ai分析请求id
|
// 生成ai分析请求id
|
||||||
String aiAnalysisRequestId = AiAnalysisUtils.getAiAnalysisRequestId(BusinessTypeEnum.COMMUNITYTARGET.getCode());
|
String aiAnalysisRequestId = AiAnalysisUtils.getAiAnalysisRequestId(BusinessTypeEnum.COMMUNITYTARGET.getCode());
|
||||||
try {
|
try {
|
||||||
JSONObject jsonObject = JSON.parseObject(req);
|
|
||||||
String data = jsonObject.getString("data");
|
|
||||||
// 异步保存请求日志
|
// 异步保存请求日志
|
||||||
syncSaveRequestLogs(JSON.toJSONString(data), aiAnalysisRequestId);
|
syncSaveRequestLogs(JSON.toJSONString(req), aiAnalysisRequestId);
|
||||||
//把req转成SpokesManDTO对象
|
//把req转成SpokesManDTO对象
|
||||||
SpokesManDTO spokesManDTO = JSON.parseObject(data, SpokesManDTO.class);
|
SpokesManDTO spokesManDTO = JSON.parseObject(req, SpokesManDTO.class);
|
||||||
if (spokesManDTO == null || spokesManDTO.getFiles() == null || spokesManDTO.getFiles().isEmpty()
|
if (spokesManDTO == null || spokesManDTO.getFiles() == null || spokesManDTO.getFiles().isEmpty()
|
||||||
|| spokesManDTO.getPlatform() == null || spokesManDTO.getTheme() == null) {
|
|| spokesManDTO.getPlatform() == null) {
|
||||||
log.error("社区特邀发言官入参错误");
|
log.error("社区特邀发言官入参错误");
|
||||||
throw new RuntimeException("社区特邀发言官入参错误");
|
throw new RuntimeException("社区特邀发言官入参错误");
|
||||||
}
|
}
|
||||||
@@ -128,7 +127,54 @@ public class SpokesManService {
|
|||||||
.build());
|
.build());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//特邀发言补偿
|
||||||
|
public void spokesManTask() {
|
||||||
|
try {
|
||||||
|
//捞取异常表中属于社区的异常数据
|
||||||
|
List<AiAnalysisErrors> aiAnalysisErrors = aiAnalysisErrorsMapper.selectList(new LambdaQueryWrapper<AiAnalysisErrors>()
|
||||||
|
.eq(AiAnalysisErrors::getAiAnalysisRequestType, BusinessTypeEnum.SPOKESMAN.getCode())
|
||||||
|
.eq(AiAnalysisErrors::getAiAnalysisErrorHandlingStatus, "0")
|
||||||
|
.lt(AiAnalysisErrors::getRetryCount, 4));
|
||||||
|
if (aiAnalysisErrors != null && aiAnalysisErrors.size() > 0) {
|
||||||
|
//根据ai_analysis_request_id获取AiAnalysisRequestLogs表中的对应的dify_request字段
|
||||||
|
for (AiAnalysisErrors aiAnalysisError : aiAnalysisErrors) {
|
||||||
|
try {
|
||||||
|
AiAnalysisRequestLogs aiAnalysisRequestLogs = aiAnalysisRequestLogsMapper.selectOne(new LambdaQueryWrapper<AiAnalysisRequestLogs>()
|
||||||
|
.eq(AiAnalysisRequestLogs::getAiAnalysisRequestId, aiAnalysisError.getAiAnalysisRequestId()));
|
||||||
|
if (aiAnalysisRequestLogs != null) {
|
||||||
|
//获取dify_request字段
|
||||||
|
String message = aiAnalysisRequestLogs.getBusinessRequest();
|
||||||
|
String difyRequest = aiAnalysisRequestLogs.getDifyRequest();
|
||||||
|
if (StringUtils.isNotEmpty(message) || StringUtils.isNotEmpty(difyRequest)) {
|
||||||
|
SpokesManDTO spokesManDTO = JSON.parseObject(message, SpokesManDTO.class); DiFyReq diFyReq = JSON.parseObject(difyRequest, DiFyReq.class);
|
||||||
|
//调用workflow
|
||||||
|
JSONObject difSpokesManResult = (JSONObject) diFyService.getDiFyObject(diFyReq);
|
||||||
|
difSpokesManResult.put("communityRequestId", spokesManDTO.getCommunityRequestId());
|
||||||
|
difSpokesManResult.put("aiAnalysisRequestId", aiAnalysisError.getAiAnalysisRequestId());
|
||||||
|
//处理发布时间
|
||||||
|
updatePublishedTime(difSpokesManResult);
|
||||||
|
//返回结果推送到社区的MQ
|
||||||
|
rocketMQTemplate.syncSend(topic, difSpokesManResult.toString());
|
||||||
|
//异步更新dify响应日志
|
||||||
|
syncUpdateDiFyResponse(difSpokesManResult, aiAnalysisError.getAiAnalysisRequestId());
|
||||||
|
} else {
|
||||||
|
aiAnalysisErrorsMapper.update(new AiAnalysisErrors(), new LambdaUpdateWrapper<AiAnalysisErrors>()
|
||||||
|
.eq(AiAnalysisErrors::getAiAnalysisRequestId, aiAnalysisError.getAiAnalysisRequestId())
|
||||||
|
.set(AiAnalysisErrors::getAiAnalysisErrorHandlingStatus, "2"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("补偿社区消息,AIID:{},异常:{}", aiAnalysisError.getAiAnalysisRequestId(), e);
|
||||||
|
aiAnalysisErrorsMapper.update(new AiAnalysisErrors(), new LambdaUpdateWrapper<AiAnalysisErrors>()
|
||||||
|
.eq(AiAnalysisErrors::getAiAnalysisRequestId, aiAnalysisError.getAiAnalysisRequestId())
|
||||||
|
.set(AiAnalysisErrors::getRetryCount, aiAnalysisError.getRetryCount() + 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("处理社区异常消息异常:{}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
public static void updatePublishedTime(JSONObject rootJson) {
|
public static void updatePublishedTime(JSONObject rootJson) {
|
||||||
String contentAnalysisResultStr = rootJson.getString("ContentAnalysisResult");
|
String contentAnalysisResultStr = rootJson.getString("ContentAnalysisResult");
|
||||||
if (contentAnalysisResultStr == null || contentAnalysisResultStr.isEmpty()) return;
|
if (contentAnalysisResultStr == null || contentAnalysisResultStr.isEmpty()) return;
|
||||||
|
|||||||
Reference in New Issue
Block a user