wip: 临时提交

开发部分系统配置
This commit is contained in:
胡少翔
2024-07-29 17:12:43 +08:00
parent 003e125bfb
commit 465b9763c2
11 changed files with 475 additions and 0 deletions

View File

@@ -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 = "]";
}

View File

@@ -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<ConfigVO> page(@ParameterObject ConfigPageQuery configPageQuery) {
IPage<ConfigVO> 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));
}
}

View File

@@ -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<ConfigVO> convertToPageVo(Page<SysConfig> page);
SysConfig toEntity(ConfigForm configForm);
ConfigForm toForm(SysConfig entity);
}

View File

@@ -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<SysConfig> {
}

View File

@@ -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;
}

View File

@@ -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 {
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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<SysConfig> {
/**
* 分页查询系统配置
* @param sysConfigPageQuery 查询参数
* @return 系统配置分页列表
*/
IPage<ConfigVO> 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);
}

View File

@@ -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<SysConfigMapper, SysConfig> implements SysConfigService {
private final SysConfigMapper sysConfigMapper;
private final SysConfigConverter sysConfigConverter;
/**
* 分页查询系统配置
* @param configPageQuery 查询参数
* @return 系统配置分页列表
*/
@Override
public IPage<ConfigVO> page(ConfigPageQuery configPageQuery) {
Page<SysConfig> page = new Page<>(configPageQuery.getPageNum(), configPageQuery.getPageSize());
QueryWrapper<SysConfig> query = new QueryWrapper<>();
//TODO: 设置查询条件
Page<SysConfig> 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<SysConfig>().eq("id", id));
}
/**
* 删除系统配置
* @param id 系统配置ID
* @return 是否删除成功
*/
@Override
public boolean delete(Long id) {
if (id != null) {
return super.remove(new QueryWrapper<SysConfig>().eq("id", id));
}
return false;
}
}