Authored by meijiajie

调整结构

Showing 267 changed files with 794 additions and 920 deletions
@@ -292,12 +292,12 @@ @@ -292,12 +292,12 @@
292 </dependency> 292 </dependency>
293 293
294 <!-- 核心模块--> 294 <!-- 核心模块-->
295 - <dependency> 295 + <!-- <dependency>
296 <groupId>com.scm</groupId> 296 <groupId>com.scm</groupId>
297 <artifactId>scm-framework</artifactId> 297 <artifactId>scm-framework</artifactId>
298 <version>${fp-scm.version}</version> 298 <version>${fp-scm.version}</version>
299 </dependency> 299 </dependency>
300 - 300 +-->
301 <!-- 系统模块--> 301 <!-- 系统模块-->
302 <dependency> 302 <dependency>
303 <groupId>com.scm</groupId> 303 <groupId>com.scm</groupId>
@@ -325,6 +325,13 @@ @@ -325,6 +325,13 @@
325 <artifactId>scm-sms</artifactId> 325 <artifactId>scm-sms</artifactId>
326 <version>${fp-scm.version}</version> 326 <version>${fp-scm.version}</version>
327 </dependency> 327 </dependency>
  328 +
  329 + <!-- SMS短信模块 -->
  330 + <dependency>
  331 + <groupId>com.scm</groupId>
  332 + <artifactId>scm-core</artifactId>
  333 + <version>${fp-scm.version}</version>
  334 + </dependency>
328 </dependencies> 335 </dependencies>
329 </dependencyManagement> 336 </dependencyManagement>
330 337
@@ -332,12 +339,7 @@ @@ -332,12 +339,7 @@
332 <module>scm-admin</module> 339 <module>scm-admin</module>
333 <module>scm-framework</module> 340 <module>scm-framework</module>
334 <module>scm-system</module> 341 <module>scm-system</module>
335 - <module>scm-job</module>  
336 - <module>scm-generator</module>  
337 - <module>scm-common</module>  
338 <module>scm-extend</module> 342 <module>scm-extend</module>
339 - <module>scm-oss</module>  
340 - <module>scm-sms</module>  
341 </modules> 343 </modules>
342 <packaging>pom</packaging> 344 <packaging>pom</packaging>
343 345
@@ -48,7 +48,7 @@ @@ -48,7 +48,7 @@
48 <!-- 核心模块--> 48 <!-- 核心模块-->
49 <dependency> 49 <dependency>
50 <groupId>com.scm</groupId> 50 <groupId>com.scm</groupId>
51 - <artifactId>scm-framework</artifactId> 51 + <artifactId>scm-core</artifactId>
52 </dependency> 52 </dependency>
53 53
54 <dependency> 54 <dependency>
@@ -49,7 +49,7 @@ spring: @@ -49,7 +49,7 @@ spring:
49 driverClassName: com.mysql.cj.jdbc.Driver 49 driverClassName: com.mysql.cj.jdbc.Driver
50 # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562 50 # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
51 # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题) 51 # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
52 - url: jdbc:mysql://192.168.1.18:3306/ruoyi-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true 52 + url: jdbc:mysql://192.168.1.21:3306/ruoyi-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
53 username: root 53 username: root
54 password: root 54 password: root
55 # 从库数据源 55 # 从库数据源
@@ -57,7 +57,7 @@ spring: @@ -57,7 +57,7 @@ spring:
57 lazy: true 57 lazy: true
58 type: ${spring.datasource.type} 58 type: ${spring.datasource.type}
59 driverClassName: com.mysql.cj.jdbc.Driver 59 driverClassName: com.mysql.cj.jdbc.Driver
60 - url: jdbc:mysql://192.168.1.18:3306/ruoyi-vue2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true 60 + url: jdbc:mysql://192.168.1.21:3306/ruoyi-vue2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
61 username: root 61 username: root
62 password: root 62 password: root
63 hikari: 63 hikari:
@@ -81,13 +81,13 @@ spring: @@ -81,13 +81,13 @@ spring:
81 ds0: 81 ds0:
82 type: com.zaxxer.hikari.HikariDataSource 82 type: com.zaxxer.hikari.HikariDataSource
83 driver-class-name: com.mysql.cj.jdbc.Driver 83 driver-class-name: com.mysql.cj.jdbc.Driver
84 - url: jdbc:mysql://192.168.1.18:3306/ruoyi-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true 84 + url: jdbc:mysql://192.168.1.21:3306/ruoyi-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
85 username: root 85 username: root
86 password: root 86 password: root
87 ds1: 87 ds1:
88 type: com.zaxxer.hikari.HikariDataSource 88 type: com.zaxxer.hikari.HikariDataSource
89 driver-class-name: com.mysql.cj.jdbc.Driver 89 driver-class-name: com.mysql.cj.jdbc.Driver
90 - url: jdbc:mysql://192.168.1.18:3306/ruoyi-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true 90 + url: jdbc:mysql://192.168.1.21:3306/ruoyi-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
91 username: root 91 username: root
92 password: root 92 password: root
93 rules: # 配置表规则 93 rules: # 配置表规则
@@ -125,7 +125,7 @@ spring: @@ -125,7 +125,7 @@ spring:
125 spring: 125 spring:
126 redis: 126 redis:
127 # 地址 127 # 地址
128 - host: 192.168.1.18 128 + host: 192.168.1.21
129 # 端口,默认为6379 129 # 端口,默认为6379
130 port: 6379 130 port: 6379
131 # 数据库索引 131 # 数据库索引
@@ -8,65 +8,18 @@ @@ -8,65 +8,18 @@
8 <version>4.8.2</version> 8 <version>4.8.2</version>
9 </parent> 9 </parent>
10 <modelVersion>4.0.0</modelVersion> 10 <modelVersion>4.0.0</modelVersion>
11 -  
12 <artifactId>scm-framework</artifactId> 11 <artifactId>scm-framework</artifactId>
  12 + <packaging>pom</packaging>
  13 +
  14 + <modules>
  15 + <module>scm-common</module>
  16 + <module>scm-generator</module>
  17 + <module>scm-job</module>
  18 + <module>scm-mybatis</module>
  19 + <module>scm-oss</module>
  20 + <module>scm-sms</module>
  21 + <module>scm-core</module>
  22 + </modules>
