diff --git a/pom.xml b/pom.xml
index 6c0d110d..15ccf4b2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -182,14 +182,14 @@
- GNU General Public License v3.0
- https://www.gnu.org/licenses/gpl-3.0.txt
+ Apache License 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
- https://github.com/byteblogs168/snail-job
- https://gitee.com.aizuda.snailjob.git
+ https://gitee.com/aizuda/snail-job
+ https://gitee.com/aizuda/snail-job
https://gitee.com/aizuda/
diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/RetryTaskLogController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/RetryTaskLogController.java
index 103cfb86..75b6aae2 100644
--- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/RetryTaskLogController.java
+++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/RetryTaskLogController.java
@@ -8,12 +8,15 @@ import com.aizuda.snailjob.server.web.model.response.RetryTaskLogMessageResponse
import com.aizuda.snailjob.server.web.model.response.RetryTaskLogResponseVO;
import com.aizuda.snailjob.server.web.service.RetryTaskLogService;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
+import java.util.Set;
/**
* 重试日志接口
@@ -45,4 +48,16 @@ public class RetryTaskLogController {
public RetryTaskLogResponseVO getRetryTaskLogById(@PathVariable("id") Long id) {
return retryTaskLogService.getRetryTaskLogById(id);
}
+
+ @LoginRequired
+ @DeleteMapping("{id}")
+ public Boolean deleteById(@PathVariable("id") Long id) {
+ return retryTaskLogService.deleteById(id);
+ }
+
+ @LoginRequired
+ @DeleteMapping("ids")
+ public Boolean batchDelete(@RequestBody Set ids) {
+ return retryTaskLogService.batchDelete(ids);
+ }
}
diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/RetryTaskLogService.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/RetryTaskLogService.java
index 97f1e415..063b25ca 100644
--- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/RetryTaskLogService.java
+++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/RetryTaskLogService.java
@@ -12,6 +12,7 @@ import com.aizuda.snailjob.server.web.model.response.RetryTaskLogMessageResponse
import com.aizuda.snailjob.server.web.model.response.RetryTaskLogResponseVO;
import java.util.List;
+import java.util.Set;
/**
* @author opensnail
@@ -26,4 +27,7 @@ public interface RetryTaskLogService {
RetryTaskLogResponseVO getRetryTaskLogById(Long id);
+ boolean deleteById(Long id);
+
+ boolean batchDelete(Set ids);
}
diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/RetryTaskLogServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/RetryTaskLogServiceImpl.java
index 892c15ca..22decac9 100644
--- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/RetryTaskLogServiceImpl.java
+++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/RetryTaskLogServiceImpl.java
@@ -1,8 +1,11 @@
package com.aizuda.snailjob.server.web.service.impl;
+import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
+import com.aizuda.snailjob.common.core.enums.RetryStatusEnum;
import com.aizuda.snailjob.common.core.util.JsonUtil;
import com.aizuda.snailjob.common.log.constant.LogFieldConstants;
+import com.aizuda.snailjob.server.common.exception.SnailJobServerException;
import com.aizuda.snailjob.server.web.model.request.UserSessionVO;
import com.aizuda.snailjob.server.web.util.UserSessionUtils;
import com.aizuda.snailjob.server.web.model.response.RetryTaskLogMessageResponseVO;
@@ -22,11 +25,14 @@ import com.aizuda.snailjob.server.web.model.response.RetryTaskLogResponseVO;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
+import java.util.Set;
import java.util.stream.Collectors;
/**
@@ -69,19 +75,21 @@ public class RetryTaskLogServiceImpl implements RetryTaskLogService {
retryTaskLogLambdaQueryWrapper.eq(RetryTaskLog::getIdempotentId, queryVO.getIdempotentId());
}
- retryTaskLogLambdaQueryWrapper.select(RetryTaskLog::getGroupName, RetryTaskLog::getId, RetryTaskLog::getSceneName,
- RetryTaskLog::getIdempotentId, RetryTaskLog::getBizNo, RetryTaskLog::getRetryStatus,
- RetryTaskLog::getCreateDt, RetryTaskLog::getUniqueId, RetryTaskLog::getTaskType);
- PageDTO retryTaskLogPageDTO = retryTaskLogMapper.selectPage(pageDTO, retryTaskLogLambdaQueryWrapper.orderByDesc(RetryTaskLog::getCreateDt));
+ retryTaskLogLambdaQueryWrapper.select(RetryTaskLog::getGroupName, RetryTaskLog::getId,
+ RetryTaskLog::getSceneName,
+ RetryTaskLog::getIdempotentId, RetryTaskLog::getBizNo, RetryTaskLog::getRetryStatus,
+ RetryTaskLog::getCreateDt, RetryTaskLog::getUniqueId, RetryTaskLog::getTaskType);
+ PageDTO retryTaskLogPageDTO = retryTaskLogMapper.selectPage(pageDTO,
+ retryTaskLogLambdaQueryWrapper.orderByDesc(RetryTaskLog::getCreateDt));
return new PageResult<>(
- retryTaskLogPageDTO,
- RetryTaskLogResponseVOConverter.INSTANCE.batchConvert(retryTaskLogPageDTO.getRecords()));
+ retryTaskLogPageDTO,
+ RetryTaskLogResponseVOConverter.INSTANCE.batchConvert(retryTaskLogPageDTO.getRecords()));
}
@Override
public RetryTaskLogMessageResponseVO getRetryTaskLogMessagePage(
- RetryTaskLogMessageQueryVO queryVO) {
+ RetryTaskLogMessageQueryVO queryVO) {
if (StrUtil.isBlank(queryVO.getUniqueId()) || StrUtil.isBlank(queryVO.getGroupName())) {
RetryTaskLogMessageResponseVO jobLogResponseVO = new RetryTaskLogMessageResponseVO();
jobLogResponseVO.setNextStartId(0L);
@@ -100,7 +108,8 @@ public class RetryTaskLogServiceImpl implements RetryTaskLogService {
wrapper.eq(RetryTaskLogMessage::getGroupName, queryVO.getGroupName());
wrapper.orderByAsc(RetryTaskLogMessage::getId).orderByAsc(RetryTaskLogMessage::getRealTime);
- PageDTO selectPage = retryTaskLogMessageMapper.selectPage(pageDTO, wrapper.orderByDesc(RetryTaskLogMessage::getCreateDt));
+ PageDTO selectPage = retryTaskLogMessageMapper.selectPage(pageDTO,
+ wrapper.orderByDesc(RetryTaskLogMessage::getCreateDt));
List records = selectPage.getRecords();
@@ -156,7 +165,8 @@ public class RetryTaskLogServiceImpl implements RetryTaskLogService {
}
messages = messages.stream().sorted((o1, o2) -> {
- long value = Long.parseLong(o1.get(LogFieldConstants.TIME_STAMP)) - Long.parseLong(o2.get(LogFieldConstants.TIME_STAMP));
+ long value = Long.parseLong(o1.get(LogFieldConstants.TIME_STAMP)) - Long.parseLong(
+ o2.get(LogFieldConstants.TIME_STAMP));
if (value > 0) {
return 1;
@@ -180,4 +190,47 @@ public class RetryTaskLogServiceImpl implements RetryTaskLogService {
RetryTaskLog retryTaskLog = retryTaskLogMapper.selectById(id);
return RetryTaskLogResponseVOConverter.INSTANCE.convert(retryTaskLog);
}
+
+ @Override
+ @Transactional
+ public boolean deleteById(final Long id) {
+ String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
+
+ RetryTaskLog retryTaskLog = retryTaskLogMapper.selectOne(
+ new LambdaQueryWrapper().eq(RetryTaskLog::getRetryStatus, RetryStatusEnum.FINISH.getStatus())
+ .eq(RetryTaskLog::getNamespaceId, namespaceId)
+ .eq(RetryTaskLog::getId, id));
+ Assert.notNull(retryTaskLog, () -> new SnailJobServerException("数据删除失败"));
+
+ retryTaskLogMessageMapper.delete(new LambdaQueryWrapper()
+ .eq(RetryTaskLogMessage::getNamespaceId, namespaceId)
+ .eq(RetryTaskLogMessage::getGroupName, retryTaskLog.getGroupName())
+ .eq(RetryTaskLogMessage::getUniqueId, retryTaskLog.getUniqueId())
+ );
+
+ return 1 == retryTaskLogMapper.deleteById(id);
+ }
+
+ @Override
+ @Transactional
+ public boolean batchDelete(final Set ids) {
+ String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
+
+ List retryTaskLogs = retryTaskLogMapper.selectList(new LambdaQueryWrapper()
+ .eq(RetryTaskLog::getRetryStatus, RetryStatusEnum.FINISH.getStatus())
+ .eq(RetryTaskLog::getNamespaceId, namespaceId)
+ .in(RetryTaskLog::getId, ids)
+ );
+ Assert.notEmpty(retryTaskLogs, () -> new SnailJobServerException("数据不存在"));
+ Assert.isTrue(retryTaskLogs.size() == ids.size(), () -> new SnailJobServerException("数据不存在"));
+
+ for (final RetryTaskLog retryTaskLog : retryTaskLogs) {
+ retryTaskLogMessageMapper.delete(new LambdaQueryWrapper()
+ .eq(RetryTaskLogMessage::getNamespaceId, namespaceId)
+ .eq(RetryTaskLogMessage::getGroupName, retryTaskLog.getGroupName())
+ .eq(RetryTaskLogMessage::getUniqueId, retryTaskLog.getUniqueId())
+ );
+ }
+ return 1 == retryTaskLogMapper.deleteBatchIds(ids);
+ }
}