From 3522880c7b9f44000aff131d0200c0b69327956a Mon Sep 17 00:00:00 2001 From: czc Date: Fri, 12 Jul 2024 16:36:11 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20config=E7=9B=B8=E5=85=B3=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/SysConfigController.java | 23 +++--- .../system/SysRegisterController.java | 4 +- .../ruoyi/system/domain/bo/SysConfigBo.java | 59 ++++++++++++++ .../ruoyi/system/domain/vo/SysConfigVo.java | 72 +++++++++++++++++ .../listener/SysUserImportListener.java | 4 +- .../ruoyi/system/mapper/SysConfigMapper.java | 3 +- .../runner/SystemApplicationRunner.java | 4 +- ...ServiceImpl.java => SysConfigService.java} | 80 +++++++++---------- 8 files changed, 188 insertions(+), 61 deletions(-) create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysConfigBo.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysConfigVo.java rename ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/{impl/SysConfigServiceImpl.java => SysConfigService.java} (65%) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysConfigController.java index 7783408..0dc53d7 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysConfigController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysConfigController.java @@ -8,8 +8,9 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.mybatis.core.page.TableDataInfo; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.excel.utils.ExcelUtil; -import com.ruoyi.system.domain.entity.SysConfig; -import com.ruoyi.system.service.ISysConfigService; +import com.ruoyi.system.domain.bo.SysConfigBo; +import com.ruoyi.system.domain.vo.SysConfigVo; +import com.ruoyi.system.service.SysConfigService; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; @@ -28,14 +29,14 @@ import java.util.List; @RequestMapping("/system/config") public class SysConfigController extends BaseController { - private final ISysConfigService configService; + private final SysConfigService configService; /** * 获取参数配置列表 */ @SaCheckPermission("system:config:list") @GetMapping("/list") - public TableDataInfo list(SysConfig config, PageQuery pageQuery) { + public TableDataInfo list(SysConfigBo config, PageQuery pageQuery) { return configService.selectPageConfigList(config, pageQuery); } @@ -45,9 +46,9 @@ public class SysConfigController extends BaseController { @Log(title = "参数管理", businessType = BusinessType.EXPORT) @SaCheckPermission("system:config:export") @PostMapping("/export") - public void export(SysConfig config, HttpServletResponse response) { - List list = configService.selectConfigList(config); - ExcelUtil.exportExcel(list, "参数数据", SysConfig.class, response); + public void export(SysConfigBo config, HttpServletResponse response) { + List list = configService.selectConfigList(config); + ExcelUtil.exportExcel(list, "参数数据", SysConfigVo.class, response); } /** @@ -57,7 +58,7 @@ public class SysConfigController extends BaseController { */ @SaCheckPermission("system:config:query") @GetMapping(value = "/{configId}") - public R getInfo(@PathVariable Long configId) { + public R getInfo(@PathVariable Long configId) { return R.ok(configService.selectConfigById(configId)); } @@ -77,7 +78,7 @@ public class SysConfigController extends BaseController { @SaCheckPermission("system:config:add") @Log(title = "参数管理", businessType = BusinessType.INSERT) @PostMapping - public R add(@Validated @RequestBody SysConfig config) { + public R add(@Validated @RequestBody SysConfigBo config) { if (!configService.checkConfigKeyUnique(config)) { return R.fail("新增参数'" + config.getConfigName() + "'失败,参数键名已存在"); } @@ -91,7 +92,7 @@ public class SysConfigController extends BaseController { @SaCheckPermission("system:config:edit") @Log(title = "参数管理", businessType = BusinessType.UPDATE) @PutMapping - public R edit(@Validated @RequestBody SysConfig config) { + public R edit(@Validated @RequestBody SysConfigBo config) { if (!configService.checkConfigKeyUnique(config)) { return R.fail("修改参数'" + config.getConfigName() + "'失败,参数键名已存在"); } @@ -105,7 +106,7 @@ public class SysConfigController extends BaseController { @SaCheckPermission("system:config:edit") @Log(title = "参数管理", businessType = BusinessType.UPDATE) @PutMapping("/updateByKey") - public R updateByKey(@RequestBody SysConfig config) { + public R updateByKey(@RequestBody SysConfigBo config) { configService.updateConfig(config); return R.ok(); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysRegisterController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysRegisterController.java index 22eb799..ad03fa0 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysRegisterController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysRegisterController.java @@ -4,7 +4,7 @@ import cn.dev33.satoken.annotation.SaIgnore; import com.ruoyi.common.web.core.BaseController; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.bo.RegisterBody; -import com.ruoyi.system.service.ISysConfigService; +import com.ruoyi.system.service.SysConfigService; import com.ruoyi.system.service.SysRegisterService; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; @@ -23,7 +23,7 @@ import org.springframework.web.bind.annotation.RestController; public class SysRegisterController extends BaseController { private final SysRegisterService registerService; - private final ISysConfigService configService; + private final SysConfigService configService; /** * 用户注册 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysConfigBo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysConfigBo.java new file mode 100644 index 0000000..8046b96 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysConfigBo.java @@ -0,0 +1,59 @@ +package com.ruoyi.system.domain.bo; + +import com.ruoyi.common.mybatis.core.domain.BaseEntity; +import com.ruoyi.system.domain.entity.SysConfig; +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 参数配置业务对象 sys_config + * + * @author Michelle.Chung + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysConfig.class, reverseConvertGenerate = false) +public class SysConfigBo extends BaseEntity { + + /** + * 参数主键 + */ + private Long configId; + + /** + * 参数名称 + */ + @NotBlank(message = "参数名称不能为空") + @Size(min = 0, max = 100, message = "参数名称不能超过{max}个字符") + private String configName; + + /** + * 参数键名 + */ + @NotBlank(message = "参数键名不能为空") + @Size(min = 0, max = 100, message = "参数键名长度不能超过{max}个字符") + private String configKey; + + /** + * 参数键值 + */ + @NotBlank(message = "参数键值不能为空") + @Size(min = 0, max = 500, message = "参数键值长度不能超过{max}个字符") + private String configValue; + + /** + * 系统内置(Y是 N否) + */ + private String configType; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysConfigVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysConfigVo.java new file mode 100644 index 0000000..4955ce6 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysConfigVo.java @@ -0,0 +1,72 @@ +package com.ruoyi.system.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.excel.annotation.ExcelDictFormat; +import com.ruoyi.common.excel.convert.ExcelDictConvert; +import com.ruoyi.system.domain.entity.SysConfig; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 参数配置视图对象 sys_config + * + * @author Michelle.Chung + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SysConfig.class) +public class SysConfigVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 参数主键 + */ + @ExcelProperty(value = "参数主键") + private Long configId; + + /** + * 参数名称 + */ + @ExcelProperty(value = "参数名称") + private String configName; + + /** + * 参数键名 + */ + @ExcelProperty(value = "参数键名") + private String configKey; + + /** + * 参数键值 + */ + @ExcelProperty(value = "参数键值") + private String configValue; + + /** + * 系统内置(Y是 N否) + */ + @ExcelProperty(value = "系统内置", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_yes_no") + private String configType; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java index 947a17a..7460806 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java @@ -14,7 +14,7 @@ import com.ruoyi.common.satoken.utils.LoginHelper; import com.ruoyi.system.domain.bo.SysUserBo; import com.ruoyi.system.domain.vo.SysUserImportVo; import com.ruoyi.system.domain.vo.SysUserVo; -import com.ruoyi.system.service.ISysConfigService; +import com.ruoyi.system.service.SysConfigService; import com.ruoyi.system.service.SysUserService; import lombok.extern.slf4j.Slf4j; @@ -42,7 +42,7 @@ public class SysUserImportListener extends AnalysisEventListener { +public interface SysConfigMapper extends BaseMapperPlus { } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/runner/SystemApplicationRunner.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/runner/SystemApplicationRunner.java index 36ed651..bf02f9a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/runner/SystemApplicationRunner.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/runner/SystemApplicationRunner.java @@ -1,9 +1,9 @@ package com.ruoyi.system.runner; import com.ruoyi.common.core.config.RuoYiConfig; -import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysDictTypeService; import com.ruoyi.system.service.ISysOssConfigService; +import com.ruoyi.system.service.SysConfigService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.ApplicationArguments; @@ -21,7 +21,7 @@ import org.springframework.stereotype.Component; public class SystemApplicationRunner implements ApplicationRunner { private final RuoYiConfig ruoyiConfig; - private final ISysConfigService configService; + private final SysConfigService configService; private final ISysDictTypeService dictTypeService; private final ISysOssConfigService ossConfigService; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/SysConfigService.java similarity index 65% rename from ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java rename to ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/SysConfigService.java index e7f2504..0268486 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/SysConfigService.java @@ -1,11 +1,13 @@ -package com.ruoyi.system.service.impl; +package com.ruoyi.system.service; import cn.hutool.core.util.ObjectUtil; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.constant.CacheNames; import com.ruoyi.common.core.constant.UserConstants; +import com.ruoyi.common.core.utils.MapstructUtils; import com.ruoyi.common.mybatis.core.page.PageQuery; import com.ruoyi.common.mybatis.core.page.TableDataInfo; import com.ruoyi.common.core.service.ConfigService; @@ -13,9 +15,10 @@ import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.redis.utils.CacheUtils; import com.ruoyi.common.core.utils.SpringUtils; +import com.ruoyi.system.domain.bo.SysConfigBo; import com.ruoyi.system.domain.entity.SysConfig; +import com.ruoyi.system.domain.vo.SysConfigVo; import com.ruoyi.system.mapper.SysConfigMapper; -import com.ruoyi.system.service.ISysConfigService; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.CachePut; import org.springframework.cache.annotation.Cacheable; @@ -32,20 +35,13 @@ import java.util.Map; */ @RequiredArgsConstructor @Service -public class SysConfigServiceImpl implements ISysConfigService, ConfigService { +public class SysConfigService implements ConfigService { private final SysConfigMapper baseMapper; - @Override - public TableDataInfo selectPageConfigList(SysConfig config, PageQuery pageQuery) { - Map params = config.getParams(); - LambdaQueryWrapper lqw = new LambdaQueryWrapper() - .like(StringUtils.isNotBlank(config.getConfigName()), SysConfig::getConfigName, config.getConfigName()) - .eq(StringUtils.isNotBlank(config.getConfigType()), SysConfig::getConfigType, config.getConfigType()) - .like(StringUtils.isNotBlank(config.getConfigKey()), SysConfig::getConfigKey, config.getConfigKey()) - .between(params.get("beginTime") != null && params.get("endTime") != null, - SysConfig::getCreateTime, params.get("beginTime"), params.get("endTime")); - Page page = baseMapper.selectPage(pageQuery.build(), lqw); + public TableDataInfo selectPageConfigList(SysConfigBo config, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(config); + Page page = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(page); } @@ -55,10 +51,9 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { * @param configId 参数配置ID * @return 参数配置信息 */ - @Override @DS("master") - public SysConfig selectConfigById(Long configId) { - return baseMapper.selectById(configId); + public SysConfigVo selectConfigById(Long configId) { + return baseMapper.selectVoById(configId); } /** @@ -68,7 +63,6 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { * @return 参数键值 */ @Cacheable(cacheNames = CacheNames.SYS_CONFIG, key = "#configKey") - @Override public String selectConfigByKey(String configKey) { SysConfig retConfig = baseMapper.selectOne(new LambdaQueryWrapper() .eq(SysConfig::getConfigKey, configKey)); @@ -84,27 +78,32 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { * @param config 参数配置信息 * @return 参数配置集合 */ - @Override - public List selectConfigList(SysConfig config) { - Map params = config.getParams(); - LambdaQueryWrapper lqw = new LambdaQueryWrapper() - .like(StringUtils.isNotBlank(config.getConfigName()), SysConfig::getConfigName, config.getConfigName()) - .eq(StringUtils.isNotBlank(config.getConfigType()), SysConfig::getConfigType, config.getConfigType()) - .like(StringUtils.isNotBlank(config.getConfigKey()), SysConfig::getConfigKey, config.getConfigKey()) - .between(params.get("beginTime") != null && params.get("endTime") != null, - SysConfig::getCreateTime, params.get("beginTime"), params.get("endTime")); - return baseMapper.selectList(lqw); + public List selectConfigList(SysConfigBo config) { + LambdaQueryWrapper lqw = buildQueryWrapper(config); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SysConfigBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getConfigName()), SysConfig::getConfigName, bo.getConfigName()); + lqw.eq(StringUtils.isNotBlank(bo.getConfigType()), SysConfig::getConfigType, bo.getConfigType()); + lqw.like(StringUtils.isNotBlank(bo.getConfigKey()), SysConfig::getConfigKey, bo.getConfigKey()); + lqw.between(params.get("beginTime") != null && params.get("endTime") != null, + SysConfig::getCreateTime, params.get("beginTime"), params.get("endTime")); + lqw.orderByAsc(SysConfig::getConfigId); + return lqw; } /** * 新增参数配置 * - * @param config 参数配置信息 + * @param bo 参数配置信息 * @return 结果 */ - @CachePut(cacheNames = CacheNames.SYS_CONFIG, key = "#config.configKey") - @Override - public String insertConfig(SysConfig config) { + @CachePut(cacheNames = CacheNames.SYS_CONFIG, key = "#bo.configKey") + public String insertConfig(SysConfigBo bo) { + SysConfig config = MapstructUtils.convert(bo, SysConfig.class); int row = baseMapper.insert(config); if (row > 0) { return config.getConfigValue(); @@ -115,13 +114,13 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { /** * 修改参数配置 * - * @param config 参数配置信息 + * @param bo 参数配置信息 * @return 结果 */ - @CachePut(cacheNames = CacheNames.SYS_CONFIG, key = "#config.configKey") - @Override - public String updateConfig(SysConfig config) { + @CachePut(cacheNames = CacheNames.SYS_CONFIG, key = "#bo.configKey") + public String updateConfig(SysConfigBo bo) { int row = 0; + SysConfig config = MapstructUtils.convert(bo, SysConfig.class); if (config.getConfigId() != null) { SysConfig temp = baseMapper.selectById(config.getConfigId()); if (!StringUtils.equals(temp.getConfigKey(), config.getConfigKey())) { @@ -143,10 +142,9 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { * * @param configIds 需要删除的参数ID */ - @Override public void deleteConfigByIds(Long[] configIds) { for (Long configId : configIds) { - SysConfig config = selectConfigById(configId); + SysConfig config = baseMapper.selectById(configId); if (StringUtils.equals(UserConstants.YES, config.getConfigType())) { throw new ServiceException(String.format("内置参数【%1$s】不能删除 ", config.getConfigKey())); } @@ -158,9 +156,8 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { /** * 加载参数缓存数据 */ - @Override public void loadingConfigCache() { - List configsList = selectConfigList(new SysConfig()); + List configsList = selectConfigList(new SysConfigBo()); configsList.forEach(config -> CacheUtils.put(CacheNames.SYS_CONFIG, config.getConfigKey(), config.getConfigValue())); } @@ -168,7 +165,6 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { /** * 清空参数缓存数据 */ - @Override public void clearConfigCache() { CacheUtils.clear(CacheNames.SYS_CONFIG); } @@ -176,7 +172,6 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { /** * 重置参数缓存数据 */ - @Override public void resetConfigCache() { clearConfigCache(); loadingConfigCache(); @@ -188,8 +183,7 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { * @param config 参数配置信息 * @return 结果 */ - @Override - public boolean checkConfigKeyUnique(SysConfig config) { + public boolean checkConfigKeyUnique(SysConfigBo config) { long configId = ObjectUtil.isNull(config.getConfigId()) ? -1L : config.getConfigId(); SysConfig info = baseMapper.selectOne(new LambdaQueryWrapper().eq(SysConfig::getConfigKey, config.getConfigKey())); if (ObjectUtil.isNotNull(info) && info.getConfigId() != configId) {