Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
95d1c82c
提交
95d1c82c
authored
11月 12, 2022
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
恢复【配置管理】功能,方便业务相关的配置动态修改
上级
3c4af521
隐藏空白字符变更
内嵌
并排
正在显示
17 个修改的文件
包含
680 行增加
和
12 行删除
+680
-12
pom.xml
yudao-framework/yudao-spring-boot-starter-mybatis/pom.xml
+0
-7
pom.xml
yudao-module-infra/yudao-module-infra-biz/pom.xml
+0
-4
ConfigController.java
...odule/infra/controller/admin/config/ConfigController.java
+105
-0
ConfigBaseVO.java
...module/infra/controller/admin/config/vo/ConfigBaseVO.java
+40
-0
ConfigCreateReqVO.java
...e/infra/controller/admin/config/vo/ConfigCreateReqVO.java
+21
-0
ConfigExcelVO.java
...odule/infra/controller/admin/config/vo/ConfigExcelVO.java
+46
-0
ConfigExportReqVO.java
...e/infra/controller/admin/config/vo/ConfigExportReqVO.java
+29
-0
ConfigPageReqVO.java
...ule/infra/controller/admin/config/vo/ConfigPageReqVO.java
+34
-0
ConfigRespVO.java
...module/infra/controller/admin/config/vo/ConfigRespVO.java
+31
-0
ConfigUpdateReqVO.java
...e/infra/controller/admin/config/vo/ConfigUpdateReqVO.java
+21
-0
ConfigConvert.java
...oder/yudao/module/infra/convert/config/ConfigConvert.java
+33
-0
ConfigDO.java
...er/yudao/module/infra/dal/dataobject/config/ConfigDO.java
+64
-0
ConfigMapper.java
...der/yudao/module/infra/dal/mysql/config/ConfigMapper.java
+36
-0
ConfigTypeEnum.java
...coder/yudao/module/infra/enums/config/ConfigTypeEnum.java
+21
-0
ConfigService.java
...oder/yudao/module/infra/service/config/ConfigService.java
+75
-0
ConfigServiceImpl.java
.../yudao/module/infra/service/config/ConfigServiceImpl.java
+123
-0
application.yaml
...dao-module-system-biz/src/main/resources/application.yaml
+1
-1
没有找到文件。
yudao-framework/yudao-spring-boot-starter-mybatis/pom.xml
浏览文件 @
95d1c82c
...
@@ -59,13 +59,6 @@
...
@@ -59,13 +59,6 @@
<artifactId>
dynamic-datasource-spring-boot-starter
</artifactId>
<!-- 多数据源 -->
<artifactId>
dynamic-datasource-spring-boot-starter
</artifactId>
<!-- 多数据源 -->
</dependency>
</dependency>
<!-- 工具类相关 -->
<dependency>
<groupId>
com.github.ulisesbocchio
</groupId>
<artifactId>
jasypt-spring-boot-starter
</artifactId>
<!-- 加解密 -->
<optional>
true
</optional>
</dependency>
</dependencies>
</dependencies>
</project>
</project>
yudao-module-infra/yudao-module-infra-biz/pom.xml
浏览文件 @
95d1c82c
...
@@ -114,10 +114,6 @@
...
@@ -114,10 +114,6 @@
</dependency>
</dependency>
<!-- 工具类相关 -->
<!-- 工具类相关 -->
<dependency>
<groupId>
com.github.ulisesbocchio
</groupId>
<artifactId>
jasypt-spring-boot-starter
</artifactId>
<!-- 加解密 -->
</dependency>
<dependency>
<dependency>
<groupId>
cn.iocoder.cloud
</groupId>
<groupId>
cn.iocoder.cloud
</groupId>
...
...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/ConfigController.java
0 → 100644
浏览文件 @
95d1c82c
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.PageResult
;
import
cn.iocoder.yudao.framework.excel.core.util.ExcelUtils
;
import
cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog
;
import
cn.iocoder.yudao.module.infra.controller.admin.config.vo.*
;
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.enums.ErrorCodeConstants
;
import
cn.iocoder.yudao.module.infra.service.config.ConfigService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.validation.Valid
;
import
java.io.IOException
;
import
java.util.List
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
pojo
.
CommonResult
.
success
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
operatelog
.
core
.
enums
.
OperateTypeEnum
.
EXPORT
;
@Api
(
tags
=
"管理后台 - 参数配置"
)
@RestController
@RequestMapping
(
"/infra/config"
)
@Validated
public
class
ConfigController
{
@Resource
private
ConfigService
configService
;
@PostMapping
(
"/create"
)
@ApiOperation
(
"创建参数配置"
)
@PreAuthorize
(
"@ss.hasPermission('infra:config:create')"
)
public
CommonResult
<
Long
>
createConfig
(
@Valid
@RequestBody
ConfigCreateReqVO
reqVO
)
{
return
success
(
configService
.
createConfig
(
reqVO
));
}
@PutMapping
(
"/update"
)
@ApiOperation
(
"修改参数配置"
)
@PreAuthorize
(
"@ss.hasPermission('infra:config:update')"
)
public
CommonResult
<
Boolean
>
updateConfig
(
@Valid
@RequestBody
ConfigUpdateReqVO
reqVO
)
{
configService
.
updateConfig
(
reqVO
);
return
success
(
true
);
}
@DeleteMapping
(
"/delete"
)
@ApiOperation
(
"删除参数配置"
)
@ApiImplicitParam
(
name
=
"id"
,
value
=
"编号"
,
required
=
true
,
example
=
"1024"
,
dataTypeClass
=
Long
.
class
)
@PreAuthorize
(
"@ss.hasPermission('infra:config:delete')"
)
public
CommonResult
<
Boolean
>
deleteConfig
(
@RequestParam
(
"id"
)
Long
id
)
{
configService
.
deleteConfig
(
id
);
return
success
(
true
);
}
@GetMapping
(
value
=
"/get"
)
@ApiOperation
(
"获得参数配置"
)
@ApiImplicitParam
(
name
=
"id"
,
value
=
"编号"
,
required
=
true
,
example
=
"1024"
,
dataTypeClass
=
Long
.
class
)
@PreAuthorize
(
"@ss.hasPermission('infra:config:query')"
)
public
CommonResult
<
ConfigRespVO
>
getConfig
(
@RequestParam
(
"id"
)
Long
id
)
{
return
success
(
ConfigConvert
.
INSTANCE
.
convert
(
configService
.
getConfig
(
id
)));
}
@GetMapping
(
value
=
"/get-value-by-key"
)
@ApiOperation
(
value
=
"根据参数键名查询参数值"
,
notes
=
"不可见的配置,不允许返回给前端"
)
@ApiImplicitParam
(
name
=
"key"
,
value
=
"参数键"
,
required
=
true
,
example
=
"yunai.biz.username"
,
dataTypeClass
=
String
.
class
)
public
CommonResult
<
String
>
getConfigKey
(
@RequestParam
(
"key"
)
String
key
)
{
ConfigDO
config
=
configService
.
getConfigByKey
(
key
);
if
(
config
==
null
)
{
return
null
;
}
if
(
config
.
getVisible
())
{
throw
ServiceExceptionUtil
.
exception
(
ErrorCodeConstants
.
CONFIG_GET_VALUE_ERROR_IF_VISIBLE
);
}
return
success
(
config
.
getValue
());
}
@GetMapping
(
"/page"
)
@ApiOperation
(
"获取参数配置分页"
)
@PreAuthorize
(
"@ss.hasPermission('infra:config:query')"
)
public
CommonResult
<
PageResult
<
ConfigRespVO
>>
getConfigPage
(
@Valid
ConfigPageReqVO
reqVO
)
{
PageResult
<
ConfigDO
>
page
=
configService
.
getConfigPage
(
reqVO
);
return
success
(
ConfigConvert
.
INSTANCE
.
convertPage
(
page
));
}
@GetMapping
(
"/export"
)
@ApiOperation
(
"导出参数配置"
)
@PreAuthorize
(
"@ss.hasPermission('infra:config:export')"
)
@OperateLog
(
type
=
EXPORT
)
public
void
exportSysConfig
(
@Valid
ConfigExportReqVO
reqVO
,
HttpServletResponse
response
)
throws
IOException
{
List
<
ConfigDO
>
list
=
configService
.
getConfigList
(
reqVO
);
// 拼接数据
List
<
ConfigExcelVO
>
datas
=
ConfigConvert
.
INSTANCE
.
convertList
(
list
);
// 输出
ExcelUtils
.
write
(
response
,
"参数配置.xls"
,
"数据"
,
ConfigExcelVO
.
class
,
datas
);
}
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigBaseVO.java
0 → 100644
浏览文件 @
95d1c82c
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
controller
.
admin
.
config
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Size
;
/**
* 参数配置 Base VO,提供给添加、修改、详细的子 VO 使用
* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
*/
@Data
public
class
ConfigBaseVO
{
@ApiModelProperty
(
value
=
"参数分组"
,
required
=
true
,
example
=
"biz"
)
@NotEmpty
(
message
=
"参数分组不能为空"
)
@Size
(
max
=
50
,
message
=
"参数名称不能超过50个字符"
)
private
String
category
;
@ApiModelProperty
(
value
=
"参数名称"
,
required
=
true
,
example
=
"数据库名"
)
@NotBlank
(
message
=
"参数名称不能为空"
)
@Size
(
max
=
100
,
message
=
"参数名称不能超过100个字符"
)
private
String
name
;
@ApiModelProperty
(
value
=
"参数键值"
,
required
=
true
,
example
=
"1024"
)
@NotBlank
(
message
=
"参数键值不能为空"
)
@Size
(
max
=
500
,
message
=
"参数键值长度不能超过500个字符"
)
private
String
value
;
@ApiModelProperty
(
value
=
"是否敏感"
,
required
=
true
,
example
=
"true"
)
@NotNull
(
message
=
"是否敏感不能为空"
)
private
Boolean
visible
;
@ApiModelProperty
(
value
=
"备注"
,
example
=
"备注一下很帅气!"
)
private
String
remark
;
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigCreateReqVO.java
0 → 100644
浏览文件 @
95d1c82c
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
controller
.
admin
.
config
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.Size
;
@ApiModel
(
"管理后台 - 参数配置创建 Request VO"
)
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
public
class
ConfigCreateReqVO
extends
ConfigBaseVO
{
@ApiModelProperty
(
value
=
"参数键名"
,
required
=
true
,
example
=
"yunai.db.username"
)
@NotBlank
(
message
=
"参数键名长度不能为空"
)
@Size
(
max
=
100
,
message
=
"参数键名长度不能超过100个字符"
)
private
String
key
;
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigExcelVO.java
0 → 100644
浏览文件 @
95d1c82c
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
controller
.
admin
.
config
.
vo
;
import
cn.iocoder.yudao.framework.excel.core.annotations.DictFormat
;
import
cn.iocoder.yudao.framework.excel.core.convert.DictConvert
;
import
cn.iocoder.yudao.module.infra.enums.DictTypeConstants
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
/**
* 参数配置 Excel 导出响应 VO
*/
@Data
public
class
ConfigExcelVO
{
@ExcelProperty
(
"参数配置序号"
)
private
Long
id
;
@ExcelProperty
(
"参数键名"
)
private
String
key
;
@ExcelProperty
(
"参数分组"
)
private
String
group
;
@ExcelProperty
(
"参数名称"
)
private
String
name
;
@ExcelProperty
(
"参数键值"
)
private
String
value
;
@ExcelProperty
(
value
=
"参数类型"
,
converter
=
DictConvert
.
class
)
@DictFormat
(
DictTypeConstants
.
CONFIG_TYPE
)
private
Integer
type
;
@ExcelProperty
(
value
=
"是否敏感"
,
converter
=
DictConvert
.
class
)
@DictFormat
(
DictTypeConstants
.
BOOLEAN_STRING
)
private
Boolean
sensitive
;
@ExcelProperty
(
"备注"
)
private
String
remark
;
@ExcelProperty
(
"创建时间"
)
private
LocalDateTime
createTime
;
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigExportReqVO.java
0 → 100644
浏览文件 @
95d1c82c
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
controller
.
admin
.
config
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.time.LocalDateTime
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
date
.
DateUtils
.
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
;
@ApiModel
(
"管理后台 - 参数配置导出 Request VO"
)
@Data
public
class
ConfigExportReqVO
{
@ApiModelProperty
(
value
=
"参数名称"
,
example
=
"模糊匹配"
)
private
String
name
;
@ApiModelProperty
(
value
=
"参数键名"
,
example
=
"yunai.db.username"
,
notes
=
"模糊匹配"
)
private
String
key
;
@ApiModelProperty
(
value
=
"参数类型"
,
example
=
"1"
,
notes
=
"参见 SysConfigTypeEnum 枚举"
)
private
Integer
type
;
@ApiModelProperty
(
value
=
"创建时间"
,
example
=
"[2022-07-01 00:00:00,2022-07-01 23:59:59]"
)
@DateTimeFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
private
LocalDateTime
[]
createTime
;
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigPageReqVO.java
0 → 100644
浏览文件 @
95d1c82c
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
controller
.
admin
.
config
.
vo
;
import
cn.iocoder.yudao.framework.common.pojo.PageParam
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.ToString
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.time.LocalDateTime
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
date
.
DateUtils
.
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
;
@ApiModel
(
"管理后台 - 参数配置分页 Request VO"
)
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@ToString
(
callSuper
=
true
)
public
class
ConfigPageReqVO
extends
PageParam
{
@ApiModelProperty
(
value
=
"数据源名称"
,
example
=
"模糊匹配"
)
private
String
name
;
@ApiModelProperty
(
value
=
"参数键名"
,
example
=
"yunai.db.username"
,
notes
=
"模糊匹配"
)
private
String
key
;
@ApiModelProperty
(
value
=
"参数类型"
,
example
=
"1"
,
notes
=
"参见 SysConfigTypeEnum 枚举"
)
private
Integer
type
;
@ApiModelProperty
(
value
=
"创建时间"
,
example
=
"[2022-07-01 00:00:00,2022-07-01 23:59:59]"
)
@DateTimeFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
private
LocalDateTime
[]
createTime
;
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigRespVO.java
0 → 100644
浏览文件 @
95d1c82c
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
controller
.
admin
.
config
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.Size
;
import
java.time.LocalDateTime
;
@ApiModel
(
"管理后台 - 参数配置信息 Response VO"
)
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
public
class
ConfigRespVO
extends
ConfigBaseVO
{
@ApiModelProperty
(
value
=
"参数配置序号"
,
required
=
true
,
example
=
"1024"
)
private
Long
id
;
@ApiModelProperty
(
value
=
"参数键名"
,
required
=
true
,
example
=
"yunai.db.username"
)
@NotBlank
(
message
=
"参数键名长度不能为空"
)
@Size
(
max
=
100
,
message
=
"参数键名长度不能超过100个字符"
)
private
String
key
;
@ApiModelProperty
(
value
=
"参数类型"
,
required
=
true
,
example
=
"1"
,
notes
=
"参见 SysConfigTypeEnum 枚举"
)
private
Integer
type
;
@ApiModelProperty
(
value
=
"创建时间"
,
required
=
true
,
example
=
"时间戳格式"
)
private
LocalDateTime
createTime
;
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigUpdateReqVO.java
0 → 100644
浏览文件 @
95d1c82c
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
controller
.
admin
.
config
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.ToString
;
import
javax.validation.constraints.NotNull
;
@ApiModel
(
"管理后台 - 参数配置创建 Request VO"
)
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@ToString
(
callSuper
=
true
)
public
class
ConfigUpdateReqVO
extends
ConfigBaseVO
{
@ApiModelProperty
(
value
=
"参数配置序号"
,
required
=
true
,
example
=
"1024"
)
@NotNull
(
message
=
"参数配置编号不能为空"
)
private
Long
id
;
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/convert/config/ConfigConvert.java
0 → 100644
浏览文件 @
95d1c82c
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
convert
.
config
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigCreateReqVO
;
import
cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigExcelVO
;
import
cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigRespVO
;
import
cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigUpdateReqVO
;
import
cn.iocoder.yudao.module.infra.dal.dataobject.config.ConfigDO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mapping
;
import
org.mapstruct.factory.Mappers
;
import
java.util.List
;
@Mapper
public
interface
ConfigConvert
{
ConfigConvert
INSTANCE
=
Mappers
.
getMapper
(
ConfigConvert
.
class
);
PageResult
<
ConfigRespVO
>
convertPage
(
PageResult
<
ConfigDO
>
page
);
@Mapping
(
source
=
"configKey"
,
target
=
"key"
)
ConfigRespVO
convert
(
ConfigDO
bean
);
@Mapping
(
source
=
"key"
,
target
=
"configKey"
)
ConfigDO
convert
(
ConfigCreateReqVO
bean
);
ConfigDO
convert
(
ConfigUpdateReqVO
bean
);
@Mapping
(
source
=
"configKey"
,
target
=
"key"
)
List
<
ConfigExcelVO
>
convertList
(
List
<
ConfigDO
>
list
);
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/config/ConfigDO.java
0 → 100644
浏览文件 @
95d1c82c
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
dal
.
dataobject
.
config
;
import
cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO
;
import
cn.iocoder.yudao.module.infra.enums.config.ConfigTypeEnum
;
import
com.baomidou.mybatisplus.annotation.KeySequence
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.ToString
;
/**
* 参数配置表
*
* @author 芋道源码
*/
@TableName
(
"infra_config"
)
@KeySequence
(
"infra_config_seq"
)
// 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@ToString
(
callSuper
=
true
)
public
class
ConfigDO
extends
BaseDO
{
/**
* 参数主键
*/
@TableId
private
Long
id
;
/**
* 参数分类
*/
private
String
category
;
/**
* 参数名称
*/
private
String
name
;
/**
* 参数键名
*
* 支持多 DB 类型时,无法直接使用 key + @TableField("config_key") 来实现转换,原因是 "config_key" AS key 而存在报错
*/
private
String
configKey
;
/**
* 参数键值
*/
private
String
value
;
/**
* 参数类型
*
* 枚举 {@link ConfigTypeEnum}
*/
private
Integer
type
;
/**
* 是否可见
*
* 不可见的参数,一般是敏感参数,前端不可获取
*/
private
Boolean
visible
;
/**
* 备注
*/
private
String
remark
;
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/config/ConfigMapper.java
0 → 100644
浏览文件 @
95d1c82c
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
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.infra.controller.admin.config.vo.ConfigExportReqVO
;
import
cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigPageReqVO
;
import
cn.iocoder.yudao.module.infra.dal.dataobject.config.ConfigDO
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
@Mapper
public
interface
ConfigMapper
extends
BaseMapperX
<
ConfigDO
>
{
default
ConfigDO
selectByKey
(
String
key
)
{
return
selectOne
(
ConfigDO:
:
getConfigKey
,
key
);
}
default
PageResult
<
ConfigDO
>
selectPage
(
ConfigPageReqVO
reqVO
)
{
return
selectPage
(
reqVO
,
new
LambdaQueryWrapperX
<
ConfigDO
>()
.
likeIfPresent
(
ConfigDO:
:
getName
,
reqVO
.
getName
())
.
likeIfPresent
(
ConfigDO:
:
getConfigKey
,
reqVO
.
getKey
())
.
eqIfPresent
(
ConfigDO:
:
getType
,
reqVO
.
getType
())
.
betweenIfPresent
(
ConfigDO:
:
getCreateTime
,
reqVO
.
getCreateTime
()));
}
default
List
<
ConfigDO
>
selectList
(
ConfigExportReqVO
reqVO
)
{
return
selectList
(
new
LambdaQueryWrapperX
<
ConfigDO
>()
.
likeIfPresent
(
ConfigDO:
:
getName
,
reqVO
.
getName
())
.
likeIfPresent
(
ConfigDO:
:
getConfigKey
,
reqVO
.
getKey
())
.
eqIfPresent
(
ConfigDO:
:
getType
,
reqVO
.
getType
())
.
betweenIfPresent
(
ConfigDO:
:
getCreateTime
,
reqVO
.
getCreateTime
()));
}
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/enums/config/ConfigTypeEnum.java
0 → 100644
浏览文件 @
95d1c82c
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
enums
.
config
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
@Getter
@AllArgsConstructor
public
enum
ConfigTypeEnum
{
/**
* 系统配置
*/
SYSTEM
(
1
),
/**
* 自定义配置
*/
CUSTOM
(
2
);
private
final
Integer
type
;
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigService.java
0 → 100644
浏览文件 @
95d1c82c
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
service
.
config
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigCreateReqVO
;
import
cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigExportReqVO
;
import
cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigPageReqVO
;
import
cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigUpdateReqVO
;
import
cn.iocoder.yudao.module.infra.dal.dataobject.config.ConfigDO
;
import
javax.validation.Valid
;
import
java.util.List
;
/**
* 参数配置 Service 接口
*
* @author 芋道源码
*/
public
interface
ConfigService
{
/**
* 创建参数配置
*
* @param reqVO 创建信息
* @return 配置编号
*/
Long
createConfig
(
@Valid
ConfigCreateReqVO
reqVO
);
/**
* 更新参数配置
*
* @param reqVO 更新信息
*/
void
updateConfig
(
@Valid
ConfigUpdateReqVO
reqVO
);
/**
* 删除参数配置
*
* @param id 配置编号
*/
void
deleteConfig
(
Long
id
);
/**
* 获得参数配置
*
* @param id 配置编号
* @return 参数配置
*/
ConfigDO
getConfig
(
Long
id
);
/**
* 根据参数键,获得参数配置
*
* @param key 配置键
* @return 参数配置
*/
ConfigDO
getConfigByKey
(
String
key
);
/**
* 获得参数配置分页列表
*
* @param reqVO 分页条件
* @return 分页列表
*/
PageResult
<
ConfigDO
>
getConfigPage
(
@Valid
ConfigPageReqVO
reqVO
);
/**
* 获得参数配置列表
*
* @param reqVO 列表
* @return 列表
*/
List
<
ConfigDO
>
getConfigList
(
@Valid
ConfigExportReqVO
reqVO
);
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImpl.java
0 → 100644
浏览文件 @
95d1c82c
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
service
.
config
;
import
cn.hutool.core.util.StrUtil
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigCreateReqVO
;
import
cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigExportReqVO
;
import
cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigPageReqVO
;
import
cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigUpdateReqVO
;
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.mysql.config.ConfigMapper
;
import
cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants
;
import
cn.iocoder.yudao.module.infra.enums.config.ConfigTypeEnum
;
import
com.google.common.annotations.VisibleForTesting
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
org.springframework.validation.annotation.Validated
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
exception
.
util
.
ServiceExceptionUtil
.
exception
;
/**
* 参数配置 Service 实现类
*/
@Service
@Slf4j
@Validated
public
class
ConfigServiceImpl
implements
ConfigService
{
@Resource
private
ConfigMapper
configMapper
;
@Override
public
Long
createConfig
(
ConfigCreateReqVO
reqVO
)
{
// 校验正确性
checkCreateOrUpdate
(
null
,
reqVO
.
getKey
());
// 插入参数配置
ConfigDO
config
=
ConfigConvert
.
INSTANCE
.
convert
(
reqVO
);
config
.
setType
(
ConfigTypeEnum
.
CUSTOM
.
getType
());
configMapper
.
insert
(
config
);
return
config
.
getId
();
}
@Override
public
void
updateConfig
(
ConfigUpdateReqVO
reqVO
)
{
// 校验正确性
checkCreateOrUpdate
(
reqVO
.
getId
(),
null
);
// 不允许更新 key
// 更新参数配置
ConfigDO
updateObj
=
ConfigConvert
.
INSTANCE
.
convert
(
reqVO
);
configMapper
.
updateById
(
updateObj
);;
}
@Override
public
void
deleteConfig
(
Long
id
)
{
// 校验配置存在
ConfigDO
config
=
checkConfigExists
(
id
);
// 内置配置,不允许删除
if
(
ConfigTypeEnum
.
SYSTEM
.
getType
().
equals
(
config
.
getType
()))
{
throw
exception
(
ErrorCodeConstants
.
CONFIG_CAN_NOT_DELETE_SYSTEM_TYPE
);
}
// 删除
configMapper
.
deleteById
(
id
);
}
@Override
public
ConfigDO
getConfig
(
Long
id
)
{
return
configMapper
.
selectById
(
id
);
}
@Override
public
ConfigDO
getConfigByKey
(
String
key
)
{
return
configMapper
.
selectByKey
(
key
);
}
@Override
public
PageResult
<
ConfigDO
>
getConfigPage
(
ConfigPageReqVO
reqVO
)
{
return
configMapper
.
selectPage
(
reqVO
);
}
@Override
public
List
<
ConfigDO
>
getConfigList
(
ConfigExportReqVO
reqVO
)
{
return
configMapper
.
selectList
(
reqVO
);
}
private
void
checkCreateOrUpdate
(
Long
id
,
String
key
)
{
// 校验自己存在
checkConfigExists
(
id
);
// 校验参数配置 key 的唯一性
if
(
StrUtil
.
isNotEmpty
(
key
))
{
checkConfigKeyUnique
(
id
,
key
);
}
}
@VisibleForTesting
public
ConfigDO
checkConfigExists
(
Long
id
)
{
if
(
id
==
null
)
{
return
null
;
}
ConfigDO
config
=
configMapper
.
selectById
(
id
);
if
(
config
==
null
)
{
throw
exception
(
ErrorCodeConstants
.
CONFIG_NOT_EXISTS
);
}
return
config
;
}
@VisibleForTesting
public
void
checkConfigKeyUnique
(
Long
id
,
String
key
)
{
ConfigDO
config
=
configMapper
.
selectByKey
(
key
);
if
(
config
==
null
)
{
return
;
}
// 如果 id 为空,说明不用比较是否为相同 id 的参数配置
if
(
id
==
null
)
{
throw
exception
(
ErrorCodeConstants
.
CONFIG_KEY_DUPLICATE
);
}
if
(!
config
.
getId
().
equals
(
id
))
{
throw
exception
(
ErrorCodeConstants
.
CONFIG_KEY_DUPLICATE
);
}
}
}
yudao-module-system/yudao-module-system-biz/src/main/resources/application.yaml
浏览文件 @
95d1c82c
...
@@ -125,7 +125,7 @@ yudao:
...
@@ -125,7 +125,7 @@ yudao:
version
:
${yudao.info.version}
version
:
${yudao.info.version}
base-package
:
${yudao.info.base-package}
base-package
:
${yudao.info.base-package}
captcha
:
captcha
:
enable
:
true
# 验证码的开关,默认为 true;
注意,优先读取数据库 infra_config 的 yudao.captcha.enable,所以请从数据库修改,可能需要重启项目
enable
:
true
# 验证码的开关,默认为 true;
error-code
:
# 错误码相关配置项
error-code
:
# 错误码相关配置项
constants-class-list
:
constants-class-list
:
-
cn.iocoder.yudao.module.system.enums.ErrorCodeConstants
-
cn.iocoder.yudao.module.system.enums.ErrorCodeConstants
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论