feat(sj_1.0.0): 修复组状态更新问题和空间新增添加格式校验

This commit is contained in:
opensnail 2024-06-01 14:15:15 +08:00
parent 39cd48b3d8
commit 691c5033f8
9 changed files with 53 additions and 22 deletions

View File

@ -177,4 +177,9 @@ public interface SystemConstants {
* Webhook告警工作流回调请求密钥
*/
String SECRET = "secret";
/**
* 组名场景名空间ID通用正则
*/
String REGEXP = "^[A-Za-z0-9_-]{1,64}$";
}

View File

@ -8,6 +8,7 @@ import com.aizuda.snailjob.server.web.model.base.PageResult;
import com.aizuda.snailjob.server.web.model.request.ExportGroupVO;
import com.aizuda.snailjob.server.web.model.request.GroupConfigQueryVO;
import com.aizuda.snailjob.server.web.model.request.GroupConfigRequestVO;
import com.aizuda.snailjob.server.web.model.request.GroupStatusUpdateRequestVO;
import com.aizuda.snailjob.server.web.model.response.GroupConfigResponseVO;
import com.aizuda.snailjob.server.web.service.GroupConfigService;
import com.aizuda.snailjob.server.web.util.ExportUtils;
@ -48,9 +49,9 @@ public class GroupConfigController {
@LoginRequired(role = RoleEnum.ADMIN)
@PutMapping("status")
public Boolean updateGroupStatus(@RequestBody @Validated GroupConfigRequestVO groupConfigRequestVO) {
String groupName = groupConfigRequestVO.getGroupName();
Integer groupStatus = groupConfigRequestVO.getGroupStatus();
public Boolean updateGroupStatus(@RequestBody @Validated GroupStatusUpdateRequestVO requestVO) {
String groupName = requestVO.getGroupName();
Integer groupStatus = requestVO.getGroupStatus();
return groupConfigService.updateGroupStatus(groupName, groupStatus);
}

View File

@ -1,14 +1,12 @@
package com.aizuda.snailjob.server.web.controller;
import com.aizuda.snailjob.common.core.annotation.OriginalControllerReturnValue;
import com.aizuda.snailjob.common.core.exception.SnailJobCommonException;
import com.aizuda.snailjob.server.web.annotation.LoginRequired;
import com.aizuda.snailjob.server.web.annotation.RoleEnum;
import com.aizuda.snailjob.server.web.model.base.PageResult;
import com.aizuda.snailjob.server.web.model.request.ExportJobVO;
import com.aizuda.snailjob.server.web.model.request.JobQueryVO;
import com.aizuda.snailjob.server.web.model.request.JobRequestVO;
import com.aizuda.snailjob.server.web.model.request.JobUpdateJobStatusRequestVO;
import com.aizuda.snailjob.server.web.model.request.JobStatusUpdateRequestVO;
import com.aizuda.snailjob.server.web.model.response.JobResponseVO;
import com.aizuda.snailjob.server.web.service.JobService;
import com.aizuda.snailjob.server.web.util.ExportUtils;
@ -22,7 +20,6 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
import java.util.Set;
/**
* @author opensnail
@ -69,7 +66,7 @@ public class JobController {
@PutMapping("/status")
@LoginRequired
public Boolean updateJobStatus(@RequestBody @Validated JobUpdateJobStatusRequestVO jobRequestVO) {
public Boolean updateJobStatus(@RequestBody @Validated JobStatusUpdateRequestVO jobRequestVO) {
return jobService.updateJobStatus(jobRequestVO);
}

View File

@ -17,7 +17,7 @@ import lombok.Data;
public class GroupConfigRequestVO {
@NotBlank(message = "组名称不能为空")
@Pattern(regexp = "^[A-Za-z0-9_-]{1,64}$", message = "仅支持长度为1~64字符且类型为数字、字母和下划线")
@Pattern(regexp = "^[A-Za-z0-9_-]{1,64}$", message = "仅支持长度为1~64字符且类型为数字、字母、下划线和短横线")
private String groupName;
@NotNull(message = "组状态不能为空")

View File

@ -0,0 +1,22 @@
package com.aizuda.snailjob.server.web.model.request;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
/**
* @author opensnail
* @date 2024-06-01 11:37:45
* @since sj_1.0.0
*/
@Data
public class GroupStatusUpdateRequestVO {
@NotBlank(message = "组名称不能为空")
@Pattern(regexp = "^[A-Za-z0-9_-]{1,64}$", message = "仅支持长度为1~64字符且类型为数字、字母和下划线")
private String groupName;
@NotNull(message = "组状态不能为空")
private Integer groupStatus;
}

View File

@ -9,7 +9,7 @@ import lombok.Data;
* @since 2.4.0
*/
@Data
public class JobUpdateJobStatusRequestVO {
public class JobStatusUpdateRequestVO {
@NotNull(message = "id 不能为空")
private Long id;

View File

@ -4,9 +4,8 @@ import com.aizuda.snailjob.server.web.model.base.PageResult;
import com.aizuda.snailjob.server.web.model.request.ExportJobVO;
import com.aizuda.snailjob.server.web.model.request.JobQueryVO;
import com.aizuda.snailjob.server.web.model.request.JobRequestVO;
import com.aizuda.snailjob.server.web.model.request.JobUpdateJobStatusRequestVO;
import com.aizuda.snailjob.server.web.model.request.JobStatusUpdateRequestVO;
import com.aizuda.snailjob.server.web.model.response.JobResponseVO;
import com.aizuda.snailjob.template.datasource.persistence.po.Job;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
@ -26,7 +25,7 @@ public interface JobService {
boolean updateJob(JobRequestVO jobRequestVO);
Boolean updateJobStatus(JobUpdateJobStatusRequestVO jobRequestVO);
Boolean updateJobStatus(JobStatusUpdateRequestVO jobRequestVO);
Boolean deleteJobById(Long id);

View File

@ -40,7 +40,6 @@ import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
@ -49,7 +48,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
/**
* @author opensnail
@ -199,7 +197,7 @@ public class JobServiceImpl implements JobService {
}
@Override
public Boolean updateJobStatus(JobUpdateJobStatusRequestVO jobRequestVO) {
public Boolean updateJobStatus(JobStatusUpdateRequestVO jobRequestVO) {
Assert.notNull(jobRequestVO.getId(), () -> new SnailJobServerException("id 不能为空"));
Assert.isTrue(1 == jobMapper.selectCount(new LambdaQueryWrapper<Job>().eq(Job::getId, jobRequestVO.getId())));
@ -260,7 +258,7 @@ public class JobServiceImpl implements JobService {
public void importJobs(List<JobRequestVO> requestList) {
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
groupHandler.validateGroupExistence(
StreamUtils.toSet(requestList, JobRequestVO::getJobName), namespaceId
StreamUtils.toSet(requestList, JobRequestVO::getGroupName), namespaceId
);
requestList.forEach(this::saveJob);
}

View File

@ -3,6 +3,7 @@ package com.aizuda.snailjob.server.web.service.impl;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.aizuda.snailjob.common.core.constant.SystemConstants;
import com.aizuda.snailjob.common.core.enums.StatusEnum;
import com.aizuda.snailjob.server.common.exception.SnailJobServerException;
import com.aizuda.snailjob.server.web.model.base.PageResult;
@ -15,10 +16,13 @@ import com.aizuda.snailjob.template.datasource.persistence.mapper.NamespaceMappe
import com.aizuda.snailjob.template.datasource.persistence.po.Namespace;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author: xiaowoniu
@ -26,15 +30,19 @@ import java.util.List;
* @since : 2.5.0
*/
@Service
@RequiredArgsConstructor
public class NamespaceServiceImpl implements NamespaceService {
@Autowired
private NamespaceMapper namespaceMapper;
private final NamespaceMapper namespaceMapper;
@Override
public Boolean saveNamespace(final NamespaceRequestVO namespaceRequestVO) {
String uniqueId = namespaceRequestVO.getUniqueId();
if (StrUtil.isNotBlank(namespaceRequestVO.getUniqueId())) {
Pattern pattern = Pattern.compile(SystemConstants.REGEXP);
Matcher matcher = pattern.matcher(uniqueId);
Assert.isTrue(matcher.matches(), () -> new SnailJobServerException("仅支持长度为1~64字符且类型为数字、字母、下划线和短横线"));
Assert.isTrue(namespaceMapper.selectCount(
new LambdaQueryWrapper<Namespace>()
.eq(Namespace::getUniqueId, namespaceRequestVO.getUniqueId())) == 0,
@ -43,10 +51,10 @@ public class NamespaceServiceImpl implements NamespaceService {
Namespace namespace = new Namespace();
namespace.setName(namespaceRequestVO.getName());
if (StrUtil.isBlank(namespaceRequestVO.getUniqueId())) {
if (StrUtil.isBlank(uniqueId)) {
namespace.setUniqueId(IdUtil.simpleUUID());
} else {
namespace.setUniqueId(namespaceRequestVO.getUniqueId());
namespace.setUniqueId(uniqueId);
}
return 1 == namespaceMapper.insert(namespace);
}
@ -89,6 +97,7 @@ public class NamespaceServiceImpl implements NamespaceService {
List<Namespace> namespaces = namespaceMapper.selectList(
new LambdaQueryWrapper<Namespace>()
.select(Namespace::getName, Namespace::getUniqueId)
.orderByDesc(Namespace::getId)
);
return NamespaceResponseVOConverter.INSTANCE.convertList(namespaces);
}