From 465b9763c2b959dfc6f1a8ba0b97ba42a22e2fa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=B0=91=E7=BF=94?= <971366405@qq.com> Date: Mon, 29 Jul 2024 17:12:43 +0800 Subject: [PATCH] =?UTF-8?q?wip:=20=E4=B8=B4=E6=97=B6=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 开发部分系统配置 --- .../common/constant/SymbolConstant.java | 118 ++++++++++++++++++ .../controller/SysConfigController.java | 64 ++++++++++ .../system/converter/SysConfigConverter.java | 22 ++++ .../youlai/system/mapper/SysConfigMapper.java | 16 +++ .../youlai/system/model/entity/SysConfig.java | 44 +++++++ .../youlai/system/model/form/ConfigForm.java | 17 +++ .../system/model/query/ConfigPageQuery.java | 21 ++++ .../com/youlai/system/model/vo/ConfigVO.java | 37 ++++++ .../system/service/SysConfigService.java | 47 +++++++ .../service/impl/SysConfigServiceImpl.java | 82 ++++++++++++ src/main/resources/mapper/SysConfigMapper.xml | 7 ++ 11 files changed, 475 insertions(+) create mode 100644 src/main/java/com/youlai/system/common/constant/SymbolConstant.java create mode 100644 src/main/java/com/youlai/system/controller/SysConfigController.java create mode 100644 src/main/java/com/youlai/system/converter/SysConfigConverter.java create mode 100644 src/main/java/com/youlai/system/mapper/SysConfigMapper.java create mode 100644 src/main/java/com/youlai/system/model/entity/SysConfig.java create mode 100644 src/main/java/com/youlai/system/model/form/ConfigForm.java create mode 100644 src/main/java/com/youlai/system/model/query/ConfigPageQuery.java create mode 100644 src/main/java/com/youlai/system/model/vo/ConfigVO.java create mode 100644 src/main/java/com/youlai/system/service/SysConfigService.java create mode 100644 src/main/java/com/youlai/system/service/impl/SysConfigServiceImpl.java create mode 100644 src/main/resources/mapper/SysConfigMapper.xml diff --git a/src/main/java/com/youlai/system/common/constant/SymbolConstant.java b/src/main/java/com/youlai/system/common/constant/SymbolConstant.java new file mode 100644 index 00000000..b66c7fc4 --- /dev/null +++ b/src/main/java/com/youlai/system/common/constant/SymbolConstant.java @@ -0,0 +1,118 @@ +package com.youlai.system.common.constant; + +/** + * 符号和特殊符号常用类 + * @author Theo + * @since 2024-7-29 11:46:08 + */ +public interface SymbolConstant { + /** + * 符号:点 + */ + String SPOT = "."; + + /** + * 符号:双斜杠 + */ + String DOUBLE_BACKSLASH = "\\"; + + /** + * 符号:冒号 + */ + String COLON = ":"; + + /** + * 符号:逗号 + */ + String COMMA = ","; + + /** + * 符号:左花括号 } + */ + String LEFT_CURLY_BRACKET = "{"; + + /** + * 符号:右花括号 } + */ + String RIGHT_CURLY_BRACKET = "}"; + + /** + * 符号:井号 # + */ + String WELL_NUMBER = "#"; + + /** + * 符号:单斜杠 + */ + String SINGLE_SLASH = "/"; + + /** + * 符号:双斜杠 + */ + String DOUBLE_SLASH = "//"; + + /** + * 符号:感叹号 + */ + String EXCLAMATORY_MARK = "!"; + + /** + * 符号:下划线 + */ + String UNDERLINE = "_"; + + /** + * 符号:单引号 + */ + String SINGLE_QUOTATION_MARK = "'"; + + /** + * 符号:星号 + */ + String ASTERISK = "*"; + + /** + * 符号:百分号 + */ + String PERCENT_SIGN = "%"; + + /** + * 符号:美元 $ + */ + String DOLLAR = "$"; + + /** + * 符号:和 & + */ + String AND = "&"; + + /** + * 符号:../ + */ + String SPOT_SINGLE_SLASH = "../"; + + /** + * 符号:..\\ + */ + String SPOT_DOUBLE_BACKSLASH = "..\\"; + + /** + * 系统变量前缀 #{ + */ + String SYS_VAR_PREFIX = "#{"; + + /** + * 符号 {{ + */ + String DOUBLE_LEFT_CURLY_BRACKET = "{{"; + + /** + * 符号:[ + */ + String SQUARE_BRACKETS_LEFT = "["; + + /** + * 符号:] + */ + String SQUARE_BRACKETS_RIGHT = "]"; +} diff --git a/src/main/java/com/youlai/system/controller/SysConfigController.java b/src/main/java/com/youlai/system/controller/SysConfigController.java new file mode 100644 index 00000000..11adf7c4 --- /dev/null +++ b/src/main/java/com/youlai/system/controller/SysConfigController.java @@ -0,0 +1,64 @@ +package com.youlai.system.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.youlai.system.common.result.PageResult; +import com.youlai.system.common.result.Result; +import com.youlai.system.model.form.ConfigForm; +import com.youlai.system.model.query.ConfigPageQuery; +import com.youlai.system.model.vo.ConfigVO; +import com.youlai.system.service.SysConfigService; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.web.bind.annotation.*; +import org.springframework.security.access.prepost.PreAuthorize; + + +/** + * 系统配置 前端控制器 + * + * @author Theo + * @since 2024-07-29 11:17:26 + */ +@Slf4j +@RestController +@RequiredArgsConstructor +@Tag(name = "系统配置") +@RequestMapping("/api/v1/config") +public class SysConfigController { + + private final SysConfigService sysConfigService; + + @GetMapping("/page") + @Operation(summary = "系统配置分页列表") + @PreAuthorize("@ss.hasPerm('business:config:query')") + public PageResult page(@ParameterObject ConfigPageQuery configPageQuery) { + IPage result = sysConfigService.page(configPageQuery); + return PageResult.success(result); + } + + @Operation(summary = "新增系统配置") + @PostMapping(value = "/save") + @PreAuthorize("@ss.hasPerm('business:config:add')") + public Result save(@RequestBody @Valid ConfigForm configForm) { + return Result.judge(sysConfigService.save(configForm)); + } + + @PutMapping("/update/{id}") + @Operation(summary = "修改系统配置") + @PreAuthorize("@ss.hasPerm('business:config:update')") + public Result update(@Valid @PathVariable Long id, @RequestBody ConfigForm configForm) { + return Result.judge(sysConfigService.edit(id, configForm)); + } + + @DeleteMapping("/delete/{id}") + @Operation(summary = "删除系统配置") + @PreAuthorize("@ss.hasPerm('business:config:delete')") + public Result delete(@PathVariable Long id) { + return Result.judge(sysConfigService.delete(id)); + } + +} diff --git a/src/main/java/com/youlai/system/converter/SysConfigConverter.java b/src/main/java/com/youlai/system/converter/SysConfigConverter.java new file mode 100644 index 00000000..873a13ac --- /dev/null +++ b/src/main/java/com/youlai/system/converter/SysConfigConverter.java @@ -0,0 +1,22 @@ +package com.youlai.system.converter; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.youlai.system.model.entity.SysConfig; +import com.youlai.system.model.form.ConfigForm; +import com.youlai.system.model.vo.ConfigVO; +import org.mapstruct.Mapper; + +/** + * 系统配置对象转换器 + * + * @author Theo + * @since 2024-7-29 11:42:49 + */ +@Mapper(componentModel = "spring") +public interface SysConfigConverter { + Page convertToPageVo(Page page); + + SysConfig toEntity(ConfigForm configForm); + + ConfigForm toForm(SysConfig entity); +} diff --git a/src/main/java/com/youlai/system/mapper/SysConfigMapper.java b/src/main/java/com/youlai/system/mapper/SysConfigMapper.java new file mode 100644 index 00000000..60bbd289 --- /dev/null +++ b/src/main/java/com/youlai/system/mapper/SysConfigMapper.java @@ -0,0 +1,16 @@ +package com.youlai.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import com.youlai.system.model.entity.SysConfig; + +/** + * 系统配置 访问层 + * + * @author Theo + * @since 2024-7-29 11:41:04 + */ +@Mapper +public interface SysConfigMapper extends BaseMapper { + +} diff --git a/src/main/java/com/youlai/system/model/entity/SysConfig.java b/src/main/java/com/youlai/system/model/entity/SysConfig.java new file mode 100644 index 00000000..f12aa261 --- /dev/null +++ b/src/main/java/com/youlai/system/model/entity/SysConfig.java @@ -0,0 +1,44 @@ +package com.youlai.system.model.entity; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.Builder; +import java.io.Serializable; +import com.youlai.system.common.base.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; + +/** + * 系统配置 实体 + * + * @author Theo + * @since 2024-07-29 11:17:26 + */ +@Data +@TableName("sys_config") +@Schema(description = "系统配置") +public class SysConfig extends BaseEntity { + + @Schema(description = "配置名称") + private String sysName; + + @Schema(description = "配置key") + private String sysKey; + + @Schema(description = "配置值") + private String sysValue; + + @Schema(description = "描述、备注") + private String remark; + + @Schema(description = "创建人ID") + @TableField(fill = FieldFill.INSERT) + private Long createBy; + + @Schema(description = "更新人ID") + @TableField(fill = FieldFill.UPDATE) + private Long updateBy; + + @TableLogic(value = "0", delval = "1") + private Integer isDeleted; + +} diff --git a/src/main/java/com/youlai/system/model/form/ConfigForm.java b/src/main/java/com/youlai/system/model/form/ConfigForm.java new file mode 100644 index 00000000..95ecb02c --- /dev/null +++ b/src/main/java/com/youlai/system/model/form/ConfigForm.java @@ -0,0 +1,17 @@ +package com.youlai.system.model.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Builder; +import lombok.Data; + +/** + * 系统配置 表单实体 + * + * @author Theo + * @since 2024-07-29 11:17:26 + */ +@Data +@Schema(description = "系统配置Form实体") +public class ConfigForm { + +} diff --git a/src/main/java/com/youlai/system/model/query/ConfigPageQuery.java b/src/main/java/com/youlai/system/model/query/ConfigPageQuery.java new file mode 100644 index 00000000..13398e25 --- /dev/null +++ b/src/main/java/com/youlai/system/model/query/ConfigPageQuery.java @@ -0,0 +1,21 @@ +package com.youlai.system.model.query; + +import com.youlai.system.common.base.BasePageQuery; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +/** + * 系统配置查询对象 + * + * @author Theo + * @since 2024-7-29 11:38:00 + */ +@Getter +@Setter +@Schema(description = "系统配置分页查询") +public class ConfigPageQuery extends BasePageQuery { + + @Schema(description="关键字(配置项名称/配置项值)") + private String keywords; +} diff --git a/src/main/java/com/youlai/system/model/vo/ConfigVO.java b/src/main/java/com/youlai/system/model/vo/ConfigVO.java new file mode 100644 index 00000000..11b994f5 --- /dev/null +++ b/src/main/java/com/youlai/system/model/vo/ConfigVO.java @@ -0,0 +1,37 @@ +package com.youlai.system.model.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serial; +import java.io.Serializable; + +/** + * @author Theo + * @description: 系统配置VO + * @Company 利盈智能 + * @date 2024-07-29 11:17:26 + */ +@Data +@Builder +@EqualsAndHashCode(callSuper = false) +@Schema(description = "系统配置VO") +public class ConfigVO { + + private Long id; + + @Schema(description = "配置名称") + private String sysName; + + @Schema(description = "配置key") + private String sysKey; + + @Schema(description = "配置值") + private String sysValue; + + @Schema(description = "描述、备注") + private String remark; +} diff --git a/src/main/java/com/youlai/system/service/SysConfigService.java b/src/main/java/com/youlai/system/service/SysConfigService.java new file mode 100644 index 00000000..c5a52f1c --- /dev/null +++ b/src/main/java/com/youlai/system/service/SysConfigService.java @@ -0,0 +1,47 @@ +package com.youlai.system.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.youlai.system.model.entity.SysConfig; +import com.youlai.system.model.form.ConfigForm; +import com.youlai.system.model.query.ConfigPageQuery; +import com.youlai.system.model.vo.ConfigVO; + +/** + * 系统配置Service接口 + * + * @author Theo + * @since 2024-07-29 11:17:26 + */ +public interface SysConfigService extends IService { + + /** + * 分页查询系统配置 + * @param sysConfigPageQuery 查询参数 + * @return 系统配置分页列表 + */ + IPage page(ConfigPageQuery sysConfigPageQuery); + + /** + * 保存系统配置 + * @param sysConfigForm 系统配置表单 + * @return 是否保存成功 + */ + boolean save(ConfigForm sysConfigForm); + + /** + * 编辑系统配置 + * @param id 系统配置ID + * @param sysConfigForm 系统配置表单 + * @return 是否编辑成功 + */ + boolean edit(Long id, ConfigForm sysConfigForm); + + /** + * 删除系统配置 + * @param ids 系统配置ID + * @return 是否删除成功 + */ + boolean delete(Long ids); + +} diff --git a/src/main/java/com/youlai/system/service/impl/SysConfigServiceImpl.java b/src/main/java/com/youlai/system/service/impl/SysConfigServiceImpl.java new file mode 100644 index 00000000..8d6e2a8d --- /dev/null +++ b/src/main/java/com/youlai/system/service/impl/SysConfigServiceImpl.java @@ -0,0 +1,82 @@ +package com.youlai.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.youlai.system.converter.SysConfigConverter; +import com.youlai.system.model.form.ConfigForm; +import com.youlai.system.model.query.ConfigPageQuery; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.youlai.system.mapper.SysConfigMapper; +import com.youlai.system.model.entity.SysConfig; +import com.youlai.system.model.vo.ConfigVO; +import com.youlai.system.service.SysConfigService; + +/** + * 系统配置Service接口实现 + * + * @author Theo + * @since 2024-07-29 11:17:26 + */ +@Service +@RequiredArgsConstructor +public class SysConfigServiceImpl extends ServiceImpl implements SysConfigService { + + private final SysConfigMapper sysConfigMapper; + + private final SysConfigConverter sysConfigConverter; + + /** + * 分页查询系统配置 + * @param configPageQuery 查询参数 + * @return 系统配置分页列表 + */ + @Override + public IPage page(ConfigPageQuery configPageQuery) { + Page page = new Page<>(configPageQuery.getPageNum(), configPageQuery.getPageSize()); + QueryWrapper query = new QueryWrapper<>(); + //TODO: 设置查询条件 + Page pageList = this.page(page, query); + return sysConfigConverter.convertToPageVo(pageList); + } + + /** + * 保存系统配置 + * @param configForm 系统配置表单 + * @return 是否保存成功 + */ + @Override + public boolean save(ConfigForm configForm) { + SysConfig sysConfig = sysConfigConverter.toEntity(configForm); + return this.save(sysConfig); + } + + /** + * 编辑系统配置 + * @param id 系统配置ID + * @param configForm 系统配置表单 + * @return 是否编辑成功 + */ + @Override + public boolean edit(Long id, ConfigForm configForm) { + //TODO 可能的校验 + SysConfig sysConfig = sysConfigConverter.toEntity(configForm); + return this.update(sysConfig, new QueryWrapper().eq("id", id)); + } + + /** + * 删除系统配置 + * @param id 系统配置ID + * @return 是否删除成功 + */ + @Override + public boolean delete(Long id) { + if (id != null) { + return super.remove(new QueryWrapper().eq("id", id)); + } + return false; + } + +} diff --git a/src/main/resources/mapper/SysConfigMapper.xml b/src/main/resources/mapper/SysConfigMapper.xml new file mode 100644 index 00000000..5445cd47 --- /dev/null +++ b/src/main/resources/mapper/SysConfigMapper.xml @@ -0,0 +1,7 @@ + + + + +