Commit 35f1eb95b6add62df4bd167bd1136dc91dcedaf3
1 parent
1fe8d1cc
项目结构调整 x 9 : 分拆字典类型的枚举分拆
Showing
29 changed files
with
111 additions
and
135 deletions
pom.xml
| ... | ... | @@ -20,6 +20,10 @@ |
| 20 | 20 | |
| 21 | 21 | <properties> |
| 22 | 22 | <revision>1.0.0</revision> |
| 23 | + <!-- Maven 相关 --> | |
| 24 | + <java.version>1.8</java.version> | |
| 25 | + <maven.compiler.source>${java.version}</maven.compiler.source> | |
| 26 | + <maven.compiler.target>${java.version}</maven.compiler.target> | |
| 23 | 27 | </properties> |
| 24 | 28 | |
| 25 | 29 | <dependencyManagement> | ... | ... |
yudao-admin-server/pom.xml
| ... | ... | @@ -16,12 +16,6 @@ |
| 16 | 16 | <description>管理后台 Server,提供其 API 接口</description> |
| 17 | 17 | <url>https://github.com/YunaiV/ruoyi-vue-pro</url> |
| 18 | 18 | |
| 19 | - <properties> | |
| 20 | - <java.version>1.8</java.version> | |
| 21 | - <maven.compiler.source>${java.version}</maven.compiler.source> | |
| 22 | - <maven.compiler.target>${java.version}</maven.compiler.target> | |
| 23 | - </properties> | |
| 24 | - | |
| 25 | 19 | <dependencies> |
| 26 | 20 | <dependency> |
| 27 | 21 | <groupId>cn.iocoder.boot</groupId> | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/DashboardApplication.java renamed to yudao-admin-server/src/main/java/cn/iocoder/dashboard/AdminServerApplication.java
| ... | ... | @@ -4,10 +4,10 @@ import org.springframework.boot.SpringApplication; |
| 4 | 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; |
| 5 | 5 | |
| 6 | 6 | @SpringBootApplication |
| 7 | -public class DashboardApplication { | |
| 7 | +public class AdminServerApplication { | |
| 8 | 8 | |
| 9 | 9 | public static void main(String[] args) { |
| 10 | - SpringApplication.run(DashboardApplication.class, args); | |
| 10 | + SpringApplication.run(AdminServerApplication.class, args); | |
| 11 | 11 | } |
| 12 | 12 | |
| 13 | 13 | } | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/vo/InfConfigExcelVO.java
| ... | ... | @@ -2,7 +2,7 @@ package cn.iocoder.dashboard.modules.infra.controller.config.vo; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert; |
| 5 | -import cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum; | |
| 5 | +import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; | |
| 6 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| ... | ... | @@ -30,11 +30,11 @@ public class InfConfigExcelVO { |
| 30 | 30 | private String value; |
| 31 | 31 | |
| 32 | 32 | @ExcelProperty(value = "参数类型", converter = DictConvert.class) |
| 33 | - @DictFormat(SysDictTypeEnum.SYS_CONFIG_TYPE) | |
| 33 | + @DictFormat(SysDictTypeConstants.CONFIG_TYPE) | |
| 34 | 34 | private Integer type; |
| 35 | 35 | |
| 36 | 36 | @ExcelProperty(value = "是否敏感", converter = DictConvert.class) |
| 37 | - @DictFormat(SysDictTypeEnum.SYS_BOOLEAN_STRING) | |
| 37 | + @DictFormat(SysDictTypeConstants.BOOLEAN_STRING) | |
| 38 | 38 | private Boolean sensitive; |
| 39 | 39 | |
| 40 | 40 | @ExcelProperty("备注") | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/job/InfJobExcelVO.java
| ... | ... | @@ -2,13 +2,12 @@ package cn.iocoder.dashboard.modules.infra.controller.job.vo.job; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert; |
| 5 | +import cn.iocoder.dashboard.modules.infra.enums.InfDictTypeConstants; | |
| 5 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 6 | 7 | import lombok.Data; |
| 7 | 8 | |
| 8 | 9 | import java.util.Date; |
| 9 | 10 | |
| 10 | -import static cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum.INF_JOB_STATUS; | |
| 11 | - | |
| 12 | 11 | /** |
| 13 | 12 | * 定时任务 Excel VO |
| 14 | 13 | * |
| ... | ... | @@ -24,7 +23,7 @@ public class InfJobExcelVO { |
| 24 | 23 | private String name; |
| 25 | 24 | |
| 26 | 25 | @ExcelProperty(value = "任务状态", converter = DictConvert.class) |
| 27 | - @DictFormat(INF_JOB_STATUS) | |
| 26 | + @DictFormat(InfDictTypeConstants.JOB_STATUS) | |
| 28 | 27 | private Integer status; |
| 29 | 28 | |
| 30 | 29 | @ExcelProperty("处理器的名字") | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/log/InfJobLogExcelVO.java
| ... | ... | @@ -2,7 +2,7 @@ package cn.iocoder.dashboard.modules.infra.controller.job.vo.log; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert; |
| 5 | -import cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum; | |
| 5 | +import cn.iocoder.dashboard.modules.infra.enums.InfDictTypeConstants; | |
| 6 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| ... | ... | @@ -41,7 +41,7 @@ public class InfJobLogExcelVO { |
| 41 | 41 | private Integer duration; |
| 42 | 42 | |
| 43 | 43 | @ExcelProperty(value = "任务状态", converter = DictConvert.class) |
| 44 | - @DictFormat(SysDictTypeEnum.INF_JOB_STATUS) | |
| 44 | + @DictFormat(InfDictTypeConstants.JOB_STATUS) | |
| 45 | 45 | private Integer status; |
| 46 | 46 | |
| 47 | 47 | @ExcelProperty("结果数据") | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogExcelVO.java
| ... | ... | @@ -2,13 +2,12 @@ package cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert; |
| 5 | +import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; | |
| 5 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 6 | 7 | import lombok.Data; |
| 7 | 8 | |
| 8 | 9 | import java.util.Date; |
| 9 | 10 | |
| 10 | -import static cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum.USER_TYPE; | |
| 11 | - | |
| 12 | 11 | /** |
| 13 | 12 | * API 访问日志 Excel VO |
| 14 | 13 | * |
| ... | ... | @@ -27,7 +26,7 @@ public class InfApiAccessLogExcelVO { |
| 27 | 26 | private Long userId; |
| 28 | 27 | |
| 29 | 28 | @ExcelProperty(value = "用户类型", converter = DictConvert.class) |
| 30 | - @DictFormat(USER_TYPE) | |
| 29 | + @DictFormat(SysDictTypeConstants.USER_TYPE) | |
| 31 | 30 | private Integer userType; |
| 32 | 31 | |
| 33 | 32 | @ExcelProperty("应用名") | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogExcelVO.java
| ... | ... | @@ -2,14 +2,13 @@ package cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert; |
| 5 | +import cn.iocoder.dashboard.modules.infra.enums.InfDictTypeConstants; | |
| 6 | +import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; | |
| 5 | 7 | import com.alibaba.excel.annotation.ExcelProperty; |
| 6 | 8 | import lombok.Data; |
| 7 | 9 | |
| 8 | 10 | import java.util.Date; |
| 9 | 11 | |
| 10 | -import static cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum.INF_API_ERROR_LOG_PROCESS_STATUS; | |
| 11 | -import static cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum.USER_TYPE; | |
| 12 | - | |
| 13 | 12 | /** |
| 14 | 13 | * API 错误日志 Excel VO |
| 15 | 14 | * |
| ... | ... | @@ -28,7 +27,7 @@ public class InfApiErrorLogExcelVO { |
| 28 | 27 | private Integer userId; |
| 29 | 28 | |
| 30 | 29 | @ExcelProperty(value = "用户类型", converter = DictConvert.class) |
| 31 | - @DictFormat(USER_TYPE) | |
| 30 | + @DictFormat(SysDictTypeConstants.USER_TYPE) | |
| 32 | 31 | private Integer userType; |
| 33 | 32 | |
| 34 | 33 | @ExcelProperty("应用名") |
| ... | ... | @@ -80,7 +79,7 @@ public class InfApiErrorLogExcelVO { |
| 80 | 79 | private Date createTime; |
| 81 | 80 | |
| 82 | 81 | @ExcelProperty(value = "处理状态", converter = DictConvert.class) |
| 83 | - @DictFormat(INF_API_ERROR_LOG_PROCESS_STATUS) | |
| 82 | + @DictFormat(InfDictTypeConstants.API_ERROR_LOG_PROCESS_STATUS) | |
| 84 | 83 | private Integer processStatus; |
| 85 | 84 | |
| 86 | 85 | @ExcelProperty("处理时间") | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/enums/InfDictTypeConstants.java
0 → 100644
| 1 | +package cn.iocoder.dashboard.modules.infra.enums; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * Infra 字典类型的枚举类 | |
| 5 | + * | |
| 6 | + * @author 芋道源码 | |
| 7 | + */ | |
| 8 | +public interface InfDictTypeConstants { | |
| 9 | + | |
| 10 | + String REDIS_TIMEOUT_TYPE = "inf_redis_timeout_type"; // Redis 超时类型 | |
| 11 | + | |
| 12 | + String JOB_STATUS = "inf_job_status"; // 定时任务状态的枚举 | |
| 13 | + String JOB_LOG_STATUS = "inf_job_log_status"; // 定时任务日志状态的枚举 | |
| 14 | + | |
| 15 | + String API_ERROR_LOG_PROCESS_STATUS = "inf_api_error_log_process_status"; // API 错误日志的处理状态的枚举 | |
| 16 | + | |
| 17 | + String ERROR_CODE_TYPE = "inf_error_code_type"; // 错误码的类型枚举 | |
| 18 | + | |
| 19 | +} | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostExcelVO.java
| ... | ... | @@ -2,11 +2,10 @@ package cn.iocoder.dashboard.modules.system.controller.dept.vo.post; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert; |
| 5 | +import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; | |
| 5 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 6 | 7 | import lombok.Data; |
| 7 | 8 | |
| 8 | -import static cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum.SYS_COMMON_STATUS; | |
| 9 | - | |
| 10 | 9 | /** |
| 11 | 10 | * 岗位 Excel 导出响应 VO |
| 12 | 11 | */ |
| ... | ... | @@ -26,7 +25,7 @@ public class SysPostExcelVO { |
| 26 | 25 | private Integer sort; |
| 27 | 26 | |
| 28 | 27 | @ExcelProperty(value = "状态", converter = DictConvert.class) |
| 29 | - @DictFormat(SYS_COMMON_STATUS) | |
| 28 | + @DictFormat(SysDictTypeConstants.COMMON_STATUS) | |
| 30 | 29 | private String status; |
| 31 | 30 | |
| 32 | 31 | } | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/data/SysDictDataExcelVO.java
| ... | ... | @@ -2,11 +2,10 @@ package cn.iocoder.dashboard.modules.system.controller.dict.vo.data; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert; |
| 5 | +import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; | |
| 5 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 6 | 7 | import lombok.Data; |
| 7 | 8 | |
| 8 | -import static cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum.SYS_COMMON_STATUS; | |
| 9 | - | |
| 10 | 9 | /** |
| 11 | 10 | * 字典数据 Excel 导出响应 VO |
| 12 | 11 | */ |
| ... | ... | @@ -29,7 +28,7 @@ public class SysDictDataExcelVO { |
| 29 | 28 | private String dictType; |
| 30 | 29 | |
| 31 | 30 | @ExcelProperty(value = "状态", converter = DictConvert.class) |
| 32 | - @DictFormat(SYS_COMMON_STATUS) | |
| 31 | + @DictFormat(SysDictTypeConstants.COMMON_STATUS) | |
| 33 | 32 | private Integer status; |
| 34 | 33 | |
| 35 | 34 | } | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypeExcelVO.java
| ... | ... | @@ -2,11 +2,10 @@ package cn.iocoder.dashboard.modules.system.controller.dict.vo.type; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert; |
| 5 | +import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; | |
| 5 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 6 | 7 | import lombok.Data; |
| 7 | 8 | |
| 8 | -import static cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum.SYS_COMMON_STATUS; | |
| 9 | - | |
| 10 | 9 | /** |
| 11 | 10 | * 字典类型 Excel 导出响应 VO |
| 12 | 11 | */ |
| ... | ... | @@ -23,7 +22,7 @@ public class SysDictTypeExcelVO { |
| 23 | 22 | private String type; |
| 24 | 23 | |
| 25 | 24 | @ExcelProperty(value = "状态", converter = DictConvert.class) |
| 26 | - @DictFormat(SYS_COMMON_STATUS) | |
| 25 | + @DictFormat(SysDictTypeConstants.COMMON_STATUS) | |
| 27 | 26 | private Integer status; |
| 28 | 27 | |
| 29 | 28 | } | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/errorcode/vo/SysErrorCodeExcelVO.java
| ... | ... | @@ -2,13 +2,12 @@ package cn.iocoder.dashboard.modules.system.controller.errorcode.vo; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert; |
| 5 | +import cn.iocoder.dashboard.modules.infra.enums.InfDictTypeConstants; | |
| 5 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 6 | 7 | import lombok.Data; |
| 7 | 8 | |
| 8 | 9 | import java.util.Date; |
| 9 | 10 | |
| 10 | -import static cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum.SYS_ERROR_CODE_TYPE; | |
| 11 | - | |
| 12 | 11 | /** |
| 13 | 12 | * 错误码 Excel VO |
| 14 | 13 | * |
| ... | ... | @@ -21,7 +20,7 @@ public class SysErrorCodeExcelVO { |
| 21 | 20 | private Long id; |
| 22 | 21 | |
| 23 | 22 | @ExcelProperty(value = "错误码类型", converter = DictConvert.class) |
| 24 | - @DictFormat(SYS_ERROR_CODE_TYPE) | |
| 23 | + @DictFormat(InfDictTypeConstants.ERROR_CODE_TYPE) | |
| 25 | 24 | private Integer type; |
| 26 | 25 | |
| 27 | 26 | @ExcelProperty("应用名") | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/loginlog/SysLoginLogExcelVO.java
| ... | ... | @@ -2,7 +2,7 @@ package cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert; |
| 5 | -import cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum; | |
| 5 | +import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; | |
| 6 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| ... | ... | @@ -21,7 +21,7 @@ public class SysLoginLogExcelVO { |
| 21 | 21 | private String username; |
| 22 | 22 | |
| 23 | 23 | @ExcelProperty(value = "登陆结果", converter = DictConvert.class) |
| 24 | - @DictFormat(SysDictTypeEnum.SYS_LOGIN_RESULT) | |
| 24 | + @DictFormat(SysDictTypeConstants.LOGIN_RESULT) | |
| 25 | 25 | private Integer result; |
| 26 | 26 | |
| 27 | 27 | @ExcelProperty("登陆 IP") | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/operatelog/SysOperateLogExcelVO.java
| ... | ... | @@ -2,7 +2,7 @@ package cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert; |
| 5 | -import cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum; | |
| 5 | +import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; | |
| 6 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| ... | ... | @@ -24,7 +24,7 @@ public class SysOperateLogExcelVO { |
| 24 | 24 | private String name; |
| 25 | 25 | |
| 26 | 26 | @ExcelProperty(value = "操作类型", converter = DictConvert.class) |
| 27 | - @DictFormat(SysDictTypeEnum.SYS_OPERATE_TYPE) | |
| 27 | + @DictFormat(SysDictTypeConstants.OPERATE_TYPE) | |
| 28 | 28 | private String type; |
| 29 | 29 | |
| 30 | 30 | @ExcelProperty("操作人") | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleExcelVO.java
| ... | ... | @@ -2,7 +2,7 @@ package cn.iocoder.dashboard.modules.system.controller.permission.vo.role; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert; |
| 5 | -import cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum; | |
| 5 | +import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; | |
| 6 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| ... | ... | @@ -28,7 +28,7 @@ public class SysRoleExcelVO { |
| 28 | 28 | private Integer dataScope; |
| 29 | 29 | |
| 30 | 30 | @ExcelProperty(value = "角色状态", converter = DictConvert.class) |
| 31 | - @DictFormat(SysDictTypeEnum.SYS_COMMON_STATUS) | |
| 31 | + @DictFormat(SysDictTypeConstants.COMMON_STATUS) | |
| 32 | 32 | private String status; |
| 33 | 33 | |
| 34 | 34 | } | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/log/SysSmsLogExcelVO.java
| ... | ... | @@ -3,14 +3,13 @@ package cn.iocoder.dashboard.modules.system.controller.sms.vo.log; |
| 3 | 3 | import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert; |
| 5 | 5 | import cn.iocoder.dashboard.framework.excel.core.convert.JsonConvert; |
| 6 | +import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; | |
| 6 | 7 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 8 | import lombok.Data; |
| 8 | 9 | |
| 9 | 10 | import java.util.Date; |
| 10 | 11 | import java.util.Map; |
| 11 | 12 | |
| 12 | -import static cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum.*; | |
| 13 | - | |
| 14 | 13 | /** |
| 15 | 14 | * 短信日志 Excel VO |
| 16 | 15 | * |
| ... | ... | @@ -35,7 +34,7 @@ public class SysSmsLogExcelVO { |
| 35 | 34 | private String templateCode; |
| 36 | 35 | |
| 37 | 36 | @ExcelProperty(value = "短信类型", converter = DictConvert.class) |
| 38 | - @DictFormat(SYS_SMS_TEMPLATE_TYPE) | |
| 37 | + @DictFormat(SysDictTypeConstants.SMS_TEMPLATE_TYPE) | |
| 39 | 38 | private Integer templateType; |
| 40 | 39 | |
| 41 | 40 | @ExcelProperty("短信内容") |
| ... | ... | @@ -54,11 +53,11 @@ public class SysSmsLogExcelVO { |
| 54 | 53 | private Long userId; |
| 55 | 54 | |
| 56 | 55 | @ExcelProperty(value = "用户类型", converter = DictConvert.class) |
| 57 | - @DictFormat(USER_TYPE) | |
| 56 | + @DictFormat(SysDictTypeConstants.USER_TYPE) | |
| 58 | 57 | private Integer userType; |
| 59 | 58 | |
| 60 | 59 | @ExcelProperty(value = "发送状态", converter = DictConvert.class) |
| 61 | - @DictFormat(SYS_SMS_SEND_STATUS) | |
| 60 | + @DictFormat(SysDictTypeConstants.SMS_SEND_STATUS) | |
| 62 | 61 | private Integer sendStatus; |
| 63 | 62 | |
| 64 | 63 | @ExcelProperty("发送时间") |
| ... | ... | @@ -83,7 +82,7 @@ public class SysSmsLogExcelVO { |
| 83 | 82 | private String apiSerialNo; |
| 84 | 83 | |
| 85 | 84 | @ExcelProperty(value = "接收状态", converter = DictConvert.class) |
| 86 | - @DictFormat(SYS_SMS_RECEIVE_STATUS) | |
| 85 | + @DictFormat(SysDictTypeConstants.SMS_RECEIVE_STATUS) | |
| 87 | 86 | private Integer receiveStatus; |
| 88 | 87 | |
| 89 | 88 | @ExcelProperty("接收时间") | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateExcelVO.java
| ... | ... | @@ -2,13 +2,12 @@ package cn.iocoder.dashboard.modules.system.controller.sms.vo.template; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert; |
| 5 | +import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; | |
| 5 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 6 | 7 | import lombok.Data; |
| 7 | 8 | |
| 8 | 9 | import java.util.Date; |
| 9 | 10 | |
| 10 | -import static cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum.*; | |
| 11 | - | |
| 12 | 11 | /** |
| 13 | 12 | * 短信模板 Excel VO |
| 14 | 13 | * |
| ... | ... | @@ -21,11 +20,11 @@ public class SysSmsTemplateExcelVO { |
| 21 | 20 | private Long id; |
| 22 | 21 | |
| 23 | 22 | @ExcelProperty(value = "短信签名", converter = DictConvert.class) |
| 24 | - @DictFormat(SYS_SMS_TEMPLATE_TYPE) | |
| 23 | + @DictFormat(SysDictTypeConstants.SMS_TEMPLATE_TYPE) | |
| 25 | 24 | private Integer type; |
| 26 | 25 | |
| 27 | 26 | @ExcelProperty(value = "开启状态", converter = DictConvert.class) |
| 28 | - @DictFormat(SYS_COMMON_STATUS) | |
| 27 | + @DictFormat(SysDictTypeConstants.COMMON_STATUS) | |
| 29 | 28 | private Integer status; |
| 30 | 29 | |
| 31 | 30 | @ExcelProperty("模板编码") |
| ... | ... | @@ -47,7 +46,7 @@ public class SysSmsTemplateExcelVO { |
| 47 | 46 | private Long channelId; |
| 48 | 47 | |
| 49 | 48 | @ExcelProperty(value = "短信渠道编码", converter = DictConvert.class) |
| 50 | - @DictFormat(SYS_SMS_CHANNEL_CODE) | |
| 49 | + @DictFormat(SysDictTypeConstants.SMS_CHANNEL_CODE) | |
| 51 | 50 | private String channelCode; |
| 52 | 51 | |
| 53 | 52 | @ExcelProperty("创建时间") | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserExcelVO.java
| ... | ... | @@ -2,14 +2,12 @@ package cn.iocoder.dashboard.modules.system.controller.user.vo.user; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert; |
| 5 | +import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; | |
| 5 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 6 | 7 | import lombok.Data; |
| 7 | 8 | |
| 8 | 9 | import java.util.Date; |
| 9 | 10 | |
| 10 | -import static cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum.SYS_COMMON_STATUS; | |
| 11 | -import static cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum.SYS_USER_SEX; | |
| 12 | - | |
| 13 | 11 | /** |
| 14 | 12 | * 用户 Excel 导出 VO |
| 15 | 13 | */ |
| ... | ... | @@ -32,11 +30,11 @@ public class SysUserExcelVO { |
| 32 | 30 | private String mobile; |
| 33 | 31 | |
| 34 | 32 | @ExcelProperty(value = "用户性别", converter = DictConvert.class) |
| 35 | - @DictFormat(SYS_USER_SEX) | |
| 33 | + @DictFormat(SysDictTypeConstants.USER_SEX) | |
| 36 | 34 | private Integer sex; |
| 37 | 35 | |
| 38 | 36 | @ExcelProperty(value = "帐号状态", converter = DictConvert.class) |
| 39 | - @DictFormat(SYS_COMMON_STATUS) | |
| 37 | + @DictFormat(SysDictTypeConstants.COMMON_STATUS) | |
| 40 | 38 | private Integer status; |
| 41 | 39 | |
| 42 | 40 | @ExcelProperty("最后登录IP") | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserImportExcelVO.java
| ... | ... | @@ -2,7 +2,7 @@ package cn.iocoder.dashboard.modules.system.controller.user.vo.user; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert; |
| 5 | -import cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum; | |
| 5 | +import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; | |
| 6 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.AllArgsConstructor; |
| 8 | 8 | import lombok.Builder; |
| ... | ... | @@ -34,11 +34,11 @@ public class SysUserImportExcelVO { |
| 34 | 34 | private String mobile; |
| 35 | 35 | |
| 36 | 36 | @ExcelProperty(value = "用户性别", converter = DictConvert.class) |
| 37 | - @DictFormat(SysDictTypeEnum.SYS_USER_SEX) | |
| 37 | + @DictFormat(SysDictTypeConstants.USER_SEX) | |
| 38 | 38 | private Integer sex; |
| 39 | 39 | |
| 40 | 40 | @ExcelProperty(value = "账号状态", converter = DictConvert.class) |
| 41 | - @DictFormat(SysDictTypeEnum.SYS_COMMON_STATUS) | |
| 41 | + @DictFormat(SysDictTypeConstants.COMMON_STATUS) | |
| 42 | 42 | private Integer status; |
| 43 | 43 | |
| 44 | 44 | } | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/SysDictTypeConstants.java
0 → 100644
| 1 | +package cn.iocoder.dashboard.modules.system.enums; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * System 字典类型的枚举类 | |
| 5 | + * | |
| 6 | + * @author 芋道源码 | |
| 7 | + */ | |
| 8 | +public interface SysDictTypeConstants { | |
| 9 | + | |
| 10 | + String USER_TYPE = "user_type"; // 用户类型 | |
| 11 | + String COMMON_STATUS = "sys_common_status"; // 系统状态 | |
| 12 | + | |
| 13 | + String USER_SEX = "sys_user_sex"; // 用户性别 | |
| 14 | + String OPERATE_TYPE = "sys_operate_type"; // 操作类型 | |
| 15 | + String LOGIN_RESULT = "sys_login_result"; // 登陆结果 | |
| 16 | + String CONFIG_TYPE = "sys_config_type"; // 参数配置类型 | |
| 17 | + String BOOLEAN_STRING = "sys_boolean_string"; // Boolean 是否类型 | |
| 18 | + | |
| 19 | + String SMS_CHANNEL_CODE = "sys_sms_channel_code"; // 短信渠道编码 | |
| 20 | + String SMS_TEMPLATE_TYPE = "sys_sms_template_type"; // 短信模板类型 | |
| 21 | + String SMS_SEND_STATUS = "sys_sms_send_status"; // 短信发送状态 | |
| 22 | + String SMS_RECEIVE_STATUS = "sys_sms_receive_status"; // 短信接收状态 | |
| 23 | + | |
| 24 | + | |
| 25 | +} | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoExcelVO.java
| ... | ... | @@ -2,13 +2,13 @@ package cn.iocoder.dashboard.modules.tool.controller.test.vo; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert; |
| 5 | +import cn.iocoder.dashboard.modules.infra.enums.InfDictTypeConstants; | |
| 6 | +import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; | |
| 5 | 7 | import com.alibaba.excel.annotation.ExcelProperty; |
| 6 | 8 | import lombok.Data; |
| 7 | 9 | |
| 8 | 10 | import java.util.Date; |
| 9 | 11 | |
| 10 | -import static cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum.*; | |
| 11 | - | |
| 12 | 12 | /** |
| 13 | 13 | * 测试示例 Excel VO |
| 14 | 14 | * |
| ... | ... | @@ -24,15 +24,15 @@ public class ToolTestDemoExcelVO { |
| 24 | 24 | private String name; |
| 25 | 25 | |
| 26 | 26 | @ExcelProperty(value = "状态", converter = DictConvert.class) |
| 27 | - @DictFormat(SYS_COMMON_STATUS) | |
| 27 | + @DictFormat(SysDictTypeConstants.COMMON_STATUS) | |
| 28 | 28 | private Integer status; |
| 29 | 29 | |
| 30 | 30 | @ExcelProperty(value = "类型", converter = DictConvert.class) |
| 31 | - @DictFormat(SYS_OPERATE_TYPE) | |
| 31 | + @DictFormat(SysDictTypeConstants.OPERATE_TYPE) | |
| 32 | 32 | private Integer type; |
| 33 | 33 | |
| 34 | 34 | @ExcelProperty(value = "分类", converter = DictConvert.class) |
| 35 | - @DictFormat(INF_REDIS_TIMEOUT_TYPE) | |
| 35 | + @DictFormat(InfDictTypeConstants.REDIS_TIMEOUT_TYPE) | |
| 36 | 36 | private Integer category; |
| 37 | 37 | |
| 38 | 38 | @ExcelProperty("备注") | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenEngine.java
| ... | ... | @@ -18,7 +18,6 @@ import cn.iocoder.dashboard.framework.logger.operatelog.core.enums.OperateTypeEn |
| 18 | 18 | import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; |
| 19 | 19 | import cn.iocoder.dashboard.framework.mybatis.core.mapper.BaseMapperX; |
| 20 | 20 | import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX; |
| 21 | -import cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum; | |
| 22 | 21 | import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO; |
| 23 | 22 | import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; |
| 24 | 23 | import cn.iocoder.dashboard.util.collection.CollectionUtils; |
| ... | ... | @@ -126,7 +125,8 @@ public class ToolCodegenEngine { |
| 126 | 125 | // VO 类,独有字段 |
| 127 | 126 | globalBindingMap.put("PageParamClassName", PageParam.class.getName()); |
| 128 | 127 | globalBindingMap.put("DictFormatClassName", DictFormat.class.getName()); |
| 129 | - globalBindingMap.put("SysDictTypeEnumClassName", SysDictTypeEnum.class.getName()); | |
| 128 | + // TODO 芋艿:代码生成器,解决下枚举类 | |
| 129 | +// globalBindingMap.put("SysDictTypeEnumClassName", SysDictTypeEnum.class.getName()); | |
| 130 | 130 | // DO 类,独有字段 |
| 131 | 131 | globalBindingMap.put("baseDOFields", ToolCodegenBuilder.BASE_DO_FIELDS); |
| 132 | 132 | globalBindingMap.put("BaseDOClassName", BaseDO.class.getName()); | ... | ... |
yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsServiceTest.java
| 1 | 1 | package cn.iocoder.dashboard.modules.system.service.sms; |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.map.MapUtil; |
| 4 | -import cn.iocoder.dashboard.framework.test.core.BaseMockitoUnitTest; | |
| 4 | +import cn.iocoder.dashboard.BaseMockitoUnitTest; | |
| 5 | 5 | import cn.iocoder.dashboard.common.core.KeyValue; |
| 6 | 6 | import cn.iocoder.dashboard.common.enums.CommonStatusEnum; |
| 7 | 7 | import cn.iocoder.dashboard.common.enums.UserTypeEnum; | ... | ... |
yudao-dependencies/pom.xml
| ... | ... | @@ -15,14 +15,6 @@ |
| 15 | 15 | |
| 16 | 16 | <properties> |
| 17 | 17 | <revision>1.0.0</revision> |
| 18 | - <!-- Maven 相关 --> | |
| 19 | - <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> | |
| 20 | - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | |
| 21 | - <resource.delimiter>@</resource.delimiter> | |
| 22 | - <java.version>1.8</java.version> | |
| 23 | - <maven.compiler.source>${java.version}</maven.compiler.source> | |
| 24 | - <maven.compiler.target>${java.version}</maven.compiler.target> | |
| 25 | - <maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version> | |
| 26 | 18 | <!-- 统一依赖管理 --> |
| 27 | 19 | <spring.boot.version>2.4.4</spring.boot.version> |
| 28 | 20 | <!-- Web 相关 --> | ... | ... |
yudao-framework/pom.xml
| ... | ... | @@ -16,16 +16,6 @@ |
| 16 | 16 | <description>基础框架,各种组件的拓展</description> |
| 17 | 17 | <url>https://github.com/YunaiV/ruoyi-vue-pro</url> |
| 18 | 18 | |
| 19 | - <properties> | |
| 20 | - <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> | |
| 21 | - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | |
| 22 | - <resource.delimiter>@</resource.delimiter> | |
| 23 | - <java.version>1.8</java.version> | |
| 24 | - <maven.compiler.source>${java.version}</maven.compiler.source> | |
| 25 | - <maven.compiler.target>${java.version}</maven.compiler.target> | |
| 26 | - <maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version> | |
| 27 | - </properties> | |
| 28 | - | |
| 29 | 19 | <dependencies> |
| 30 | 20 | <!-- Spring 核心 --> |
| 31 | 21 | <dependency> | ... | ... |
yudao-framework/src/main/java/cn/iocoder/dashboard/framework/excel/core/annotations/DictFormat.java
| 1 | 1 | package cn.iocoder.dashboard.framework.excel.core.annotations; |
| 2 | 2 | |
| 3 | -import cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum; | |
| 4 | - | |
| 5 | 3 | import java.lang.annotation.*; |
| 6 | 4 | |
| 7 | 5 | /** |
| ... | ... | @@ -14,6 +12,11 @@ import java.lang.annotation.*; |
| 14 | 12 | @Inherited |
| 15 | 13 | public @interface DictFormat { |
| 16 | 14 | |
| 17 | - SysDictTypeEnum value(); | |
| 15 | + /** | |
| 16 | + * 例如说,SysDictTypeConstants、InfDictTypeConstants | |
| 17 | + * | |
| 18 | + * @return 字典类型 | |
| 19 | + */ | |
| 20 | + String value(); | |
| 18 | 21 | |
| 19 | 22 | } | ... | ... |
yudao-framework/src/main/java/cn/iocoder/dashboard/framework/excel/core/convert/DictConvert.java
| ... | ... | @@ -5,7 +5,6 @@ import cn.hutool.core.convert.Convert; |
| 5 | 5 | import cn.iocoder.dashboard.framework.dict.core.dto.DictDataRespDTO; |
| 6 | 6 | import cn.iocoder.dashboard.framework.dict.core.util.DictUtils; |
| 7 | 7 | import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat; |
| 8 | -import cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum; | |
| 9 | 8 | import com.alibaba.excel.converters.Converter; |
| 10 | 9 | import com.alibaba.excel.enums.CellDataTypeEnum; |
| 11 | 10 | import com.alibaba.excel.metadata.CellData; |
| ... | ... | @@ -35,9 +34,9 @@ public class DictConvert implements Converter<Object> { |
| 35 | 34 | public Object convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, |
| 36 | 35 | GlobalConfiguration globalConfiguration) { |
| 37 | 36 | // 使用字典解析 |
| 38 | - SysDictTypeEnum type = getType(contentProperty); | |
| 37 | + String type = getType(contentProperty); | |
| 39 | 38 | String label = cellData.getStringValue(); |
| 40 | - DictDataRespDTO dictData = DictUtils.parseDictDataFromCache(type.getValue(), label); | |
| 39 | + DictDataRespDTO dictData = DictUtils.parseDictDataFromCache(type, label); | |
| 41 | 40 | if (dictData == null) { |
| 42 | 41 | log.error("[convertToJavaData][type({}) 解析不掉 label({})]", type, label); |
| 43 | 42 | return null; |
| ... | ... | @@ -56,9 +55,9 @@ public class DictConvert implements Converter<Object> { |
| 56 | 55 | } |
| 57 | 56 | |
| 58 | 57 | // 使用字典格式化 |
| 59 | - SysDictTypeEnum type = getType(contentProperty); | |
| 58 | + String type = getType(contentProperty); | |
| 60 | 59 | String value = String.valueOf(object); |
| 61 | - DictDataRespDTO dictData = DictUtils.getDictDataFromCache(type.getValue(), value); | |
| 60 | + DictDataRespDTO dictData = DictUtils.getDictDataFromCache(type, value); | |
| 62 | 61 | if (dictData == null) { |
| 63 | 62 | log.error("[convertToExcelData][type({}) 转换不了 label({})]", type, value); |
| 64 | 63 | return new CellData<>(""); |
| ... | ... | @@ -67,7 +66,7 @@ public class DictConvert implements Converter<Object> { |
| 67 | 66 | return new CellData<>(dictData.getLabel()); |
| 68 | 67 | } |
| 69 | 68 | |
| 70 | - private static SysDictTypeEnum getType(ExcelContentProperty contentProperty) { | |
| 69 | + private static String getType(ExcelContentProperty contentProperty) { | |
| 71 | 70 | return contentProperty.getField().getAnnotation(DictFormat.class).value(); |
| 72 | 71 | } |
| 73 | 72 | ... | ... |
yudao-framework/src/main/java/cn/iocoder/dashboard/modules/system/enums/dict/SysDictTypeEnum.java deleted
| 1 | -package cn.iocoder.dashboard.modules.system.enums.dict; | |
| 2 | - | |
| 3 | -import lombok.AllArgsConstructor; | |
| 4 | -import lombok.Getter; | |
| 5 | - | |
| 6 | -/** | |
| 7 | - * 字典类型的类型枚举 | |
| 8 | - */ | |
| 9 | -@Getter | |
| 10 | -@AllArgsConstructor | |
| 11 | -public enum SysDictTypeEnum { | |
| 12 | - | |
| 13 | - USER_TYPE("user_type"), // 用户类型 | |
| 14 | - | |
| 15 | - SYS_USER_SEX("sys_user_sex"), // 用户性别 | |
| 16 | - SYS_COMMON_STATUS("sys_common_status"), // 系统状态 | |
| 17 | - SYS_OPERATE_TYPE("sys_operate_type"), // 操作类型 | |
| 18 | - SYS_LOGIN_RESULT("sys_login_result"), // 登陆结果 | |
| 19 | - SYS_CONFIG_TYPE("sys_config_type"), // 参数配置类型 | |
| 20 | - SYS_BOOLEAN_STRING("sys_boolean_string"), // Boolean 是否类型 | |
| 21 | - SYS_SMS_CHANNEL_CODE("sys_sms_channel_code"), // 短信渠道编码 | |
| 22 | - SYS_SMS_TEMPLATE_TYPE("sys_sms_template_type"), // 短信模板类型 | |
| 23 | - SYS_SMS_SEND_STATUS("sys_sms_send_status"), // 短信发送状态 | |
| 24 | - SYS_SMS_RECEIVE_STATUS("sys_sms_receive_status"), // 短信接收状态 | |
| 25 | - SYS_ERROR_CODE_TYPE("inf_error_code_type"), // 错误码的类型枚举 | |
| 26 | - | |
| 27 | - INF_REDIS_TIMEOUT_TYPE("inf_redis_timeout_type"), // Redis 超时类型 | |
| 28 | - INF_JOB_STATUS("inf_job_status"), // 定时任务状态的枚举 | |
| 29 | - INF_JOB_LOG_STATUS("inf_job_log_status"), // 定时任务日志状态的枚举 | |
| 30 | - INF_API_ERROR_LOG_PROCESS_STATUS("inf_api_error_log_process_status"), // API 错误日志的处理状态的枚举 | |
| 31 | - ; | |
| 32 | - | |
| 33 | - | |
| 34 | - /** | |
| 35 | - * 值 | |
| 36 | - */ | |
| 37 | - private final String value; | |
| 38 | - | |
| 39 | -} |