错误码的 Starter 的初始化,完成
This commit is contained in:
@@ -25,13 +25,12 @@ public interface SystemErrorCodeConstants {
|
||||
ErrorCode ADMIN_NOT_FOUND = new ErrorCode(1002002000, "管理员不存在");
|
||||
ErrorCode ADMIN_PASSWORD_ERROR = new ErrorCode(1002002001, "密码不正确");
|
||||
ErrorCode ADMIN_IS_DISABLE = new ErrorCode(1002002002, "账号被禁用");
|
||||
ErrorCode ADMIN_USERNAME_EXISTS = new ErrorCode(1002002002, "账号已经存在");
|
||||
ErrorCode ADMIN_STATUS_EQUALS = new ErrorCode(1002002003, "账号已经是该状态");
|
||||
// ErrorCode ADMIN_DELETE_ONLY_DISABLE = new ErrorCode(1002002004, "只有关闭的账号才可以删除");
|
||||
ErrorCode ADMIN_USERNAME_EXISTS = new ErrorCode(1002002003, "账号已经存在");
|
||||
ErrorCode ADMIN_STATUS_EQUALS = new ErrorCode(1002002004, "账号已经是该状态");
|
||||
ErrorCode ADMIN_ADMIN_STATUS_CAN_NOT_UPDATE = new ErrorCode(1002002005, "管理员的账号状态不允许变更");
|
||||
ErrorCode ADMIN_ASSIGN_ROLE_NOT_EXISTS = new ErrorCode(1002002006, "分配员工角色时,有角色不存在");
|
||||
ErrorCode ADMIN_ADMIN_CAN_NOT_UPDATE = new ErrorCode(1002002008, "管理员的账号不允许变更");
|
||||
ErrorCode ADMIN_USERNAME_NOT_EXISTS = new ErrorCode(1002002008, "账号不存在");
|
||||
ErrorCode ADMIN_USERNAME_NOT_EXISTS = new ErrorCode(1002002009, "账号不存在");
|
||||
|
||||
// ========== 资源模块 1002003000 ==========
|
||||
ErrorCode RESOURCE_NAME_DUPLICATE = new ErrorCode(1002003000, "已经存在该名字的资源");
|
||||
@@ -49,8 +48,8 @@ public interface SystemErrorCodeConstants {
|
||||
ErrorCode ROLE_CAN_NOT_DELETE_SYSTEM_TYPE_ROLE = new ErrorCode(1002004005, "不能删除类型为系统内置的角色");
|
||||
|
||||
// ========== 数据字典模块 1002005000 ==========
|
||||
ErrorCode DATA_DICT_EXISTS = new ErrorCode(1002005000, "该数据字典已经存在");
|
||||
ErrorCode DATA_DICT_NOT_EXISTS = new ErrorCode(1002005001, "该数据字典不存在");
|
||||
ErrorCode DATA_DICT_EXISTS = new ErrorCode(1002005000, "数据字典已经存在");
|
||||
ErrorCode DATA_DICT_NOT_EXISTS = new ErrorCode(1002005001, "数据字典不存在");
|
||||
|
||||
// ========== 短信模板 1002006000 ==========
|
||||
ErrorCode SMS_PLATFORM_FAIL = new ErrorCode(1002006000, "短信平台调用失败【具体错误会动态替换】");
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
package cn.iocoder.mall.systemservice.enums.errorcode;
|
||||
|
||||
import cn.iocoder.common.framework.core.IntArrayValuable;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* 错误码的类型枚举
|
||||
*
|
||||
@@ -8,7 +12,7 @@ package cn.iocoder.mall.systemservice.enums.errorcode;
|
||||
*
|
||||
* @author ding
|
||||
*/
|
||||
public enum ErrorCodeTypeEnum {
|
||||
public enum ErrorCodeTypeEnum implements IntArrayValuable {
|
||||
|
||||
/**
|
||||
* 自动生成
|
||||
@@ -19,6 +23,8 @@ public enum ErrorCodeTypeEnum {
|
||||
*/
|
||||
MANUAL_OPERATION(2);
|
||||
|
||||
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(ErrorCodeTypeEnum::getType).toArray();
|
||||
|
||||
private final Integer type;
|
||||
|
||||
ErrorCodeTypeEnum(Integer type) {
|
||||
@@ -29,4 +35,9 @@ public enum ErrorCodeTypeEnum {
|
||||
return type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] array() {
|
||||
return ARRAYS;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,16 +1,80 @@
|
||||
package cn.iocoder.mall.systemservice.rpc.errorcode;
|
||||
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.common.framework.vo.PageResult;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeAutoGenerateDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeCreateDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodePageDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeUpdateDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.vo.ErrorCodeVO;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
public interface ErrorCodeRpc {
|
||||
|
||||
CommonResult<List<ErrorCodeVO>> listErrorCodes(String group, Date minUpdateTime);
|
||||
/**
|
||||
* 获得指定分组下的错误码列表
|
||||
*
|
||||
* @param group 错误码分组
|
||||
* @param minUpdateTime 最小更新时间,允许为空。
|
||||
* 通过该参数,我们可以增量获取超过 minUpdateTime 时间的错误码
|
||||
* @return 错误码列表
|
||||
*/
|
||||
CommonResult<List<ErrorCodeVO>> listErrorCodes(@NotNull(message = "错误码分组不能为空") String group, Date minUpdateTime);
|
||||
|
||||
CommonResult<Boolean> autoGenerateErrorCodes(ErrorCodeAutoGenerateDTO autoGenerateDTO);
|
||||
/**
|
||||
* 自动生成错误码
|
||||
*
|
||||
* @param autoGenerateDTOs 自动生成信息 DTO
|
||||
*/
|
||||
CommonResult<Boolean> autoGenerateErrorCodes(List<ErrorCodeAutoGenerateDTO> autoGenerateDTOs);
|
||||
|
||||
/**
|
||||
* 创建错误码
|
||||
*
|
||||
* @param createDTO 创建错误码 DTO
|
||||
* @return 错误码编号
|
||||
*/
|
||||
CommonResult<Integer> createErrorCode(ErrorCodeCreateDTO createDTO);
|
||||
|
||||
/**
|
||||
* 更新错误码
|
||||
*
|
||||
* @param updateDTO 更新错误码 DTO
|
||||
*/
|
||||
CommonResult<Boolean> updateErrorCode(ErrorCodeUpdateDTO updateDTO);
|
||||
|
||||
/**
|
||||
* 删除错误码
|
||||
*
|
||||
* @param errorCodeId 错误码编号
|
||||
*/
|
||||
CommonResult<Boolean> deleteErrorCode(Integer errorCodeId);
|
||||
|
||||
/**
|
||||
* 获得错误码
|
||||
*
|
||||
* @param errorCodeId 错误码编号
|
||||
* @return 错误码
|
||||
*/
|
||||
CommonResult<ErrorCodeVO> getErrorCode(Integer errorCodeId);
|
||||
|
||||
/**
|
||||
* 获得错误码列表
|
||||
*
|
||||
* @param errorCodeIds 错误码编号列表
|
||||
* @return 错误码列表
|
||||
*/
|
||||
CommonResult<List<ErrorCodeVO>> listErrorCodes(List<Integer> errorCodeIds);
|
||||
|
||||
/**
|
||||
* 获得错误码分页
|
||||
*
|
||||
* @param pageDTO 错误码分页查询
|
||||
* @return 错误码分页结果
|
||||
*/
|
||||
CommonResult<PageResult<ErrorCodeVO>> pageErrorCode(ErrorCodePageDTO pageDTO);
|
||||
|
||||
}
|
||||
|
||||
@@ -3,8 +3,13 @@ package cn.iocoder.mall.systemservice.rpc.errorcode.dto;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 错误码自动生成 DTO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class ErrorCodeAutoGenerateDTO implements Serializable {
|
||||
@@ -12,14 +17,17 @@ public class ErrorCodeAutoGenerateDTO implements Serializable {
|
||||
/**
|
||||
* 错误码编码
|
||||
*/
|
||||
@NotNull(message = "错误码编码不能为空")
|
||||
private Integer code;
|
||||
/**
|
||||
* 错误码错误提示
|
||||
*/
|
||||
@NotEmpty(message = "错误码错误提示不能为空")
|
||||
private String message;
|
||||
/**
|
||||
* 错误码分组
|
||||
*/
|
||||
@NotNull(message = "错误码分组不能为空")
|
||||
private String group;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
package cn.iocoder.mall.systemservice.rpc.errorcode.dto;
|
||||
|
||||
import cn.iocoder.common.framework.validator.InEnum;
|
||||
import cn.iocoder.mall.systemservice.enums.errorcode.ErrorCodeTypeEnum;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 错误码创建 DTO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class ErrorCodeCreateDTO implements Serializable {
|
||||
|
||||
/**
|
||||
* 错误码编码
|
||||
*/
|
||||
@NotNull(message = "错误码编码不能为空")
|
||||
private Integer code;
|
||||
/**
|
||||
* 错误码错误提示
|
||||
*/
|
||||
@NotEmpty(message = "错误码错误提示不能为空")
|
||||
private String message;
|
||||
/**
|
||||
* 错误码类型
|
||||
*/
|
||||
@NotNull(message = "错误码类型不能为空")
|
||||
@InEnum(value = ErrorCodeTypeEnum.class, message = "错误码类型必须是 {value}")
|
||||
private Integer type;
|
||||
/**
|
||||
* 错误码分组
|
||||
*/
|
||||
@NotNull(message = "错误码分组不能为空")
|
||||
private String group;
|
||||
/**
|
||||
* 错误码备注
|
||||
*/
|
||||
private String memo;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package cn.iocoder.mall.systemservice.rpc.errorcode.dto;
|
||||
|
||||
import cn.iocoder.common.framework.vo.PageParam;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 错误码分页 DTO
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Accessors(chain = true)
|
||||
public class ErrorCodePageDTO extends PageParam {
|
||||
|
||||
/**
|
||||
* 错误码编码
|
||||
*/
|
||||
private Integer code;
|
||||
/**
|
||||
* 错误码错误提示
|
||||
*
|
||||
* 模糊匹配
|
||||
*/
|
||||
private String message;
|
||||
/**
|
||||
* 错误码分组
|
||||
*
|
||||
* 模糊匹配
|
||||
*/
|
||||
private String group;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package cn.iocoder.mall.systemservice.rpc.errorcode.dto;
|
||||
|
||||
import cn.iocoder.common.framework.validator.InEnum;
|
||||
import cn.iocoder.mall.systemservice.enums.errorcode.ErrorCodeTypeEnum;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 错误码更新 DTO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class ErrorCodeUpdateDTO implements Serializable {
|
||||
|
||||
/**
|
||||
* 错误码编号
|
||||
*/
|
||||
@NotNull(message = "错误码编号不能为空")
|
||||
private Integer id;
|
||||
/**
|
||||
* 错误码编码
|
||||
*/
|
||||
@NotNull(message = "错误码编码不能为空")
|
||||
private Integer code;
|
||||
/**
|
||||
* 错误码错误提示
|
||||
*/
|
||||
private String message;
|
||||
/**
|
||||
* 错误码类型
|
||||
*/
|
||||
@InEnum(value = ErrorCodeTypeEnum.class, message = "错误码类型必须是 {value}")
|
||||
private Integer type;
|
||||
/**
|
||||
* 错误码分组
|
||||
*/
|
||||
private String group;
|
||||
/**
|
||||
* 错误码备注
|
||||
*/
|
||||
private String memo;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package cn.iocoder.mall.systemservice.convert.errorcode;
|
||||
|
||||
import cn.iocoder.common.framework.vo.PageResult;
|
||||
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.errorcode.ErrorCodeDO;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeAutoGenerateDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeCreateDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodePageDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeUpdateDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.vo.ErrorCodeVO;
|
||||
import cn.iocoder.mall.systemservice.service.errorcode.bo.*;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface ErrorCodeConvert {
|
||||
|
||||
ErrorCodeConvert INSTANCE = Mappers.getMapper(ErrorCodeConvert.class);
|
||||
|
||||
ErrorCodeDO convert(ErrorCodeCreateBO bean);
|
||||
|
||||
ErrorCodeBO convert(ErrorCodeDO bean);
|
||||
|
||||
List<ErrorCodeBO> convertList(List<ErrorCodeDO> list);
|
||||
|
||||
@Mapping(source = "records", target = "list")
|
||||
PageResult<ErrorCodeBO> convertPage(IPage<ErrorCodeDO> page);
|
||||
|
||||
ErrorCodeDO convert(ErrorCodeUpdateBO bean);
|
||||
|
||||
ErrorCodeCreateBO convert(ErrorCodeCreateDTO bean);
|
||||
|
||||
ErrorCodeUpdateBO convert(ErrorCodeUpdateDTO bean);
|
||||
|
||||
ErrorCodeVO convert(ErrorCodeBO bean);
|
||||
|
||||
List<ErrorCodeVO> convertList02(List<ErrorCodeBO> list);
|
||||
|
||||
PageResult<ErrorCodeVO> convertPage(PageResult<ErrorCodeBO> page);
|
||||
|
||||
ErrorCodePageBO convert(ErrorCodePageDTO bean);
|
||||
|
||||
ErrorCodeDO convert(ErrorCodeAutoGenerateBO bean);
|
||||
|
||||
List<ErrorCodeAutoGenerateBO> convertList03(List<ErrorCodeAutoGenerateDTO> list);
|
||||
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package cn.iocoder.mall.systemservice.dal.mysql.dataobject.errorcode;
|
||||
|
||||
import cn.iocoder.mall.mybatis.core.dataobject.DeletableDO;
|
||||
import cn.iocoder.mall.systemservice.enums.errorcode.ErrorCodeTypeEnum;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@@ -10,7 +11,7 @@ import lombok.experimental.Accessors;
|
||||
/**
|
||||
* 错误码实体
|
||||
*/
|
||||
@TableName(value = "error_code")
|
||||
@TableName(value = "system_error_code")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Accessors(chain = true)
|
||||
@@ -39,7 +40,8 @@ public class ErrorCodeDO extends DeletableDO {
|
||||
*
|
||||
* 一般情况下,可以采用应用名
|
||||
*/
|
||||
private Integer group;
|
||||
@TableField("`group`") // 避免和数据库关键字冲突
|
||||
private String group;
|
||||
/**
|
||||
* 错误码备注
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package cn.iocoder.mall.systemservice.dal.mysql.mapper.errorcode;
|
||||
|
||||
import cn.iocoder.mall.mybatis.core.query.QueryWrapperX;
|
||||
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.errorcode.ErrorCodeDO;
|
||||
import cn.iocoder.mall.systemservice.service.errorcode.bo.ErrorCodePageBO;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Repository
|
||||
public interface ErrorCodeMapper extends BaseMapper<ErrorCodeDO> {
|
||||
|
||||
default IPage<ErrorCodeDO> selectPage(ErrorCodePageBO pageBO) {
|
||||
return selectPage(new Page<>(pageBO.getPageNo(), pageBO.getPageSize()),
|
||||
new QueryWrapperX<ErrorCodeDO>().likeIfPresent("`group`", pageBO.getGroup())
|
||||
.eqIfPresent("code", pageBO.getCode()).likeIfPresent("message", pageBO.getMessage()));
|
||||
}
|
||||
|
||||
default List<ErrorCodeDO> selectListByCodes(Collection<Integer> codes) {
|
||||
return selectList(new QueryWrapper<ErrorCodeDO>().in("code", codes));
|
||||
}
|
||||
|
||||
default ErrorCodeDO selectByCode(Integer code) {
|
||||
return selectOne(new QueryWrapper<ErrorCodeDO>().eq("code", code));
|
||||
}
|
||||
|
||||
default List<ErrorCodeDO> selectListByGroup(String group, Date minUpdateTime) {
|
||||
return selectList(new QueryWrapperX<ErrorCodeDO>().eq("`group`", group)
|
||||
.gtIfPresent("update_time", minUpdateTime));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
package cn.iocoder.mall.systemservice.manager.errorcode;
|
||||
|
||||
import cn.iocoder.common.framework.vo.PageResult;
|
||||
import cn.iocoder.mall.systemservice.convert.errorcode.ErrorCodeConvert;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeAutoGenerateDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeCreateDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodePageDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeUpdateDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.vo.ErrorCodeVO;
|
||||
import cn.iocoder.mall.systemservice.service.errorcode.ErrorCodeService;
|
||||
import cn.iocoder.mall.systemservice.service.errorcode.bo.ErrorCodeBO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 错误码 Manager
|
||||
*/
|
||||
@Service
|
||||
public class ErrorCodeManager {
|
||||
|
||||
@Autowired
|
||||
private ErrorCodeService errorCodeService;
|
||||
|
||||
/**
|
||||
* 创建错误码
|
||||
*
|
||||
* @param createDTO 创建错误码 DTO
|
||||
* @return 错误码
|
||||
*/
|
||||
public Integer createErrorCode(ErrorCodeCreateDTO createDTO) {
|
||||
ErrorCodeBO errorCodeBO = errorCodeService.createErrorCode(ErrorCodeConvert.INSTANCE.convert(createDTO));
|
||||
return errorCodeBO.getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新错误码
|
||||
*
|
||||
* @param updateDTO 更新错误码 DTO
|
||||
*/
|
||||
public void updateErrorCode(ErrorCodeUpdateDTO updateDTO) {
|
||||
errorCodeService.updateErrorCode(ErrorCodeConvert.INSTANCE.convert(updateDTO));
|
||||
}
|
||||
|
||||
/**
|
||||
* 自动生成错误码
|
||||
*
|
||||
* @param autoGenerateDTOs 自动生成信息 DTO
|
||||
*/
|
||||
public void autoGenerateErrorCodes(List<ErrorCodeAutoGenerateDTO> autoGenerateDTOs) {
|
||||
errorCodeService.autoGenerateErrorCodes(ErrorCodeConvert.INSTANCE.convertList03(autoGenerateDTOs));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除错误码
|
||||
*
|
||||
* @param errorCodeId 错误码编号
|
||||
*/
|
||||
public void deleteErrorCode(Integer errorCodeId) {
|
||||
errorCodeService.deleteErrorCode(errorCodeId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得错误码
|
||||
*
|
||||
* @param errorCodeId 错误码编号
|
||||
* @return 错误码
|
||||
*/
|
||||
public ErrorCodeVO getErrorCode(Integer errorCodeId) {
|
||||
ErrorCodeBO errorCodeBO = errorCodeService.getErrorCode(errorCodeId);
|
||||
return ErrorCodeConvert.INSTANCE.convert(errorCodeBO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得错误码列表
|
||||
*
|
||||
* @param errorCodeIds 错误码编号列表
|
||||
* @return 错误码列表
|
||||
*/
|
||||
public List<ErrorCodeVO> listErrorCodes(List<Integer> errorCodeIds) {
|
||||
List<ErrorCodeBO> errorCodeBOs = errorCodeService.listErrorCodes(errorCodeIds);
|
||||
return ErrorCodeConvert.INSTANCE.convertList02(errorCodeBOs);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得错误码分页
|
||||
*
|
||||
* @param pageDTO 错误码分页查询
|
||||
* @return 错误码分页结果
|
||||
*/
|
||||
public PageResult<ErrorCodeVO> pageErrorCode(ErrorCodePageDTO pageDTO) {
|
||||
PageResult<ErrorCodeBO> pageResultBO = errorCodeService.pageErrorCode(ErrorCodeConvert.INSTANCE.convert(pageDTO));
|
||||
return ErrorCodeConvert.INSTANCE.convertPage(pageResultBO);
|
||||
}
|
||||
|
||||
public List<ErrorCodeVO> listErrorCodes(String group, Date minUpdateTime) {
|
||||
List<ErrorCodeBO> errorCodeBOs = errorCodeService.listErrorCodes(group, minUpdateTime);
|
||||
return ErrorCodeConvert.INSTANCE.convertList02(errorCodeBOs);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,24 +1,68 @@
|
||||
package cn.iocoder.mall.systemservice.rpc.errorcode;
|
||||
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.common.framework.vo.PageResult;
|
||||
import cn.iocoder.mall.systemservice.manager.errorcode.ErrorCodeManager;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeAutoGenerateDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeCreateDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodePageDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeUpdateDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.errorcode.vo.ErrorCodeVO;
|
||||
import org.apache.dubbo.config.annotation.Service;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.iocoder.common.framework.vo.CommonResult.success;
|
||||
|
||||
@Service(version = "${dubbo.provider.ErrorCodeRpc.version}")
|
||||
public class ErrorCodeRpcImpl implements ErrorCodeRpc {
|
||||
|
||||
@Autowired
|
||||
private ErrorCodeManager errorCodeManager;
|
||||
|
||||
@Override
|
||||
public CommonResult<List<ErrorCodeVO>> listErrorCodes(String group, Date minUpdateTime) {
|
||||
return null;
|
||||
return success(errorCodeManager.listErrorCodes(group, minUpdateTime));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> autoGenerateErrorCodes(ErrorCodeAutoGenerateDTO autoGenerateDTO) {
|
||||
return null;
|
||||
public CommonResult<Boolean> autoGenerateErrorCodes(List<ErrorCodeAutoGenerateDTO> autoGenerateDTOs) {
|
||||
errorCodeManager.autoGenerateErrorCodes(autoGenerateDTOs);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Integer> createErrorCode(ErrorCodeCreateDTO createDTO) {
|
||||
return success(errorCodeManager.createErrorCode(createDTO));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> updateErrorCode(ErrorCodeUpdateDTO updateDTO) {
|
||||
errorCodeManager.updateErrorCode(updateDTO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> deleteErrorCode(Integer errorCodeId) {
|
||||
errorCodeManager.deleteErrorCode(errorCodeId);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<ErrorCodeVO> getErrorCode(Integer errorCodeId) {
|
||||
return success(errorCodeManager.getErrorCode(errorCodeId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<List<ErrorCodeVO>> listErrorCodes(List<Integer> errorCodeIds) {
|
||||
return success(errorCodeManager.listErrorCodes(errorCodeIds));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<PageResult<ErrorCodeVO>> pageErrorCode(ErrorCodePageDTO pageDTO) {
|
||||
return success(errorCodeManager.pageErrorCode(pageDTO));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,181 @@
|
||||
package cn.iocoder.mall.systemservice.service.errorcode;
|
||||
|
||||
import cn.iocoder.common.framework.util.CollectionUtils;
|
||||
import cn.iocoder.common.framework.util.ServiceExceptionUtil;
|
||||
import cn.iocoder.common.framework.vo.PageResult;
|
||||
import cn.iocoder.mall.systemservice.convert.errorcode.ErrorCodeConvert;
|
||||
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.errorcode.ErrorCodeDO;
|
||||
import cn.iocoder.mall.systemservice.dal.mysql.mapper.errorcode.ErrorCodeMapper;
|
||||
import cn.iocoder.mall.systemservice.enums.errorcode.ErrorCodeTypeEnum;
|
||||
import cn.iocoder.mall.systemservice.service.errorcode.bo.*;
|
||||
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 java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static cn.iocoder.mall.systemservice.enums.SystemErrorCodeConstants.ERROR_CODE_DUPLICATE;
|
||||
import static cn.iocoder.mall.systemservice.enums.SystemErrorCodeConstants.ERROR_CODE_NOT_EXISTS;
|
||||
|
||||
/**
|
||||
* 错误码 Service
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
@Slf4j
|
||||
public class ErrorCodeService {
|
||||
|
||||
@Autowired
|
||||
private ErrorCodeMapper errorCodeMapper;
|
||||
|
||||
/**
|
||||
* 创建错误码
|
||||
*
|
||||
* @param createBO 创建错误码 BO
|
||||
* @return 错误码
|
||||
*/
|
||||
public ErrorCodeBO createErrorCode(@Valid ErrorCodeCreateBO createBO) {
|
||||
checkDuplicateErrorCode(createBO.getCode(), null);
|
||||
// 插入到数据库
|
||||
ErrorCodeDO errorCodeDO = ErrorCodeConvert.INSTANCE.convert(createBO);
|
||||
errorCodeMapper.insert(errorCodeDO);
|
||||
// 返回
|
||||
return ErrorCodeConvert.INSTANCE.convert(errorCodeDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新错误码
|
||||
*
|
||||
* @param updateBO 更新错误码 BO
|
||||
*/
|
||||
public void updateErrorCode(@Valid ErrorCodeUpdateBO updateBO) {
|
||||
checkDuplicateErrorCode(updateBO.getCode(), updateBO.getId());
|
||||
// 校验更新的错误码是否存在
|
||||
if (errorCodeMapper.selectById(updateBO.getId()) == null) {
|
||||
throw ServiceExceptionUtil.exception(ERROR_CODE_NOT_EXISTS);
|
||||
}
|
||||
// 更新到数据库
|
||||
ErrorCodeDO updateObject = ErrorCodeConvert.INSTANCE.convert(updateBO);
|
||||
errorCodeMapper.updateById(updateObject);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void autoGenerateErrorCodes(@Valid List<ErrorCodeAutoGenerateBO> autoGenerateBOs) {
|
||||
if (CollectionUtils.isEmpty(autoGenerateBOs)) {
|
||||
return;
|
||||
}
|
||||
List<ErrorCodeDO> errorCodeDOs = errorCodeMapper.selectListByCodes(
|
||||
CollectionUtils.convertSet(autoGenerateBOs, ErrorCodeAutoGenerateBO::getCode));
|
||||
Map<Integer, ErrorCodeDO> errorCodeDOMap = CollectionUtils.convertMap(errorCodeDOs, ErrorCodeDO::getCode);
|
||||
// 遍历 autoGenerateBOs 数组,逐个插入或更新。考虑到每次量级不大,就不走批量了
|
||||
autoGenerateBOs.forEach(autoGenerateBO -> {
|
||||
ErrorCodeDO errorCodeDO = errorCodeDOMap.get(autoGenerateBO.getCode());
|
||||
// 不存在,则进行新增
|
||||
if (errorCodeDO == null) {
|
||||
errorCodeDO = ErrorCodeConvert.INSTANCE.convert(autoGenerateBO)
|
||||
.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 (!autoGenerateBO.getGroup().equals(errorCodeDO.getGroup())) {
|
||||
log.error("[autoGenerateErrorCodes][自动创建({}/{}) 错误码失败,数据库中已经存在({}/{})]",
|
||||
autoGenerateBO.getCode(), autoGenerateBO.getGroup(),
|
||||
errorCodeDO.getCode(), errorCodeDO.getGroup());
|
||||
return;
|
||||
}
|
||||
// 条件 3. 错误提示语存在差异
|
||||
if (autoGenerateBO.getMessage().equals(errorCodeDO.getMessage())) {
|
||||
return;
|
||||
}
|
||||
// 最终匹配,进行更新
|
||||
errorCodeMapper.updateById(new ErrorCodeDO().setId(errorCodeDO.getId()).setMessage(autoGenerateBO.getMessage()));
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除错误码
|
||||
*
|
||||
* @param errorCodeId 错误码编号
|
||||
*/
|
||||
public void deleteErrorCode(Integer errorCodeId) {
|
||||
// 校验删除的错误码是否存在
|
||||
if (errorCodeMapper.selectById(errorCodeId) == null) {
|
||||
throw ServiceExceptionUtil.exception(ERROR_CODE_NOT_EXISTS);
|
||||
}
|
||||
// 标记删除
|
||||
errorCodeMapper.deleteById(errorCodeId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得错误码
|
||||
*
|
||||
* @param errorCodeId 错误码编号
|
||||
* @return 错误码
|
||||
*/
|
||||
public ErrorCodeBO getErrorCode(Integer errorCodeId) {
|
||||
ErrorCodeDO errorCodeDO = errorCodeMapper.selectById(errorCodeId);
|
||||
return ErrorCodeConvert.INSTANCE.convert(errorCodeDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得错误码列表
|
||||
*
|
||||
* @param errorCodeIds 错误码编号列表
|
||||
* @return 错误码列表
|
||||
*/
|
||||
public List<ErrorCodeBO> listErrorCodes(List<Integer> errorCodeIds) {
|
||||
List<ErrorCodeDO> errorCodeDOs = errorCodeMapper.selectBatchIds(errorCodeIds);
|
||||
return ErrorCodeConvert.INSTANCE.convertList(errorCodeDOs);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得错误码分页
|
||||
*
|
||||
* @param pageBO 错误码分页查询
|
||||
* @return 错误码分页结果
|
||||
*/
|
||||
public PageResult<ErrorCodeBO> pageErrorCode(ErrorCodePageBO pageBO) {
|
||||
IPage<ErrorCodeDO> errorCodeDOPage = errorCodeMapper.selectPage(pageBO);
|
||||
return ErrorCodeConvert.INSTANCE.convertPage(errorCodeDOPage);
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验错误码的唯一字段是否重复
|
||||
*
|
||||
* 是否存在相同编码的错误码
|
||||
*
|
||||
* @param code 错误码编码
|
||||
* @param id 错误码编号
|
||||
*/
|
||||
private void checkDuplicateErrorCode(Integer code, Integer id) {
|
||||
ErrorCodeDO errorCodeDO = errorCodeMapper.selectByCode(code);
|
||||
if (errorCodeDO == null) {
|
||||
return;
|
||||
}
|
||||
// 如果 id 为空,说明不用比较是否为相同 id 的错误码
|
||||
if (id == null) {
|
||||
throw ServiceExceptionUtil.exception(ERROR_CODE_DUPLICATE);
|
||||
}
|
||||
if (!errorCodeDO.getId().equals(id)) {
|
||||
throw ServiceExceptionUtil.exception(ERROR_CODE_DUPLICATE);
|
||||
}
|
||||
}
|
||||
|
||||
public List<ErrorCodeBO> listErrorCodes(String group, Date minUpdateTime) {
|
||||
List<ErrorCodeDO> errorCodeDOs = errorCodeMapper.selectListByGroup(group, minUpdateTime);
|
||||
return ErrorCodeConvert.INSTANCE.convertList(errorCodeDOs);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package cn.iocoder.mall.systemservice.service.errorcode.bo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 错误码自动生成 BO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class ErrorCodeAutoGenerateBO implements Serializable {
|
||||
|
||||
/**
|
||||
* 错误码编码
|
||||
*/
|
||||
@NotNull(message = "错误码编码不能为空")
|
||||
private Integer code;
|
||||
/**
|
||||
* 错误码错误提示
|
||||
*/
|
||||
@NotEmpty(message = "错误码错误提示不能为空")
|
||||
private String message;
|
||||
/**
|
||||
* 错误码分组
|
||||
*/
|
||||
@NotNull(message = "错误码分组不能为空")
|
||||
private String group;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package cn.iocoder.mall.systemservice.service.errorcode.bo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 错误码 BO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class ErrorCodeBO {
|
||||
|
||||
/**
|
||||
* 错误码编号
|
||||
*/
|
||||
private Integer id;
|
||||
/**
|
||||
* 错误码编码
|
||||
*/
|
||||
private Integer code;
|
||||
/**
|
||||
* 错误码错误提示
|
||||
*/
|
||||
private String message;
|
||||
/**
|
||||
* 错误码类型
|
||||
*/
|
||||
private Integer type;
|
||||
/**
|
||||
* 错误码分组
|
||||
*/
|
||||
private String group;
|
||||
/**
|
||||
* 错误码备注
|
||||
*/
|
||||
private String memo;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
/**
|
||||
* 最后更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package cn.iocoder.mall.systemservice.service.errorcode.bo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 错误码创建 BO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class ErrorCodeCreateBO {
|
||||
|
||||
/**
|
||||
* 错误码编码
|
||||
*/
|
||||
@NotNull(message = "错误码编码不能为空")
|
||||
private Integer code;
|
||||
/**
|
||||
* 错误码错误提示
|
||||
*/
|
||||
@NotEmpty(message = "错误码错误提示不能为空")
|
||||
private String message;
|
||||
/**
|
||||
* 错误码类型
|
||||
*/
|
||||
@NotNull(message = "错误码类型不能为空")
|
||||
private Integer type;
|
||||
/**
|
||||
* 错误码分组
|
||||
*/
|
||||
private String group;
|
||||
/**
|
||||
* 错误码备注
|
||||
*/
|
||||
private String memo;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package cn.iocoder.mall.systemservice.service.errorcode.bo;
|
||||
|
||||
import cn.iocoder.common.framework.vo.PageParam;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 错误码分页 BO
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Accessors(chain = true)
|
||||
public class ErrorCodePageBO extends PageParam {
|
||||
|
||||
/**
|
||||
* 错误码编码
|
||||
*/
|
||||
private Integer code;
|
||||
/**
|
||||
* 错误码错误提示
|
||||
*/
|
||||
private String message;
|
||||
/**
|
||||
* 错误码分组
|
||||
*/
|
||||
private String group;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package cn.iocoder.mall.systemservice.service.errorcode.bo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 错误码更新 BO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class ErrorCodeUpdateBO {
|
||||
|
||||
/**
|
||||
* 错误码编号
|
||||
*/
|
||||
@NotNull(message = "错误码编号不能为空")
|
||||
private Integer id;
|
||||
/**
|
||||
* 错误码编码
|
||||
*/
|
||||
@NotNull(message = "错误码编码不能为空")
|
||||
private Integer code;
|
||||
/**
|
||||
* 错误码错误提示
|
||||
*/
|
||||
@NotEmpty(message = "错误码错误提示不能为空")
|
||||
private String message;
|
||||
/**
|
||||
* 错误码类型
|
||||
*/
|
||||
@NotNull(message = "错误码类型不能为空")
|
||||
private Integer type;
|
||||
/**
|
||||
* 错误码分组
|
||||
*/
|
||||
private String group;
|
||||
/**
|
||||
* 错误码备注
|
||||
*/
|
||||
private String memo;
|
||||
|
||||
}
|
||||
@@ -54,8 +54,14 @@ dubbo:
|
||||
version: 1.0.0
|
||||
ErrorCodeRpc:
|
||||
version: 1.0.0
|
||||
# Dubbo 服务消费者的配置
|
||||
consumer:
|
||||
ErrorCodeRpc:
|
||||
version: 1.0.0
|
||||
|
||||
# Mall 配置项
|
||||
mall:
|
||||
# 错误码配置项对应 ErrorCodeProperties 配置类
|
||||
error-code:
|
||||
group: ${spring.application.name}
|
||||
constants-class: cn.iocoder.mall.systemservice.enums.SystemErrorCodeConstants
|
||||
|
||||
Reference in New Issue
Block a user