From 4e6057d01efc7811f4249800fa3ebd8766a17150 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=AD=81=E5=93=B2?= <472764879@qq.com>
Date: Fri, 20 Aug 2021 08:52:13 +0000
Subject: [PATCH 1/2] =?UTF-8?q?!1=203.00=20*=20update=20=E4=BC=98=E5=8C=96?=
=?UTF-8?q?=20OSS=20=E6=A8=A1=E5=9D=97=E4=B8=8E=E4=B8=8A=E4=BC=A0=E7=BB=84?=
=?UTF-8?q?=E4=BB=B6=20=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86=20*=20fix=20?=
=?UTF-8?q?=E4=BF=AE=E5=A4=8D=20OSS=E9=85=8D=E7=BD=AE=E6=B8=85=E7=A9=BA?=
=?UTF-8?q?=E8=A2=AB=E8=BF=87=E6=BB=A4=E9=97=AE=E9=A2=98=20*=20fix=20?=
=?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E6=96=B0=E7=89=88=E6=9C=AC=E8=AF=B4?=
=?UTF-8?q?=E6=98=8E=20=E6=A0=87=E7=AD=BE=E9=94=99=E8=AF=AF=20*=20fix=20?=
=?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E5=AF=8C=E6=96=87=E6=9C=AC=E5=9B=BE?=
=?UTF-8?q?=E7=89=87=E8=B7=AF=E5=BE=84=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98?=
=?UTF-8?q?=20*=20fix=20=E4=BF=AE=E5=A4=8D=20minio=20=E6=97=A0=20perfix=20?=
=?UTF-8?q?=E9=97=AE=E9=A2=98=20*=20=E5=8F=91=E5=B8=83=20v3.0.0=20*=20upda?=
=?UTF-8?q?te=20=E9=99=8D=E7=BA=A7=20minio=20=E4=BE=9D=E8=B5=96=E7=89=88?=
=?UTF-8?q?=E6=9C=AC=20*=20update=20service=20=E7=BB=9F=E4=B8=80=E4=BD=BF?=
=?UTF-8?q?=E7=94=A8=20ServicePlusImpl?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 57 +-
docker/docker-compose.yml | 31 +-
pom.xml | 42 +-
ruoyi-extend/pom.xml | 2 +-
ruoyi-extend/ruoyi-monitor-admin/pom.xml | 2 +-
ruoyi-ui/bin/run-web.bat | 4 +-
ruoyi-ui/package.json | 4 +-
ruoyi-ui/src/api/demo/demo.js | 8 -
ruoyi-ui/src/api/demo/tree.js | 9 -
ruoyi-ui/src/api/login.js | 14 +-
ruoyi-ui/src/api/monitor/jobLog.js | 9 -
ruoyi-ui/src/api/monitor/logininfor.js | 9 -
ruoyi-ui/src/api/monitor/operlog.js | 9 -
ruoyi-ui/src/api/system/config.js | 8 -
ruoyi-ui/src/api/system/dict/data.js | 9 -
ruoyi-ui/src/api/system/dict/type.js | 9 -
ruoyi-ui/src/api/system/oss.js | 11 +
ruoyi-ui/src/api/system/ossConfig.js | 58 +
ruoyi-ui/src/api/system/role.js | 10 -
ruoyi-ui/src/api/system/user.js | 17 -
ruoyi-ui/src/components/Breadcrumb/index.vue | 2 +-
ruoyi-ui/src/components/Editor/index.vue | 4 +-
ruoyi-ui/src/components/FileUpload/index.vue | 17 +-
ruoyi-ui/src/components/ImageUpload/index.vue | 32 +-
ruoyi-ui/src/main.js | 3 +-
ruoyi-ui/src/router/index.js | 22 +-
ruoyi-ui/src/store/modules/user.js | 2 +-
ruoyi-ui/src/utils/download.js | 91 ++
ruoyi-ui/src/utils/request.js | 10 +-
ruoyi-ui/src/utils/ruoyi.js | 24 +-
ruoyi-ui/src/views/demo/demo/index.vue | 16 +-
ruoyi-ui/src/views/demo/tree/index.vue | 2 +-
ruoyi-ui/src/views/index.vue | 50 +-
ruoyi-ui/src/views/login.vue | 12 +-
ruoyi-ui/src/views/monitor/job/index.vue | 16 +-
ruoyi-ui/src/views/monitor/job/log.vue | 20 +-
.../src/views/monitor/logininfor/index.vue | 16 +-
ruoyi-ui/src/views/monitor/operlog/index.vue | 16 +-
ruoyi-ui/src/views/register.vue | 208 +++
ruoyi-ui/src/views/system/config/index.vue | 16 +-
ruoyi-ui/src/views/system/dict/data.vue | 16 +-
ruoyi-ui/src/views/system/dict/index.vue | 16 +-
ruoyi-ui/src/views/system/menu/index.vue | 2 +-
ruoyi-ui/src/views/system/oss/config.vue | 414 ++++++
ruoyi-ui/src/views/system/oss/index.vue | 75 +-
ruoyi-ui/src/views/system/post/index.vue | 16 +-
ruoyi-ui/src/views/system/role/index.vue | 16 +-
ruoyi-ui/src/views/system/role/selectUser.vue | 2 +-
ruoyi-ui/src/views/system/user/index.vue | 23 +-
.../views/system/user/profile/userAvatar.vue | 9 +-
ruoyi-ui/src/views/tool/gen/index.vue | 2 +-
ruoyi/Dockerfile | 1 +
ruoyi/pom.xml | 17 +-
.../com/ruoyi/common/annotation/Excel.java | 165 ---
.../common/annotation/ExcelDictFormat.java | 30 +
.../com/ruoyi/common/annotation/Excels.java | 18 -
.../ruoyi/common/annotation/RateLimiter.java | 40 +
.../ruoyi/common/annotation/RepeatSubmit.java | 14 +-
.../com/ruoyi/common/config/RuoYiConfig.java | 34 +-
.../com/ruoyi/common/constant/Constants.java | 23 +-
.../ruoyi/common/constant/UserConstants.java | 12 +
.../common/convert/ExcelDictConvert.java | 69 +
.../core/controller/BaseController.java | 38 +-
.../ruoyi/common/core/domain/BaseEntity.java | 56 +-
.../ruoyi/common/core/domain/TreeEntity.java | 48 +-
.../common/core/domain/entity/SysDept.java | 146 +-
.../core/domain/entity/SysDictData.java | 158 ++-
.../core/domain/entity/SysDictType.java | 108 +-
.../common/core/domain/entity/SysMenu.java | 169 ++-
.../common/core/domain/entity/SysRole.java | 190 +--
.../common/core/domain/entity/SysUser.java | 240 ++--
.../common/core/domain/model/LoginUser.java | 20 +-
.../core/domain/model/RegisterBody.java | 11 +
.../mybatisplus/core/ServicePlusImpl.java | 4 +
.../core/mybatisplus/methods/InsertAll.java | 15 +-
.../com/ruoyi/common/enums/LimitType.java | 20 +
.../common/exception/CustomException.java | 43 -
.../common/exception/GlobalException.java | 58 +
.../common/exception/ServiceException.java | 73 +
.../exception/{ => base}/BaseException.java | 8 +-
.../common/exception/file/FileException.java | 4 +-
.../common/exception/user/UserException.java | 4 +-
.../ruoyi/common/filter/RepeatableFilter.java | 6 +-
.../com/ruoyi/common/filter/XssFilter.java | 41 +-
.../filter/XssHttpServletRequestWrapper.java | 7 +-
.../com/ruoyi/common/utils/DictUtils.java | 30 +-
.../com/ruoyi/common/utils/JsonUtils.java | 12 +-
.../com/ruoyi/common/utils/PageUtils.java | 7 +-
.../com/ruoyi/common/utils/SecurityUtils.java | 40 +-
.../com/ruoyi/common/utils/ServletUtils.java | 5 +-
.../com/ruoyi/common/utils/StringUtils.java | 354 +++++
.../common/utils/file/FileTypeUtils.java | 76 --
.../common/utils/file/FileUploadUtils.java | 239 ----
.../ruoyi/common/utils/file/FileUtils.java | 76 +-
.../ruoyi/common/utils/file/ImageUtils.java | 102 --
.../common/utils/file/MimeTypeUtils.java | 59 -
.../ruoyi/common/utils/ip/AddressUtils.java | 4 +-
.../com/ruoyi/common/utils/poi/ExcelUtil.java | 1184 ++---------------
.../common/utils/reflect/ReflectUtils.java | 17 +-
.../com/ruoyi/common/utils/sql/SqlUtil.java | 10 +-
.../demo/controller/TestBatchController.java | 11 +-
.../demo/controller/TestDemoController.java | 9 +-
.../demo/controller/TestI18nController.java | 29 +
.../demo/controller/TestTreeController.java | 6 +-
.../com/ruoyi/demo/domain/vo/TestDemoVo.java | 23 +-
.../com/ruoyi/demo/domain/vo/TestTreeVo.java | 15 +-
.../service/impl/TestDemoServiceImpl.java | 8 +-
.../service/impl/TestTreeServiceImpl.java | 6 +-
.../framework/aspectj/DataScopeAspect.java | 25 +-
.../framework/aspectj/DataSourceAspect.java | 4 +-
.../ruoyi/framework/aspectj/LogAspect.java | 11 +-
.../framework/aspectj/RateLimiterAspect.java | 116 ++
.../captcha/UnsignedMathGenerator.java | 8 +-
.../framework/config/ApplicationConfig.java | 12 +-
.../ruoyi/framework/config/AsyncConfig.java | 4 +-
.../ruoyi/framework/config/FilterConfig.java | 7 +-
.../ruoyi/framework/config/I18nConfig.java | 48 +
.../ruoyi/framework/config/JacksonConfig.java | 8 +
.../ruoyi/framework/config/RedisConfig.java | 32 +-
.../framework/config/ResourcesConfig.java | 6 +-
.../framework/config/SecurityConfig.java | 10 +-
.../properties/RepeatSubmitProperties.java | 22 +
.../interceptor/RepeatSubmitInterceptor.java | 66 +-
.../impl/SameUrlDataInterceptor.java | 164 +--
.../jackson/BigNumberSerializer.java | 42 +
.../CreateAndUpdateMetaObjectHandler.java | 40 +-
.../filter/JwtAuthenticationTokenFilter.java | 6 +-
.../handle/AuthenticationEntryPointImpl.java | 4 +-
.../handle/LogoutSuccessHandlerImpl.java | 4 +-
.../web/exception/GlobalExceptionHandler.java | 87 +-
.../framework/web/service/AsyncService.java | 3 +-
.../web/service/PermissionService.java | 32 +-
.../web/service/SysLoginService.java | 4 +-
.../web/service/SysRegisterService.java | 117 ++
.../framework/web/service/TokenService.java | 26 +-
.../web/service/UserDetailsServiceImpl.java | 22 +-
.../com/ruoyi/generator/domain/GenTable.java | 14 +-
.../generator/domain/GenTableColumn.java | 28 +-
.../service/GenTableColumnServiceImpl.java | 4 +-
.../service/GenTableServiceImpl.java | 73 +-
.../com/ruoyi/generator/util/GenUtils.java | 38 +-
.../ruoyi/generator/util/VelocityUtils.java | 70 +-
.../com/ruoyi/oss/constant/CloudConstant.java | 22 +-
.../ruoyi/oss/enumd/CloudServiceEnumd.java | 28 +-
.../com/ruoyi/oss/factory/OssFactory.java | 64 +-
.../properties/CloudStorageProperties.java | 184 +--
...ervice.java => ICloudStorageStrategy.java} | 6 +-
...java => AbstractCloudStorageStrategy.java} | 19 +-
...l.java => AliyunCloudStorageStrategy.java} | 41 +-
...pl.java => MinioCloudStorageStrategy.java} | 40 +-
...l.java => QcloudCloudStorageStrategy.java} | 43 +-
...pl.java => QiniuCloudStorageStrategy.java} | 50 +-
.../quartz/controller/SysJobController.java | 45 +-
.../controller/SysJobLogController.java | 10 +-
.../java/com/ruoyi/quartz/domain/SysJob.java | 35 +-
.../com/ruoyi/quartz/domain/SysJobLog.java | 26 +-
.../service/impl/SysJobLogServiceImpl.java | 31 +-
.../service/impl/SysJobServiceImpl.java | 22 +-
.../java/com/ruoyi/quartz/task/RyTask.java | 6 +-
.../ruoyi/quartz/util/AbstractQuartzJob.java | 7 +-
.../com/ruoyi/quartz/util/JobInvokeUtil.java | 47 +-
.../com/ruoyi/system/domain/SysConfig.java | 21 +-
.../ruoyi/system/domain/SysLogininfor.java | 28 +-
.../com/ruoyi/system/domain/SysOperLog.java | 44 +-
.../com/ruoyi/system/domain/SysOssConfig.java | 111 ++
.../java/com/ruoyi/system/domain/SysPost.java | 21 +-
.../system/domain/bo/SysOssConfigBo.java | 130 ++
.../com/ruoyi/system/domain/vo/MetaVo.java | 4 +-
.../system/domain/vo/SysOssConfigVo.java | 96 ++
.../system/domain/vo/SysUserExportVo.java | 93 ++
.../system/domain/vo/SysUserImportVo.java | 73 +
.../system/mapper/SysOssConfigMapper.java | 15 +
.../system/service/ISysOssConfigService.java | 58 +
.../ruoyi/system/service/ISysOssService.java | 2 +-
.../ruoyi/system/service/ISysUserService.java | 8 +
.../service/impl/SysConfigServiceImpl.java | 45 +-
.../service/impl/SysDeptServiceImpl.java | 21 +-
.../service/impl/SysDictDataServiceImpl.java | 18 +-
.../service/impl/SysDictTypeServiceImpl.java | 35 +-
.../impl/SysLogininforServiceImpl.java | 27 +-
.../service/impl/SysMenuServiceImpl.java | 40 +-
.../service/impl/SysNoticeServiceImpl.java | 18 +-
.../service/impl/SysOperLogServiceImpl.java | 25 +-
.../service/impl/SysOssConfigServiceImpl.java | 180 +++
.../service/impl/SysOssServiceImpl.java | 30 +-
.../service/impl/SysPostServiceImpl.java | 31 +-
.../service/impl/SysRoleServiceImpl.java | 24 +-
.../impl/SysUserOnlineServiceImpl.java | 13 +-
.../service/impl/SysUserServiceImpl.java | 49 +-
.../controller/common/CaptchaController.java | 6 +-
.../controller/common/CommonController.java | 88 --
.../controller/monitor/CacheController.java | 8 +-
.../monitor/SysLogininforController.java | 8 +-
.../monitor/SysOperlogController.java | 8 +-
.../monitor/SysUserOnlineController.java | 17 +-
.../system/SysConfigController.java | 11 +-
.../controller/system/SysDeptController.java | 13 +-
.../system/SysDictDataController.java | 15 +-
.../system/SysDictTypeController.java | 11 +-
.../controller/system/SysIndexController.java | 4 +-
.../controller/system/SysLoginController.java | 7 +-
.../controller/system/SysMenuController.java | 28 +-
.../system/SysNoticeController.java | 7 +-
.../system/SysOssConfigController.java | 108 ++
.../controller/system}/SysOssController.java | 38 +-
.../controller/system/SysPostController.java | 33 +-
.../system/SysProfileController.java | 16 +-
.../system/SysRegisterController.java | 38 +
.../controller/system/SysRoleController.java | 17 +-
.../controller/system/SysUserController.java | 57 +-
ruoyi/src/main/resources/application-dev.yml | 59 +-
.../src/main/resources/application-local.yml | 108 ++
ruoyi/src/main/resources/application-prod.yml | 59 +-
ruoyi/src/main/resources/application.yml | 29 +-
.../main/resources/i18n/messages.properties | 3 +-
.../resources/i18n/messages_en_US.properties | 2 +-
.../resources/i18n/messages_zh_CN.properties | 3 +-
.../mapper/system/SysOssConfigMapper.xml | 27 +
ruoyi/src/main/resources/spy.properties | 26 +
ruoyi/src/main/resources/vm/java/bo.java.vm | 4 +-
.../main/resources/vm/java/controller.java.vm | 13 +-
.../resources/vm/java/serviceImpl.java.vm | 4 +-
ruoyi/src/main/resources/vm/java/vo.java.vm | 18 +-
ruoyi/src/main/resources/vm/js/api.js.vm | 9 -
.../main/resources/vm/vue/index-tree.vue.vm | 6 +-
ruoyi/src/main/resources/vm/vue/index.vue.vm | 39 +-
ruoyi/src/main/resources/vm/xml/mapper.xml.vm | 2 +-
sql/oss.sql | 32 +-
sql/ry_20210731.sql | 690 ++++++++++
229 files changed, 6198 insertions(+), 4320 deletions(-)
create mode 100644 ruoyi-ui/src/api/system/ossConfig.js
create mode 100644 ruoyi-ui/src/utils/download.js
create mode 100644 ruoyi-ui/src/views/register.vue
create mode 100644 ruoyi-ui/src/views/system/oss/config.vue
delete mode 100644 ruoyi/src/main/java/com/ruoyi/common/annotation/Excel.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/common/annotation/ExcelDictFormat.java
delete mode 100644 ruoyi/src/main/java/com/ruoyi/common/annotation/Excels.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/common/annotation/RateLimiter.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/common/convert/ExcelDictConvert.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/common/enums/LimitType.java
delete mode 100644 ruoyi/src/main/java/com/ruoyi/common/exception/CustomException.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/common/exception/GlobalException.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/common/exception/ServiceException.java
rename ruoyi/src/main/java/com/ruoyi/common/exception/{ => base}/BaseException.java (93%)
create mode 100644 ruoyi/src/main/java/com/ruoyi/common/utils/StringUtils.java
delete mode 100644 ruoyi/src/main/java/com/ruoyi/common/utils/file/FileTypeUtils.java
delete mode 100644 ruoyi/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
delete mode 100644 ruoyi/src/main/java/com/ruoyi/common/utils/file/ImageUtils.java
delete mode 100644 ruoyi/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/demo/controller/TestI18nController.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/framework/aspectj/RateLimiterAspect.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/framework/config/I18nConfig.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/framework/config/properties/RepeatSubmitProperties.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/framework/jackson/BigNumberSerializer.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/framework/web/service/SysRegisterService.java
rename ruoyi/src/main/java/com/ruoyi/oss/service/{ICloudStorageService.java => ICloudStorageStrategy.java} (93%)
rename ruoyi/src/main/java/com/ruoyi/oss/service/abstractd/{AbstractCloudStorageService.java => AbstractCloudStorageStrategy.java} (73%)
rename ruoyi/src/main/java/com/ruoyi/oss/service/impl/{AliyunCloudStorageServiceImpl.java => AliyunCloudStorageStrategy.java} (70%)
rename ruoyi/src/main/java/com/ruoyi/oss/service/impl/{MinioCloudStorageServiceImpl.java => MinioCloudStorageStrategy.java} (81%)
rename ruoyi/src/main/java/com/ruoyi/oss/service/impl/{QcloudCloudStorageServiceImpl.java => QcloudCloudStorageStrategy.java} (71%)
rename ruoyi/src/main/java/com/ruoyi/oss/service/impl/{QiniuCloudStorageServiceImpl.java => QiniuCloudStorageStrategy.java} (66%)
create mode 100644 ruoyi/src/main/java/com/ruoyi/system/domain/SysOssConfig.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/system/domain/bo/SysOssConfigBo.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/system/domain/vo/SysOssConfigVo.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/system/domain/vo/SysUserExportVo.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/system/domain/vo/SysUserImportVo.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/system/mapper/SysOssConfigMapper.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/system/service/ISysOssConfigService.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java
delete mode 100644 ruoyi/src/main/java/com/ruoyi/web/controller/common/CommonController.java
create mode 100644 ruoyi/src/main/java/com/ruoyi/web/controller/system/SysOssConfigController.java
rename ruoyi/src/main/java/com/ruoyi/{system/controller => web/controller/system}/SysOssController.java (74%)
create mode 100644 ruoyi/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java
create mode 100644 ruoyi/src/main/resources/application-local.yml
create mode 100644 ruoyi/src/main/resources/mapper/system/SysOssConfigMapper.xml
create mode 100644 ruoyi/src/main/resources/spy.properties
create mode 100644 sql/ry_20210731.sql
diff --git a/README.md b/README.md
index 2779fda93..778b901f4 100644
--- a/README.md
+++ b/README.md
@@ -4,8 +4,8 @@
[](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/blob/master/LICENSE)
[](https://www.jetbrains.com/?from=RuoYi-Vue-Plus)
-[](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus)
-[]()
+[](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus)
+[]()
[]()
[]()
@@ -21,51 +21,39 @@ RuoYi-Vue-Plus 是基于 RuoYi-Vue 针对 `分布式集群` 场景升级 定期
* 权限认证框架 Spring Security、Jwt,支持多终端认证系统
* 关系数据库 MySQL 适配 8.X
* 缓存数据库 Redis 适配 6.X
-* 数据库开发框架 Mybatis-Plus 快速 CRUD 增加开发效率 插件化支持各类需求
+* 数据库框架 Mybatis-Plus 快速 CRUD 增加开发效率 插件化支持各类需求
+* 数据库框架 多数据源框架 dynamic-datasource 支持主从与多种类数据库异构
+* 数据库框架 Redis客户端 采用 Redisson 性能更强
+* 数据库框架 性能分析插件 p6spy 更强劲的 SQL 分析
+* 序列化框架 统一使用 jackson 高效可靠
* 网络框架 Feign、OkHttp3 接口化管理 HTTP 请求
-* 工具类框架 Hutool、Lombok 减少代码冗余 增加安全性
+* 分布式锁 Lock4j 注解锁、工具锁 多种多样
+* 文件存储 OSS 对象存储模块 支持(Minio、七牛、阿里、腾讯)
* 监控框架 spring-boot-admin 全方位服务监控
* 校验框架 validation 增强接口安全性 严谨性
+* Excel框架 Alibaba EasyExcel 性能优异 扩展性强
* 文档框架 knife4j 美化接口文档
-* 序列化框架 统一使用 jackson 高效可靠
+* 工具类框架 Hutool、Lombok 减少代码冗余 增加安全性
* 代码生成器 一键生成前后端代码
-* 多数据源框架 dynamic-datasource 支持主从与多种类数据库异构
-* Redis客户端 采用 Redisson 性能更强
-* 分布式锁 Lock4j 注解锁、工具锁 多种多样
* 部署方式 Docker 容器编排 一键部署业务集群
-* 文件存储 OSS 对象存储模块 支持(Minio、七牛、阿里、腾讯)
+* 国际化 Spring 标准国际化方解决方案
## 参考文档
使用框架前请仔细阅读文档重点注意事项
>[初始化项目 必看](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/wikis/关于初始化项目?sort_id=4164117)
+>>[https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/wikis/关于初始化项目?sort_id=4164117](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/wikis/关于初始化项目?sort_id=4164117)
>
>[部署项目 必看](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/wikis/关于应用部署?sort_id=4219382)
+>>[https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/wikis/关于应用部署?sort_id=4219382](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/wikis/关于应用部署?sort_id=4219382)
>
>[参考文档 Wiki](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/wikis/pages)
+>>[https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/wikis/pages](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/wikis/pages)
-## 提问四部曲
-### 一、查阅wiki
-优先在`wiki->重点事项`,查找是否有相关问题及解决方案,尤其是框架更新后产生的问题,多会在wiki中提及
+## 软件架构图
-> [参考文档 Wiki](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/wikis/pages)
-
-### 二、借助issues
-尝试issues中搜索问题关键字(记得选择已完成),看看是否有其他人提出相同问题
-- `如果有`那么依据评论中的解决方案自行尝试解决
-- `如果没有`那么提交一个新的issues描述清楚你的问题,需要包含以下内容(优质的issues,能够帮助作者更高效的帮你解决问题):
- - 出现问题的模块或功能或类,总之你要说清楚在哪出的问题
- - 描述产生问题的相关操作流程,以便复现快速解决
- - 报错的日志截图,一定是截图,不要复制一堆报错的文本
-> [issues](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/issues)
-
-### 三、百度
-大家都懂,不多描述,将关键的报错信息CC->CV到百度中看看大佬们怎么解决的
-> [百度](http://www.baidu.com)
-
-### 四、加群
-以上三点已经能解决大家绝大部分问题了,如果还有问题没能通过这几种方式解决,那么加群,大家一起在群里探讨一下
+
## 贡献代码
@@ -79,7 +67,8 @@ RuoYi-Vue-Plus 是基于 RuoYi-Vue 针对 `分布式集群` 场景升级 定期
* ORM框架 使用 Mybatis-Plus 简化CRUD (不支持主子表)
* Bean简化 使用 Lombok 简化 get set toString 等等
* 容器改动 Tomcat 改为 并发性能更好的 undertow
-* 分页移除 pagehelper 改为 Mybatis-Plus 分页
+* 移除 pagehelper 改为 Mybatis-Plus 分页
+* 集成 p6spy 更强劲的 SQL 分析
* 升级 swagger 为 knife4j
* 集成 Hutool 5.X 并重写RuoYi部分功能
* 集成 Feign 接口化管理 Http 请求(如三方请求 支付,短信,推送等)
@@ -90,7 +79,8 @@ RuoYi-Vue-Plus 是基于 RuoYi-Vue 针对 `分布式集群` 场景升级 定期
* 集成 dynamic-datasource 多数据源(默认支持MySQL,其他种类需自行适配)
* 集成 Lock4j 实现分布式 注解锁、工具锁 多种多样
* 增加 Docker 容器编排 打包插件与部署脚本
-* 移除 本地文件上传 改为 OSS对象存储 支持(Minio、七牛、阿里、腾讯)
+* 移除 通用上传下载 改为 OSS对象存储 支持(Minio、七牛、阿里、腾讯)
+* 移除 RuoYi自带 Excel 工具 改为 EasyExcel 工具
### 代码改动
@@ -112,8 +102,9 @@ RuoYi-Vue-Plus 是基于 RuoYi-Vue 针对 `分布式集群` 场景升级 定期
* 单模块 fast 分支 [RuoYi-Vue-Plus-fast](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/tree/fast/)
* Oracle 模块 oracle 分支 [RuoYi-Vue-Plus-oracle](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/tree/oracle/)
-## 扫码加群 一起交流
-
+## 加群与捐献
+>[加群与捐献](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/wikis/加群与捐献?sort_id=4104598)
+>>[https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/wikis/加群与捐献?sort_id=4104598](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/wikis/加群与捐献?sort_id=4104598)
## 捐献作者
作者为兼职做开源,平时还需要工作,如果帮到了您可以请作者吃个盒饭
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index ac065c351..228ddbf29 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -18,8 +18,6 @@ services:
- /docker/mysql/data/:/var/lib/mysql/
# 配置挂载
- /docker/mysql/conf/:/etc/mysql/conf.d/
- # 主机本机时间文件映射 与本机时间同步
- - /etc/localtime:/etc/localtime:ro
command:
# 将mysql8.0默认密码策略 修改为 原先 策略 (mysql8.0对其默认策略做了更改 会导致密码无法匹配)
--default-authentication-plugin=mysql_native_password
@@ -37,6 +35,9 @@ services:
# 如果需要指定版本 就把 latest 换成版本号
image: nginx:latest
container_name: nginx-web
+ environment:
+ # 时区上海
+ TZ: Asia/Shanghai
ports:
- 80:80
- 443:443
@@ -49,8 +50,6 @@ services:
- /docker/nginx/html:/usr/share/nginx/html
# 日志目录
- /docker/nginx/log:/var/log/nginx
- # 主机本机时间文件映射 与本机时间同步
- - /etc/localtime:/etc/localtime:ro
privileged: true
restart: always
networks:
@@ -62,16 +61,13 @@ services:
ports:
- 6379:6379
environment:
- # 设置环境变量 时区上海 编码UTF-8
+ # 时区上海
TZ: Asia/Shanghai
- LANG: en_US.UTF-8
volumes:
# 配置文件
- /docker/redis/conf/redis.conf:/redis.conf:rw
# 数据文件
- /docker/redis/data:/data:rw
- # 主机本机时间文件映射 与本机时间同步
- - /etc/localtime:/etc/localtime:ro
command: "redis-server --appendonly yes"
privileged: true
restart: always
@@ -88,6 +84,8 @@ services:
# 控制台端口
- 9001:9001
environment:
+ # 时区上海
+ TZ: Asia/Shanghai
# 管理后台用户名
MINIO_ACCESS_KEY: ruoyi
# 管理后台密码,最小8个字符
@@ -97,8 +95,6 @@ services:
- /docker/minio/data:/data
# 映射配置目录
- /docker/minio/config:/root/.minio/
- # 主机本机时间文件映射 与本机时间同步
- - /etc/localtime:/etc/localtime:ro
command: server --console-address ':9001' /data # 指定容器中的目录 /data
privileged: true
restart: always
@@ -107,9 +103,10 @@ services:
ipv4_address: 172.30.0.54
ruoyi-server1:
- image: "ruoyi/ruoyi-server:2.6.0"
+ image: "ruoyi/ruoyi-server:3.0.0"
environment:
- - TZ=Asia/Shanghai
+ # 时区上海
+ TZ: Asia/Shanghai
volumes:
# 配置文件
- /docker/server1/logs/:/ruoyi/server/logs/
@@ -121,9 +118,10 @@ services:
ipv4_address: 172.30.0.60
ruoyi-server2:
- image: "ruoyi/ruoyi-server:2.6.0"
+ image: "ruoyi/ruoyi-server:3.0.0"
environment:
- - TZ=Asia/Shanghai
+ # 时区上海
+ TZ: Asia/Shanghai
volumes:
# 配置文件
- /docker/server2/logs/:/ruoyi/server/logs/
@@ -135,9 +133,10 @@ services:
ipv4_address: 172.30.0.61
ruoyi-monitor-admin:
- image: "ruoyi/ruoyi-monitor-admin:2.6.0"
+ image: "ruoyi/ruoyi-monitor-admin:3.0.0"
environment:
- - TZ=Asia/Shanghai
+ # 时区上海
+ TZ: Asia/Shanghai
privileged: true
restart: always
networks:
diff --git a/pom.xml b/pom.xml
index a5c20b7e6..e0866bdad 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,14 +6,14 @@
com.ruoyi
ruoyi-vue-plus
- 2.6.0
+ 3.0.0
RuoYi-Vue-Plus
https://gitee.com/JavaLionLi/RuoYi-Vue-Plus
RuoYi-Vue-Plus后台管理系统
- 2.6.0
+ 3.0.0
2.5.3
UTF-8
UTF-8
@@ -22,16 +22,19 @@
1.2.6
3.0.3
4.1.2
+ 2.2.10
1.7
0.9.1
3.4.3
- 5.7.6
+ 3.9.1
+ 5.7.7
3.0.3
- 11.0
- 2.4.3
+ 11.2
+ 4.9.1
+ 2.5.0
3.16.1
2.2.1
- 3.4.1
+ 3.4.1
7.8.0
@@ -79,6 +82,12 @@
${poi.version}
+
+ com.alibaba
+ easyexcel
+ ${easyexcel.version}
+
+
org.apache.velocity
@@ -97,7 +106,7 @@
com.baomidou
dynamic-datasource-spring-boot-starter
- ${datasource.version}
+ ${dynamic-ds.version}
@@ -110,6 +119,12 @@
mybatis-plus-extension
${mybatis-plus.version}
+
+
+ p6spy
+ p6spy
+ ${p6spy.version}
+
cn.hutool
@@ -129,6 +144,12 @@
${feign-okhttp.version}
+
+ com.squareup.okhttp3
+ okhttp
+ ${okhttp.version}
+
+
de.codecentric
spring-boot-admin-starter-server
@@ -193,7 +214,7 @@
public
aliyun nexus
- http://maven.aliyun.com/nexus/content/groups/public/
+ https://maven.aliyun.com/repository/public/
true
@@ -204,7 +225,7 @@
public
aliyun nexus
- http://maven.aliyun.com/nexus/content/groups/public/
+ https://maven.aliyun.com/repository/public/
true
@@ -221,6 +242,7 @@
local
debug
+ '*'
@@ -229,6 +251,7 @@
dev
debug
+ '*'
@@ -240,6 +263,7 @@
prod
warn
+ health,info
diff --git a/ruoyi-extend/pom.xml b/ruoyi-extend/pom.xml
index 4df48bab7..3bfe77021 100644
--- a/ruoyi-extend/pom.xml
+++ b/ruoyi-extend/pom.xml
@@ -5,7 +5,7 @@
ruoyi-vue-plus
com.ruoyi
- 2.6.0
+ 3.0.0
4.0.0
ruoyi-extend
diff --git a/ruoyi-extend/ruoyi-monitor-admin/pom.xml b/ruoyi-extend/ruoyi-monitor-admin/pom.xml
index 9aca296c1..bada747b4 100644
--- a/ruoyi-extend/ruoyi-monitor-admin/pom.xml
+++ b/ruoyi-extend/ruoyi-monitor-admin/pom.xml
@@ -5,7 +5,7 @@
ruoyi-extend
com.ruoyi
- 2.6.0
+ 3.0.0
4.0.0
jar
diff --git a/ruoyi-ui/bin/run-web.bat b/ruoyi-ui/bin/run-web.bat
index a938e8921..3e209d772 100644
--- a/ruoyi-ui/bin/run-web.bat
+++ b/ruoyi-ui/bin/run-web.bat
@@ -1,6 +1,6 @@
@echo off
echo.
-echo [Ϣ] ʹ Vue Web ̡
+echo [��Ϣ] ʹ�� Vue CLI �������� Web ���̡�
echo.
%~d0
@@ -9,4 +9,4 @@ cd %~dp0
cd ..
npm run dev
-pause
\ No newline at end of file
+pause
diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json
index c980bab82..604d964c3 100644
--- a/ruoyi-ui/package.json
+++ b/ruoyi-ui/package.json
@@ -1,6 +1,6 @@
{
"name": "ruoyi-vue-plus",
- "version": "2.6.0",
+ "version": "3.0.0",
"description": "RuoYi-Vue-Plus后台管理系统",
"author": "LionLi",
"license": "MIT",
@@ -41,7 +41,7 @@
"clipboard": "2.0.6",
"core-js": "3.8.1",
"echarts": "4.9.0",
- "element-ui": "2.15.3",
+ "element-ui": "2.15.5",
"file-saver": "2.0.4",
"fuse.js": "6.4.3",
"highlight.js": "9.18.5",
diff --git a/ruoyi-ui/src/api/demo/demo.js b/ruoyi-ui/src/api/demo/demo.js
index c7195afbd..04d40256f 100644
--- a/ruoyi-ui/src/api/demo/demo.js
+++ b/ruoyi-ui/src/api/demo/demo.js
@@ -52,11 +52,3 @@ export function delDemo(id) {
})
}
-// 导出测试单表
-export function exportDemo(query) {
- return request({
- url: '/demo/demo/export',
- method: 'get',
- params: query
- })
-}
diff --git a/ruoyi-ui/src/api/demo/tree.js b/ruoyi-ui/src/api/demo/tree.js
index d597e7261..4c7ebc070 100644
--- a/ruoyi-ui/src/api/demo/tree.js
+++ b/ruoyi-ui/src/api/demo/tree.js
@@ -42,12 +42,3 @@ export function delTree(id) {
method: 'delete'
})
}
-
-// 导出测试树表
-export function exportTree(query) {
- return request({
- url: '/demo/tree/export',
- method: 'get',
- params: query
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/login.js b/ruoyi-ui/src/api/login.js
index 869cd9fda..8b5b6cf22 100644
--- a/ruoyi-ui/src/api/login.js
+++ b/ruoyi-ui/src/api/login.js
@@ -15,6 +15,18 @@ export function login(username, password, code, uuid) {
})
}
+// 注册方法
+export function register(data) {
+ return request({
+ url: '/register',
+ headers: {
+ isToken: false
+ },
+ method: 'post',
+ data: data
+ })
+}
+
// 获取用户详细信息
export function getInfo() {
return request({
@@ -37,4 +49,4 @@ export function getCodeImg() {
url: '/captchaImage',
method: 'get'
})
-}
\ No newline at end of file
+}
diff --git a/ruoyi-ui/src/api/monitor/jobLog.js b/ruoyi-ui/src/api/monitor/jobLog.js
index be1fffdfa..6e0be6166 100644
--- a/ruoyi-ui/src/api/monitor/jobLog.js
+++ b/ruoyi-ui/src/api/monitor/jobLog.js
@@ -24,12 +24,3 @@ export function cleanJobLog() {
method: 'delete'
})
}
-
-// 导出调度日志
-export function exportJobLog(query) {
- return request({
- url: '/monitor/jobLog/export',
- method: 'get',
- params: query
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/monitor/logininfor.js b/ruoyi-ui/src/api/monitor/logininfor.js
index 383d61f30..26a46eb56 100644
--- a/ruoyi-ui/src/api/monitor/logininfor.js
+++ b/ruoyi-ui/src/api/monitor/logininfor.js
@@ -24,12 +24,3 @@ export function cleanLogininfor() {
method: 'delete'
})
}
-
-// 导出登录日志
-export function exportLogininfor(query) {
- return request({
- url: '/monitor/logininfor/export',
- method: 'get',
- params: query
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/monitor/operlog.js b/ruoyi-ui/src/api/monitor/operlog.js
index f09b8ed8f..a04bca840 100644
--- a/ruoyi-ui/src/api/monitor/operlog.js
+++ b/ruoyi-ui/src/api/monitor/operlog.js
@@ -24,12 +24,3 @@ export function cleanOperlog() {
method: 'delete'
})
}
-
-// 导出操作日志
-export function exportOperlog(query) {
- return request({
- url: '/monitor/operlog/export',
- method: 'get',
- params: query
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/system/config.js b/ruoyi-ui/src/api/system/config.js
index 4c5cb6b8d..c1932848d 100644
--- a/ruoyi-ui/src/api/system/config.js
+++ b/ruoyi-ui/src/api/system/config.js
@@ -59,11 +59,3 @@ export function refreshCache() {
})
}
-// 导出参数
-export function exportConfig(query) {
- return request({
- url: '/system/config/export',
- method: 'get',
- params: query
- })
-}
diff --git a/ruoyi-ui/src/api/system/dict/data.js b/ruoyi-ui/src/api/system/dict/data.js
index d7aca8923..6c9eb79b4 100644
--- a/ruoyi-ui/src/api/system/dict/data.js
+++ b/ruoyi-ui/src/api/system/dict/data.js
@@ -50,12 +50,3 @@ export function delData(dictCode) {
method: 'delete'
})
}
-
-// 导出字典数据
-export function exportData(query) {
- return request({
- url: '/system/dict/data/export',
- method: 'get',
- params: query
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/system/dict/type.js b/ruoyi-ui/src/api/system/dict/type.js
index 2f0532da7..a0254baa7 100644
--- a/ruoyi-ui/src/api/system/dict/type.js
+++ b/ruoyi-ui/src/api/system/dict/type.js
@@ -51,15 +51,6 @@ export function refreshCache() {
})
}
-// 导出字典类型
-export function exportType(query) {
- return request({
- url: '/system/dict/type/export',
- method: 'get',
- params: query
- })
-}
-
// 获取字典选择框列表
export function optionselect() {
return request({
diff --git a/ruoyi-ui/src/api/system/oss.js b/ruoyi-ui/src/api/system/oss.js
index 39be59710..965f137aa 100644
--- a/ruoyi-ui/src/api/system/oss.js
+++ b/ruoyi-ui/src/api/system/oss.js
@@ -16,3 +16,14 @@ export function delOss(ossId) {
method: 'delete'
})
}
+
+export function changePreviewListResource(previewListResource) {
+ const data = {
+ previewListResource
+ }
+ return request({
+ url: '/system/oss/changePreviewListResource',
+ method: 'put',
+ data: data
+ })
+}
diff --git a/ruoyi-ui/src/api/system/ossConfig.js b/ruoyi-ui/src/api/system/ossConfig.js
new file mode 100644
index 000000000..2c6ae0c43
--- /dev/null
+++ b/ruoyi-ui/src/api/system/ossConfig.js
@@ -0,0 +1,58 @@
+import request from '@/utils/request'
+
+// 查询云存储配置列表
+export function listOssConfig(query) {
+ return request({
+ url: '/system/oss/config/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 查询云存储配置详细
+export function getOssConfig(ossConfigId) {
+ return request({
+ url: '/system/oss/config/' + ossConfigId,
+ method: 'get'
+ })
+}
+
+// 新增云存储配置
+export function addOssConfig(data) {
+ return request({
+ url: '/system/oss/config',
+ method: 'post',
+ data: data
+ })
+}
+
+// 修改云存储配置
+export function updateOssConfig(data) {
+ return request({
+ url: '/system/oss/config',
+ method: 'put',
+ data: data
+ })
+}
+
+// 删除云存储配置
+export function delOssConfig(ossConfigId) {
+ return request({
+ url: '/system/oss/config/' + ossConfigId,
+ method: 'delete'
+ })
+}
+
+// 用户状态修改
+export function changeOssConfigStatus(ossConfigId, status, configKey) {
+ const data = {
+ ossConfigId,
+ status,
+ configKey
+ }
+ return request({
+ url: '/system/oss/config/changeStatus',
+ method: 'put',
+ data: data
+ })
+}
diff --git a/ruoyi-ui/src/api/system/role.js b/ruoyi-ui/src/api/system/role.js
index c669ac43a..888538e55 100644
--- a/ruoyi-ui/src/api/system/role.js
+++ b/ruoyi-ui/src/api/system/role.js
@@ -65,16 +65,6 @@ export function delRole(roleId) {
})
}
-// 导出角色
-export function exportRole(query) {
- return request({
- url: '/system/role/export',
- method: 'get',
- params: query
- })
-}
-
-
// 查询角色已授权用户列表
export function allocatedUserList(query) {
return request({
diff --git a/ruoyi-ui/src/api/system/user.js b/ruoyi-ui/src/api/system/user.js
index 37f4eb338..204c26eb8 100644
--- a/ruoyi-ui/src/api/system/user.js
+++ b/ruoyi-ui/src/api/system/user.js
@@ -44,15 +44,6 @@ export function delUser(userId) {
})
}
-// 导出用户
-export function exportUser(query) {
- return request({
- url: '/system/user/export',
- method: 'get',
- params: query
- })
-}
-
// 用户密码重置
export function resetUserPwd(userId, password) {
const data = {
@@ -118,14 +109,6 @@ export function uploadAvatar(data) {
})
}
-// 下载用户导入模板
-export function importTemplate() {
- return request({
- url: '/system/user/importTemplate',
- method: 'get'
- })
-}
-
// 查询授权角色
export function getAuthRole(userId) {
return request({
diff --git a/ruoyi-ui/src/components/Breadcrumb/index.vue b/ruoyi-ui/src/components/Breadcrumb/index.vue
index b313fdd67..1fbae5f3c 100644
--- a/ruoyi-ui/src/components/Breadcrumb/index.vue
+++ b/ruoyi-ui/src/components/Breadcrumb/index.vue
@@ -45,7 +45,7 @@ export default {
if (!name) {
return false
}
- return name.trim() === '首页'
+ return name.trim() === 'Index'
},
handleLink(item) {
const { redirect, path } = item
diff --git a/ruoyi-ui/src/components/Editor/index.vue b/ruoyi-ui/src/components/Editor/index.vue
index bc2e7e1dd..1f2e15ec2 100644
--- a/ruoyi-ui/src/components/Editor/index.vue
+++ b/ruoyi-ui/src/components/Editor/index.vue
@@ -176,11 +176,11 @@ export default {
// 获取光标所在位置
let length = quill.getSelection().index;
// 插入图片 res.url为服务器返回的图片地址
- quill.insertEmbed(length, "image", process.env.VUE_APP_BASE_API + res.data.fileName);
+ quill.insertEmbed(length, "image", res.data.url);
// 调整光标到最后
quill.setSelection(length + 1);
} else {
- this.$message.error("图片插入失败");
+ this.$message.error(res.msg);
}
},
handleUploadError() {
diff --git a/ruoyi-ui/src/components/FileUpload/index.vue b/ruoyi-ui/src/components/FileUpload/index.vue
index 244ac2891..d5c3bc700 100644
--- a/ruoyi-ui/src/components/FileUpload/index.vue
+++ b/ruoyi-ui/src/components/FileUpload/index.vue
@@ -146,9 +146,14 @@ export default {
},
// 上传成功回调
handleUploadSuccess(res, file) {
- this.$message.success("上传成功");
- this.fileList.push({ name: res.data.fileName, url: res.data.fileName });
- this.$emit("input", this.listToString(this.fileList));
+ if (res.code === 200) {
+ this.$message.success("上传成功");
+ this.fileList.push({ name: res.data.fileName, url: res.data.fileName });
+ this.$emit("input", this.listToString(this.fileList));
+ } else {
+ this.$message.error(res.msg);
+ this.loading.close();
+ }
},
// 删除文件
handleDelete(index) {
@@ -170,9 +175,9 @@ export default {
for (let i in list) {
strs += list[i].url + separator;
}
- return strs != '' ? strs.substr(0, strs.length - 1) : '';
- }
- }
+ return strs != "" ? strs.substr(0, strs.length - 1) : "";
+ },
+ },
};
diff --git a/ruoyi-ui/src/components/ImageUpload/index.vue b/ruoyi-ui/src/components/ImageUpload/index.vue
index e074b381b..ba088b93a 100644
--- a/ruoyi-ui/src/components/ImageUpload/index.vue
+++ b/ruoyi-ui/src/components/ImageUpload/index.vue
@@ -118,9 +118,14 @@ export default {
},
// 上传成功回调
handleUploadSuccess(res) {
- this.fileList.push({ name: res.data.fileName, url: res.data.url });
- this.$emit("input", this.listToString(this.fileList));
- this.loading.close();
+ if (res.code == 200) {
+ this.fileList.push({ name: res.data.fileName, url: res.data.url });
+ this.$emit("input", this.listToString(this.fileList));
+ this.loading.close();
+ } else {
+ this.$message.error(res.msg);
+ this.loading.close();
+ }
},
// 上传前loading加载
handleBeforeUpload(file) {
@@ -130,7 +135,7 @@ export default {
if (file.name.lastIndexOf(".") > -1) {
fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
}
- isImg = this.fileType.some(type => {
+ isImg = this.fileType.some((type) => {
if (file.type.indexOf(type) > -1) return true;
if (fileExtension && fileExtension.indexOf(type) > -1) return true;
return false;
@@ -163,7 +168,7 @@ export default {
this.$message.error(`上传文件数量不能超过 ${this.limit} 个!`);
},
// 上传失败
- handleUploadError() {
+ handleUploadError(res) {
this.$message({
type: "error",
message: "上传失败",
@@ -182,25 +187,26 @@ export default {
for (let i in list) {
strs += list[i].url + separator;
}
- return strs != '' ? strs.substr(0, strs.length - 1) : '';
- }
- }
+ return strs != "" ? strs.substr(0, strs.length - 1) : "";
+ },
+ },
};
diff --git a/ruoyi-ui/src/main.js b/ruoyi-ui/src/main.js
index d07dead41..5bc2b6c43 100644
--- a/ruoyi-ui/src/main.js
+++ b/ruoyi-ui/src/main.js
@@ -16,7 +16,7 @@ import './assets/icons' // icon
import './permission' // permission control
import { getDicts } from "@/api/system/dict/data";
import { getConfigKey } from "@/api/system/config";
-import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, download, handleTree } from "@/utils/ruoyi";
+import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi";
import Pagination from "@/components/Pagination";
// 自定义表格工具组件
import RightToolbar from "@/components/RightToolbar"
@@ -39,7 +39,6 @@ Vue.prototype.resetForm = resetForm
Vue.prototype.addDateRange = addDateRange
Vue.prototype.selectDictLabel = selectDictLabel
Vue.prototype.selectDictLabels = selectDictLabels
-Vue.prototype.download = download
Vue.prototype.handleTree = handleTree
Vue.prototype.msgSuccess = function (msg) {
diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js
index 98f09ed3d..381264eeb 100644
--- a/ruoyi-ui/src/router/index.js
+++ b/ruoyi-ui/src/router/index.js
@@ -43,6 +43,11 @@ export const constantRoutes = [
component: (resolve) => require(['@/views/login'], resolve),
hidden: true
},
+ {
+ path: '/register',
+ component: (resolve) => require(['@/views/register'], resolve),
+ hidden: true
+ },
{
path: '/404',
component: (resolve) => require(['@/views/error/404'], resolve),
@@ -61,8 +66,8 @@ export const constantRoutes = [
{
path: 'index',
component: (resolve) => require(['@/views/index'], resolve),
- name: '首页',
- meta: { title: '首页', icon: 'dashboard', noCache: true, affix: true }
+ name: 'Index',
+ meta: { title: '首页', icon: 'dashboard', affix: true }
}
]
},
@@ -119,6 +124,19 @@ export const constantRoutes = [
}
]
},
+ {
+ path: '/system/oss-config',
+ component: Layout,
+ hidden: true,
+ children: [
+ {
+ path: 'index',
+ component: (resolve) => require(['@/views/system/oss/config'], resolve),
+ name: 'OssConfig',
+ meta: { title: '配置管理', activeMenu: '/system/oss'}
+ }
+ ]
+ },
{
path: '/monitor/job-log',
component: Layout,
diff --git a/ruoyi-ui/src/store/modules/user.js b/ruoyi-ui/src/store/modules/user.js
index c6624e3af..917f9163d 100644
--- a/ruoyi-ui/src/store/modules/user.js
+++ b/ruoyi-ui/src/store/modules/user.js
@@ -51,7 +51,7 @@ const user = {
return new Promise((resolve, reject) => {
getInfo().then(res => {
const user = res.data.user
- const avatar = user.avatar == "" ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar;
+ const avatar = user.avatar == "" ? require("@/assets/images/profile.jpg") : user.avatar;
if (res.data.roles && res.data.roles.length > 0) { // 验证返回的roles是否是一个非空数组
commit('SET_ROLES', res.data.roles)
commit('SET_PERMISSIONS', res.data.permissions)
diff --git a/ruoyi-ui/src/utils/download.js b/ruoyi-ui/src/utils/download.js
new file mode 100644
index 000000000..52b07f713
--- /dev/null
+++ b/ruoyi-ui/src/utils/download.js
@@ -0,0 +1,91 @@
+import axios from 'axios'
+import { getToken } from '@/utils/auth'
+
+const mimeMap = {
+ xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+ zip: 'application/zip',
+ oss: 'application/octet-stream'
+}
+
+const baseUrl = process.env.VUE_APP_BASE_API
+export function downLoadZip(str, filename) {
+ var url = baseUrl + str
+ axios({
+ method: 'get',
+ url: url,
+ responseType: 'blob',
+ headers: { 'Authorization': 'Bearer ' + getToken() }
+ }).then(res => {
+ resolveBlob(res, mimeMap.zip)
+ })
+}
+
+export function downLoadOss(ossId) {
+ var url = baseUrl + '/system/oss/download/' + ossId
+ axios({
+ method: 'get',
+ url: url,
+ responseType: 'blob',
+ headers: { 'Authorization': 'Bearer ' + getToken() }
+ }).then(res => {
+ resolveBlob(res, mimeMap.oss)
+ })
+}
+
+export function downLoadExcel(url, params) {
+ // get请求映射params参数
+ if (params) {
+ let urlparams = url + '?';
+ for (const propName of Object.keys(params)) {
+ const value = params[propName];
+ var part = encodeURIComponent(propName) + "=";
+ if (value !== null && typeof(value) !== "undefined") {
+ if (typeof value === 'object') {
+ for (const key of Object.keys(value)) {
+ if (value[key] !== null && typeof (value[key]) !== 'undefined') {
+ let params = propName + '[' + key + ']';
+ let subPart = encodeURIComponent(params) + '=';
+ urlparams += subPart + encodeURIComponent(value[key]) + '&';
+ }
+ }
+ } else {
+ urlparams += part + encodeURIComponent(value) + "&";
+ }
+ }
+ }
+ urlparams = urlparams.slice(0, -1);
+ url = urlparams;
+ }
+ url = baseUrl + url
+ axios({
+ method: 'get',
+ url: url,
+ responseType: 'blob',
+ headers: { 'Authorization': 'Bearer ' + getToken() }
+ }).then(res => {
+ resolveBlob(res, mimeMap.xlsx)
+ })
+}
+
+/**
+ * 解析blob响应内容并下载
+ * @param {*} res blob响应内容
+ * @param {String} mimeType MIME类型
+ */
+export function resolveBlob(res, mimeType) {
+ const aLink = document.createElement('a')
+ var blob = new Blob([res.data], { type: mimeType })
+ // //从response的headers中获取filename, 后端response.setHeader("Content-disposition", "attachment; filename=xxxx.docx") 设置的文件名;
+ var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
+ var contentDisposition = decodeURI(res.headers['content-disposition'])
+ var result = patt.exec(contentDisposition)
+ var fileName = result[1]
+ fileName = fileName.replace(/\"/g, '')
+ aLink.style.display = 'none'
+ aLink.href = URL.createObjectURL(blob)
+ aLink.setAttribute('download', decodeURI(fileName)) // 设置下载文件名称
+ document.body.appendChild(aLink)
+ aLink.click()
+ URL.revokeObjectURL(aLink.href);//清除引用
+ document.body.removeChild(aLink);
+}
diff --git a/ruoyi-ui/src/utils/request.js b/ruoyi-ui/src/utils/request.js
index 6a7cbfa32..e4418b17d 100644
--- a/ruoyi-ui/src/utils/request.js
+++ b/ruoyi-ui/src/utils/request.js
@@ -28,9 +28,11 @@ service.interceptors.request.use(config => {
if (value !== null && typeof(value) !== "undefined") {
if (typeof value === 'object') {
for (const key of Object.keys(value)) {
- let params = propName + '[' + key + ']';
- var subPart = encodeURIComponent(params) + "=";
- url += subPart + encodeURIComponent(value[key]) + "&";
+ if (value[key] !== null && typeof (value[key]) !== 'undefined') {
+ let params = propName + '[' + key + ']';
+ let subPart = encodeURIComponent(params) + '=';
+ url += subPart + encodeURIComponent(value[key]) + '&';
+ }
}
} else {
url += part + encodeURIComponent(value) + "&";
@@ -64,7 +66,7 @@ service.interceptors.response.use(res => {
location.href = '/index';
})
}).catch(() => {});
- return Promise.reject('error')
+ return Promise.reject('令牌验证失败')
} else if (code === 500) {
Message({
message: msg,
diff --git a/ruoyi-ui/src/utils/ruoyi.js b/ruoyi-ui/src/utils/ruoyi.js
index ac390f530..b426a313b 100644
--- a/ruoyi-ui/src/utils/ruoyi.js
+++ b/ruoyi-ui/src/utils/ruoyi.js
@@ -55,16 +55,15 @@ export function resetForm(refName) {
// 添加日期范围
export function addDateRange(params, dateRange, propName) {
- var search = params;
- search.params = {};
- if (null != dateRange && '' != dateRange) {
- if (typeof (propName) === "undefined") {
- search.params["beginTime"] = dateRange[0];
- search.params["endTime"] = dateRange[1];
- } else {
- search.params["begin" + propName] = dateRange[0];
- search.params["end" + propName] = dateRange[1];
- }
+ let search = params;
+ search.params = typeof (search.params) === 'object' && search.params !== null && !Array.isArray(search.params) ? search.params : {};
+ dateRange = Array.isArray(dateRange) ? dateRange : [];
+ if (typeof (propName) === 'undefined') {
+ search.params['beginTime'] = dateRange[0];
+ search.params['endTime'] = dateRange[1];
+ } else {
+ search.params['begin' + propName] = dateRange[0];
+ search.params['end' + propName] = dateRange[1];
}
return search;
}
@@ -96,11 +95,6 @@ export function selectDictLabels(datas, value, separator) {
return actions.join('').substring(0, actions.join('').length - 1);
}
-// 通用下载方法
-export function download(fileName) {
- window.location.href = baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true;
-}
-
// 字符串格式化(%s )
export function sprintf(str) {
var args = arguments, flag = true, i = 1;
diff --git a/ruoyi-ui/src/views/demo/demo/index.vue b/ruoyi-ui/src/views/demo/demo/index.vue
index c2ef2e005..a0d9edc72 100644
--- a/ruoyi-ui/src/views/demo/demo/index.vue
+++ b/ruoyi-ui/src/views/demo/demo/index.vue
@@ -169,7 +169,8 @@
\ No newline at end of file
+
diff --git a/ruoyi-ui/src/views/monitor/logininfor/index.vue b/ruoyi-ui/src/views/monitor/logininfor/index.vue
index 07937b460..5d6c05193 100644
--- a/ruoyi-ui/src/views/monitor/logininfor/index.vue
+++ b/ruoyi-ui/src/views/monitor/logininfor/index.vue
@@ -119,7 +119,8 @@
+
+
diff --git a/ruoyi-ui/src/views/system/config/index.vue b/ruoyi-ui/src/views/system/config/index.vue
index 25086a9fe..69d85640f 100644
--- a/ruoyi-ui/src/views/system/config/index.vue
+++ b/ruoyi-ui/src/views/system/config/index.vue
@@ -181,7 +181,8 @@
diff --git a/ruoyi-ui/src/views/system/oss/index.vue b/ruoyi-ui/src/views/system/oss/index.vue
index 1171cc9c6..2bbbba060 100644
--- a/ruoyi-ui/src/views/system/oss/index.vue
+++ b/ruoyi-ui/src/views/system/oss/index.vue
@@ -96,7 +96,25 @@
v-hasPermi="['system:oss:remove']"
>删除
-
+
+ 预览开关 : {{previewListResource ? "禁用" : "启用"}}
+
+
+ 配置管理
+
@@ -109,12 +127,12 @@
+ v-if="!checkFileSuffix(scope.row.fileSuffix) || !previewListResource"/>
@@ -169,10 +187,8 @@