13 23
14 - <description>  
15 - framework框架核心  
16 - </description>  
17 -  
18 - <dependencies>  
19 -  
20 - <!-- SpringBoot Web容器 -->  
21 - <dependency>  
22 - <groupId>org.springframework.boot</groupId>  
23 - <artifactId>spring-boot-starter-web</artifactId>  
24 - <exclusions>  
25 - <exclusion>  
26 - <artifactId>spring-boot-starter-tomcat</artifactId>  
27 - <groupId>org.springframework.boot</groupId>  
28 - </exclusion>  
29 - </exclusions>  
30 - </dependency>  
31 - <!-- web 容器使用 undertow 性能更强 -->  
32 - <dependency>  
33 - <groupId>org.springframework.boot</groupId>  
34 - <artifactId>spring-boot-starter-undertow</artifactId>  
35 - </dependency>  
36 -  
37 - <!-- SpringBoot 拦截器 -->  
38 - <dependency>  
39 - <groupId>org.springframework.boot</groupId>  
40 - <artifactId>spring-boot-starter-aop</artifactId>  
41 - </dependency>  
42 -  
43 - <!-- sql性能分析插件 -->  
44 - <dependency>  
45 - <groupId>p6spy</groupId>  
46 - <artifactId>p6spy</artifactId>  
47 - </dependency>  
48 -  
49 - <dependency>  
50 - <groupId>org.springframework.boot</groupId>  
51 - <artifactId>spring-boot-starter-actuator</artifactId>  
52 - </dependency>  
53 -  
54 - <dependency>  
55 - <groupId>de.codecentric</groupId>  
56 - <artifactId>spring-boot-admin-starter-client</artifactId>  
57 - </dependency>  
58 -  
59 - <dependency>  
60 - <groupId>com.alibaba</groupId>  
61 - <artifactId>transmittable-thread-local</artifactId>  
62 - </dependency>  
63 -  
64 - <!-- 系统模块-->  
65 - <dependency>  
66 - <groupId>com.scm</groupId>  
67 - <artifactId>scm-common</artifactId>  
68 - </dependency>  
69 -  
70 - </dependencies>  
71 24
72 </project> 25 </project>
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5 <parent> 5 <parent>
6 - <artifactId>fp_scm</artifactId> 6 + <artifactId>scm-framework</artifactId>
7 <groupId>com.scm</groupId> 7 <groupId>com.scm</groupId>
8 <version>4.8.2</version> 8 <version>4.8.2</version>
9 </parent> 9 </parent>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project xmlns="http://maven.apache.org/POM/4.0.0"
  3 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5 + <parent>
  6 + <groupId>com.scm</groupId>
  7 + <artifactId>scm-framework</artifactId>
  8 + <version>4.8.2</version>
  9 + </parent>
  10 + <modelVersion>4.0.0</modelVersion>
  11 +
  12 + <artifactId>scm-core</artifactId>
  13 +
  14 + <dependencies>
  15 +
  16 + <!-- SpringBoot Web容器 -->
  17 + <dependency>
  18 + <groupId>org.springframework.boot</groupId>
  19 + <artifactId>spring-boot-starter-web</artifactId>
  20 + <exclusions>
  21 + <exclusion>
  22 + <artifactId>spring-boot-starter-tomcat</artifactId>
  23 + <groupId>org.springframework.boot</groupId>
  24 + </exclusion>
  25 + </exclusions>
  26 + </dependency>
  27 + <!-- web 容器使用 undertow 性能更强 -->
  28 + <dependency>
  29 + <groupId>org.springframework.boot</groupId>
  30 + <artifactId>spring-boot-starter-undertow</artifactId>
  31 + </dependency>
  32 +
  33 + <!-- SpringBoot 拦截器 -->
  34 + <dependency>
  35 + <groupId>org.springframework.boot</groupId>
  36 + <artifactId>spring-boot-starter-aop</artifactId>
  37 + </dependency>
  38 +
  39 + <!-- sql性能分析插件 -->
  40 + <dependency>
  41 + <groupId>p6spy</groupId>
  42 + <artifactId>p6spy</artifactId>
  43 + </dependency>
  44 +
  45 + <dependency>
  46 + <groupId>org.springframework.boot</groupId>
  47 + <artifactId>spring-boot-starter-actuator</artifactId>
  48 + </dependency>
  49 +
  50 + <dependency>
  51 + <groupId>de.codecentric</groupId>
  52 + <artifactId>spring-boot-admin-starter-client</artifactId>
  53 + </dependency>
  54 +
  55 + <dependency>
  56 + <groupId>com.alibaba</groupId>
  57 + <artifactId>transmittable-thread-local</artifactId>
  58 + </dependency>
  59 +
  60 + <!-- 系统模块-->
  61 + <dependency>
  62 + <groupId>com.scm</groupId>
  63 + <artifactId>scm-common</artifactId>
  64 + </dependency>
  65 +
  66 + </dependencies>
  67 +
  68 +</project>
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5 <parent> 5 <parent>
6 - <artifactId>fp_scm</artifactId> 6 + <artifactId>scm-framework</artifactId>
7 <groupId>com.scm</groupId> 7 <groupId>com.scm</groupId>
8 <version>4.8.2</version> 8 <version>4.8.2</version>
9 </parent> 9 </parent>
  1 +java包使用 `.` 分割 resource 目录使用 `/` 分割
  2 +<br>
  3 +此文件目的 防止文件夹粘连找不到 `xml` 文件
  1 +package ${packageName}.domain.bo;
  2 +
  3 +import com.ruoyi.common.core.validate.AddGroup;
  4 +import com.ruoyi.common.core.validate.EditGroup;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import javax.validation.constraints.*;
  8 +
  9 +import java.util.Date;
  10 +
  11 +#foreach ($import in $importList)
  12 +import ${import};
  13 +#end
  14 +#if($table.crud || $table.sub)
  15 +import com.ruoyi.common.core.domain.BaseEntity;
  16 +#elseif($table.tree)
  17 +import com.ruoyi.common.core.domain.TreeEntity;
  18 +#end
  19 +
  20 +/**
  21 + * ${functionName}业务对象 ${tableName}
  22 + *
  23 + * @author ${author}
  24 + * @date ${datetime}
  25 + */
  26 +#if($table.crud || $table.sub)
  27 +#set($Entity="BaseEntity")
  28 +#elseif($table.tree)
  29 +#set($Entity="TreeEntity<${ClassName}Bo>")
  30 +#end
  31 +
  32 +@Data
  33 +@EqualsAndHashCode(callSuper = true)
  34 +public class ${ClassName}Bo extends ${Entity} {
  35 +
  36 +#foreach ($column in $columns)
  37 +#if(!$table.isSuperColumn($column.javaField) && ($column.query || $column.insert || $column.edit))
  38 + /**
  39 + * $column.columnComment
  40 + */
  41 +#if($column.insert && $column.edit)
  42 +#set($Group="AddGroup.class, EditGroup.class")
  43 +#elseif($column.insert)
  44 +#set($Group="AddGroup.class")
  45 +#elseif($column.edit)
  46 +#set($Group="EditGroup.class")
  47 +#end
  48 +#if($column.required)
  49 +#if($column.javaType == 'String')
  50 + @NotBlank(message = "$column.columnComment不能为空", groups = { $Group })
  51 +#else
  52 + @NotNull(message = "$column.columnComment不能为空", groups = { $Group })
  53 +#end
  54 +#end
  55 + private $column.javaType $column.javaField;
  56 +
  57 +#end
  58 +#end
  59 +
  60 +}
  1 +package ${packageName}.service;
  2 +
  3 +import ${packageName}.domain.${ClassName};
  4 +import ${packageName}.domain.vo.${ClassName}Vo;
  5 +import ${packageName}.domain.bo.${ClassName}Bo;
  6 +#if($table.crud || $table.sub)
  7 +import com.ruoyi.common.core.page.TableDataInfo;
  8 +import com.ruoyi.common.core.domain.PageQuery;
  9 +#end
  10 +
  11 +import java.util.Collection;
  12 +import java.util.List;
  13 +
  14 +/**
  15 + * ${functionName}Service接口
  16 + *
  17 + * @author ${author}
  18 + * @date ${datetime}
  19 + */
  20 +public interface I${ClassName}Service {
  21 +
  22 + /**
  23 + * 查询${functionName}
  24 + */
  25 + ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField});
  26 +
  27 +#if($table.crud || $table.sub)
  28 + /**
  29 + * 查询${functionName}列表
  30 + */
  31 + TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery);
  32 +#end
  33 +
  34 + /**
  35 + * 查询${functionName}列表
  36 + */
  37 + List<${ClassName}Vo> queryList(${ClassName}Bo bo);
  38 +
  39 + /**
  40 + * 新增${functionName}
  41 + */
  42 + Boolean insertByBo(${ClassName}Bo bo);
  43 +
  44 + /**
  45 + * 修改${functionName}
  46 + */
  47 + Boolean updateByBo(${ClassName}Bo bo);
  48 +
  49 + /**
  50 + * 校验并批量删除${functionName}信息
  51 + */
  52 + Boolean deleteWithValidByIds(Collection<${pkColumn.javaType}> ids, Boolean isValid);
  53 +}
  1 +package ${packageName}.domain;
  2 +
  3 +#foreach ($import in $subImportList)
  4 +import ${import};
  5 +#end
  6 +import org.apache.commons.lang3.builder.ToStringBuilder;
  7 +import org.apache.commons.lang3.builder.ToStringStyle;
  8 +import com.ruoyi.common.annotation.Excel;
  9 +import com.ruoyi.common.core.domain.BaseEntity;
  10 +
  11 +/**
  12 + * ${subTable.functionName}对象 ${subTableName}
  13 + *
  14 + * @author ${author}
  15 + * @date ${datetime}
  16 + */
  17 +public class ${subClassName} extends BaseEntity
  18 +{
  19 + private static final long serialVersionUID = 1L;
  20 +
  21 +#foreach ($column in $subTable.columns)
  22 +#if(!$table.isSuperColumn($column.javaField))
  23 + /** $column.columnComment */
  24 +#if($column.list)
  25 +#set($parentheseIndex=$column.columnComment.indexOf("("))
  26 +#if($parentheseIndex != -1)
  27 +#set($comment=$column.columnComment.substring(0, $parentheseIndex))
  28 +#else
  29 +#set($comment=$column.columnComment)
  30 +#end
  31 +#if($parentheseIndex != -1)
  32 + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
  33 +#elseif($column.javaType == 'Date')
  34 + @JsonFormat(pattern = "yyyy-MM-dd")
  35 + @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
  36 +#else
  37 + @Excel(name = "${comment}")
  38 +#end
  39 +#end
  40 + private $column.javaType $column.javaField;
  41 +
  42 +#end
  43 +#end
  44 +#foreach ($column in $subTable.columns)
  45 +#if(!$table.isSuperColumn($column.javaField))
  46 +#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
  47 +#set($AttrName=$column.javaField)
  48 +#else
  49 +#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
  50 +#end
  51 + public void set${AttrName}($column.javaType $column.javaField)
  52 + {
  53 + this.$column.javaField = $column.javaField;
  54 + }
  55 +
  56 + public $column.javaType get${AttrName}()
  57 + {
  58 + return $column.javaField;
  59 + }
  60 +#end
  61 +#end
  62 +
  63 + @Override
  64 + public String toString() {
  65 + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
  66 +#foreach ($column in $subTable.columns)
  67 +#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
  68 +#set($AttrName=$column.javaField)
  69 +#else
  70 +#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
  71 +#end
  72 + .append("${column.javaField}", get${AttrName}())
  73 +#end
  74 + .toString();
  75 + }
  76 +}
  1 +package ${packageName}.domain.vo;
  2 +
  3 +#foreach ($import in $importList)
  4 +import ${import};
  5 +#end
  6 +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
  7 +import com.alibaba.excel.annotation.ExcelProperty;
  8 +import com.ruoyi.common.annotation.ExcelDictFormat;
  9 +import com.ruoyi.common.convert.ExcelDictConvert;
  10 +import lombok.Data;
  11 +import java.util.Date;
  12 +
  13 +import java.io.Serializable;
  14 +
  15 +/**
  16 + * ${functionName}视图对象 ${tableName}
  17 + *
  18 + * @author ${author}
  19 + * @date ${datetime}
  20 + */
  21 +@Data
  22 +@ExcelIgnoreUnannotated
  23 +public class ${ClassName}Vo implements Serializable {
  24 +
  25 + private static final long serialVersionUID = 1L;
  26 +
  27 +#foreach ($column in $columns)
  28 +#if($column.list)
  29 + /**
  30 + * $column.columnComment
  31 + */
  32 +#set($parentheseIndex=$column.columnComment.indexOf("("))
  33 +#if($parentheseIndex != -1)
  34 +#set($comment=$column.columnComment.substring(0, $parentheseIndex))
  35 +#else
  36 +#set($comment=$column.columnComment)
  37 +#end
  38 +#if(${column.dictType} && ${column.dictType} != '')
  39 + @ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class)
  40 + @ExcelDictFormat(dictType = "${column.dictType}")
  41 +#elseif($parentheseIndex != -1)
  42 + @ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class)
  43 + @ExcelDictFormat(readConverterExp = "$column.readConverterExp()")
  44 +#else
  45 + @ExcelProperty(value = "${comment}")
  46 +#end
  47 + private $column.javaType $column.javaField;
  48 +
  49 +#end
  50 +#end
  51 +
  52 +}
  1 +import request from '@/utils/request'
  2 +
  3 +// 查询${functionName}列表
  4 +export function list${BusinessName}(query) {
  5 + return request({
  6 + url: '/${moduleName}/${businessName}/list',
  7 + method: 'get',
  8 + params: query
  9 + })
  10 +}
  11 +
  12 +// 查询${functionName}详细
  13 +export function get${BusinessName}(${pkColumn.javaField}) {
  14 + return request({
  15 + url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField},
  16 + method: 'get'
  17 + })
  18 +}
  19 +
  20 +// 新增${functionName}
  21 +export function add${BusinessName}(data) {
  22 + return request({
  23 + url: '/${moduleName}/${businessName}',
  24 + method: 'post',
  25 + data: data
  26 + })
  27 +}
  28 +
  29 +// 修改${functionName}
  30 +export function update${BusinessName}(data) {
  31 + return request({
  32 + url: '/${moduleName}/${businessName}',
  33 + method: 'put',
  34 + data: data
  35 + })
  36 +}
  37 +
  38 +// 删除${functionName}
  39 +export function del${BusinessName}(${pkColumn.javaField}) {
  40 + return request({
  41 + url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField},
  42 + method: 'delete'
  43 + })
  44 +}
  1 +-- 菜单 SQL
  2 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  3 +values(${table.menuIds[0]}, '${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 'admin', sysdate, '', null, '${functionName}菜单');
  4 +
  5 +-- 按钮 SQL
  6 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  7 +values(${table.menuIds[1]}, '${functionName}查询', ${table.menuIds[0]}, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 'admin', sysdate, '', null, '');
  8 +
  9 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  10 +values(${table.menuIds[2]}, '${functionName}新增', ${table.menuIds[0]}, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 'admin', sysdate, '', null, '');
  11 +
  12 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  13 +values(${table.menuIds[3]}, '${functionName}修改', ${table.menuIds[0]}, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 'admin', sysdate, '', null, '');
  14 +
  15 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  16 +values(${table.menuIds[4]}, '${functionName}删除', ${table.menuIds[0]}, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 'admin', sysdate, '', null, '');
  17 +
  18 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  19 +values(${table.menuIds[5]}, '${functionName}导出', ${table.menuIds[0]}, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 'admin', sysdate, '', null, '');
  1 +-- 菜单 SQL
  2 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  3 +values(${table.menuIds[0]}, '${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 'admin', now(), '', null, '${functionName}菜单');
  4 +
  5 +-- 按钮 SQL
  6 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  7 +values(${table.menuIds[1]}, '${functionName}查询', ${table.menuIds[0]}, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 'admin', now(), '', null, '');
  8 +
  9 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  10 +values(${table.menuIds[2]}, '${functionName}新增', ${table.menuIds[0]}, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 'admin', now(), '', null, '');
  11 +
  12 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  13 +values(${table.menuIds[3]}, '${functionName}修改', ${table.menuIds[0]}, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 'admin', now(), '', null, '');
  14 +
  15 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  16 +values(${table.menuIds[4]}, '${functionName}删除', ${table.menuIds[0]}, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 'admin', now(), '', null, '');
  17 +
  18 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  19 +values(${table.menuIds[5]}, '${functionName}导出', ${table.menuIds[0]}, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 'admin', now(), '', null, '');
  20 +
  1 +-- 菜单 SQL
  2 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  3 +values(${table.menuIds[0]}, '${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 'admin', sysdate(), '', null, '${functionName}菜单');
  4 +
  5 +-- 按钮 SQL
  6 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  7 +values(${table.menuIds[1]}, '${functionName}查询', ${table.menuIds[0]}, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 'admin', sysdate(), '', null, '');
  8 +
  9 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  10 +values(${table.menuIds[2]}, '${functionName}新增', ${table.menuIds[0]}, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 'admin', sysdate(), '', null, '');
  11 +
  12 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  13 +values(${table.menuIds[3]}, '${functionName}修改', ${table.menuIds[0]}, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 'admin', sysdate(), '', null, '');
  14 +
  15 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  16 +values(${table.menuIds[4]}, '${functionName}删除', ${table.menuIds[0]}, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 'admin', sysdate(), '', null, '');
  17 +
  18 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  19 +values(${table.menuIds[5]}, '${functionName}导出', ${table.menuIds[0]}, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 'admin', sysdate(), '', null, '');
  1 +-- 菜单 SQL
  2 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  3 +values(${table.menuIds[0]}, '${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 'admin', getdate(), '', null, '${functionName}菜单');
  4 +
  5 +-- 按钮 SQL
  6 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  7 +values(${table.menuIds[1]}, '${functionName}查询', ${table.menuIds[0]}, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 'admin', getdate(), '', null, '');
  8 +
  9 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  10 +values(${table.menuIds[2]}, '${functionName}新增', ${table.menuIds[0]}, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 'admin', getdate(), '', null, '');
  11 +
  12 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  13 +values(${table.menuIds[3]}, '${functionName}修改', ${table.menuIds[0]}, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 'admin', getdate(), '', null, '');
  14 +
  15 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  16 +values(${table.menuIds[4]}, '${functionName}删除', ${table.menuIds[0]}, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 'admin', getdate(), '', null, '');
  17 +
  18 +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
  19 +values(${table.menuIds[5]}, '${functionName}导出', ${table.menuIds[0]}, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 'admin', getdate(), '', null, '');
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project xmlns="http://maven.apache.org/POM/4.0.0"
  3 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5 + <parent>
  6 + <artifactId>scm-framework</artifactId>
  7 + <groupId>com.scm</groupId>
  8 + <version>4.8.2</version>
  9 + </parent>
  10 + <modelVersion>4.0.0</modelVersion>
  11 + <packaging>jar</packaging>
  12 + <artifactId>scm-job</artifactId>
  13 +
  14 + <description>
  15 + 任务调度
  16 + </description>
  17 +
  18 + <dependencies>
  19 +
  20 + <!-- 通用工具-->
  21 + <dependency>
  22 + <groupId>com.scm</groupId>
  23 + <artifactId>scm-common</artifactId>
  24 + </dependency>
  25 +
  26 + <!-- xxl-job-core -->
  27 + <dependency>
  28 + <groupId>com.xuxueli</groupId>
  29 + <artifactId>xxl-job-core</artifactId>
  30 + </dependency>
  31 +
  32 + </dependencies>
  33 +
  34 +</project>
  35 +
  1 +package com.ruoyi.job.config;
  2 +
  3 +import com.ruoyi.job.config.properties.XxlJobProperties;
  4 +import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
  5 +import lombok.AllArgsConstructor;
  6 +import lombok.extern.slf4j.Slf4j;
  7 +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
  8 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
  9 +import org.springframework.context.annotation.Bean;
  10 +import org.springframework.context.annotation.Configuration;
  11 +
  12 +/**
  13 + * xxl-job config
  14 + *
  15 + * @author Lion Li
  16 + */
  17 +@Slf4j
  18 +@Configuration
  19 +@EnableConfigurationProperties(XxlJobProperties.class)
  20 +@AllArgsConstructor
  21 +@ConditionalOnProperty(prefix = "xxl.job", name = "enabled", havingValue = "true")
  22 +public class XxlJobConfig {
  23 +
  24 + private final XxlJobProperties xxlJobProperties;
  25 +
  26 + @Bean
  27 + public XxlJobSpringExecutor xxlJobExecutor() {
  28 + log.info(">>>>>>>>>>> xxl-job config init.");
  29 + XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
  30 + xxlJobSpringExecutor.setAdminAddresses(xxlJobProperties.getAdminAddresses());
  31 + xxlJobSpringExecutor.setAccessToken(xxlJobProperties.getAccessToken());
  32 + XxlJobProperties.Executor executor = xxlJobProperties.getExecutor();
  33 + xxlJobSpringExecutor.setAppname(executor.getAppname());
  34 + xxlJobSpringExecutor.setAddress(executor.getAddress());
  35 + xxlJobSpringExecutor.setIp(executor.getIp());
  36 + xxlJobSpringExecutor.setPort(executor.getPort());
  37 + xxlJobSpringExecutor.setLogPath(executor.getLogPath());
  38 + xxlJobSpringExecutor.setLogRetentionDays(executor.getLogRetentionDays());
  39 + return xxlJobSpringExecutor;
  40 + }
  41 +
  42 +}
@@ -3,31 +3,15 @@ @@ -3,31 +3,15 @@
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5 <parent> 5 <parent>
6 - <artifactId>fp_scm</artifactId> 6 + <artifactId>scm-framework</artifactId>
7 <groupId>com.scm</groupId> 7 <groupId>com.scm</groupId>
8 <version>4.8.2</version> 8 <version>4.8.2</version>
9 </parent> 9 </parent>
10 <modelVersion>4.0.0</modelVersion> 10 <modelVersion>4.0.0</modelVersion>
11 11
12 - <artifactId>scm-oss</artifactId>  
13 -  
14 - <description>  
15 - OSS对象存储模块  
16 - </description> 12 + <artifactId>scm-mybatis</artifactId>
17 13
18 <dependencies> 14 <dependencies>
19 15
20 - <!-- 通用工具-->  
21 - <dependency>  
22 - <groupId>com.scm</groupId>  
23 - <artifactId>scm-common</artifactId>  
24 - </dependency>  
25 -  
26 - <dependency>  
27 - <groupId>com.amazonaws</groupId>  
28 - <artifactId>aws-java-sdk-s3</artifactId>  
29 - </dependency>  
30 -  
31 </dependencies> 16 </dependencies>
32 -  
33 </project> 17 </project>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project xmlns="http://maven.apache.org/POM/4.0.0"
  3 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5 + <parent>
  6 + <artifactId>scm-framework</artifactId>
  7 + <groupId>com.scm</groupId>
  8 + <version>4.8.2</version>
  9 + </parent>
  10 + <modelVersion>4.0.0</modelVersion>
  11 +
  12 + <artifactId>scm-oss</artifactId>
  13 +
  14 + <description>
  15 + OSS对象存储模块
  16 + </description>
  17 +
  18 + <dependencies>
  19 +
  20 + <!-- 通用工具-->
  21 + <dependency>
  22 + <groupId>com.scm</groupId>
  23 + <artifactId>scm-common</artifactId>
  24 + </dependency>
  25 +
  26 + <dependency>
  27 + <groupId>com.amazonaws</groupId>
  28 + <artifactId>aws-java-sdk-s3</artifactId>
  29 + </dependency>
  30 +
  31 + </dependencies>
  32 +
  33 +</project>
  1 +package com.ruoyi.oss.enumd;
  2 +
  3 +import com.amazonaws.services.s3.model.CannedAccessControlList;
  4 +import lombok.AllArgsConstructor;
  5 +import lombok.Getter;
  6 +
  7 +/**
  8 + * 桶访问策略配置
  9 + *
  10 + * @author 陈賝
  11 + */
  12 +@Getter
  13 +@AllArgsConstructor
  14 +public enum AccessPolicyType {
  15 +
  16 + /**
  17 + * private
  18 + */
  19 + PRIVATE("0", CannedAccessControlList.Private, PolicyType.WRITE),
  20 +
  21 + /**
  22 + * public
  23 + */
  24 + PUBLIC("1", CannedAccessControlList.PublicRead, PolicyType.READ),
  25 +
  26 + /**
  27 + * custom
  28 + */
  29 + CUSTOM("2",CannedAccessControlList.PublicRead, PolicyType.READ);
  30 +
  31 + /**
  32 + * 桶 权限类型
  33 + */
  34 + private final String type;
  35 +
  36 + /**
  37 + * 文件对象 权限类型
  38 + */
  39 + private final CannedAccessControlList acl;
  40 +
  41 + /**
  42 + * 桶策略类型
  43 + */
  44 + private final PolicyType policyType;
  45 +
  46 + public static AccessPolicyType getByType(String type) {
  47 + for (AccessPolicyType value : values()) {
  48 + if (value.getType().equals(type)) {
  49 + return value;
  50 + }
  51 + }
  52 + throw new RuntimeException("'type' not found By " + type);
  53 + }
  54 +
  55 +}
  1 +package com.ruoyi.oss.factory;
  2 +
  3 +import com.ruoyi.common.constant.CacheNames;
  4 +import com.ruoyi.common.utils.JsonUtils;
  5 +import com.ruoyi.common.utils.StringUtils;
  6 +import com.ruoyi.common.utils.redis.CacheUtils;
  7 +import com.ruoyi.common.utils.redis.RedisUtils;
  8 +import com.ruoyi.oss.constant.OssConstant;
  9 +import com.ruoyi.oss.core.OssClient;
  10 +import com.ruoyi.oss.exception.OssException;
  11 +import com.ruoyi.oss.properties.OssProperties;
  12 +import lombok.extern.slf4j.Slf4j;
  13 +
  14 +import java.util.Map;
  15 +import java.util.concurrent.ConcurrentHashMap;
  16 +
  17 +/**
  18 + * 文件上传Factory
  19 + *
  20 + * @author Lion Li
  21 + */
  22 +@Slf4j
  23 +public class OssFactory {
  24 +
  25 + private static final Map<String, OssClient> CLIENT_CACHE = new ConcurrentHashMap<>();
  26 +
  27 + /**
  28 + * 获取默认实例
  29 + */
  30 + public static OssClient instance() {
  31 + // 获取redis 默认类型
  32 + String configKey = RedisUtils.getCacheObject(OssConstant.DEFAULT_CONFIG_KEY);
  33 + if (StringUtils.isEmpty(configKey)) {
  34 + throw new OssException("文件存储服务类型无法找到!");
  35 + }
  36 + return instance(configKey);
  37 + }
  38 +
  39 + /**
  40 + * 根据类型获取实例
  41 + */
  42 + public static synchronized OssClient instance(String configKey) {
  43 + String json = CacheUtils.get(CacheNames.SYS_OSS_CONFIG, configKey);
  44 + if (json == null) {
  45 + throw new OssException("系统异常, '" + configKey + "'配置信息不存在!");
  46 + }
  47 + OssProperties properties = JsonUtils.parseObject(json, OssProperties.class);
  48 + OssClient client = CLIENT_CACHE.get(configKey);
  49 + if (client == null) {
  50 + CLIENT_CACHE.put(configKey, new OssClient(configKey, properties));
  51 + log.info("创建OSS实例 key => {}", configKey);
  52 + return CLIENT_CACHE.get(configKey);
  53 + }
  54 + // 配置不相同则重新构建
  55 + if (!client.checkPropertiesSame(properties)) {
  56 + CLIENT_CACHE.put(configKey, new OssClient(configKey, properties));
  57 + log.info("重载OSS实例 key => {}", configKey);
  58 + return CLIENT_CACHE.get(configKey);
  59 + }
  60 + return client;
  61 + }
  62 +
  63 +}
  1 +package com.ruoyi.oss.properties;
  2 +
  3 +import lombok.Data;
  4 +
  5 +/**
  6 + * OSS对象存储 配置属性
  7 + *
  8 + * @author Lion Li
  9 + */
  10 +@Data
  11 +public class OssProperties {
  12 +
  13 + /**
  14 + * 访问站点
  15 + */
  16 + private String endpoint;
  17 +
  18 + /**
  19 + * 自定义域名
  20 + */
  21 + private String domain;
  22 +
  23 + /**
  24 + * 前缀
  25 + */
  26 + private String prefix;
  27 +
  28 + /**
  29 + * ACCESS_KEY
  30 + */
  31 + private String accessKey;
  32 +
  33 + /**
  34 + * SECRET_KEY
  35 + */
  36 + private String secretKey;
  37 +
  38 + /**
  39 + * 存储空间名
  40 + */
  41 + private String bucketName;
  42 +
  43 + /**
  44 + * 存储区域
  45 + */
  46 + private String region;
  47 +
  48 + /**
  49 + * 是否https(Y=是,N=否)
  50 + */
  51 + private String isHttps;
  52 +
  53 + /**
  54 + * 桶权限类型(0private 1public 2custom)
  55 + */
  56 + private String accessPolicy;
  57 +
  58 +}
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project xmlns="http://maven.apache.org/POM/4.0.0"
  3 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5 + <parent>
  6 + <artifactId>scm-framework</artifactId>
  7 + <groupId>com.scm</groupId>
  8 + <version>4.8.2</version>
  9 + </parent>
  10 + <modelVersion>4.0.0</modelVersion>
  11 +
  12 + <artifactId>scm-sms</artifactId>
  13 +
  14 + <description>
  15 + SMS短信模块
  16 + </description>
  17 +
  18 + <dependencies>
  19 +
  20 + <!-- 通用工具-->
  21 + <dependency>
  22 + <groupId>com.scm</groupId>
  23 + <artifactId>scm-common</artifactId>
  24 + </dependency>
  25 +
  26 + <dependency>
  27 + <groupId>org.dromara.sms4j</groupId>
  28 + <artifactId>sms4j-spring-boot-starter</artifactId>
  29 + <exclusions>
  30 + <!-- 排除京东短信内存在的fastjson等待作者后续修复 -->
  31 + <exclusion>
  32 + <groupId>com.alibaba</groupId>
  33 + <artifactId>fastjson</artifactId>
  34 + </exclusion>
  35 + </exclusions>
  36 + </dependency>
  37 +
  38 + </dependencies>
  39 +
  40 +</project>
1 -java包使用 `.` 分割 resource 目录使用 `/` 分割  
2 -<br>  
3 -此文件目的 防止文件夹粘连找不到 `xml` 文件  
1 -package ${packageName}.domain.bo;  
2 -  
3 -import com.ruoyi.common.core.validate.AddGroup;  
4 -import com.ruoyi.common.core.validate.EditGroup;  
5 -import lombok.Data;  
6 -import lombok.EqualsAndHashCode;  
7 -import javax.validation.constraints.*;  
8 -  
9 -import java.util.Date;  
10 -  
11 -#foreach ($import in $importList)  
12 -import ${import};  
13 -#end  
14 -#if($table.crud || $table.sub)  
15 -import com.ruoyi.common.core.domain.BaseEntity;  
16 -#elseif($table.tree)  
17 -import com.ruoyi.common.core.domain.TreeEntity;  
18 -#end  
19 -  
20 -/**  
21 - * ${functionName}业务对象 ${tableName}  
22 - *  
23 - * @author ${author}  
24 - * @date ${datetime}  
25 - */  
26 -#if($table.crud || $table.sub)  
27 -#set($Entity="BaseEntity")  
28 -#elseif($table.tree)  
29 -#set($Entity="TreeEntity<${ClassName}Bo>")  
30 -#end  
31 -  
32 -@Data  
33 -@EqualsAndHashCode(callSuper = true)  
34 -public class ${ClassName}Bo extends ${Entity} {  
35 -  
36 -#foreach ($column in $columns)  
37 -#if(!$table.isSuperColumn($column.javaField) && ($column.query || $column.insert || $column.edit))  
38 - /**  
39 - * $column.columnComment  
40 - */  
41 -#if($column.insert && $column.edit)  
42 -#set($Group="AddGroup.class, EditGroup.class")  
43 -#elseif($column.insert)  
44 -#set($Group="AddGroup.class")  
45 -#elseif($column.edit)  
46 -#set($Group="EditGroup.class")  
47 -#end  
48 -#if($column.required)  
49 -#if($column.javaType == 'String')  
50 - @NotBlank(message = "$column.columnComment不能为空", groups = { $Group })  
51 -#else  
52 - @NotNull(message = "$column.columnComment不能为空", groups = { $Group })  
53 -#end  
54 -#end  
55 - private $column.javaType $column.javaField;  
56 -  
57 -#end  
58 -#end  
59 -  
60 -}  
1 -package ${packageName}.service;  
2 -  
3 -import ${packageName}.domain.${ClassName};  
4 -import ${packageName}.domain.vo.${ClassName}Vo;  
5 -import ${packageName}.domain.bo.${ClassName}Bo;  
6 -#if($table.crud || $table.sub)  
7 -import com.ruoyi.common.core.page.TableDataInfo;  
8 -import com.ruoyi.common.core.domain.PageQuery;  
9 -#end  
10 -  
11 -import java.util.Collection;  
12 -import java.util.List;  
13 -  
14 -/**  
15 - * ${functionName}Service接口  
16 - *  
17 - * @author ${author}  
18 - * @date ${datetime}  
19 - */  
20 -public interface I${ClassName}Service {  
21 -  
22 - /**  
23 - * 查询${functionName}  
24 - */  
25 - ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField});  
26 -  
27 -#if($table.crud || $table.sub)  
28 - /**  
29 - * 查询${functionName}列表  
30 - */  
31 - TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery);  
32 -#end  
33 -  
34 - /**  
35 - * 查询${functionName}列表  
36 - */  
37 - List<${ClassName}Vo> queryList(${ClassName}Bo bo);  
38 -  
39 - /**  
40 - * 新增${functionName}  
41 - */  
42 - Boolean insertByBo(${ClassName}Bo bo);  
43 -  
44 - /**  
45 - * 修改${functionName}  
46 - */  
47 - Boolean updateByBo(${ClassName}Bo bo);  
48 -  
49 - /**  
50 - * 校验并批量删除${functionName}信息  
51 - */  
52 - Boolean deleteWithValidByIds(Collection<${pkColumn.javaType}> ids, Boolean isValid);  
53 -}  
1 -package ${packageName}.domain;  
2 -  
3 -#foreach ($import in $subImportList)  
4 -import ${import};  
5 -#end  
6 -import org.apache.commons.lang3.builder.ToStringBuilder;  
7 -import org.apache.commons.lang3.builder.ToStringStyle;  
8 -import com.ruoyi.common.annotation.Excel;  
9 -import com.ruoyi.common.core.domain.BaseEntity;  
10 -  
11 -/**  
12 - * ${subTable.functionName}对象 ${subTableName}  
13 - *  
14 - * @author ${author}  
15 - * @date ${datetime}  
16 - */  
17 -public class ${subClassName} extends BaseEntity  
18 -{  
19 - private static final long serialVersionUID = 1L;  
20 -  
21 -#foreach ($column in $subTable.columns)  
22 -#if(!$table.isSuperColumn($column.javaField))  
23 - /** $column.columnComment */  
24 -#if($column.list)  
25 -#set($parentheseIndex=$column.columnComment.indexOf("("))  
26 -#if($parentheseIndex != -1)  
27 -#set($comment=$column.columnComment.substring(0, $parentheseIndex))  
28 -#else  
29 -#set($comment=$column.columnComment)  
30 -#end  
31 -#if($parentheseIndex != -1)  
32 - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")  
33 -#elseif($column.javaType == 'Date')  
34 - @JsonFormat(pattern = "yyyy-MM-dd")  
35 - @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")  
36 -#else  
37 - @Excel(name = "${comment}")  
38 -#end  
39 -#end  
40 - private $column.javaType $column.javaField;  
41 -  
42 -#end  
43 -#end  
44 -#foreach ($column in $subTable.columns)  
45 -#if(!$table.isSuperColumn($column.javaField))  
46 -#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))  
47 -#set($AttrName=$column.javaField)  
48 -#else  
49 -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})  
50 -#end  
51 - public void set${AttrName}($column.javaType $column.javaField)  
52 - {  
53 - this.$column.javaField = $column.javaField;  
54 - }  
55 -  
56 - public $column.javaType get${AttrName}()  
57 - {  
58 - return $column.javaField;  
59 - }  
60 -#end  
61 -#end  
62 -  
63 - @Override  
64 - public String toString() {  
65 - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)  
66 -#foreach ($column in $subTable.columns)  
67 -#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))  
68 -#set($AttrName=$column.javaField)  
69 -#else  
70 -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})  
71 -#end  
72 - .append("${column.javaField}", get${AttrName}())  
73 -#end  
74 - .toString();  
75 - }  
76 -}  
1 -package ${packageName}.domain.vo;  
2 -  
3 -#foreach ($import in $importList)  
4 -import ${import};  
5 -#end  
6 -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;  
7 -import com.alibaba.excel.annotation.ExcelProperty;  
8 -import com.ruoyi.common.annotation.ExcelDictFormat;  
9 -import com.ruoyi.common.convert.ExcelDictConvert;  
10 -import lombok.Data;  
11 -import java.util.Date;  
12 -  
13 -import java.io.Serializable;  
14 -  
15 -/**  
16 - * ${functionName}视图对象 ${tableName}  
17 - *  
18 - * @author ${author}  
19 - * @date ${datetime}  
20 - */  
21 -@Data  
22 -@ExcelIgnoreUnannotated  
23 -public class ${ClassName}Vo implements Serializable {  
24 -  
25 - private static final long serialVersionUID = 1L;  
26 -  
27 -#foreach ($column in $columns)  
28 -#if($column.list)  
29 - /**  
30 - * $column.columnComment  
31 - */  
32 -#set($parentheseIndex=$column.columnComment.indexOf("("))  
33 -#if($parentheseIndex != -1)  
34 -#set($comment=$column.columnComment.substring(0, $parentheseIndex))  
35 -#else  
36 -#set($comment=$column.columnComment)  
37 -#end  
38 -#if(${column.dictType} && ${column.dictType} != '')  
39 - @ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class)  
40 - @ExcelDictFormat(dictType = "${column.dictType}")  
41 -#elseif($parentheseIndex != -1)  
42 - @ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class)  
43 - @ExcelDictFormat(readConverterExp = "$column.readConverterExp()")  
44 -#else  
45 - @ExcelProperty(value = "${comment}")  
46 -#end  
47 - private $column.javaType $column.javaField;  
48 -  
49 -#end  
50 -#end  
51 -  
52 -}  
1 -import request from '@/utils/request'  
2 -  
3 -// 查询${functionName}列表  
4 -export function list${BusinessName}(query) {  
5 - return request({  
6 - url: '/${moduleName}/${businessName}/list',  
7 - method: 'get',  
8 - params: query  
9 - })  
10 -}  
11 -  
12 -// 查询${functionName}详细  
13 -export function get${BusinessName}(${pkColumn.javaField}) {  
14 - return request({  
15 - url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField},  
16 - method: 'get'  
17 - })  
18 -}  
19 -  
20 -// 新增${functionName}  
21 -export function add${BusinessName}(data) {  
22 - return request({  
23 - url: '/${moduleName}/${businessName}',  
24 - method: 'post',  
25 - data: data  
26 - })  
27 -}  
28 -  
29 -// 修改${functionName}  
30 -export function update${BusinessName}(data) {  
31 - return request({  
32 - url: '/${moduleName}/${businessName}',  
33 - method: 'put',  
34 - data: data  
35 - })  
36 -}  
37 -  
38 -// 删除${functionName}  
39 -export function del${BusinessName}(${pkColumn.javaField}) {  
40 - return request({  
41 - url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField},  
42 - method: 'delete'  
43 - })  
44 -}  
1 --- 菜单 SQL  
2 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
3 -values(${table.menuIds[0]}, '${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 'admin', sysdate, '', null, '${functionName}菜单');  
4 -  
5 --- 按钮 SQL  
6 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
7 -values(${table.menuIds[1]}, '${functionName}查询', ${table.menuIds[0]}, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 'admin', sysdate, '', null, '');  
8 -  
9 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
10 -values(${table.menuIds[2]}, '${functionName}新增', ${table.menuIds[0]}, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 'admin', sysdate, '', null, '');  
11 -  
12 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
13 -values(${table.menuIds[3]}, '${functionName}修改', ${table.menuIds[0]}, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 'admin', sysdate, '', null, '');  
14 -  
15 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
16 -values(${table.menuIds[4]}, '${functionName}删除', ${table.menuIds[0]}, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 'admin', sysdate, '', null, '');  
17 -  
18 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
19 -values(${table.menuIds[5]}, '${functionName}导出', ${table.menuIds[0]}, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 'admin', sysdate, '', null, '');  
1 --- 菜单 SQL  
2 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
3 -values(${table.menuIds[0]}, '${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 'admin', now(), '', null, '${functionName}菜单');  
4 -  
5 --- 按钮 SQL  
6 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
7 -values(${table.menuIds[1]}, '${functionName}查询', ${table.menuIds[0]}, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 'admin', now(), '', null, '');  
8 -  
9 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
10 -values(${table.menuIds[2]}, '${functionName}新增', ${table.menuIds[0]}, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 'admin', now(), '', null, '');  
11 -  
12 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
13 -values(${table.menuIds[3]}, '${functionName}修改', ${table.menuIds[0]}, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 'admin', now(), '', null, '');  
14 -  
15 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
16 -values(${table.menuIds[4]}, '${functionName}删除', ${table.menuIds[0]}, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 'admin', now(), '', null, '');  
17 -  
18 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
19 -values(${table.menuIds[5]}, '${functionName}导出', ${table.menuIds[0]}, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 'admin', now(), '', null, '');  
20 -  
1 --- 菜单 SQL  
2 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
3 -values(${table.menuIds[0]}, '${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 'admin', sysdate(), '', null, '${functionName}菜单');  
4 -  
5 --- 按钮 SQL  
6 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
7 -values(${table.menuIds[1]}, '${functionName}查询', ${table.menuIds[0]}, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 'admin', sysdate(), '', null, '');  
8 -  
9 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
10 -values(${table.menuIds[2]}, '${functionName}新增', ${table.menuIds[0]}, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 'admin', sysdate(), '', null, '');  
11 -  
12 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
13 -values(${table.menuIds[3]}, '${functionName}修改', ${table.menuIds[0]}, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 'admin', sysdate(), '', null, '');  
14 -  
15 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
16 -values(${table.menuIds[4]}, '${functionName}删除', ${table.menuIds[0]}, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 'admin', sysdate(), '', null, '');  
17 -  
18 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
19 -values(${table.menuIds[5]}, '${functionName}导出', ${table.menuIds[0]}, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 'admin', sysdate(), '', null, '');  
1 --- 菜单 SQL  
2 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
3 -values(${table.menuIds[0]}, '${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 'admin', getdate(), '', null, '${functionName}菜单');  
4 -  
5 --- 按钮 SQL  
6 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
7 -values(${table.menuIds[1]}, '${functionName}查询', ${table.menuIds[0]}, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 'admin', getdate(), '', null, '');  
8 -  
9 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
10 -values(${table.menuIds[2]}, '${functionName}新增', ${table.menuIds[0]}, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 'admin', getdate(), '', null, '');  
11 -  
12 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
13 -values(${table.menuIds[3]}, '${functionName}修改', ${table.menuIds[0]}, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 'admin', getdate(), '', null, '');  
14 -  
15 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
16 -values(${table.menuIds[4]}, '${functionName}删除', ${table.menuIds[0]}, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 'admin', getdate(), '', null, '');  
17 -  
18 -insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)  
19 -values(${table.menuIds[5]}, '${functionName}导出', ${table.menuIds[0]}, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 'admin', getdate(), '', null, '');  
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<project xmlns="http://maven.apache.org/POM/4.0.0"  
3 - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
4 - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
5 - <parent>  
6 - <artifactId>fp_scm</artifactId>  
7 - <groupId>com.scm</groupId>  
8 - <version>4.8.2</version>  
9 - </parent>  
10 - <modelVersion>4.0.0</modelVersion>  
11 - <packaging>jar</packaging>  
12 - <artifactId>scm-job</artifactId>  
13 -  
14 - <description>  
15 - 任务调度  
16 - </description>  
17 -  
18 - <dependencies>  
19 -  
20 - <!-- 通用工具-->  
21 - <dependency>  
22 - <groupId>com.scm</groupId>  
23 - <artifactId>scm-common</artifactId>  
24 - </dependency>  
25 -  
26 - <!-- xxl-job-core -->  
27 - <dependency>  
28 - <groupId>com.xuxueli</groupId>  
29 - <artifactId>xxl-job-core</artifactId>  
30 - </dependency>  
31 -  
32 - </dependencies>  
33 -  
34 -</project>  
35 -  
1 -package com.ruoyi.job.config;  
2 -  
3 -import com.ruoyi.job.config.properties.XxlJobProperties;  
4 -import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;  
5 -import lombok.AllArgsConstructor;  
6 -import lombok.extern.slf4j.Slf4j;  
7 -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;  
8 -import org.springframework.boot.context.properties.EnableConfigurationProperties;  
9 -import org.springframework.context.annotation.Bean;  
10 -import org.springframework.context.annotation.Configuration;  
11 -  
12 -/**  
13 - * xxl-job config  
14 - *  
15 - * @author Lion Li  
16 - */  
17 -@Slf4j  
18 -@Configuration  
19 -@EnableConfigurationProperties(XxlJobProperties.class)  
20 -@AllArgsConstructor  
21 -@ConditionalOnProperty(prefix = "xxl.job", name = "enabled", havingValue = "true")  
22 -public class XxlJobConfig {  
23 -  
24 - private final XxlJobProperties xxlJobProperties;  
25 -  
26 - @Bean  
27 - public XxlJobSpringExecutor xxlJobExecutor() {  
28 - log.info(">>>>>>>>>>> xxl-job config init.");  
29 - XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();  
30 - xxlJobSpringExecutor.setAdminAddresses(xxlJobProperties.getAdminAddresses());  
31 - xxlJobSpringExecutor.setAccessToken(xxlJobProperties.getAccessToken());  
32 - XxlJobProperties.Executor executor = xxlJobProperties.getExecutor();  
33 - xxlJobSpringExecutor.setAppname(executor.getAppname());  
34 - xxlJobSpringExecutor.setAddress(executor.getAddress());  
35 - xxlJobSpringExecutor.setIp(executor.getIp());  
36 - xxlJobSpringExecutor.setPort(executor.getPort());  
37 - xxlJobSpringExecutor.setLogPath(executor.getLogPath());  
38 - xxlJobSpringExecutor.setLogRetentionDays(executor.getLogRetentionDays());  
39 - return xxlJobSpringExecutor;  
40 - }  
41 -  
42 -}  
1 -package com.ruoyi.oss.enumd;  
2 -  
3 -import com.amazonaws.services.s3.model.CannedAccessControlList;  
4 -import lombok.AllArgsConstructor;  
5 -import lombok.Getter;  
6 -  
7 -/**  
8 - * 桶访问策略配置  
9 - *  
10 - * @author 陈賝  
11 - */  
12 -@Getter  
13 -@AllArgsConstructor  
14 -public enum AccessPolicyType {  
15 -  
16 - /**  
17 - * private  
18 - */  
19 - PRIVATE("0", CannedAccessControlList.Private, PolicyType.WRITE),  
20 -  
21 - /**  
22 - * public  
23 - */  
24 - PUBLIC("1", CannedAccessControlList.PublicRead, PolicyType.READ),  
25 -  
26 - /**  
27 - * custom  
28 - */  
29 - CUSTOM("2",CannedAccessControlList.PublicRead, PolicyType.READ);  
30 -  
31 - /**  
32 - * 桶 权限类型  
33 - */  
34 - private final String type;  
35 -  
36 - /**  
37 - * 文件对象 权限类型  
38 - */  
39 - private final CannedAccessControlList acl;  
40 -  
41 - /**  
42 - * 桶策略类型  
43 - */  
44 - private final PolicyType policyType;  
45 -  
46 - public static AccessPolicyType getByType(String type) {  
47 - for (AccessPolicyType value : values()) {  
48 - if (value.getType().equals(type)) {  
49 - return value;  
50 - }  
51 - }  
52 - throw new RuntimeException("'type' not found By " + type);  
53 - }  
54 -  
55 -}  
1 -package com.ruoyi.oss.factory;  
2 -  
3 -import com.ruoyi.common.constant.CacheNames;  
4 -import com.ruoyi.common.utils.JsonUtils;  
5 -import com.ruoyi.common.utils.StringUtils;  
6 -import com.ruoyi.common.utils.redis.CacheUtils;  
7 -import com.ruoyi.common.utils.redis.RedisUtils;  
8 -import com.ruoyi.oss.constant.OssConstant;  
9 -import com.ruoyi.oss.core.OssClient;  
10 -import com.ruoyi.oss.exception.OssException;  
11 -import com.ruoyi.oss.properties.OssProperties;  
12 -import lombok.extern.slf4j.Slf4j;  
13 -  
14 -import java.util.Map;  
15 -import java.util.concurrent.ConcurrentHashMap;  
16 -  
17 -/**  
18 - * 文件上传Factory  
19 - *  
20 - * @author Lion Li  
21 - */  
22 -@Slf4j  
23 -public class OssFactory {  
24 -  
25 - private static final Map<String, OssClient> CLIENT_CACHE = new ConcurrentHashMap<>();  
26 -  
27 - /**  
28 - * 获取默认实例  
29 - */  
30 - public static OssClient instance() {  
31 - // 获取redis 默认类型  
32 - String configKey = RedisUtils.getCacheObject(OssConstant.DEFAULT_CONFIG_KEY);  
33 - if (StringUtils.isEmpty(configKey)) {  
34 - throw new OssException("文件存储服务类型无法找到!");  
35 - }  
36 - return instance(configKey);  
37 - }  
38 -  
39 - /**  
40 - * 根据类型获取实例  
41 - */  
42 - public static synchronized OssClient instance(String configKey) {  
43 - String json = CacheUtils.get(CacheNames.SYS_OSS_CONFIG, configKey);  
44 - if (json == null) {  
45 - throw new OssException("系统异常, '" + configKey + "'配置信息不存在!");  
46 - }  
47 - OssProperties properties = JsonUtils.parseObject(json, OssProperties.class);  
48 - OssClient client = CLIENT_CACHE.get(configKey);  
49 - if (client == null) {  
50 - CLIENT_CACHE.put(configKey, new OssClient(configKey, properties));  
51 - log.info("创建OSS实例 key => {}", configKey);  
52 - return CLIENT_CACHE.get(configKey);  
53 - }  
54 - // 配置不相同则重新构建  
55 - if (!client.checkPropertiesSame(properties)) {  
56 - CLIENT_CACHE.put(configKey, new OssClient(configKey, properties));  
57 - log.info("重载OSS实例 key => {}", configKey);  
58 - return CLIENT_CACHE.get(configKey);  
59 - }  
60 - return client;  
61 - }  
62 -  
63 -}  
1 -package com.ruoyi.oss.properties;  
2 -  
3 -import lombok.Data;  
4 -  
5 -/**  
6 - * OSS对象存储 配置属性  
7 - *  
8 - * @author Lion Li  
9 - */  
10 -@Data  
11 -public class OssProperties {  
12 -  
13 - /**  
14 - * 访问站点  
15 - */  
16 - private String endpoint;  
17 -  
18 - /**  
19 - * 自定义域名  
20 - */  
21 - private String domain;  
22 -  
23 - /**  
24 - * 前缀  
25 - */  
26 - private String prefix;  
27 -  
28 - /**  
29 - * ACCESS_KEY  
30 - */  
31 - private String accessKey;  
32 -  
33 - /**  
34 - * SECRET_KEY  
35 - */  
36 - private String secretKey;  
37 -  
38 - /**  
39 - * 存储空间名  
40 - */  
41 - private String bucketName;  
42 -  
43 - /**  
44 - * 存储区域  
45 - */  
46 - private String region;  
47 -  
48 - /**  
49 - * 是否https(Y=是,N=否)  
50 - */  
51 - private String isHttps;  
52 -  
53 - /**  
54 - * 桶权限类型(0private 1public 2custom)  
55 - */  
56 - private String accessPolicy;  
57 -  
58 -}  
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<project xmlns="http://maven.apache.org/POM/4.0.0"  
3 - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
4 - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
5 - <parent>  
6 - <artifactId>fp_scm</artifactId>  
7 - <groupId>com.scm</groupId>  
8 - <version>4.8.2</version>  
9 - </parent>  
10 - <modelVersion>4.0.0</modelVersion>  
11 -  
12 - <artifactId>scm-sms</artifactId>  
13 -  
14 - <description>  
15 - SMS短信模块  
16 - </description>  
17 -  
18 - <dependencies>  
19 -  
20 - <!-- 通用工具-->  
21 - <dependency>  
22 - <groupId>com.scm</groupId>  
23 - <artifactId>scm-common</artifactId>  
24 - </dependency>  
25 -  
26 - <dependency>  
27 - <groupId>org.dromara.sms4j</groupId>  
28 - <artifactId>sms4j-spring-boot-starter</artifactId>  
29 - <exclusions>  
30 - <!-- 排除京东短信内存在的fastjson等待作者后续修复 -->  
31 - <exclusion>  
32 - <groupId>com.alibaba</groupId>  
33 - <artifactId>fastjson</artifactId>  
34 - </exclusion>  
35 - </exclusions>  
36 - </dependency>  
37 -  
38 - </dependencies>  
39 -  
40 -</project>  
@@ -8,13 +8,13 @@ @@ -8,13 +8,13 @@
8 <template v-if="appStore.device !== 'mobile'"> 8 <template v-if="appStore.device !== 'mobile'">
9 <header-search id="header-search" class="right-menu-item" /> 9 <header-search id="header-search" class="right-menu-item" />
10 10
11 - <el-tooltip content="源码地址" effect="dark" placement="bottom"> 11 +<!-- <el-tooltip content="源码地址" effect="dark" placement="bottom">
12 <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" /> 12 <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />
13 </el-tooltip> 13 </el-tooltip>
14 14
15 <el-tooltip content="文档地址" effect="dark" placement="bottom"> 15 <el-tooltip content="文档地址" effect="dark" placement="bottom">
16 <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" /> 16 <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />
17 - </el-tooltip> 17 + </el-tooltip>-->
18 18
19 <screenfull id="screenfull" class="right-menu-item hover-effect" /> 19 <screenfull id="screenfull" class="right-menu-item hover-effect" />
20 20
@@ -25,7 +25,7 @@ defineProps({ @@ -25,7 +25,7 @@ defineProps({
25 } 25 }
26 }) 26 })
27 27
28 -const title = ref('RuoYi-Vue-Plus'); 28 +const title = ref('凡配供应链');
29 const settingsStore = useSettingsStore(); 29 const settingsStore = useSettingsStore();
30 const sideTheme = computed(() => settingsStore.sideTheme); 30 const sideTheme = computed(() => settingsStore.sideTheme);
31 </script> 31 </script>
@@ -78,4 +78,4 @@ const sideTheme = computed(() => settingsStore.sideTheme); @@ -78,4 +78,4 @@ const sideTheme = computed(() => settingsStore.sideTheme);
78 } 78 }
79 } 79 }
80 } 80 }
81 -</style>  
  81 +</style>
