feat: license sn唯一性校验
This commit is contained in:
@@ -15,4 +15,5 @@ public interface ErrorCodeConstants {
|
|||||||
ErrorCode PROJECT_NAME_DUPLICATE = new ErrorCode(1_100_001_002, "项目名称`{}`已存在");
|
ErrorCode PROJECT_NAME_DUPLICATE = new ErrorCode(1_100_001_002, "项目名称`{}`已存在");
|
||||||
ErrorCode PROJECT_CODE_DUPLICATE = new ErrorCode(1_100_001_003, "项目编号`{}`已存在");
|
ErrorCode PROJECT_CODE_DUPLICATE = new ErrorCode(1_100_001_003, "项目编号`{}`已存在");
|
||||||
ErrorCode LICENSE_NOT_EXISTS = new ErrorCode(1_100_002_001, "License不存在");
|
ErrorCode LICENSE_NOT_EXISTS = new ErrorCode(1_100_002_001, "License不存在");
|
||||||
|
ErrorCode LICENSE_SN_DUPLICATE = new ErrorCode(1_100_001_002, "License SN`{}`已存在");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,33 +1,38 @@
|
|||||||
package org.agt.module.license.controller.admin.license;
|
package org.agt.module.license.controller.admin.license;
|
||||||
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import jakarta.validation.constraints.*;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.validation.*;
|
import jakarta.annotation.Resource;
|
||||||
import jakarta.servlet.http.*;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import java.util.*;
|
import jakarta.validation.Valid;
|
||||||
import java.io.IOException;
|
import org.agt.framework.apilog.core.annotation.ApiAccessLog;
|
||||||
|
import org.agt.framework.common.pojo.CommonResult;
|
||||||
import org.agt.framework.common.pojo.PageParam;
|
import org.agt.framework.common.pojo.PageParam;
|
||||||
import org.agt.framework.common.pojo.PageResult;
|
import org.agt.framework.common.pojo.PageResult;
|
||||||
import org.agt.framework.common.pojo.CommonResult;
|
|
||||||
import org.agt.framework.common.util.object.BeanUtils;
|
import org.agt.framework.common.util.object.BeanUtils;
|
||||||
import static org.agt.framework.common.pojo.CommonResult.success;
|
|
||||||
|
|
||||||
import org.agt.framework.excel.core.util.ExcelUtils;
|
import org.agt.framework.excel.core.util.ExcelUtils;
|
||||||
|
import org.agt.module.license.controller.admin.license.vo.LicensePageReqVO;
|
||||||
import org.agt.framework.apilog.core.annotation.ApiAccessLog;
|
import org.agt.module.license.controller.admin.license.vo.LicenseRespVO;
|
||||||
import static org.agt.framework.apilog.core.enums.OperateTypeEnum.*;
|
import org.agt.module.license.controller.admin.license.vo.LicenseSaveReqVO;
|
||||||
|
|
||||||
import org.agt.module.license.controller.admin.license.vo.*;
|
|
||||||
import org.agt.module.license.dal.dataobject.license.LicenseDO;
|
import org.agt.module.license.dal.dataobject.license.LicenseDO;
|
||||||
import org.agt.module.license.service.license.LicenseService;
|
import org.agt.module.license.service.license.LicenseService;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PutMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.agt.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
|
||||||
|
import static org.agt.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
@Tag(name = "管理后台 - License")
|
@Tag(name = "管理后台 - License")
|
||||||
@RestController
|
@RestController
|
||||||
@@ -92,4 +97,10 @@ public class LicenseController {
|
|||||||
BeanUtils.toBean(list, LicenseRespVO.class));
|
BeanUtils.toBean(list, LicenseRespVO.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/sn-unique")
|
||||||
|
@Operation(summary = "校验License的sn是否唯一")
|
||||||
|
public CommonResult<Boolean> validateLicenseSnUnique(@RequestParam(value = "sn", required = false) String sn, @RequestParam(value = "id", required = false) Long id) {
|
||||||
|
Boolean isExists = licenseService.validateLicenseSnUnique(sn, id);
|
||||||
|
return success(isExists);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -36,4 +36,7 @@ public interface LicenseMapper extends BaseMapperX<LicenseDO> {
|
|||||||
.orderByDesc(LicenseDO::getId));
|
.orderByDesc(LicenseDO::getId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default LicenseDO selectBySn(String sn) {
|
||||||
|
return selectOne(LicenseDO::getSn, sn);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
package org.agt.module.license.service.license;
|
package org.agt.module.license.service.license;
|
||||||
|
|
||||||
import java.util.*;
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.*;
|
|
||||||
import org.agt.module.license.controller.admin.license.vo.*;
|
|
||||||
import org.agt.module.license.dal.dataobject.license.LicenseDO;
|
|
||||||
import org.agt.framework.common.pojo.PageResult;
|
import org.agt.framework.common.pojo.PageResult;
|
||||||
import org.agt.framework.common.pojo.PageParam;
|
import org.agt.module.license.controller.admin.license.vo.LicensePageReqVO;
|
||||||
|
import org.agt.module.license.controller.admin.license.vo.LicenseSaveReqVO;
|
||||||
|
import org.agt.module.license.dal.dataobject.license.LicenseDO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* License Service 接口
|
* License Service 接口
|
||||||
@@ -52,4 +51,12 @@ public interface LicenseService {
|
|||||||
*/
|
*/
|
||||||
PageResult<LicenseDO> getLicensePage(LicensePageReqVO pageReqVO);
|
PageResult<LicenseDO> getLicensePage(LicensePageReqVO pageReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验License的sn是否唯一
|
||||||
|
*
|
||||||
|
* @param sn sn
|
||||||
|
* @param id id
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
Boolean validateLicenseSnUnique(String sn, Long id);
|
||||||
}
|
}
|
||||||
@@ -1,21 +1,19 @@
|
|||||||
package org.agt.module.license.service.license;
|
package org.agt.module.license.service.license;
|
||||||
|
|
||||||
import org.springframework.stereotype.Service;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
import org.agt.module.license.controller.admin.license.vo.*;
|
|
||||||
import org.agt.module.license.dal.dataobject.license.LicenseDO;
|
|
||||||
import org.agt.framework.common.pojo.PageResult;
|
import org.agt.framework.common.pojo.PageResult;
|
||||||
import org.agt.framework.common.pojo.PageParam;
|
|
||||||
import org.agt.framework.common.util.object.BeanUtils;
|
import org.agt.framework.common.util.object.BeanUtils;
|
||||||
|
import org.agt.module.license.controller.admin.license.vo.LicensePageReqVO;
|
||||||
|
import org.agt.module.license.controller.admin.license.vo.LicenseSaveReqVO;
|
||||||
|
import org.agt.module.license.dal.dataobject.license.LicenseDO;
|
||||||
import org.agt.module.license.dal.mysql.license.LicenseMapper;
|
import org.agt.module.license.dal.mysql.license.LicenseMapper;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
import static org.agt.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static org.agt.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static org.agt.module.license.enums.ErrorCodeConstants.*;
|
import static org.agt.module.license.enums.ErrorCodeConstants.LICENSE_NOT_EXISTS;
|
||||||
|
import static org.agt.module.license.enums.ErrorCodeConstants.LICENSE_SN_DUPLICATE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* License Service 实现类
|
* License Service 实现类
|
||||||
@@ -31,6 +29,10 @@ public class LicenseServiceImpl implements LicenseService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long createLicense(LicenseSaveReqVO createReqVO) {
|
public Long createLicense(LicenseSaveReqVO createReqVO) {
|
||||||
|
// 校验项目Sn是否唯一
|
||||||
|
if (!validateLicenseSnUnique(createReqVO.getSn(), createReqVO.getId())) {
|
||||||
|
throw exception(LICENSE_SN_DUPLICATE, createReqVO.getSn());
|
||||||
|
}
|
||||||
// 插入
|
// 插入
|
||||||
LicenseDO license = BeanUtils.toBean(createReqVO, LicenseDO.class);
|
LicenseDO license = BeanUtils.toBean(createReqVO, LicenseDO.class);
|
||||||
licenseMapper.insert(license);
|
licenseMapper.insert(license);
|
||||||
@@ -40,6 +42,10 @@ public class LicenseServiceImpl implements LicenseService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateLicense(LicenseSaveReqVO updateReqVO) {
|
public void updateLicense(LicenseSaveReqVO updateReqVO) {
|
||||||
|
// 校验项目Sn是否唯一
|
||||||
|
if (!validateLicenseSnUnique(updateReqVO.getSn(), updateReqVO.getId())) {
|
||||||
|
throw exception(LICENSE_SN_DUPLICATE, updateReqVO.getSn());
|
||||||
|
}
|
||||||
// 校验存在
|
// 校验存在
|
||||||
validateLicenseExists(updateReqVO.getId());
|
validateLicenseExists(updateReqVO.getId());
|
||||||
// 更新
|
// 更新
|
||||||
@@ -71,4 +77,22 @@ public class LicenseServiceImpl implements LicenseService {
|
|||||||
return licenseMapper.selectPage(pageReqVO);
|
return licenseMapper.selectPage(pageReqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean validateLicenseSnUnique(String sn, Long id) {
|
||||||
|
if (StrUtil.isBlank(sn)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
LicenseDO license = licenseMapper.selectBySn(sn);
|
||||||
|
if (license == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// 如果 id 为空,说明不用比较是否为相同 id 的License
|
||||||
|
if (id == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!license.getId().equals(id)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user