|
@@ -1,45 +1,45 @@
|
|
|
-package cn.iocoder.dashboard.modules.system.service.errorcode;
|
|
|
+package cn.iocoder.dashboard.modules.system.service.errorcode.impl;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil;
|
|
|
-import cn.iocoder.dashboard.common.pojo.CommonResult;
|
|
|
import cn.iocoder.dashboard.common.pojo.PageResult;
|
|
|
-import cn.iocoder.dashboard.modules.system.controller.errorcode.dto.ErrorCodeAutoGenerateDTO;
|
|
|
+import cn.iocoder.dashboard.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO;
|
|
|
+import cn.iocoder.dashboard.framework.errorcode.core.dto.ErrorCodeRespDTO;
|
|
|
import cn.iocoder.dashboard.modules.system.controller.errorcode.dto.ErrorCodeCreateDTO;
|
|
|
import cn.iocoder.dashboard.modules.system.controller.errorcode.dto.ErrorCodePageDTO;
|
|
|
import cn.iocoder.dashboard.modules.system.controller.errorcode.dto.ErrorCodeUpdateDTO;
|
|
|
import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.ErrorCodeVO;
|
|
|
-import cn.iocoder.dashboard.modules.system.convert.errorcode.ErrorCodeConvert;
|
|
|
+import cn.iocoder.dashboard.modules.system.convert.errorcode.SysErrorCodeConvert;
|
|
|
import cn.iocoder.dashboard.modules.system.dal.dataobject.errorcode.ErrorCodeDO;
|
|
|
import cn.iocoder.dashboard.modules.system.dal.mysql.errorcode.ErrorCodeMapper;
|
|
|
-import cn.iocoder.dashboard.modules.system.enums.errorcode.ErrorCodeTypeEnum;
|
|
|
-import cn.iocoder.dashboard.util.collection.CollectionUtils;
|
|
|
+import cn.iocoder.dashboard.modules.system.enums.errorcode.SysErrorCodeTypeEnum;
|
|
|
+import cn.iocoder.dashboard.modules.system.service.errorcode.SysErrorCodeService;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
-import javax.validation.Valid;
|
|
|
+import javax.annotation.Resource;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.ERROR_CODE_DUPLICATE;
|
|
|
import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.ERROR_CODE_NOT_EXISTS;
|
|
|
-import static cn.iocoder.dashboard.common.pojo.CommonResult.success;
|
|
|
+import static cn.iocoder.dashboard.util.collection.CollectionUtils.convertMap;
|
|
|
+import static cn.iocoder.dashboard.util.collection.CollectionUtils.convertSet;
|
|
|
|
|
|
/**
|
|
|
- * 错误码 Service
|
|
|
+ * 错误码 Service 实现类
|
|
|
*/
|
|
|
-@Slf4j
|
|
|
-@Validated
|
|
|
@Service
|
|
|
-public class ErrorCodeService {
|
|
|
+@Validated
|
|
|
+@Slf4j
|
|
|
+public class ErrorCodeServiceImpl implements SysErrorCodeService {
|
|
|
|
|
|
- @Autowired
|
|
|
- ErrorCodeMapper errorCodeMapper;
|
|
|
+ @Resource
|
|
|
+ private ErrorCodeMapper errorCodeMapper;
|
|
|
|
|
|
/**
|
|
|
* 创建错误码
|
|
@@ -47,13 +47,13 @@ public class ErrorCodeService {
|
|
|
* @param createDTO 创建错误码 DTO
|
|
|
* @return 错误码
|
|
|
*/
|
|
|
- public ErrorCodeVO createErrorCode(@Valid ErrorCodeCreateDTO createDTO) {
|
|
|
+ public ErrorCodeVO createErrorCode(ErrorCodeCreateDTO createDTO) {
|
|
|
checkDuplicateErrorCode(createDTO.getCode(), null);
|
|
|
// 插入到数据库
|
|
|
- ErrorCodeDO errorCodeDO = ErrorCodeConvert.INSTANCE.convert(createDTO);
|
|
|
+ ErrorCodeDO errorCodeDO = SysErrorCodeConvert.INSTANCE.convert(createDTO);
|
|
|
errorCodeMapper.insert(errorCodeDO);
|
|
|
// 返回
|
|
|
- return ErrorCodeConvert.INSTANCE.convert(errorCodeDO);
|
|
|
+ return SysErrorCodeConvert.INSTANCE.convert(errorCodeDO);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -61,62 +61,17 @@ public class ErrorCodeService {
|
|
|
*
|
|
|
* @param updateDTO 更新错误码 DTO
|
|
|
*/
|
|
|
- public void updateErrorCode(@Valid ErrorCodeUpdateDTO updateDTO) {
|
|
|
+ public void updateErrorCode(ErrorCodeUpdateDTO updateDTO) {
|
|
|
checkDuplicateErrorCode(updateDTO.getCode(), updateDTO.getId());
|
|
|
// 校验更新的错误码是否存在
|
|
|
if (errorCodeMapper.selectById(updateDTO.getId()) == null) {
|
|
|
throw ServiceExceptionUtil.exception(ERROR_CODE_NOT_EXISTS);
|
|
|
}
|
|
|
// 更新到数据库
|
|
|
- ErrorCodeDO updateObject = ErrorCodeConvert.INSTANCE.convert(updateDTO);
|
|
|
+ ErrorCodeDO updateObject = SysErrorCodeConvert.INSTANCE.convert(updateDTO);
|
|
|
errorCodeMapper.updateById(updateObject);
|
|
|
}
|
|
|
|
|
|
- @Transactional
|
|
|
- public void autoGenerateErrorCodes(@Valid List<ErrorCodeAutoGenerateDTO> autoGenerateDTOs) {
|
|
|
- if (CollUtil.isEmpty(autoGenerateDTOs)) {
|
|
|
- return;
|
|
|
- }
|
|
|
- List<ErrorCodeDO> errorCodeDOs = errorCodeMapper.selectListByCodes(
|
|
|
- CollectionUtils.convertSet(autoGenerateDTOs, ErrorCodeAutoGenerateDTO::getCode));
|
|
|
- Map<Integer, ErrorCodeDO> errorCodeDOMap = CollectionUtils.convertMap(errorCodeDOs, ErrorCodeDO::getCode);
|
|
|
- // 遍历 autoGenerateBOs 数组,逐个插入或更新。考虑到每次量级不大,就不走批量了
|
|
|
- autoGenerateDTOs.forEach(autoGenerateDTO -> {
|
|
|
- ErrorCodeDO errorCodeDO = errorCodeDOMap.get(autoGenerateDTO.getCode());
|
|
|
- // 不存在,则进行新增
|
|
|
- if (errorCodeDO == null) {
|
|
|
- errorCodeDO = ErrorCodeConvert.INSTANCE.convert(autoGenerateDTO)
|
|
|
- .setType(ErrorCodeTypeEnum.AUTO_GENERATION.getType());
|
|
|
- errorCodeMapper.insert(errorCodeDO);
|
|
|
- return;
|
|
|
- }
|
|
|
- // 存在,则进行更新。更新有三个前置条件:
|
|
|
- // 条件 1. 只更新自动生成的错误码,即 Type 为 ErrorCodeTypeEnum.AUTO_GENERATION
|
|
|
- if (!ErrorCodeTypeEnum.AUTO_GENERATION.getType().equals(errorCodeDO.getType())) {
|
|
|
- return;
|
|
|
- }
|
|
|
- // 条件 2. 分组 group 必须匹配,避免存在错误码冲突的情况
|
|
|
- if (!autoGenerateDTO.getGroup().equals(errorCodeDO.getGroup())) {
|
|
|
- log.error("[autoGenerateErrorCodes][自动创建({}/{}) 错误码失败,数据库中已经存在({}/{})]",
|
|
|
- autoGenerateDTO.getCode(), autoGenerateDTO.getGroup(),
|
|
|
- errorCodeDO.getCode(), errorCodeDO.getGroup());
|
|
|
- return;
|
|
|
- }
|
|
|
- // 条件 3. 错误提示语存在差异
|
|
|
- if (autoGenerateDTO.getMessage().equals(errorCodeDO.getMessage())) {
|
|
|
- return;
|
|
|
- }
|
|
|
- // 最终匹配,进行更新
|
|
|
- errorCodeMapper.updateById(new ErrorCodeDO().setId(errorCodeDO.getId()).setMessage(autoGenerateDTO.getMessage()));
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- public CommonResult<Boolean> autoGenerateErrorCodes1(@Valid List<ErrorCodeAutoGenerateDTO> autoGenerateDTOs) {
|
|
|
- autoGenerateErrorCodes(autoGenerateDTOs);
|
|
|
- return success(Boolean.TRUE);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* 删除错误码
|
|
|
*
|
|
@@ -139,7 +94,7 @@ public class ErrorCodeService {
|
|
|
*/
|
|
|
public ErrorCodeVO getErrorCode(Integer errorCodeId) {
|
|
|
ErrorCodeDO errorCodeDO = errorCodeMapper.selectById(errorCodeId);
|
|
|
- return ErrorCodeConvert.INSTANCE.convert(errorCodeDO);
|
|
|
+ return SysErrorCodeConvert.INSTANCE.convert(errorCodeDO);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -150,7 +105,7 @@ public class ErrorCodeService {
|
|
|
*/
|
|
|
public List<ErrorCodeVO> listErrorCodes(List<Integer> errorCodeIds) {
|
|
|
List<ErrorCodeDO> errorCodeDOs = errorCodeMapper.selectBatchIds(errorCodeIds);
|
|
|
- return ErrorCodeConvert.INSTANCE.convertList(errorCodeDOs);
|
|
|
+ return SysErrorCodeConvert.INSTANCE.convertList(errorCodeDOs);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -161,7 +116,7 @@ public class ErrorCodeService {
|
|
|
*/
|
|
|
public PageResult<ErrorCodeVO> pageErrorCode(ErrorCodePageDTO pageDTO) {
|
|
|
IPage<ErrorCodeDO> errorCodeDOPage = errorCodeMapper.selectPage(pageDTO);
|
|
|
- return ErrorCodeConvert.INSTANCE.convertPage(errorCodeDOPage);
|
|
|
+ return SysErrorCodeConvert.INSTANCE.convertPage(errorCodeDOPage);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -186,14 +141,53 @@ public class ErrorCodeService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public List<ErrorCodeVO> listErrorCodes(String group, Date minUpdateTime) {
|
|
|
- List<ErrorCodeDO> errorCodeDOs = errorCodeMapper.selectListByGroup(group, minUpdateTime);
|
|
|
- return ErrorCodeConvert.INSTANCE.convertList(errorCodeDOs);
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public void autoGenerateErrorCodes(List<ErrorCodeAutoGenerateReqDTO> autoGenerateDTOs) {
|
|
|
+ if (CollUtil.isEmpty(autoGenerateDTOs)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 获得错误码
|
|
|
+ List<ErrorCodeDO> errorCodeDOs = errorCodeMapper.selectListByCodes(
|
|
|
+ convertSet(autoGenerateDTOs, ErrorCodeAutoGenerateReqDTO::getCode));
|
|
|
+ Map<Integer, ErrorCodeDO> errorCodeDOMap = convertMap(errorCodeDOs, ErrorCodeDO::getCode);
|
|
|
+
|
|
|
+ // 遍历 autoGenerateBOs 数组,逐个插入或更新。考虑到每次量级不大,就不走批量了
|
|
|
+ autoGenerateDTOs.forEach(autoGenerateDTO -> {
|
|
|
+ ErrorCodeDO errorCodeDO = errorCodeDOMap.get(autoGenerateDTO.getCode());
|
|
|
+ // 不存在,则进行新增
|
|
|
+ if (errorCodeDO == null) {
|
|
|
+ errorCodeDO = SysErrorCodeConvert.INSTANCE.convert(autoGenerateDTO)
|
|
|
+ .setType(SysErrorCodeTypeEnum.AUTO_GENERATION.getType());
|
|
|
+ errorCodeMapper.insert(errorCodeDO);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 存在,则进行更新。更新有三个前置条件:
|
|
|
+ // 条件 1. 只更新自动生成的错误码,即 Type 为 ErrorCodeTypeEnum.AUTO_GENERATION
|
|
|
+ if (!SysErrorCodeTypeEnum.AUTO_GENERATION.getType().equals(errorCodeDO.getType())) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 条件 2. 分组 group 必须匹配,避免存在错误码冲突的情况
|
|
|
+ if (!autoGenerateDTO.getApplicationName().equals(errorCodeDO.getApplicationName())) {
|
|
|
+ log.error("[autoGenerateErrorCodes][自动创建({}/{}) 错误码失败,数据库中已经存在({}/{})]",
|
|
|
+ autoGenerateDTO.getCode(), autoGenerateDTO.getApplicationName(),
|
|
|
+ errorCodeDO.getCode(), errorCodeDO.getApplicationName());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 条件 3. 错误提示语存在差异
|
|
|
+ if (autoGenerateDTO.getMessage().equals(errorCodeDO.getMessage())) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 最终匹配,进行更新
|
|
|
+ errorCodeMapper.updateById(new ErrorCodeDO().setId(errorCodeDO.getId()).setMessage(autoGenerateDTO.getMessage()));
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
- public CommonResult<List<ErrorCodeVO>> listErrorCodes1(String group, Date minUpdateTime) {
|
|
|
- List<ErrorCodeDO> errorCodeDOs = errorCodeMapper.selectListByGroup(group, minUpdateTime);
|
|
|
- return success(ErrorCodeConvert.INSTANCE.convertList(errorCodeDOs));
|
|
|
+ @Override
|
|
|
+ public List<ErrorCodeRespDTO> getErrorCodeList(String applicationName, Date minUpdateTime) {
|
|
|
+ List<ErrorCodeDO> errorCodeDOs = errorCodeMapper.selectListByApplicationNameAndUpdateTimeGt(
|
|
|
+ applicationName, minUpdateTime);
|
|
|
+ return SysErrorCodeConvert.INSTANCE.convertList02(errorCodeDOs);
|
|
|
}
|
|
|
|
|
|
}
|