添加分组

This commit is contained in:
benpaodeyouyusi 2020-05-22 15:42:33 +08:00
parent 4f095309fd
commit 4293fde5ad
14 changed files with 212 additions and 63 deletions

View File

@ -1,11 +1,14 @@
package cn.iocoder.mall.system.biz.convert.errorcode;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.system.biz.bo.errorcode.ErrorCodeBO;
import cn.iocoder.mall.system.biz.dataobject.errorcode.ErrorCodeDO;
import cn.iocoder.mall.system.biz.dto.errorcode.ErrorCodeAddDTO;
import cn.iocoder.mall.system.biz.dto.errorcode.ErrorCodeDTO;
import cn.iocoder.mall.system.biz.dto.errorcode.ErrorCodeUpdateDTO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
import java.util.List;
@ -24,8 +27,8 @@ public interface ErrorCodeConvert {
List<ErrorCodeBO> convertList(List<ErrorCodeDO> beans);
// @Mapping(source = "records", target = "list")
// PageResult<ErrorCodeBO> convertPage(IPage<ErrorCodeDO> page);
@Mapping(source = "records", target = "list")
PageResult<ErrorCodeBO> convertPage(IPage<ErrorCodeDO> page);
ErrorCodeDO convert(ErrorCodeAddDTO bean);

View File

@ -1,12 +1,21 @@
package cn.iocoder.mall.system.biz.dao.errorcode;
import cn.iocoder.mall.mybatis.query.QueryWrapperX;
import cn.iocoder.mall.system.biz.dataobject.authorization.RoleDO;
import cn.iocoder.mall.system.biz.dataobject.errorcode.ErrorCodeDO;
import cn.iocoder.mall.system.biz.dto.authorization.RolePageDTO;
import cn.iocoder.mall.system.biz.dto.errorcode.ErrorCodeDTO;
import cn.iocoder.mall.system.biz.dto.errorcode.ErrorCodePageDTO;
import cn.iocoder.mall.system.biz.enums.SystemErrorCodeEnum;
import cn.iocoder.mall.system.biz.enums.errorcode.ErrorCodeTypeEnum;
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.List;
/**
* @author ding
*/
@ -14,18 +23,23 @@ import org.springframework.stereotype.Repository;
public interface ErrorCodeMapper extends BaseMapper<ErrorCodeDO> {
default ErrorCodeDO selectByCode(Integer code){
//从db查询
ErrorCodeDO errorCodeDO = selectOne(new QueryWrapperX<ErrorCodeDO>().eqIfPresent("code", code));
if (null == errorCodeDO){
//从enum查询
for (SystemErrorCodeEnum item : SystemErrorCodeEnum.values()) {
if(code.equals(item.getCode())){
return new ErrorCodeDO().setCode(item.getCode()).
setId(0).setType(ErrorCodeTypeEnum.SYSTEM.getType());
}
}
}
return null;
return selectOne(new QueryWrapperX<ErrorCodeDO>().eqIfPresent("code", code));
}
default IPage<ErrorCodeDO> selectPage(ErrorCodePageDTO errorCodePageDTO) {
return selectPage(new Page<>(errorCodePageDTO.getPageNo(), errorCodePageDTO.getPageSize()),
new QueryWrapperX<ErrorCodeDO>().likeIfPresent("message", errorCodePageDTO.getMessage()));
}
default List<ErrorCodeDO> selectListByIds(Collection<Integer> ids) {
return selectList(new QueryWrapperX<ErrorCodeDO>().inIfPresent("id", ids));
}
default ErrorCodeDO selectByMessage(String message) {
return selectOne(new QueryWrapperX<ErrorCodeDO>().eqIfPresent("message", message));
}
default List<ErrorCodeDO> selectByGroup(Integer group) {
return selectList(new QueryWrapperX<ErrorCodeDO>().eqIfPresent("group", group));
}
}

View File

@ -31,6 +31,16 @@ public class ErrorCodeDO extends DeletableDO {
*/
private Integer type;
/**
* 错误码分组
*/
private Integer group;
/**
* 错误码备注
*/
private String remark;
// TODO FROM 芋艿 to 鱿鱼丝增加一个分组字段方便做归类
// TODO FROM 芋艿 to 鱿鱼丝增加个备注字段方便做备注哈

View File

@ -18,4 +18,12 @@ public class ErrorCodeAddDTO {
@NotEmpty(message = "错误码错误信息")
private String message;
@NotNull(message = "错误码分组id")
private Integer group;
/**
* 错误码备注
*/
private String remark;
}

View File

@ -17,5 +17,5 @@ public class ErrorCodeGetListDTO {
*
* 如果传入空则不进行错误码编号的过滤
*/
private Collection<Integer> codes;
private Collection<Integer> ids;
}

View File

@ -1,10 +1,15 @@
package cn.iocoder.mall.system.biz.dto.errorcode;
import cn.iocoder.common.framework.vo.PageParam;
import lombok.Data;
/**
* @author ding
*/
@Data
public class ErrorCodePageDTO extends PageParam {
/**
* 错误码信息
*/
private String message;
}

View File

@ -13,10 +13,8 @@ import javax.validation.constraints.NotNull;
@Accessors(chain = true)
public class ErrorCodeUpdateDTO {
/**
* 错误码编号,内置错误码的id是没有的
*/
// TODO FROM 芋艿 to 鱿鱼丝必要的参数校验噢
@NotNull(message = "错误码id不能为空")
private Integer id;
@NotNull(message = "错误码编码不能为空")
@ -29,4 +27,14 @@ public class ErrorCodeUpdateDTO {
* 错误码类型 {@link ErrorCodeTypeEnum}
*/
private Integer type;
/**
* 错误码分组
*/
private Integer group;
/**
* 错误码备注
*/
private String remark;
}

View File

@ -2,17 +2,16 @@ package cn.iocoder.mall.system.biz.service.errorcode;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.system.biz.bo.errorcode.ErrorCodeBO;
import cn.iocoder.mall.system.biz.dto.errorcode.ErrorCodeAddDTO;
import cn.iocoder.mall.system.biz.dto.errorcode.ErrorCodeDeleteDTO;
import cn.iocoder.mall.system.biz.dto.errorcode.ErrorCodePageDTO;
import cn.iocoder.mall.system.biz.dto.errorcode.ErrorCodeUpdateDTO;
import cn.iocoder.mall.system.biz.dataobject.errorcode.ErrorCodeDO;
import cn.iocoder.mall.system.biz.dto.errorcode.*;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @author ding
*/
public interface ErrorCodeService {
public interface ErrorCodeService extends IService<ErrorCodeDO>{
/**
* 根据code查询错误码
* @param code code
@ -24,13 +23,14 @@ public interface ErrorCodeService {
* 从db取出错误码列表数据
* @return db错误码列表
*/
List<ErrorCodeBO> getErrorCodeList();
List<ErrorCodeBO> getErrorCodeList(ErrorCodeGetListDTO errorCodeGetListDTO);
/**
* 取出所有错误码列表数据
* @param group 分组标示
* @return 所有错误码列表
*/
List<ErrorCodeBO> getErrorCodeListAll();
List<ErrorCodeBO> getErrorCodeByGroup(Integer group);
/**
* 分页取出所有错误码列表数据
@ -46,6 +46,13 @@ public interface ErrorCodeService {
*/
Integer addErrorCode(ErrorCodeAddDTO errorCodeAddDTO);
/**
* 批量添加错误码信息
* @param list 错误码集合
* @return
*/
Boolean addErrorCodeList(List<ErrorCodeAddDTO> list);
/**
* 更新错误码系统内置错误码是不允许更新
* @param errorCodeUpdateDTO 错误码信息

View File

@ -8,15 +8,15 @@ import cn.iocoder.mall.system.biz.bo.errorcode.ErrorCodeBO;
import cn.iocoder.mall.system.biz.convert.errorcode.ErrorCodeConvert;
import cn.iocoder.mall.system.biz.dao.errorcode.ErrorCodeMapper;
import cn.iocoder.mall.system.biz.dataobject.errorcode.ErrorCodeDO;
import cn.iocoder.mall.system.biz.dto.errorcode.ErrorCodeAddDTO;
import cn.iocoder.mall.system.biz.dto.errorcode.ErrorCodeDeleteDTO;
import cn.iocoder.mall.system.biz.dto.errorcode.ErrorCodePageDTO;
import cn.iocoder.mall.system.biz.dto.errorcode.ErrorCodeUpdateDTO;
import cn.iocoder.mall.system.biz.dto.errorcode.*;
import cn.iocoder.mall.system.biz.enums.SystemErrorCodeEnum;
import cn.iocoder.mall.system.biz.enums.errorcode.ErrorCodeTypeEnum;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -24,7 +24,7 @@ import java.util.List;
* @author ding
*/
@Service
public class ErrorCodeServiceImpl implements ErrorCodeService {
public class ErrorCodeServiceImpl extends ServiceImpl<ErrorCodeMapper, ErrorCodeDO> implements ErrorCodeService {
@Autowired
private ErrorCodeMapper errorCodeMapper;
@ -36,32 +36,23 @@ public class ErrorCodeServiceImpl implements ErrorCodeService {
}
@Override
public List<ErrorCodeBO> getErrorCodeList() {
public List<ErrorCodeBO> getErrorCodeList(ErrorCodeGetListDTO errorCodeGetListDTO) {
// TODO FROM 芋艿 to 鱿鱼丝QueryWrapperX 只存在 mapper 不直接体现在 Service
List<ErrorCodeDO> list = errorCodeMapper.selectList(new QueryWrapperX<ErrorCodeDO>());
return ErrorCodeConvert.INSTANCE.convertList(list);
return ErrorCodeConvert.INSTANCE.convertList(errorCodeMapper.selectListByIds(errorCodeGetListDTO.getIds()));
}
@Override
public List<ErrorCodeBO> getErrorCodeListAll() {
List<ErrorCodeDO> list = errorCodeMapper.selectList(new QueryWrapperX<ErrorCodeDO>());
public List<ErrorCodeBO> getErrorCodeByGroup(Integer group) {
List<ErrorCodeDO> list = errorCodeMapper.selectByGroup(group);
// TODO FROM 芋艿 to 鱿鱼丝这块微信交流一波哈
for (SystemErrorCodeEnum item : SystemErrorCodeEnum.values()) {
list.add(new ErrorCodeDO().setId(0).setCode(item.getCode()).
setMessage(item.getMessage()).setType(ErrorCodeTypeEnum.SYSTEM.getType()));
}
return ErrorCodeConvert.INSTANCE.convertList(list);
}
@Override
public PageResult<ErrorCodeBO> getErrorCodePage(ErrorCodePageDTO pageDTO) {
List<ErrorCodeDO> list = errorCodeMapper.selectList(new QueryWrapperX<ErrorCodeDO>());
for (SystemErrorCodeEnum item : SystemErrorCodeEnum.values()) {
list.add(new ErrorCodeDO().setId(0).setCode(item.getCode()).
setMessage(item.getMessage()).setType(ErrorCodeTypeEnum.SYSTEM.getType()));
}
return listToPageList(pageDTO.getPageNo(),pageDTO.getPageSize(),list);
IPage<ErrorCodeDO> list = errorCodeMapper.selectPage(pageDTO);
return ErrorCodeConvert.INSTANCE.convertPage(list);
}
@Override
@ -70,7 +61,6 @@ public class ErrorCodeServiceImpl implements ErrorCodeService {
checkDuplicateErrorCode(errorCodeAddDTO.getCode(), null);
// 保存到数据库
ErrorCodeDO errorCode = ErrorCodeConvert.INSTANCE.convert(errorCodeAddDTO);
errorCode.setType(ErrorCodeTypeEnum.CUSTOM.getType());
errorCode.setCreateTime(new Date());
errorCode.setDeleted(DeletedStatusEnum.DELETED_NO.getValue());
errorCodeMapper.insert(errorCode);
@ -79,6 +69,22 @@ public class ErrorCodeServiceImpl implements ErrorCodeService {
return errorCode.getId();
}
@Override
public Boolean addErrorCodeList(List<ErrorCodeAddDTO> list) {
List<ErrorCodeDO> doList = new ArrayList<>();
for (ErrorCodeAddDTO errorCodeAddDTO:list
) {
// 校验错误码
checkDuplicateErrorCode(errorCodeAddDTO.getCode(), null);
ErrorCodeDO errorCode = ErrorCodeConvert.INSTANCE.convert(errorCodeAddDTO);
errorCode.setCreateTime(new Date());
errorCode.setDeleted(DeletedStatusEnum.DELETED_NO.getValue());
doList.add(errorCode);
}
// TODO 插入操作日志
return this.saveBatch(doList);
}
@Override
public void updateErrorCode(ErrorCodeUpdateDTO errorCodeUpdateDTO) {
// 校验错误码是否存在
@ -105,6 +111,10 @@ public class ErrorCodeServiceImpl implements ErrorCodeService {
if (errorCodeDO == null) {
throw ServiceExceptionUtil.exception(SystemErrorCodeEnum.ERROR_CODE_NOT_EXISTS);
}
// 内置错误码不允许删除
if (ErrorCodeTypeEnum.SYSTEM.getType().equals(errorCodeDO.getType())) {
throw ServiceExceptionUtil.exception(SystemErrorCodeEnum.ERROR_CAN_NOT_UPDATE_SYSTEM_TYPE_ERROR);
}
// TODO FROM 芋艿 to 鱿鱼丝不能删除内置错误码
// 更新到数据库标记删除
errorCodeMapper.deleteById(errorCodeDO.getId());
@ -126,17 +136,4 @@ public class ErrorCodeServiceImpl implements ErrorCodeService {
throw ServiceExceptionUtil.exception(SystemErrorCodeEnum.ERROR_CODE_DUPLICATE, errorCodeDO.getCode());
}
}
private PageResult listToPageList(int currentPage, int rows, List list){
// TODO FROM 芋艿 to 鱿鱼须可以直接使用数据库分页哇
currentPage = currentPage * rows;
Integer sum = list.size(); // TODO FROM 芋艿 to 鱿鱼须这里 int 就可以啦一般情况下如果 IDEA 提示警告要尽量去掉噢
if (currentPage + rows > sum){
list = list.subList(currentPage, sum);
}else {
list = list.subList(currentPage, currentPage + rows);
}
// TODO FROM 芋艿 to 鱿鱼丝泛型噢
return new PageResult().setList(list).setTotal(sum);
}
}

View File

@ -20,4 +20,12 @@ public class ErrorCodeAddRequest {
@NotEmpty(message = "错误码编码不能为空")
private Integer code;
@ApiModelProperty(value = "错误码分组,字典表获取")
@NotEmpty(message = "错误码分组不能为空")
private Integer group;
@ApiModelProperty(value = "错误码角色,系统内置(枚举)还是自定义")
@NotEmpty(message = "错误码角色不能空")
private Integer type;
}

View File

@ -1,16 +1,26 @@
package cn.iocoder.mall.system.rpc.api.errorcode;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.system.rpc.request.errorcode.ErrorCodeAddRequest;
import cn.iocoder.mall.system.rpc.request.systemlog.ExceptionLogAddRequest;
import cn.iocoder.mall.system.rpc.response.errorcode.ErrorCodeResponse;
import java.util.List;
/**
* ErrorCode RPC 接口
* 提供其他服务初始化加载错误码到db中同时提供读取该服务的错误码信息
* 同时提供删除接口
* @author ding
*/
public interface ErrorCodeRPC {
CommonResult<List<ErrorCodeResponse>> getErrorCode();
CommonResult<List<ErrorCodeResponse>> getErrorCodeByGroup(Integer group);
CommonResult<Boolean> addErrorCode(ErrorCodeAddRequest errorCodeAddRequest);
CommonResult<Boolean> addErrorCodeList(List<ErrorCodeAddRequest> list);
CommonResult<Boolean> deleteErrorCodeByGroup(Integer group, Integer type);
}

View File

@ -0,0 +1,33 @@
package cn.iocoder.mall.system.rpc.request.errorcode;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
/**
* 错误码模块枚举初始化错误码时使用
* @author ding
*/
@Data
@Accessors(chain = true)
public class ErrorCodeAddRequest implements Serializable {
@ApiModelProperty(value = "错误码信息", required = true)
@NotEmpty(message = "错误码信息不能为空")
private String message;
@ApiModelProperty(value = "错误码编码")
@NotEmpty(message = "错误码编码不能为空")
private Integer code;
@ApiModelProperty(value = "错误码分组,字典表获取")
@NotEmpty(message = "错误码分组不能为空")
private Integer group;
@ApiModelProperty(value = "错误码角色,系统内置(枚举)还是自定义")
@NotEmpty(message = "错误码角色不能空")
private Integer type;
}

View File

@ -1,6 +1,8 @@
package cn.iocoder.mall.system.rpc.convert.errorcode;
import cn.iocoder.mall.system.biz.bo.errorcode.ErrorCodeBO;
import cn.iocoder.mall.system.biz.dto.errorcode.ErrorCodeAddDTO;
import cn.iocoder.mall.system.rpc.request.errorcode.ErrorCodeAddRequest;
import cn.iocoder.mall.system.rpc.response.errorcode.ErrorCodeResponse;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@ -13,4 +15,9 @@ public interface ErrorCodeConvert {
ErrorCodeConvert INSTANCE = Mappers.getMapper(ErrorCodeConvert.class);
List<ErrorCodeResponse> convert(List<ErrorCodeBO> bean);
ErrorCodeAddDTO convert(ErrorCodeAddRequest errorCodeAddRequest);
List<ErrorCodeAddDTO> convertList(List<ErrorCodeAddRequest> bean);
}

View File

@ -6,6 +6,7 @@ import cn.iocoder.mall.system.biz.service.errorcode.ErrorCodeService;
import cn.iocoder.mall.system.rpc.api.errorcode.ErrorCodeRPC;
import cn.iocoder.mall.system.rpc.convert.errorcode.ErrorCodeConvert;
import cn.iocoder.mall.system.rpc.convert.user.UserConvert;
import cn.iocoder.mall.system.rpc.request.errorcode.ErrorCodeAddRequest;
import cn.iocoder.mall.system.rpc.response.errorcode.ErrorCodeResponse;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;
@ -22,9 +23,47 @@ public class ErrorCodeRPCImpl implements ErrorCodeRPC {
@Autowired
private ErrorCodeService errorCodeService;
/**
* 根据分组获取错误码信息
* @param group 分组
* @return 错误码信息
*/
@Override
public CommonResult<List<ErrorCodeResponse>> getErrorCode() {
List<ErrorCodeBO> list = errorCodeService.getErrorCodeListAll();
public CommonResult<List<ErrorCodeResponse>> getErrorCodeByGroup(Integer group) {
List<ErrorCodeBO> list = errorCodeService.getErrorCodeByGroup(group);
return CommonResult.success(ErrorCodeConvert.INSTANCE.convert(list));
}
/**
* 添加错误码信息如果是枚举错误码角色一定是系统内置
* @param errorCodeAddRequest 错误码
* @return 是否成功
*/
@Override
public CommonResult<Boolean> addErrorCode(ErrorCodeAddRequest errorCodeAddRequest) {
errorCodeService.addErrorCode(ErrorCodeConvert.INSTANCE.convert(errorCodeAddRequest));
return CommonResult.success(true);
}
/**
* 批量添加错误码信息
* @param list 错误码信息集合
* @return 是否成功
*/
@Override
public CommonResult<Boolean> addErrorCodeList(List<ErrorCodeAddRequest> list) {
errorCodeService.addErrorCodeList(ErrorCodeConvert.INSTANCE.convertList(list));
return CommonResult.success(true);
}
/**
* 根据分组和角色条件删除错误码信息只能删除db信息删除后会进行校验刷新utils
* @param group 分组
* @param type 角色
* @return 是否成功
*/
@Override
public CommonResult<Boolean> deleteErrorCodeByGroup(Integer group, Integer type) {
return null;
}
}