diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/service/impl/RetryDeadLetterServiceImpl.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/service/impl/RetryDeadLetterServiceImpl.java index d61108d9d..81c46c005 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/service/impl/RetryDeadLetterServiceImpl.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/service/impl/RetryDeadLetterServiceImpl.java @@ -72,6 +72,10 @@ public class RetryDeadLetterServiceImpl implements RetryDeadLetterService { retryDeadLetterLambdaQueryWrapper.eq(RetryDeadLetter::getIdempotentId, queryVO.getIdempotentId()); } + if (StringUtils.isNotBlank(queryVO.getUniqueId())) { + retryDeadLetterLambdaQueryWrapper.eq(RetryDeadLetter::getUniqueId, queryVO.getUniqueId()); + } + RequestDataHelper.setPartition(queryVO.getGroupName()); PageDTO retryDeadLetterPageDTO = retryDeadLetterMapper.selectPage(pageDTO, retryDeadLetterLambdaQueryWrapper); diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/service/impl/RetryTaskServiceImpl.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/service/impl/RetryTaskServiceImpl.java index 93ff96543..89971ff97 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/service/impl/RetryTaskServiceImpl.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/service/impl/RetryTaskServiceImpl.java @@ -1,21 +1,27 @@ package com.aizuda.easy.retry.server.service.impl; +import akka.actor.ActorRef; import cn.hutool.core.lang.Assert; import com.aizuda.easy.retry.client.model.GenerateRetryIdempotentIdDTO; import com.aizuda.easy.retry.common.core.enums.RetryStatusEnum; import com.aizuda.easy.retry.common.core.model.Result; +import com.aizuda.easy.retry.server.akka.ActorGenerator; import com.aizuda.easy.retry.server.config.RequestDataHelper; import com.aizuda.easy.retry.server.dto.RegisterNodeInfo; import com.aizuda.easy.retry.server.exception.EasyRetryServerException; +import com.aizuda.easy.retry.server.persistence.mybatis.mapper.RetryTaskLogMapper; +import com.aizuda.easy.retry.server.persistence.mybatis.mapper.RetryTaskLogMessageMapper; import com.aizuda.easy.retry.server.persistence.mybatis.mapper.RetryTaskMapper; import com.aizuda.easy.retry.server.persistence.mybatis.po.GroupConfig; import com.aizuda.easy.retry.server.persistence.mybatis.po.RetryTask; import com.aizuda.easy.retry.server.persistence.mybatis.po.RetryTaskLog; +import com.aizuda.easy.retry.server.persistence.mybatis.po.RetryTaskLogMessage; import com.aizuda.easy.retry.server.persistence.mybatis.po.ServerNode; import com.aizuda.easy.retry.server.persistence.support.ConfigAccess; import com.aizuda.easy.retry.server.service.RetryTaskService; import com.aizuda.easy.retry.server.service.convert.RetryTaskConverter; import com.aizuda.easy.retry.server.service.convert.RetryTaskResponseVOConverter; +import com.aizuda.easy.retry.server.support.dispatch.actor.log.RetryTaskLogDTO; import com.aizuda.easy.retry.server.support.generator.IdGenerator; import com.aizuda.easy.retry.server.support.handler.ClientNodeAllocateHandler; import com.aizuda.easy.retry.server.support.strategy.WaitStrategies; @@ -35,6 +41,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.HttpEntity; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.client.RestTemplate; import java.text.MessageFormat; @@ -62,7 +69,10 @@ public class RetryTaskServiceImpl implements RetryTaskService { private ClientNodeAllocateHandler clientNodeAllocateHandler; @Autowired private List idGeneratorList; - + @Autowired + private RetryTaskLogMessageMapper retryTaskLogMessageMapper; + @Autowired + private RetryTaskLogMapper retryTaskLogMapper; @Autowired @Qualifier("configAccessProcessor") private ConfigAccess configAccess; @@ -112,6 +122,7 @@ public class RetryTaskServiceImpl implements RetryTaskService { } @Override + @Transactional public int updateRetryTaskStatus(RetryTaskUpdateStatusRequestVO retryTaskUpdateStatusRequestVO) { RetryStatusEnum retryStatusEnum = RetryStatusEnum.getByStatus(retryTaskUpdateStatusRequestVO.getRetryStatus()); @@ -134,6 +145,22 @@ public class RetryTaskServiceImpl implements RetryTaskService { WaitStrategies.randomWait(1, TimeUnit.SECONDS, 60, TimeUnit.SECONDS).computeRetryTime(null)); } + if (RetryStatusEnum.FINISH.getStatus().equals(retryStatusEnum.getStatus())) { + + RetryTaskLogMessage retryTaskLogMessage = new RetryTaskLogMessage(); + retryTaskLogMessage.setUniqueId(retryTask.getUniqueId()); + retryTaskLogMessage.setGroupName(retryTask.getGroupName()); + retryTaskLogMessage.setMessage("页面操作完成"); + retryTaskLogMessage.setCreateDt(LocalDateTime.now()); + retryTaskLogMessageMapper.insert(retryTaskLogMessage); + + RetryTaskLog retryTaskLog = new RetryTaskLog(); + retryTaskLog.setRetryStatus(RetryStatusEnum.FINISH.getStatus()); + retryTaskLogMapper.update(retryTaskLog, new LambdaUpdateWrapper() + .eq(RetryTaskLog::getUniqueId, retryTask.getUniqueId()) + .eq(RetryTaskLog::getGroupName, retryTask.getGroupName())); + } + RequestDataHelper.setPartition(retryTaskUpdateStatusRequestVO.getGroupName()); return retryTaskMapper.updateById(retryTask); } diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/RetryDeadLetterQueryVO.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/RetryDeadLetterQueryVO.java index b3629bfe7..92b60e7ca 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/RetryDeadLetterQueryVO.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/RetryDeadLetterQueryVO.java @@ -13,4 +13,5 @@ public class RetryDeadLetterQueryVO extends BaseQueryVO { private String sceneName; private String bizNo; private String idempotentId; + private String uniqueId; } diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/response/RetryDeadLetterResponseVO.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/response/RetryDeadLetterResponseVO.java index 514ba907d..7fcc7ebb4 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/response/RetryDeadLetterResponseVO.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/response/RetryDeadLetterResponseVO.java @@ -29,6 +29,8 @@ public class RetryDeadLetterResponseVO { private Integer taskType; + private String uniqueId; + private LocalDateTime createDt; } diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/response/RetryTaskLogMessageResponseVO.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/response/RetryTaskLogMessageResponseVO.java index 55943fe97..c62a27026 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/response/RetryTaskLogMessageResponseVO.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/response/RetryTaskLogMessageResponseVO.java @@ -11,6 +11,8 @@ import java.time.LocalDateTime; @Data public class RetryTaskLogMessageResponseVO { + private Long id; + private String message; private LocalDateTime createDt; diff --git a/frontend/src/api/manage.js b/frontend/src/api/manage.js index 979654da6..bd6cf6f2c 100644 --- a/frontend/src/api/manage.js +++ b/frontend/src/api/manage.js @@ -19,6 +19,7 @@ const api = { deleteRetryTask: '/retry-task/batch', updateRetryTaskStatus: '/retry-task/status', retryTaskLogPage: '/retry-task-log/list', + retryTaskLogMessagePage: '/retry-task-log/message/list', retryTaskLogById: '/retry-task-log/', retryDeadLetterPage: '/retry-dead-letter/list', retryDeadLetterById: '/retry-dead-letter/', @@ -42,6 +43,14 @@ const api = { export default api +export function getRetryTaskLogMessagePage (parameter) { + return request({ + url: api.retryTaskLogMessagePage, + method: 'get', + params: parameter + }) +} + export function pods (parameter) { return request({ url: api.pods, diff --git a/frontend/src/views/task/RetryDeadLetterList.vue b/frontend/src/views/task/RetryDeadLetterList.vue index b73c4a830..dea4e06bd 100644 --- a/frontend/src/views/task/RetryDeadLetterList.vue +++ b/frontend/src/views/task/RetryDeadLetterList.vue @@ -24,8 +24,13 @@ - - + + + + + + + @@ -150,6 +155,11 @@ export default { dataIndex: 'sceneName', ellipsis: true }, + { + title: 'UniqueId', + dataIndex: 'uniqueId', + width: '10%' + }, { title: '幂等id', dataIndex: 'idempotentId', diff --git a/frontend/src/views/task/RetryLogInfo.vue b/frontend/src/views/task/RetryLogInfo.vue index f605214e8..4c36b303b 100644 --- a/frontend/src/views/task/RetryLogInfo.vue +++ b/frontend/src/views/task/RetryLogInfo.vue @@ -1,10 +1,10 @@ + +