infra:完善 config 的单元测试
This commit is contained in:
parent
df65b88fe9
commit
f620bc3fec
@ -1,6 +1,5 @@
|
|||||||
package cn.iocoder.yudao.module.infra.controller.admin.config;
|
package cn.iocoder.yudao.module.infra.controller.admin.config;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||||
@ -23,6 +22,7 @@ import javax.validation.Valid;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
|
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ public class ConfigController {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (!config.getVisible()) {
|
if (!config.getVisible()) {
|
||||||
throw ServiceExceptionUtil.exception(ErrorCodeConstants.CONFIG_GET_VALUE_ERROR_IF_VISIBLE);
|
throw exception(ErrorCodeConstants.CONFIG_GET_VALUE_ERROR_IF_VISIBLE);
|
||||||
}
|
}
|
||||||
return success(config.getValue());
|
return success(config.getValue());
|
||||||
}
|
}
|
||||||
@ -93,8 +93,8 @@ public class ConfigController {
|
|||||||
@ApiOperation("导出参数配置")
|
@ApiOperation("导出参数配置")
|
||||||
@PreAuthorize("@ss.hasPermission('infra:config:export')")
|
@PreAuthorize("@ss.hasPermission('infra:config:export')")
|
||||||
@OperateLog(type = EXPORT)
|
@OperateLog(type = EXPORT)
|
||||||
public void exportSysConfig(@Valid ConfigExportReqVO reqVO,
|
public void exportConfig(@Valid ConfigExportReqVO reqVO,
|
||||||
HttpServletResponse response) throws IOException {
|
HttpServletResponse response) throws IOException {
|
||||||
List<ConfigDO> list = configService.getConfigList(reqVO);
|
List<ConfigDO> list = configService.getConfigList(reqVO);
|
||||||
// 拼接数据
|
// 拼接数据
|
||||||
List<ConfigExcelVO> datas = ConfigConvert.INSTANCE.convertList(list);
|
List<ConfigExcelVO> datas = ConfigConvert.INSTANCE.convertList(list);
|
||||||
|
@ -9,7 +9,6 @@ import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigUpdateReqV
|
|||||||
import cn.iocoder.yudao.module.infra.convert.config.ConfigConvert;
|
import cn.iocoder.yudao.module.infra.convert.config.ConfigConvert;
|
||||||
import cn.iocoder.yudao.module.infra.dal.dataobject.config.ConfigDO;
|
import cn.iocoder.yudao.module.infra.dal.dataobject.config.ConfigDO;
|
||||||
import cn.iocoder.yudao.module.infra.dal.mysql.config.ConfigMapper;
|
import cn.iocoder.yudao.module.infra.dal.mysql.config.ConfigMapper;
|
||||||
import cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants;
|
|
||||||
import cn.iocoder.yudao.module.infra.enums.config.ConfigTypeEnum;
|
import cn.iocoder.yudao.module.infra.enums.config.ConfigTypeEnum;
|
||||||
import com.google.common.annotations.VisibleForTesting;
|
import com.google.common.annotations.VisibleForTesting;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -20,6 +19,7 @@ import javax.annotation.Resource;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 参数配置 Service 实现类
|
* 参数配置 Service 实现类
|
||||||
@ -35,7 +35,7 @@ public class ConfigServiceImpl implements ConfigService {
|
|||||||
@Override
|
@Override
|
||||||
public Long createConfig(ConfigCreateReqVO reqVO) {
|
public Long createConfig(ConfigCreateReqVO reqVO) {
|
||||||
// 校验正确性
|
// 校验正确性
|
||||||
checkCreateOrUpdate(null, reqVO.getKey());
|
validateConfigForCreateOrUpdate(null, reqVO.getKey());
|
||||||
// 插入参数配置
|
// 插入参数配置
|
||||||
ConfigDO config = ConfigConvert.INSTANCE.convert(reqVO);
|
ConfigDO config = ConfigConvert.INSTANCE.convert(reqVO);
|
||||||
config.setType(ConfigTypeEnum.CUSTOM.getType());
|
config.setType(ConfigTypeEnum.CUSTOM.getType());
|
||||||
@ -46,19 +46,19 @@ public class ConfigServiceImpl implements ConfigService {
|
|||||||
@Override
|
@Override
|
||||||
public void updateConfig(ConfigUpdateReqVO reqVO) {
|
public void updateConfig(ConfigUpdateReqVO reqVO) {
|
||||||
// 校验正确性
|
// 校验正确性
|
||||||
checkCreateOrUpdate(reqVO.getId(), null); // 不允许更新 key
|
validateConfigForCreateOrUpdate(reqVO.getId(), null); // 不允许更新 key
|
||||||
// 更新参数配置
|
// 更新参数配置
|
||||||
ConfigDO updateObj = ConfigConvert.INSTANCE.convert(reqVO);
|
ConfigDO updateObj = ConfigConvert.INSTANCE.convert(reqVO);
|
||||||
configMapper.updateById(updateObj);;
|
configMapper.updateById(updateObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteConfig(Long id) {
|
public void deleteConfig(Long id) {
|
||||||
// 校验配置存在
|
// 校验配置存在
|
||||||
ConfigDO config = checkConfigExists(id);
|
ConfigDO config = validateConfigExists(id);
|
||||||
// 内置配置,不允许删除
|
// 内置配置,不允许删除
|
||||||
if (ConfigTypeEnum.SYSTEM.getType().equals(config.getType())) {
|
if (ConfigTypeEnum.SYSTEM.getType().equals(config.getType())) {
|
||||||
throw exception(ErrorCodeConstants.CONFIG_CAN_NOT_DELETE_SYSTEM_TYPE);
|
throw exception(CONFIG_CAN_NOT_DELETE_SYSTEM_TYPE);
|
||||||
}
|
}
|
||||||
// 删除
|
// 删除
|
||||||
configMapper.deleteById(id);
|
configMapper.deleteById(id);
|
||||||
@ -84,39 +84,39 @@ public class ConfigServiceImpl implements ConfigService {
|
|||||||
return configMapper.selectList(reqVO);
|
return configMapper.selectList(reqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkCreateOrUpdate(Long id, String key) {
|
private void validateConfigForCreateOrUpdate(Long id, String key) {
|
||||||
// 校验自己存在
|
// 校验自己存在
|
||||||
checkConfigExists(id);
|
validateConfigExists(id);
|
||||||
// 校验参数配置 key 的唯一性
|
// 校验参数配置 key 的唯一性
|
||||||
if (StrUtil.isNotEmpty(key)) {
|
if (StrUtil.isNotEmpty(key)) {
|
||||||
checkConfigKeyUnique(id, key);
|
validateConfigKeyUnique(id, key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
public ConfigDO checkConfigExists(Long id) {
|
public ConfigDO validateConfigExists(Long id) {
|
||||||
if (id == null) {
|
if (id == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ConfigDO config = configMapper.selectById(id);
|
ConfigDO config = configMapper.selectById(id);
|
||||||
if (config == null) {
|
if (config == null) {
|
||||||
throw exception(ErrorCodeConstants.CONFIG_NOT_EXISTS);
|
throw exception(CONFIG_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
public void checkConfigKeyUnique(Long id, String key) {
|
public void validateConfigKeyUnique(Long id, String key) {
|
||||||
ConfigDO config = configMapper.selectByKey(key);
|
ConfigDO config = configMapper.selectByKey(key);
|
||||||
if (config == null) {
|
if (config == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 如果 id 为空,说明不用比较是否为相同 id 的参数配置
|
// 如果 id 为空,说明不用比较是否为相同 id 的参数配置
|
||||||
if (id == null) {
|
if (id == null) {
|
||||||
throw exception(ErrorCodeConstants.CONFIG_KEY_DUPLICATE);
|
throw exception(CONFIG_KEY_DUPLICATE);
|
||||||
}
|
}
|
||||||
if (!config.getId().equals(id)) {
|
if (!config.getId().equals(id)) {
|
||||||
throw exception(ErrorCodeConstants.CONFIG_KEY_DUPLICATE);
|
throw exception(CONFIG_KEY_DUPLICATE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.infra.service.config;
|
|||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
|
import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
|
|
||||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||||
import cn.iocoder.yudao.framework.test.core.util.RandomUtils;
|
import cn.iocoder.yudao.framework.test.core.util.RandomUtils;
|
||||||
import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigCreateReqVO;
|
import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigCreateReqVO;
|
||||||
@ -12,24 +11,22 @@ import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigUpdateReqV
|
|||||||
import cn.iocoder.yudao.module.infra.dal.dataobject.config.ConfigDO;
|
import cn.iocoder.yudao.module.infra.dal.dataobject.config.ConfigDO;
|
||||||
import cn.iocoder.yudao.module.infra.dal.mysql.config.ConfigMapper;
|
import cn.iocoder.yudao.module.infra.dal.mysql.config.ConfigMapper;
|
||||||
import cn.iocoder.yudao.module.infra.enums.config.ConfigTypeEnum;
|
import cn.iocoder.yudao.module.infra.enums.config.ConfigTypeEnum;
|
||||||
import org.junit.jupiter.api.Assertions;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.context.annotation.Import;
|
import org.springframework.context.annotation.Import;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import static cn.hutool.core.util.RandomUtil.randomEle;
|
import static cn.hutool.core.util.RandomUtil.randomEle;
|
||||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
|
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime;
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildTime;
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
|
||||||
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
|
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
|
||||||
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
|
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
|
||||||
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
|
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
|
||||||
import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.*;
|
import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.*;
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.mockito.Mockito.times;
|
|
||||||
import static org.mockito.Mockito.verify;
|
|
||||||
|
|
||||||
@Import(ConfigServiceImpl.class)
|
@Import(ConfigServiceImpl.class)
|
||||||
public class ConfigServiceTest extends BaseDbUnitTest {
|
public class ConfigServiceTest extends BaseDbUnitTest {
|
||||||
@ -52,7 +49,7 @@ public class ConfigServiceTest extends BaseDbUnitTest {
|
|||||||
// 校验记录的属性是否正确
|
// 校验记录的属性是否正确
|
||||||
ConfigDO config = configMapper.selectById(configId);
|
ConfigDO config = configMapper.selectById(configId);
|
||||||
assertPojoEquals(reqVO, config);
|
assertPojoEquals(reqVO, config);
|
||||||
Assertions.assertEquals(ConfigTypeEnum.CUSTOM.getType(), config.getType());
|
assertEquals(ConfigTypeEnum.CUSTOM.getType(), config.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -103,40 +100,40 @@ public class ConfigServiceTest extends BaseDbUnitTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCheckConfigExists_success() {
|
public void testValidateConfigExists_success() {
|
||||||
// mock 数据
|
// mock 数据
|
||||||
ConfigDO dbConfigDO = randomConfigDO();
|
ConfigDO dbConfigDO = randomConfigDO();
|
||||||
configMapper.insert(dbConfigDO);// @Sql: 先插入出一条存在的数据
|
configMapper.insert(dbConfigDO);// @Sql: 先插入出一条存在的数据
|
||||||
|
|
||||||
// 调用成功
|
// 调用成功
|
||||||
configService.checkConfigExists(dbConfigDO.getId());
|
configService.validateConfigExists(dbConfigDO.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCheckConfigExist_notExists() {
|
public void testValidateConfigExist_notExists() {
|
||||||
assertServiceException(() -> configService.checkConfigExists(randomLongId()), CONFIG_NOT_EXISTS);
|
assertServiceException(() -> configService.validateConfigExists(randomLongId()), CONFIG_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCheckConfigKeyUnique_success() {
|
public void testValidateConfigKeyUnique_success() {
|
||||||
// 调用,成功
|
// 调用,成功
|
||||||
configService.checkConfigKeyUnique(randomLongId(), randomString());
|
configService.validateConfigKeyUnique(randomLongId(), randomString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCheckConfigKeyUnique_keyDuplicateForCreate() {
|
public void testValidateConfigKeyUnique_keyDuplicateForCreate() {
|
||||||
// 准备参数
|
// 准备参数
|
||||||
String key = randomString();
|
String key = randomString();
|
||||||
// mock 数据
|
// mock 数据
|
||||||
configMapper.insert(randomConfigDO(o -> o.setConfigKey(key)));
|
configMapper.insert(randomConfigDO(o -> o.setConfigKey(key)));
|
||||||
|
|
||||||
// 调用,校验异常
|
// 调用,校验异常
|
||||||
assertServiceException(() -> configService.checkConfigKeyUnique(null, key),
|
assertServiceException(() -> configService.validateConfigKeyUnique(null, key),
|
||||||
CONFIG_KEY_DUPLICATE);
|
CONFIG_KEY_DUPLICATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCheckConfigKeyUnique_keyDuplicateForUpdate() {
|
public void testValidateConfigKeyUnique_keyDuplicateForUpdate() {
|
||||||
// 准备参数
|
// 准备参数
|
||||||
Long id = randomLongId();
|
Long id = randomLongId();
|
||||||
String key = randomString();
|
String key = randomString();
|
||||||
@ -144,7 +141,7 @@ public class ConfigServiceTest extends BaseDbUnitTest {
|
|||||||
configMapper.insert(randomConfigDO(o -> o.setConfigKey(key)));
|
configMapper.insert(randomConfigDO(o -> o.setConfigKey(key)));
|
||||||
|
|
||||||
// 调用,校验异常
|
// 调用,校验异常
|
||||||
assertServiceException(() -> configService.checkConfigKeyUnique(id, key),
|
assertServiceException(() -> configService.validateConfigKeyUnique(id, key),
|
||||||
CONFIG_KEY_DUPLICATE);
|
CONFIG_KEY_DUPLICATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,23 +152,23 @@ public class ConfigServiceTest extends BaseDbUnitTest {
|
|||||||
o.setName("芋艿");
|
o.setName("芋艿");
|
||||||
o.setConfigKey("yunai");
|
o.setConfigKey("yunai");
|
||||||
o.setType(ConfigTypeEnum.SYSTEM.getType());
|
o.setType(ConfigTypeEnum.SYSTEM.getType());
|
||||||
o.setCreateTime(buildLocalDateTime(2021, 2, 1));
|
o.setCreateTime(buildTime(2021, 2, 1));
|
||||||
});
|
});
|
||||||
configMapper.insert(dbConfig);
|
configMapper.insert(dbConfig);
|
||||||
// 测试 name 不匹配
|
// 测试 name 不匹配
|
||||||
configMapper.insert(ObjectUtils.cloneIgnoreId(dbConfig, o -> o.setName("土豆")));
|
configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setName("土豆")));
|
||||||
// 测试 key 不匹配
|
// 测试 key 不匹配
|
||||||
configMapper.insert(ObjectUtils.cloneIgnoreId(dbConfig, o -> o.setConfigKey("tudou")));
|
configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setConfigKey("tudou")));
|
||||||
// 测试 type 不匹配
|
// 测试 type 不匹配
|
||||||
configMapper.insert(ObjectUtils.cloneIgnoreId(dbConfig, o -> o.setType(ConfigTypeEnum.CUSTOM.getType())));
|
configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setType(ConfigTypeEnum.CUSTOM.getType())));
|
||||||
// 测试 createTime 不匹配
|
// 测试 createTime 不匹配
|
||||||
configMapper.insert(ObjectUtils.cloneIgnoreId(dbConfig, o -> o.setCreateTime(buildLocalDateTime(2021, 1, 1))));
|
configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setCreateTime(buildTime(2021, 1, 1))));
|
||||||
// 准备参数
|
// 准备参数
|
||||||
ConfigPageReqVO reqVO = new ConfigPageReqVO();
|
ConfigPageReqVO reqVO = new ConfigPageReqVO();
|
||||||
reqVO.setName("艿");
|
reqVO.setName("艿");
|
||||||
reqVO.setKey("nai");
|
reqVO.setKey("nai");
|
||||||
reqVO.setType(ConfigTypeEnum.SYSTEM.getType());
|
reqVO.setType(ConfigTypeEnum.SYSTEM.getType());
|
||||||
reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021, 1, 15),buildLocalDateTime(2021, 2, 15)}));
|
reqVO.setCreateTime(buildBetweenTime(2021, 1, 15, 2021, 2, 15));
|
||||||
|
|
||||||
// 调用
|
// 调用
|
||||||
PageResult<ConfigDO> pageResult = configService.getConfigPage(reqVO);
|
PageResult<ConfigDO> pageResult = configService.getConfigPage(reqVO);
|
||||||
@ -188,23 +185,23 @@ public class ConfigServiceTest extends BaseDbUnitTest {
|
|||||||
o.setName("芋艿");
|
o.setName("芋艿");
|
||||||
o.setConfigKey("yunai");
|
o.setConfigKey("yunai");
|
||||||
o.setType(ConfigTypeEnum.SYSTEM.getType());
|
o.setType(ConfigTypeEnum.SYSTEM.getType());
|
||||||
o.setCreateTime(buildLocalDateTime(2021, 2, 1));
|
o.setCreateTime(buildTime(2021, 2, 1));
|
||||||
});
|
});
|
||||||
configMapper.insert(dbConfig);
|
configMapper.insert(dbConfig);
|
||||||
// 测试 name 不匹配
|
// 测试 name 不匹配
|
||||||
configMapper.insert(ObjectUtils.cloneIgnoreId(dbConfig, o -> o.setName("土豆")));
|
configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setName("土豆")));
|
||||||
// 测试 key 不匹配
|
// 测试 key 不匹配
|
||||||
configMapper.insert(ObjectUtils.cloneIgnoreId(dbConfig, o -> o.setConfigKey("tudou")));
|
configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setConfigKey("tudou")));
|
||||||
// 测试 type 不匹配
|
// 测试 type 不匹配
|
||||||
configMapper.insert(ObjectUtils.cloneIgnoreId(dbConfig, o -> o.setType(ConfigTypeEnum.CUSTOM.getType())));
|
configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setType(ConfigTypeEnum.CUSTOM.getType())));
|
||||||
// 测试 createTime 不匹配
|
// 测试 createTime 不匹配
|
||||||
configMapper.insert(ObjectUtils.cloneIgnoreId(dbConfig, o -> o.setCreateTime(buildLocalDateTime(2021, 1, 1))));
|
configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setCreateTime(buildTime(2021, 1, 1))));
|
||||||
// 准备参数
|
// 准备参数
|
||||||
ConfigExportReqVO reqVO = new ConfigExportReqVO();
|
ConfigExportReqVO reqVO = new ConfigExportReqVO();
|
||||||
reqVO.setName("艿");
|
reqVO.setName("艿");
|
||||||
reqVO.setKey("nai");
|
reqVO.setKey("nai");
|
||||||
reqVO.setType(ConfigTypeEnum.SYSTEM.getType());
|
reqVO.setType(ConfigTypeEnum.SYSTEM.getType());
|
||||||
reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021, 1, 15),buildLocalDateTime(2021, 2, 15)}));
|
reqVO.setCreateTime(buildBetweenTime(2021, 1, 15, 2021, 2, 15));
|
||||||
|
|
||||||
// 调用
|
// 调用
|
||||||
List<ConfigDO> list = configService.getConfigList(reqVO);
|
List<ConfigDO> list = configService.getConfigList(reqVO);
|
||||||
@ -213,6 +210,21 @@ public class ConfigServiceTest extends BaseDbUnitTest {
|
|||||||
assertPojoEquals(dbConfig, list.get(0));
|
assertPojoEquals(dbConfig, list.get(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetConfig() {
|
||||||
|
// mock 数据
|
||||||
|
ConfigDO dbConfig = randomConfigDO();
|
||||||
|
configMapper.insert(dbConfig);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
Long id = dbConfig.getId();
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
ConfigDO config = configService.getConfig(id);
|
||||||
|
// 断言
|
||||||
|
assertNotNull(config);
|
||||||
|
assertPojoEquals(dbConfig, config);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetConfigByKey() {
|
public void testGetConfigByKey() {
|
||||||
// mock 数据
|
// mock 数据
|
||||||
|
@ -31,6 +31,7 @@ import javax.annotation.Resource;
|
|||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
||||||
import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.FILE_IS_EMPTY;
|
import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.FILE_IS_EMPTY;
|
||||||
@ -99,7 +100,7 @@ public class UserProfileController {
|
|||||||
@ApiOperation("上传用户个人头像")
|
@ApiOperation("上传用户个人头像")
|
||||||
public CommonResult<String> updateUserAvatar(@RequestParam("avatarFile") MultipartFile file) throws Exception {
|
public CommonResult<String> updateUserAvatar(@RequestParam("avatarFile") MultipartFile file) throws Exception {
|
||||||
if (file.isEmpty()) {
|
if (file.isEmpty()) {
|
||||||
throw ServiceExceptionUtil.exception(FILE_IS_EMPTY);
|
throw exception(FILE_IS_EMPTY);
|
||||||
}
|
}
|
||||||
String avatar = userService.updateUserAvatar(getLoginUserId(), file.getInputStream());
|
String avatar = userService.updateUserAvatar(getLoginUserId(), file.getInputStream());
|
||||||
return success(avatar);
|
return success(avatar);
|
||||||
|
@ -31,6 +31,7 @@ import javax.annotation.Resource;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO.ID_ROOT;
|
import static cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO.ID_ROOT;
|
||||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
|
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
|
||||||
|
|
||||||
@ -118,7 +119,7 @@ public class MenuServiceImpl implements MenuService {
|
|||||||
public void updateMenu(MenuUpdateReqVO reqVO) {
|
public void updateMenu(MenuUpdateReqVO reqVO) {
|
||||||
// 校验更新的菜单是否存在
|
// 校验更新的菜单是否存在
|
||||||
if (menuMapper.selectById(reqVO.getId()) == null) {
|
if (menuMapper.selectById(reqVO.getId()) == null) {
|
||||||
throw ServiceExceptionUtil.exception(MENU_NOT_EXISTS);
|
throw exception(MENU_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
// 校验父菜单存在
|
// 校验父菜单存在
|
||||||
validateParentMenu(reqVO.getParentId(), reqVO.getId());
|
validateParentMenu(reqVO.getParentId(), reqVO.getId());
|
||||||
@ -138,11 +139,11 @@ public class MenuServiceImpl implements MenuService {
|
|||||||
public void deleteMenu(Long menuId) {
|
public void deleteMenu(Long menuId) {
|
||||||
// 校验是否还有子菜单
|
// 校验是否还有子菜单
|
||||||
if (menuMapper.selectCountByParentId(menuId) > 0) {
|
if (menuMapper.selectCountByParentId(menuId) > 0) {
|
||||||
throw ServiceExceptionUtil.exception(MENU_EXISTS_CHILDREN);
|
throw exception(MENU_EXISTS_CHILDREN);
|
||||||
}
|
}
|
||||||
// 校验删除的菜单是否存在
|
// 校验删除的菜单是否存在
|
||||||
if (menuMapper.selectById(menuId) == null) {
|
if (menuMapper.selectById(menuId) == null) {
|
||||||
throw ServiceExceptionUtil.exception(MENU_NOT_EXISTS);
|
throw exception(MENU_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
// 标记删除
|
// 标记删除
|
||||||
menuMapper.deleteById(menuId);
|
menuMapper.deleteById(menuId);
|
||||||
@ -229,17 +230,17 @@ public class MenuServiceImpl implements MenuService {
|
|||||||
}
|
}
|
||||||
// 不能设置自己为父菜单
|
// 不能设置自己为父菜单
|
||||||
if (parentId.equals(childId)) {
|
if (parentId.equals(childId)) {
|
||||||
throw ServiceExceptionUtil.exception(MENU_PARENT_ERROR);
|
throw exception(MENU_PARENT_ERROR);
|
||||||
}
|
}
|
||||||
MenuDO menu = menuMapper.selectById(parentId);
|
MenuDO menu = menuMapper.selectById(parentId);
|
||||||
// 父菜单不存在
|
// 父菜单不存在
|
||||||
if (menu == null) {
|
if (menu == null) {
|
||||||
throw ServiceExceptionUtil.exception(MENU_PARENT_NOT_EXISTS);
|
throw exception(MENU_PARENT_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
// 父菜单必须是目录或者菜单类型
|
// 父菜单必须是目录或者菜单类型
|
||||||
if (!MenuTypeEnum.DIR.getType().equals(menu.getType())
|
if (!MenuTypeEnum.DIR.getType().equals(menu.getType())
|
||||||
&& !MenuTypeEnum.MENU.getType().equals(menu.getType())) {
|
&& !MenuTypeEnum.MENU.getType().equals(menu.getType())) {
|
||||||
throw ServiceExceptionUtil.exception(MENU_PARENT_NOT_DIR_OR_MENU);
|
throw exception(MENU_PARENT_NOT_DIR_OR_MENU);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -260,10 +261,10 @@ public class MenuServiceImpl implements MenuService {
|
|||||||
}
|
}
|
||||||
// 如果 id 为空,说明不用比较是否为相同 id 的菜单
|
// 如果 id 为空,说明不用比较是否为相同 id 的菜单
|
||||||
if (id == null) {
|
if (id == null) {
|
||||||
throw ServiceExceptionUtil.exception(MENU_NAME_DUPLICATE);
|
throw exception(MENU_NAME_DUPLICATE);
|
||||||
}
|
}
|
||||||
if (!menu.getId().equals(id)) {
|
if (!menu.getId().equals(id)) {
|
||||||
throw ServiceExceptionUtil.exception(MENU_NAME_DUPLICATE);
|
throw exception(MENU_NAME_DUPLICATE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,7 +39,6 @@ import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
|
|||||||
* 短信模板 Service 实现类
|
* 短信模板 Service 实现类
|
||||||
*
|
*
|
||||||
* @author zzf
|
* @author zzf
|
||||||
* @date 2021/1/25 9:25
|
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
Loading…
Reference in New Issue
Block a user