From 82fc7fe2c89017e9b028ad36267e0c1fcb93aa83 Mon Sep 17 00:00:00 2001 From: Dreamglade Date: Fri, 15 Aug 2025 11:22:05 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/enums/ErrorCodeConstants.java | 5 ++ .../SystemConfig/SystemConfigController.java | 72 ++++++++++++++++++ .../SystemConfig/vo/SystemConfigBaseVO.java | 15 ++++ .../vo/SystemConfigPageReqVO.java | 14 ++++ .../SystemConfig/vo/SystemConfigRespVO.java | 13 ++++ .../vo/SystemConfigSaveReqVO.java | 13 ++++ .../convert/config/SystemConfigConvert.java | 48 ++++++++++++ .../dal/dataobject/config/SystemConfigDO.java | 35 +++++++++ .../dal/mysql/config/SystemConfigMapper.java | 23 ++++++ .../SystemConfig/SystemConfigService.java | 44 +++++++++++ .../SystemConfig/SystemConfigServiceImpl.java | 75 +++++++++++++++++++ 11 files changed, 357 insertions(+) create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/SystemConfigController.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigBaseVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigPageReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigRespVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigSaveReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/config/SystemConfigConvert.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/config/SystemConfigDO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/config/SystemConfigMapper.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/SystemConfig/SystemConfigService.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/SystemConfig/SystemConfigServiceImpl.java diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java index f19fdeb..5fe882a 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java @@ -182,4 +182,9 @@ public interface ErrorCodeConstants { // ========== 厂级 1-002-32-000 ========== ErrorCode Factory_NOT_EXISTS = new ErrorCode(1_002_32_000, "厂级不存在"); ErrorCode Factory_NAME_DUPLICATE = new ErrorCode(1_002_32_001, "已经存在相同名字的厂级"); + + // ========== 系统配置 1-002-033-000 ========== + ErrorCode SYSTEM_CONFIG_NOT_EXISTS = new ErrorCode(1_002_033_000, "系统配置不存在"); + ErrorCode SYSTEM_CONFIG_NAME_DUPLICATE = new ErrorCode(1_002_033_001, "已经存在该名字的系统配置"); + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/SystemConfigController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/SystemConfigController.java new file mode 100644 index 0000000..d540d9b --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/SystemConfigController.java @@ -0,0 +1,72 @@ +package cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo.*; +import cn.iocoder.yudao.module.system.convert.config.SystemConfigConvert; // 确保引入正确的Convert +import cn.iocoder.yudao.module.system.dal.dataobject.config.SystemConfigDO; +import cn.iocoder.yudao.module.system.service.config.SystemConfig.SystemConfigService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 系统配置") +@RestController +@RequestMapping("/system/system-config") +@Validated +public class SystemConfigController { + + @Resource + private SystemConfigService systemConfigService; + + @Resource + private SystemConfigConvert systemConfigConvert; // 【关键修正】注入Converter + + @PostMapping("/create") + @Operation(summary = "创建系统配置") + @PreAuthorize("@ss.hasPermission('system:system-config:create')") + public CommonResult createSystemConfig(@Valid @RequestBody SystemConfigSaveReqVO createReqVO) { + return success(systemConfigService.createSystemConfig(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新系统配置") + @PreAuthorize("@ss.hasPermission('system:system-config:update')") + public CommonResult updateSystemConfig(@Valid @RequestBody SystemConfigSaveReqVO updateReqVO) { + systemConfigService.updateSystemConfig(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除系统配置") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('system:system-config:delete')") + public CommonResult deleteSystemConfig(@RequestParam("id") Long id) { + systemConfigService.deleteSystemConfig(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得系统配置") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('system:system-config:query')") + public CommonResult getSystemConfig(@RequestParam("id") Long id) { + SystemConfigDO config = systemConfigService.getSystemConfig(id); + return success(systemConfigConvert.convert(config)); // 【关键修正】使用注入的bean进行转换 + } + + @GetMapping("/page") + @Operation(summary = "获得系统配置分页") + @PreAuthorize("@ss.hasPermission('system:system-config:query')") + public CommonResult> getSystemConfigPage(@Valid SystemConfigPageReqVO pageVO) { + PageResult pageResult = systemConfigService.getSystemConfigPage(pageVO); + return success(systemConfigConvert.convertPage(pageResult)); // 【关键修正】使用注入的bean进行转换 + } +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigBaseVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigBaseVO.java new file mode 100644 index 0000000..5247a92 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigBaseVO.java @@ -0,0 +1,15 @@ +package cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +@Data +public class SystemConfigBaseVO { + @Schema(description = "系统名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "锅炉系统") + @NotBlank(message = "系统名称不能为空") + private String name; + + @Schema(description = "系统简称", example = "锅炉") + private String abbreviation; +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigPageReqVO.java new file mode 100644 index 0000000..8b716b4 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigPageReqVO.java @@ -0,0 +1,14 @@ +package cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Schema(description = "管理后台 - 系统配置分页请求 VO") +@Data +@EqualsAndHashCode(callSuper = true) +public class SystemConfigPageReqVO extends PageParam { + @Schema(description = "系统名称", example = "锅炉") + private String name; +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigRespVO.java new file mode 100644 index 0000000..b2b6056 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigRespVO.java @@ -0,0 +1,13 @@ +package cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Schema(description = "管理后台 - 系统配置响应 VO") +@Data +@EqualsAndHashCode(callSuper = true) +public class SystemConfigRespVO extends SystemConfigBaseVO { + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED) + private Long id; +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigSaveReqVO.java new file mode 100644 index 0000000..fec6eaf --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigSaveReqVO.java @@ -0,0 +1,13 @@ +package cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Schema(description = "管理后台 - 系统配置创建/修改 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +public class SystemConfigSaveReqVO extends SystemConfigBaseVO { + @Schema(description = "编号,更新时必填", example = "1") + private Long id; +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/config/SystemConfigConvert.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/config/SystemConfigConvert.java new file mode 100644 index 0000000..0744f9b --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/config/SystemConfigConvert.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.system.convert.config; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo.SystemConfigRespVO; +import cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo.SystemConfigSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.config.SystemConfigDO; +import org.mapstruct.Mapper; + +import java.util.ArrayList; +import java.util.List; + +@Mapper(componentModel = "spring") +public interface SystemConfigConvert { + + default SystemConfigRespVO convert(SystemConfigDO bean) { + if (bean == null) { + return null; + } + SystemConfigRespVO respVO = new SystemConfigRespVO(); + + respVO.setId(bean.getId()); + respVO.setName(bean.getName()); + respVO.setAbbreviation(bean.getAbbreviation()); + + return respVO; + } + + default List convertList(List list) { + if (list == null) { + return null; + } + List result = new ArrayList<>(list.size()); + for (SystemConfigDO systemConfigDO : list) { + result.add(convert(systemConfigDO)); + } + return result; + } + + default PageResult convertPage(PageResult page) { + if (page == null) { + return null; + } + return new PageResult<>(convertList(page.getList()), page.getTotal()); + } + + SystemConfigDO convert(SystemConfigSaveReqVO bean); + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/config/SystemConfigDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/config/SystemConfigDO.java new file mode 100644 index 0000000..d384541 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/config/SystemConfigDO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.config; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +/** + * 系统配置 DO + * + * @author 芋道源码 + */ +@TableName("system_cfg") +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SystemConfigDO { + + @TableId("system_id") + private Long id; + + @TableField("system_name") + private String name; + + @TableField("system_shortname") + private String abbreviation; + + @TableField("system_type_id") + private Integer systemTypeId; + + @TableField("unit_id") + private Integer unitId; + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/config/SystemConfigMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/config/SystemConfigMapper.java new file mode 100644 index 0000000..b8b9cd1 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/config/SystemConfigMapper.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.module.system.dal.mysql.config; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo.SystemConfigPageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.config.SystemConfigDO; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface SystemConfigMapper extends BaseMapperX { + + // 【关键修正】恢复使用框架默认的分页查询,无需XML + default PageResult selectPage(SystemConfigPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(SystemConfigDO::getName, reqVO.getName()) + .orderByDesc(SystemConfigDO::getId)); + } + + default SystemConfigDO selectByName(String name) { + return selectOne(SystemConfigDO::getName, name); + } +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/SystemConfig/SystemConfigService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/SystemConfig/SystemConfigService.java new file mode 100644 index 0000000..1c761b8 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/SystemConfig/SystemConfigService.java @@ -0,0 +1,44 @@ +package cn.iocoder.yudao.module.system.service.config.SystemConfig; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo.SystemConfigPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo.SystemConfigSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.config.SystemConfigDO; +import jakarta.validation.Valid; + +public interface SystemConfigService { + + /** + * 创建系统配置 + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createSystemConfig(@Valid SystemConfigSaveReqVO createReqVO); + + /** + * 更新系统配置 + * @param updateReqVO 更新信息 + */ + void updateSystemConfig(@Valid SystemConfigSaveReqVO updateReqVO); + + /** + * 删除系统配置 + * @param id 编号 + */ + void deleteSystemConfig(Long id); + + /** + * 获得系统配置 + * @param id 编号 + * @return 系统配置 + */ + SystemConfigDO getSystemConfig(Long id); + + /** + * 获得系统配置分页 + * @param pageReqVO 分页查询 + * @return 系统配置分页 + */ + PageResult getSystemConfigPage(SystemConfigPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/SystemConfig/SystemConfigServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/SystemConfig/SystemConfigServiceImpl.java new file mode 100644 index 0000000..80f7579 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/SystemConfig/SystemConfigServiceImpl.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.module.system.service.config.SystemConfig; + +import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo.SystemConfigPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo.SystemConfigSaveReqVO; +import cn.iocoder.yudao.module.system.convert.config.SystemConfigConvert; +import cn.iocoder.yudao.module.system.dal.dataobject.config.SystemConfigDO; +import cn.iocoder.yudao.module.system.dal.mysql.config.SystemConfigMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.Objects; + +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; + +@Service +@Validated +public class SystemConfigServiceImpl implements SystemConfigService { + + @Resource + private SystemConfigMapper systemConfigMapper; + + @Resource + private SystemConfigConvert systemConfigConvert; + + @Override + public Long createSystemConfig(SystemConfigSaveReqVO createReqVO) { + validateNameDuplicate(createReqVO.getName(), null); + SystemConfigDO systemConfig = systemConfigConvert.convert(createReqVO); + systemConfigMapper.insert(systemConfig); + return systemConfig.getId(); + } + + @Override + public void updateSystemConfig(SystemConfigSaveReqVO updateReqVO) { + validateExists(updateReqVO.getId()); + validateNameDuplicate(updateReqVO.getName(), updateReqVO.getId()); + SystemConfigDO updateObj = systemConfigConvert.convert(updateReqVO); + systemConfigMapper.updateById(updateObj); + } + + @Override + public void deleteSystemConfig(Long id) { + validateExists(id); + systemConfigMapper.deleteById(id); + } + + @Override + public SystemConfigDO getSystemConfig(Long id) { + return systemConfigMapper.selectById(id); + } + + @Override + public PageResult getSystemConfigPage(SystemConfigPageReqVO pageReqVO) { + return systemConfigMapper.selectPage(pageReqVO); + } + + private void validateExists(Long id) { + if (systemConfigMapper.selectById(id) == null) { + throw ServiceExceptionUtil.exception(SYSTEM_CONFIG_NOT_EXISTS); + } + } + + private void validateNameDuplicate(String name, Long id) { + SystemConfigDO config = systemConfigMapper.selectByName(name); + if (config == null) { + return; + } + if (id == null || !Objects.equals(config.getId(), id)) { + throw ServiceExceptionUtil.exception(SYSTEM_CONFIG_NAME_DUPLICATE); + } + } +} \ No newline at end of file