feat(sj_1.0.0): 修复组状态更新问题和空间新增添加格式校验
This commit is contained in:
parent
39cd48b3d8
commit
691c5033f8
@ -177,4 +177,9 @@ public interface SystemConstants {
|
||||
* Webhook告警、工作流回调请求密钥
|
||||
*/
|
||||
String SECRET = "secret";
|
||||
|
||||
/**
|
||||
* 组名、场景名、空间ID通用正则
|
||||
*/
|
||||
String REGEXP = "^[A-Za-z0-9_-]{1,64}$";
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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 = "组状态不能为空")
|
||||
|
@ -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;
|
||||
}
|
@ -9,7 +9,7 @@ import lombok.Data;
|
||||
* @since 2.4.0
|
||||
*/
|
||||
@Data
|
||||
public class JobUpdateJobStatusRequestVO {
|
||||
public class JobStatusUpdateRequestVO {
|
||||
|
||||
@NotNull(message = "id 不能为空")
|
||||
private Long id;
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user