@@ -66,7 +66,7 @@ export const constantRoutes = [ @@ -66,7 +66,7 @@ export const constantRoutes = [
66 path: '/index', 66 path: '/index',
67 component: () => import('@/views/index'), 67 component: () => import('@/views/index'),
68 name: 'Index', 68 name: 'Index',
69 - meta: { title: '首页', icon: 'dashboard', affix: true } 69 + meta: { title: '工作台', icon: 'dashboard', affix: true }
70 } 70 }
71 ] 71 ]
72 }, 72 },
1 <template> 1 <template>
2 <div class="app-container home"> 2 <div class="app-container home">
3 - <el-row :gutter="20">  
4 - <el-col :sm="24" :lg="12" style="padding-left: 20px">  
5 - <h2>RuoYi-Vue-Plus后台管理系统</h2>  
6 - <p>  
7 - RuoYi-Vue-Plus 是基于 RuoYi-Vue 针对 分布式集群 场景升级(不兼容原框架)  
8 - <br/>  
9 - * 前端开发框架 Vue、Element UI<br/>  
10 - * 后端开发框架 Spring Boot<br/>  
11 - * 容器框架 Undertow 基于 Netty 的高性能容器<br/>  
12 - * 权限认证框架 Sa-Token 支持多终端认证系统<br/>  
13 - * 关系数据库 MySQL 适配 8.X 最低 5.7<br/>  
14 - * 缓存数据库 Redis 适配 6.X 最低 4.X<br/>  
15 - * 数据库框架 Mybatis-Plus 快速 CRUD 增加开发效率<br/>  
16 - * 数据库框架 p6spy 更强劲的 SQL 分析<br/>  
17 - * 多数据源框架 dynamic-datasource 支持主从与多种类数据库异构<br/>  
18 - * 序列化框架 Jackson 统一使用 jackson 高效可靠<br/>  
19 - * Redis客户端 Redisson 性能强劲、API丰富<br/>  
20 - * 分布式限流 Redisson 全局、请求IP、集群ID 多种限流<br/>  
21 - * 分布式锁 Lock4j 注解锁、工具锁 多种多样<br/>  
22 - * 分布式幂等 Lock4j 基于分布式锁实现<br/>  
23 - * 分布式链路追踪 SkyWalking 支持链路追踪、网格分析、度量聚合、可视化<br/>  
24 - * 分布式任务调度 Xxl-Job 高性能 高可靠 易扩展<br/>  
25 - * 文件存储 Minio 本地存储<br/>  
26 - * 文件存储 七牛、阿里、腾讯 云存储<br/>  
27 - * 监控框架 SpringBoot-Admin 全方位服务监控<br/>  
28 - * 校验框架 Validation 增强接口安全性 严谨性<br/>  
29 - * Excel框架 Alibaba EasyExcel 性能优异 扩展性强<br/>  
30 - * 文档框架 SpringDoc、javadoc 无注解零入侵基于java注释<br/>  
31 - * 工具类框架 Hutool、Lombok 减少代码冗余 增加安全性<br/>  
32 - * 代码生成器 适配MP、SpringDoc规范化代码 一键生成前后端代码<br/>  
33 - * 部署方式 Docker 容器编排 一键部署业务集群<br/>  
34 - * 国际化 SpringMessage Spring标准国际化方案<br/>  
35 - </p>  
36 - <p>  
37 - <b>当前版本:</b> <span>v{{ version }}</span>  
38 - </p>  
39 - <p>  
40 - <el-tag type="danger">&yen;免费开源</el-tag>  
41 - </p>  
42 - <p>  
43 - <el-button  
44 - type="primary"  
45 - icon="Cloudy"  
46 - plain  
47 - @click="goTarget('https://gitee.com/JavaLionLi/RuoYi-Vue-Plus')"  
48 - >访问码云</el-button  
49 - >  
50 - <el-button  
51 - type="primary"  
52 - icon="Cloudy"  
53 - plain  
54 - @click="goTarget('https://github.com/JavaLionLi/RuoYi-Vue-Plus')"  
55 - >访问GitHub</el-button  
56 - >  
57 - <el-button  
58 - type="primary"  
59 - icon="Cloudy"  
60 - plain  
61 - @click="goTarget('https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/wikis/pages?sort_id=4106467&doc_id=1469725')"  
62 - >更新日志</el-button  
63 - >  
64 - </p>  
65 - </el-col>  
66 -  
67 - <el-col :sm="24" :lg="12" style="padding-left: 50px">  
68 - <el-row>  
69 - <el-col :span="12">  
70 - <h2>技术选型</h2>  
71 - </el-col>  
72 - </el-row>  
73 - <el-row>  
74 - <el-col :span="6">  
75 - <h4>后端技术</h4>  
76 - <ul>  
77 - <li>SpringBoot</li>  
78 - <li>Sa-Token</li>  
79 - <li>JWT</li>  
80 - <li>MyBatis</li>  
81 - <li>Druid</li>  
82 - <li>Jackson</li>  
83 - <li>...</li>  
84 - </ul>  
85 - </el-col>  
86 - <el-col :span="6">  
87 - <h4>前端技术</h4>  
88 - <ul>  
89 - <li>Vue</li>  
90 - <li>Vuex</li>  
91 - <li>Element-ui</li>  
92 - <li>Axios</li>  
93 - <li>Sass</li>  
94 - <li>Quill</li>  
95 - <li>...</li>  
96 - </ul>  
97 - </el-col>  
98 - </el-row>  
99 - </el-col>  
100 - </el-row>  
101 - <el-divider />  
102 </div> 3 </div>
103 </template> 4 </template>
104 5
105 <script setup name="Index"> 6 <script setup name="Index">
106 -const version = ref('4.8.2')  
107 -  
108 -function goTarget(url) {  
109 - window.open(url, '__blank')  
110 -}  
111 </script> 7 </script>
112 -  
113 <style scoped lang="scss"> 8 <style scoped lang="scss">
114 -.home {  
115 - blockquote {  
116 - padding: 10px 20px;  
117 - margin: 0 0 20px;  
118 - font-size: 17.5px;  
119 - border-left: 5px solid #eee;  
120 - }  
121 - hr {  
122 - margin-top: 20px;  
123 - margin-bottom: 20px;  
124 - border: 0;  
125 - border-top: 1px solid #eee;  
126 - }  
127 - .col-item {  
128 - margin-bottom: 20px;  
129 - }  
130 -  
131 - ul {  
132 - padding: 0;  
133 - margin: 0;  
134 - }  
135 -  
136 - font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;  
137 - font-size: 13px;  
138 - color: #676a6c;  
139 - overflow-x: hidden;  
140 -  
141 - ul {  
142 - list-style-type: none;  
143 - }  
144 -  
145 - h4 {  
146 - margin-top: 0px;  
147 - }  
148 -  
149 - h2 {  
150 - margin-top: 10px;  
151 - font-size: 26px;  
152 - font-weight: 100;  
153 - }  
154 -  
155 - p {  
156 - margin-top: 10px;  
157 -  
158 - b {  
159 - font-weight: 700;  
160 - }  
161 - }  
162 -  
163 - .update-log {  
164 - ol {  
165 - display: block;  
166 - list-style-type: decimal;  
167 - margin-block-start: 1em;  
168 - margin-block-end: 1em;  
169 - margin-inline-start: 0;  
170 - margin-inline-end: 0;  
171 - padding-inline-start: 40px;  
172 - }  
173 - }  
174 -}  
175 </style> 9 </style>
176 10