From a423f02fad7ab3d2dac9c4d73b9e3870b28df230 Mon Sep 17 00:00:00 2001 From: KonBAI <1527468660@qq.com> Date: Sun, 30 Jan 2022 15:34:26 +0000 Subject: [PATCH] =?UTF-8?q?!8=20sync=20=E5=90=8C=E6=AD=A5ruoyi-vue-plus?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=20fix=20--=20=E4=BF=AE=E5=A4=8D=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=94=9F=E6=88=90=E9=A1=B5=E9=9D=A2=E9=94=99=E8=AF=AF?= =?UTF-8?q?bug=20fix=20--=20=E8=B0=83=E6=95=B4=E8=BF=94=E5=9B=9E=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E4=B8=BAR=EF=BC=8C=E4=BF=AE=E6=AD=A3=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 23 +- ruoyi-admin/pom.xml | 2 +- .../controller/common/CaptchaController.java | 13 +- .../controller/monitor/CacheController.java | 9 +- .../monitor/SysLogininforController.java | 11 +- .../monitor/SysOperlogController.java | 11 +- .../monitor/SysUserOnlineController.java | 11 +- .../system/SysConfigController.java | 27 +- .../controller/system/SysDeptController.java | 52 +- .../system/SysDictDataController.java | 23 +- .../system/SysDictTypeController.java | 27 +- .../controller/system/SysIndexController.java | 3 +- .../controller/system/SysLoginController.java | 33 +- .../controller/system/SysMenuController.java | 41 +- .../system/SysNoticeController.java | 19 +- .../system/SysOssConfigController.java | 17 +- .../controller/system/SysOssController.java | 17 +- .../controller/system/SysPostController.java | 27 +- .../system/SysProfileController.java | 47 +- .../system/SysRegisterController.java | 12 +- .../controller/system/SysRoleController.java | 53 +- .../controller/system/SysUserController.java | 57 +- .../workflow/FlowCategoryController.java | 12 +- .../workflow/FlowDefinitionController.java | 26 +- .../workflow/FlowInstanceController.java | 16 +- .../workflow/FlowTaskController.java | 52 +- .../workflow/SysFormController.java | 14 +- .../src/main/resources/application-dev.yml | 12 +- .../src/main/resources/application-prod.yml | 10 +- .../src/main/resources/application.yml | 10 +- .../main/resources/i18n/messages.properties | 7 + .../resources/i18n/messages_en_US.properties | 6 + .../resources/i18n/messages_zh_CN.properties | 6 + ruoyi-admin/src/main/resources/logback.xml | 2 +- .../ruoyi/common/annotation/Sensitive.java | 1 + .../common/captcha/UnsignedMathGenerator.java | 4 +- .../com/ruoyi/common/config/RuoYiConfig.java | 2 - .../common/convert/ExcelBigNumberConvert.java | 11 +- .../common/convert/ExcelDictConvert.java | 14 +- .../core/controller/BaseController.java | 34 +- .../ruoyi/common/core/domain/AjaxResult.java | 134 ---- .../ruoyi/common/core/domain/BaseEntity.java | 2 - .../ruoyi/common/core/domain/PageQuery.java | 2 - .../java/com/ruoyi/common/core/domain/R.java | 84 +++ .../ruoyi/common/core/domain/TreeEntity.java | 2 - .../common/core/domain/dto/OperLogDTO.java | 4 - .../ruoyi/common/core/domain/dto/RoleDTO.java | 38 + .../common/core/domain/dto/UserOnlineDTO.java | 3 +- .../common/core/domain/entity/SysDept.java | 7 +- .../core/domain/entity/SysDictData.java | 2 - .../core/domain/entity/SysDictType.java | 1 - .../common/core/domain/entity/SysMenu.java | 7 +- .../common/core/domain/entity/SysRole.java | 2 - .../common/core/domain/entity/SysUser.java | 8 +- .../common/core/domain/model/LoginBody.java | 11 +- .../common/core/domain/model/LoginUser.java | 42 +- .../core/domain/model/RegisterBody.java | 8 + .../ruoyi/common/core/page/TableDataInfo.java | 1 - .../common/core/service/UserService.java | 28 - .../com/ruoyi/common/enums/DataScopeType.java | 8 +- .../java/com/ruoyi/common/enums/UserType.java | 16 +- .../common/exception/GlobalException.java | 2 +- .../common/exception/ServiceException.java | 2 +- .../common/exception/base/BaseException.java | 4 +- .../ruoyi/common/filter/RepeatableFilter.java | 4 +- .../com/ruoyi/common/filter/XssFilter.java | 2 +- .../common/helper/DataPermissionHelper.java | 4 +- .../LoginHelper.java} | 80 +- .../jackson/SensitiveJsonSerializer.java | 5 +- .../com/ruoyi/common/utils/BeanCopyUtils.java | 4 + .../com/ruoyi/common/utils/DateUtils.java | 6 +- .../com/ruoyi/common/utils/DictUtils.java | 159 ---- .../com/ruoyi/common/utils/JsonUtils.java | 3 +- .../com/ruoyi/common/utils/StringUtils.java | 134 +--- .../ruoyi/common/utils/file/FileUtils.java | 10 +- .../ruoyi/common/utils/ip/AddressUtils.java | 6 +- .../ruoyi/common/utils/redis/RedisUtils.java | 8 +- .../com/ruoyi/common/utils/sql/SqlUtil.java | 2 +- .../demo/controller/RedisCacheController.java | 21 +- .../demo/controller/RedisLockController.java | 12 +- .../controller/RedisPubSubController.java | 13 +- .../RedisRateLimiterController.java | 14 +- .../controller/Swagger3DemoController.java | 6 +- .../demo/controller/TestBatchController.java | 31 +- .../demo/controller/TestDemoController.java | 23 +- .../demo/controller/TestI18nController.java | 14 +- .../controller/TestSensitiveController.java | 24 +- .../demo/controller/TestTreeController.java | 21 +- .../queue/BoundedQueueController.java | 21 +- .../queue/DelayedQueueController.java | 23 +- .../demo/controller/queue/PriorityDemo.java | 2 - .../queue/PriorityQueueController.java | 29 +- .../java/com/ruoyi/demo/domain/TestDemo.java | 2 - .../java/com/ruoyi/demo/domain/TestTree.java | 2 - .../src/main/resources/application-dev.yml | 2 +- .../src/main/resources/application-prod.yml | 2 +- .../src/main/resources/application-dev.yml | 2 +- .../src/main/resources/application-prod.yml | 2 +- .../ruoyi/framework/aspectj/LogAspect.java | 11 +- .../framework/aspectj/RateLimiterAspect.java | 4 +- .../framework/aspectj/RepeatSubmitAspect.java | 8 +- .../ruoyi/framework/config/RedisConfig.java | 27 +- .../ruoyi/framework/config/SaTokenConfig.java | 35 +- .../ruoyi/framework/config/SwaggerConfig.java | 2 +- .../framework/config/ThreadPoolConfig.java | 4 +- .../config/properties/RedissonProperties.java | 40 - .../CreateAndUpdateMetaObjectHandler.java | 30 +- .../handler/PlusDataPermissionHandler.java | 22 +- .../listener/UserActionListener.java | 49 +- .../framework/satoken/dao/PlusSaTokenDao.java | 21 +- .../satoken/service/SaInterfaceImpl.java | 10 +- .../web/exception/GlobalExceptionHandler.java | 56 +- .../generator/controller/GenController.java | 33 +- .../com/ruoyi/generator/domain/GenTable.java | 4 +- .../generator/domain/GenTableColumn.java | 9 +- .../service/GenTableColumnServiceImpl.java | 4 +- .../service/GenTableServiceImpl.java | 38 +- .../com/ruoyi/generator/util/GenUtils.java | 2 +- .../ruoyi/generator/util/VelocityUtils.java | 18 +- .../src/main/resources/generator.yml | 4 +- .../main/resources/vm/java/controller.java.vm | 22 +- .../src/main/resources/vm/java/domain.java.vm | 2 - .../main/resources/vm/java/sub-domain.java.vm | 6 +- .../com/ruoyi/oss/entity/UploadResult.java | 6 +- .../java/com/ruoyi/oss/enumd/OssEnumd.java | 21 +- .../com/ruoyi/oss/factory/OssFactory.java | 44 +- .../com/ruoyi/oss/service/IOssStrategy.java | 4 +- .../abstractd/AbstractOssStrategy.java | 8 +- .../oss/service/impl/AliyunOssStrategy.java | 16 +- .../oss/service/impl/MinioOssStrategy.java | 13 +- .../oss/service/impl/QcloudOssStrategy.java | 13 +- .../oss/service/impl/QiniuOssStrategy.java | 20 +- .../com/ruoyi/system/domain/SysConfig.java | 2 - .../ruoyi/system/domain/SysLogininfor.java | 2 - .../com/ruoyi/system/domain/SysNotice.java | 2 - .../com/ruoyi/system/domain/SysOperLog.java | 2 - .../java/com/ruoyi/system/domain/SysOss.java | 2 - .../com/ruoyi/system/domain/SysOssConfig.java | 1 - .../java/com/ruoyi/system/domain/SysPost.java | 2 - .../com/ruoyi/system/domain/SysRoleDept.java | 2 - .../com/ruoyi/system/domain/SysRoleMenu.java | 2 - .../ruoyi/system/domain/SysUserOnline.java | 2 - .../com/ruoyi/system/domain/SysUserPost.java | 2 - .../com/ruoyi/system/domain/SysUserRole.java | 2 - .../com/ruoyi/system/domain/vo/MetaVo.java | 2 - .../com/ruoyi/system/domain/vo/RouterVo.java | 2 - .../system/domain/vo/SysUserExportVo.java | 2 - .../listener/SysUserImportListener.java | 8 +- .../system/mapper/SysDictDataMapper.java | 9 +- .../runner/SystemApplicationRunner.java | 5 +- .../system/service/ISysDataScopeService.java | 26 + .../ruoyi/system/service/ISysDeptService.java | 2 +- .../ruoyi/system/service/ISysUserService.java | 5 +- .../ruoyi/system/service/SysLoginService.java | 65 +- .../system/service/SysRegisterService.java | 56 +- .../service/impl/SysConfigServiceImpl.java | 7 +- .../service/impl/SysDataScopeServiceImpl.java | 4 +- .../service/impl/SysDeptServiceImpl.java | 26 +- .../service/impl/SysDictDataServiceImpl.java | 18 +- .../service/impl/SysDictTypeServiceImpl.java | 35 +- .../impl/SysLogininforServiceImpl.java | 5 +- .../service/impl/SysMenuServiceImpl.java | 8 +- .../service/impl/SysNoticeServiceImpl.java | 12 +- .../service/impl/SysOperLogServiceImpl.java | 5 +- .../service/impl/SysOssConfigServiceImpl.java | 17 +- .../service/impl/SysOssServiceImpl.java | 14 +- .../service/impl/SysPostServiceImpl.java | 31 +- .../service/impl/SysRoleServiceImpl.java | 40 +- .../service/impl/SysSensitiveServiceImpl.java | 4 +- .../service/impl/SysUserServiceImpl.java | 58 +- .../service/IFlowInstanceService.java | 4 +- .../workflow/service/IFlowTaskService.java | 24 +- .../impl/FlowDefinitionServiceImpl.java | 6 +- .../service/impl/FlowInstanceServiceImpl.java | 14 +- .../service/impl/FlowTaskServiceImpl.java | 68 +- .../resources/mapper/system/SysUserMapper.xml | 2 + ruoyi-ui/src/assets/styles/ruoyi.scss | 10 +- ruoyi-ui/src/plugins/tab.js | 133 ++-- ruoyi-ui/src/router/index.js | 39 - ruoyi-ui/src/views/register.vue | 6 +- .../src/views/tool/build/CodeTypeDialog.vue | 8 +- ruoyi-ui/src/views/tool/gen/index.vue | 2 + script/bin/ry.bat | 2 +- .../sql/{ry_20220115.sql => ry_20220130.sql} | 6 +- script/sql/ry_vue_4.0.sql | 686 ++++++++++++++++++ script/sql/test.sql | 6 +- script/sql/update/update-3.X-4.0.sql | 6 + 187 files changed, 2181 insertions(+), 1821 deletions(-) delete mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/R.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/RoleDTO.java delete mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/service/UserService.java rename ruoyi-common/src/main/java/com/ruoyi/common/{utils/LoginUtils.java => helper/LoginHelper.java} (53%) delete mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDataScopeService.java rename script/sql/{ry_20220115.sql => ry_20220130.sql} (99%) create mode 100644 script/sql/ry_vue_4.0.sql create mode 100644 script/sql/update/update-3.X-4.0.sql diff --git a/pom.xml b/pom.xml index a1d8e194..5f8949ac 100644 --- a/pom.xml +++ b/pom.xml @@ -18,21 +18,21 @@ UTF-8 UTF-8 1.8 - 3.2.0 + 3.2.2 1.2.8 3.0.3 1.5.22 4.1.2 - 2.2.11 + 3.0.5 3.3.0 2.3 1.28.0 - 3.5.0 + 3.5.1 3.9.1 - 5.7.18 + 5.7.20 4.9.2 - 2.6.0 - 3.16.7 + 2.6.2 + 3.16.8 2.2.1 3.5.0 1.3.6 @@ -43,10 +43,10 @@ 3.0.1 - 7.9.0 - 3.13.1 - 5.6.58 - 8.3.4 + 7.9.2 + 3.14.0 + 5.6.68 + 8.3.5 localhost @@ -316,7 +316,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.1 + 3.9.0 ${java.version} ${java.version} @@ -336,6 +336,7 @@ application* bootstrap* + banner* true diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index 236dd0a9..9551b4c4 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -92,7 +92,7 @@ org.apache.maven.plugins maven-war-plugin - 3.2.0 + 3.2.2 false ${project.artifactId} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java index 3ff6a111..a19be65e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java @@ -5,10 +5,10 @@ import cn.hutool.captcha.generator.CodeGenerator; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.IdUtil; import com.ruoyi.common.constant.Constants; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.CaptchaType; -import com.ruoyi.common.utils.redis.RedisUtils; import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.redis.RedisUtils; import com.ruoyi.common.utils.reflect.ReflectUtils; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.framework.config.properties.CaptchaProperties; @@ -16,7 +16,6 @@ import com.ruoyi.system.service.ISysConfigService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @@ -30,7 +29,7 @@ import java.util.concurrent.TimeUnit; * @author Lion Li */ @Api(value = "验证码操作处理", tags = {"验证码管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController public class CaptchaController { @@ -42,12 +41,12 @@ public class CaptchaController { */ @ApiOperation("生成验证码") @GetMapping("/captchaImage") - public AjaxResult> getCode() { + public R> getCode() { Map ajax = new HashMap<>(); boolean captchaOnOff = configService.selectCaptchaOnOff(); ajax.put("captchaOnOff", captchaOnOff); if (!captchaOnOff) { - return AjaxResult.success(ajax); + return R.ok(ajax); } // 保存验证码信息 String uuid = IdUtil.simpleUUID(); @@ -64,7 +63,7 @@ public class CaptchaController { RedisUtils.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); ajax.put("uuid", uuid); ajax.put("img", captcha.getImageBase64()); - return AjaxResult.success(ajax); + return R.ok(ajax); } private String getCodeResult(String capStr) { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java index 255f0b11..21fbd201 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java @@ -1,12 +1,11 @@ package com.ruoyi.web.controller.monitor; import cn.dev33.satoken.annotation.SaCheckPermission; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.utils.StringUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.connection.RedisServerCommands; import org.springframework.data.redis.core.RedisCallback; import org.springframework.data.redis.core.RedisTemplate; @@ -22,7 +21,7 @@ import java.util.*; * @author Lion Li */ @Api(value = "缓存监控", tags = {"缓存监控管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/monitor/cache") public class CacheController { @@ -32,7 +31,7 @@ public class CacheController { @ApiOperation("获取缓存监控详细信息") @SaCheckPermission("monitor:cache:list") @GetMapping() - public AjaxResult> getInfo() throws Exception { + public R> getInfo() throws Exception { Properties info = (Properties) redisTemplate.execute((RedisCallback) RedisServerCommands::info); Properties commandStats = (Properties) redisTemplate.execute((RedisCallback) connection -> connection.info("commandstats")); Object dbSize = redisTemplate.execute((RedisCallback) RedisServerCommands::dbSize); @@ -52,6 +51,6 @@ public class CacheController { }); } result.put("commandStats", pieList); - return AjaxResult.success(result); + return R.ok(result); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java index 22acf318..5bec1516 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java @@ -3,7 +3,7 @@ package com.ruoyi.web.controller.monitor; import cn.dev33.satoken.annotation.SaCheckPermission; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; @@ -13,7 +13,6 @@ import com.ruoyi.system.service.ISysLogininforService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -27,7 +26,7 @@ import java.util.List; */ @Validated @Api(value = "系统访问记录", tags = {"系统访问记录管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/monitor/logininfor") public class SysLogininforController extends BaseController { @@ -54,7 +53,7 @@ public class SysLogininforController extends BaseController { @SaCheckPermission("monitor:logininfor:remove") @Log(title = "登录日志", businessType = BusinessType.DELETE) @DeleteMapping("/{infoIds}") - public AjaxResult remove(@PathVariable Long[] infoIds) { + public R remove(@PathVariable Long[] infoIds) { return toAjax(logininforService.deleteLogininforByIds(infoIds)); } @@ -62,8 +61,8 @@ public class SysLogininforController extends BaseController { @SaCheckPermission("monitor:logininfor:remove") @Log(title = "登录日志", businessType = BusinessType.CLEAN) @DeleteMapping("/clean") - public AjaxResult clean() { + public R clean() { logininforService.cleanLogininfor(); - return AjaxResult.success(); + return R.ok(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java index e5104295..8145bc66 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java @@ -3,7 +3,7 @@ package com.ruoyi.web.controller.monitor; import cn.dev33.satoken.annotation.SaCheckPermission; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; @@ -13,7 +13,6 @@ import com.ruoyi.system.service.ISysOperLogService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -27,7 +26,7 @@ import java.util.List; */ @Validated @Api(value = "操作日志记录", tags = {"操作日志记录管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/monitor/operlog") public class SysOperlogController extends BaseController { @@ -54,7 +53,7 @@ public class SysOperlogController extends BaseController { @Log(title = "操作日志", businessType = BusinessType.DELETE) @SaCheckPermission("monitor:operlog:remove") @DeleteMapping("/{operIds}") - public AjaxResult remove(@PathVariable Long[] operIds) { + public R remove(@PathVariable Long[] operIds) { return toAjax(operLogService.deleteOperLogByIds(operIds)); } @@ -62,8 +61,8 @@ public class SysOperlogController extends BaseController { @Log(title = "操作日志", businessType = BusinessType.CLEAN) @SaCheckPermission("monitor:operlog:remove") @DeleteMapping("/clean") - public AjaxResult clean() { + public R clean() { operLogService.cleanOperLog(); - return AjaxResult.success(); + return R.ok(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java index 71b25416..2ad51e31 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java @@ -7,7 +7,7 @@ import cn.hutool.core.bean.BeanUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.dto.UserOnlineDTO; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; @@ -17,7 +17,6 @@ import com.ruoyi.system.domain.SysUserOnline; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; @@ -31,7 +30,7 @@ import java.util.stream.Collectors; * @author Lion Li */ @Api(value = "在线用户监控", tags = {"在线用户监控管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/monitor/online") public class SysUserOnlineController extends BaseController { @@ -58,7 +57,7 @@ public class SysUserOnlineController extends BaseController { ).collect(Collectors.toList()); } else if (StringUtils.isNotEmpty(ipaddr)) { userOnlineDTOList = userOnlineDTOList.stream().filter(userOnline -> - StringUtils.equals(ipaddr, userOnline.getIpaddr())) + StringUtils.equals(ipaddr, userOnline.getIpaddr())) .collect(Collectors.toList()); } else if (StringUtils.isNotEmpty(userName)) { userOnlineDTOList = userOnlineDTOList.stream().filter(userOnline -> @@ -78,11 +77,11 @@ public class SysUserOnlineController extends BaseController { @SaCheckPermission("monitor:online:forceLogout") @Log(title = "在线用户", businessType = BusinessType.FORCE) @DeleteMapping("/{tokenId}") - public AjaxResult forceLogout(@PathVariable String tokenId) { + public R forceLogout(@PathVariable String tokenId) { try { StpUtil.kickoutByTokenValue(tokenId); } catch (NotLoginException e) { } - return AjaxResult.success(); + return R.ok(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java index 0b8a9284..7c387901 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java @@ -4,7 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; @@ -15,7 +15,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -29,7 +28,7 @@ import java.util.List; */ @Validated @Api(value = "参数配置控制器", tags = {"参数配置管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/system/config") public class SysConfigController extends BaseController { @@ -61,8 +60,8 @@ public class SysConfigController extends BaseController { @ApiOperation("根据参数编号获取详细信息") @SaCheckPermission("system:config:query") @GetMapping(value = "/{configId}") - public AjaxResult getInfo(@ApiParam("参数ID") @PathVariable Long configId) { - return AjaxResult.success(configService.selectConfigById(configId)); + public R getInfo(@ApiParam("参数ID") @PathVariable Long configId) { + return R.ok(configService.selectConfigById(configId)); } /** @@ -70,8 +69,8 @@ public class SysConfigController extends BaseController { */ @ApiOperation("根据参数键名查询参数值") @GetMapping(value = "/configKey/{configKey}") - public AjaxResult getConfigKey(@ApiParam("参数Key") @PathVariable String configKey) { - return AjaxResult.success(configService.selectConfigByKey(configKey)); + public R getConfigKey(@ApiParam("参数Key") @PathVariable String configKey) { + return R.ok(configService.selectConfigByKey(configKey)); } /** @@ -81,9 +80,9 @@ public class SysConfigController extends BaseController { @SaCheckPermission("system:config:add") @Log(title = "参数管理", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@Validated @RequestBody SysConfig config) { + public R add(@Validated @RequestBody SysConfig config) { if (UserConstants.NOT_UNIQUE.equals(configService.checkConfigKeyUnique(config))) { - return AjaxResult.error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在"); + return R.fail("新增参数'" + config.getConfigName() + "'失败,参数键名已存在"); } return toAjax(configService.insertConfig(config)); } @@ -95,9 +94,9 @@ public class SysConfigController extends BaseController { @SaCheckPermission("system:config:edit") @Log(title = "参数管理", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@Validated @RequestBody SysConfig config) { + public R edit(@Validated @RequestBody SysConfig config) { if (UserConstants.NOT_UNIQUE.equals(configService.checkConfigKeyUnique(config))) { - return AjaxResult.error("修改参数'" + config.getConfigName() + "'失败,参数键名已存在"); + return R.fail("修改参数'" + config.getConfigName() + "'失败,参数键名已存在"); } return toAjax(configService.updateConfig(config)); } @@ -109,7 +108,7 @@ public class SysConfigController extends BaseController { @SaCheckPermission("system:config:remove") @Log(title = "参数管理", businessType = BusinessType.DELETE) @DeleteMapping("/{configIds}") - public AjaxResult remove(@ApiParam("参数ID串") @PathVariable Long[] configIds) { + public R remove(@ApiParam("参数ID串") @PathVariable Long[] configIds) { configService.deleteConfigByIds(configIds); return success(); } @@ -121,8 +120,8 @@ public class SysConfigController extends BaseController { @SaCheckPermission("system:config:remove") @Log(title = "参数管理", businessType = BusinessType.CLEAN) @DeleteMapping("/refreshCache") - public AjaxResult refreshCache() { + public R refreshCache() { configService.resetConfigCache(); - return AjaxResult.success(); + return R.ok(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java index 08ebf960..475cdb7e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java @@ -6,7 +6,7 @@ import cn.hutool.core.util.ArrayUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.StringUtils; @@ -15,7 +15,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -30,7 +29,7 @@ import java.util.Map; */ @Validated @Api(value = "部门控制器", tags = {"部门管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/system/dept") public class SysDeptController extends BaseController { @@ -43,9 +42,9 @@ public class SysDeptController extends BaseController { @ApiOperation("获取部门列表") @SaCheckPermission("system:dept:list") @GetMapping("/list") - public AjaxResult> list(SysDept dept) { + public R> list(SysDept dept) { List depts = deptService.selectDeptList(dept); - return AjaxResult.success(depts); + return R.ok(depts); } /** @@ -54,11 +53,11 @@ public class SysDeptController extends BaseController { @ApiOperation("查询部门列表(排除节点)") @SaCheckPermission("system:dept:list") @GetMapping("/list/exclude/{deptId}") - public AjaxResult> excludeChild(@ApiParam("部门ID") @PathVariable(value = "deptId", required = false) Long deptId) { + public R> excludeChild(@ApiParam("部门ID") @PathVariable(value = "deptId", required = false) Long deptId) { List depts = deptService.selectDeptList(new SysDept()); depts.removeIf(d -> d.getDeptId().equals(deptId) - || ArrayUtil.contains(StringUtils.split(d.getAncestors(), ","), deptId + "")); - return AjaxResult.success(depts); + || ArrayUtil.contains(StringUtils.split(d.getAncestors(), ","), deptId + "")); + return R.ok(depts); } /** @@ -67,9 +66,9 @@ public class SysDeptController extends BaseController { @ApiOperation("根据部门编号获取详细信息") @SaCheckPermission("system:dept:query") @GetMapping(value = "/{deptId}") - public AjaxResult getInfo(@ApiParam("部门ID") @PathVariable Long deptId) { + public R getInfo(@ApiParam("部门ID") @PathVariable Long deptId) { deptService.checkDeptDataScope(deptId); - return AjaxResult.success(deptService.selectDeptById(deptId)); + return R.ok(deptService.selectDeptById(deptId)); } /** @@ -77,9 +76,9 @@ public class SysDeptController extends BaseController { */ @ApiOperation("获取部门下拉树列表") @GetMapping("/treeselect") - public AjaxResult>> treeselect(SysDept dept) { + public R>> treeselect(SysDept dept) { List depts = deptService.selectDeptList(dept); - return AjaxResult.success(deptService.buildDeptTreeSelect(depts)); + return R.ok(deptService.buildDeptTreeSelect(depts)); } /** @@ -87,12 +86,12 @@ public class SysDeptController extends BaseController { */ @ApiOperation("加载对应角色部门列表树") @GetMapping(value = "/roleDeptTreeselect/{roleId}") - public AjaxResult> roleDeptTreeselect(@ApiParam("角色ID") @PathVariable("roleId") Long roleId) { + public R> roleDeptTreeselect(@ApiParam("角色ID") @PathVariable("roleId") Long roleId) { List depts = deptService.selectDeptList(new SysDept()); Map ajax = new HashMap<>(); ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId)); ajax.put("depts", deptService.buildDeptTreeSelect(depts)); - return AjaxResult.success(ajax); + return R.ok(ajax); } /** @@ -102,9 +101,9 @@ public class SysDeptController extends BaseController { @SaCheckPermission("system:dept:add") @Log(title = "部门管理", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@Validated @RequestBody SysDept dept) { + public R add(@Validated @RequestBody SysDept dept) { if (UserConstants.NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept))) { - return AjaxResult.error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在"); + return R.fail("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在"); } return toAjax(deptService.insertDept(dept)); } @@ -116,14 +115,16 @@ public class SysDeptController extends BaseController { @SaCheckPermission("system:dept:edit") @Log(title = "部门管理", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@Validated @RequestBody SysDept dept) { + public R edit(@Validated @RequestBody SysDept dept) { + Long deptId = dept.getDeptId(); + deptService.checkDeptDataScope(deptId); if (UserConstants.NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept))) { - return AjaxResult.error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在"); - } else if (dept.getParentId().equals(dept.getDeptId())) { - return AjaxResult.error("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己"); + return R.fail("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在"); + } else if (dept.getParentId().equals(deptId)) { + return R.fail("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己"); } else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) - && deptService.selectNormalChildrenDeptById(dept.getDeptId()) > 0) { - return AjaxResult.error("该部门包含未停用的子部门!"); + && deptService.selectNormalChildrenDeptById(deptId) > 0) { + return R.fail("该部门包含未停用的子部门!"); } return toAjax(deptService.updateDept(dept)); } @@ -135,13 +136,14 @@ public class SysDeptController extends BaseController { @SaCheckPermission("system:dept:remove") @Log(title = "部门管理", businessType = BusinessType.DELETE) @DeleteMapping("/{deptId}") - public AjaxResult remove(@ApiParam("部门ID串") @PathVariable Long deptId) { + public R remove(@ApiParam("部门ID串") @PathVariable Long deptId) { if (deptService.hasChildByDeptId(deptId)) { - return AjaxResult.error("存在下级部门,不允许删除"); + return R.fail("存在下级部门,不允许删除"); } if (deptService.checkDeptExistUser(deptId)) { - return AjaxResult.error("部门存在用户,不允许删除"); + return R.fail("部门存在用户,不允许删除"); } + deptService.checkDeptDataScope(deptId); return toAjax(deptService.deleteDeptById(deptId)); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java index 851cf4ee..cf23f861 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java @@ -1,14 +1,14 @@ package com.ruoyi.web.controller.system; import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.util.ObjectUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.system.service.ISysDictDataService; import com.ruoyi.system.service.ISysDictTypeService; @@ -16,7 +16,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -31,7 +30,7 @@ import java.util.List; */ @Validated @Api(value = "数据字典信息控制器", tags = {"数据字典信息管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/system/dict/data") public class SysDictDataController extends BaseController { @@ -61,8 +60,8 @@ public class SysDictDataController extends BaseController { @ApiOperation("查询字典数据详细") @SaCheckPermission("system:dict:query") @GetMapping(value = "/{dictCode}") - public AjaxResult getInfo(@ApiParam("字典code") @PathVariable Long dictCode) { - return AjaxResult.success(dictDataService.selectDictDataById(dictCode)); + public R getInfo(@ApiParam("字典code") @PathVariable Long dictCode) { + return R.ok(dictDataService.selectDictDataById(dictCode)); } /** @@ -70,12 +69,12 @@ public class SysDictDataController extends BaseController { */ @ApiOperation("根据字典类型查询字典数据信息") @GetMapping(value = "/type/{dictType}") - public AjaxResult> dictType(@ApiParam("字典类型") @PathVariable String dictType) { + public R> dictType(@ApiParam("字典类型") @PathVariable String dictType) { List data = dictTypeService.selectDictDataByType(dictType); - if (StringUtils.isNull(data)) { + if (ObjectUtil.isNull(data)) { data = new ArrayList<>(); } - return AjaxResult.success(data); + return R.ok(data); } /** @@ -85,7 +84,7 @@ public class SysDictDataController extends BaseController { @SaCheckPermission("system:dict:add") @Log(title = "字典数据", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@Validated @RequestBody SysDictData dict) { + public R add(@Validated @RequestBody SysDictData dict) { return toAjax(dictDataService.insertDictData(dict)); } @@ -96,7 +95,7 @@ public class SysDictDataController extends BaseController { @SaCheckPermission("system:dict:edit") @Log(title = "字典数据", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@Validated @RequestBody SysDictData dict) { + public R edit(@Validated @RequestBody SysDictData dict) { return toAjax(dictDataService.updateDictData(dict)); } @@ -107,7 +106,7 @@ public class SysDictDataController extends BaseController { @SaCheckPermission("system:dict:remove") @Log(title = "字典类型", businessType = BusinessType.DELETE) @DeleteMapping("/{dictCodes}") - public AjaxResult remove(@ApiParam("字典code串") @PathVariable Long[] dictCodes) { + public R remove(@ApiParam("字典code串") @PathVariable Long[] dictCodes) { dictDataService.deleteDictDataByIds(dictCodes); return success(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java index 9d98f9b3..54e31e47 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java @@ -4,7 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.entity.SysDictType; import com.ruoyi.common.core.page.TableDataInfo; @@ -15,7 +15,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -29,7 +28,7 @@ import java.util.List; */ @Validated @Api(value = "数据字典信息控制器", tags = {"数据字典信息管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/system/dict/type") public class SysDictTypeController extends BaseController { @@ -58,8 +57,8 @@ public class SysDictTypeController extends BaseController { @ApiOperation("查询字典类型详细") @SaCheckPermission("system:dict:query") @GetMapping(value = "/{dictId}") - public AjaxResult getInfo(@ApiParam("字典ID") @PathVariable Long dictId) { - return AjaxResult.success(dictTypeService.selectDictTypeById(dictId)); + public R getInfo(@ApiParam("字典ID") @PathVariable Long dictId) { + return R.ok(dictTypeService.selectDictTypeById(dictId)); } /** @@ -69,9 +68,9 @@ public class SysDictTypeController extends BaseController { @SaCheckPermission("system:dict:add") @Log(title = "字典类型", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@Validated @RequestBody SysDictType dict) { + public R add(@Validated @RequestBody SysDictType dict) { if (UserConstants.NOT_UNIQUE.equals(dictTypeService.checkDictTypeUnique(dict))) { - return AjaxResult.error("新增字典'" + dict.getDictName() + "'失败,字典类型已存在"); + return R.fail("新增字典'" + dict.getDictName() + "'失败,字典类型已存在"); } return toAjax(dictTypeService.insertDictType(dict)); } @@ -83,9 +82,9 @@ public class SysDictTypeController extends BaseController { @SaCheckPermission("system:dict:edit") @Log(title = "字典类型", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@Validated @RequestBody SysDictType dict) { + public R edit(@Validated @RequestBody SysDictType dict) { if (UserConstants.NOT_UNIQUE.equals(dictTypeService.checkDictTypeUnique(dict))) { - return AjaxResult.error("修改字典'" + dict.getDictName() + "'失败,字典类型已存在"); + return R.fail("修改字典'" + dict.getDictName() + "'失败,字典类型已存在"); } return toAjax(dictTypeService.updateDictType(dict)); } @@ -97,7 +96,7 @@ public class SysDictTypeController extends BaseController { @SaCheckPermission("system:dict:remove") @Log(title = "字典类型", businessType = BusinessType.DELETE) @DeleteMapping("/{dictIds}") - public AjaxResult remove(@ApiParam("字典ID串") @PathVariable Long[] dictIds) { + public R remove(@ApiParam("字典ID串") @PathVariable Long[] dictIds) { dictTypeService.deleteDictTypeByIds(dictIds); return success(); } @@ -109,9 +108,9 @@ public class SysDictTypeController extends BaseController { @SaCheckPermission("system:dict:remove") @Log(title = "字典类型", businessType = BusinessType.CLEAN) @DeleteMapping("/refreshCache") - public AjaxResult refreshCache() { + public R refreshCache() { dictTypeService.resetDictCache(); - return AjaxResult.success(); + return R.ok(); } /** @@ -119,8 +118,8 @@ public class SysDictTypeController extends BaseController { */ @ApiOperation("获取字典选择框列表") @GetMapping("/optionselect") - public AjaxResult> optionselect() { + public R> optionselect() { List dictTypes = dictTypeService.selectDictTypeAll(); - return AjaxResult.success(dictTypes); + return R.ok(dictTypes); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java index 54133369..c6889199 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java @@ -5,7 +5,6 @@ import com.ruoyi.common.utils.StringUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @@ -15,7 +14,7 @@ import org.springframework.web.bind.annotation.RestController; * @author Lion Li */ @Api(value = "首页控制器", tags = {"首页管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController public class SysIndexController { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java index 6322ed5e..3a033e51 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java @@ -3,21 +3,19 @@ package com.ruoyi.web.controller.system; import cn.dev33.satoken.exception.NotLoginException; import cn.dev33.satoken.stp.StpUtil; import com.ruoyi.common.constant.Constants; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysMenu; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginBody; -import com.ruoyi.common.core.service.UserService; -import com.ruoyi.common.utils.LoginUtils; -import com.ruoyi.common.utils.spring.SpringUtils; +import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.system.domain.vo.RouterVo; import com.ruoyi.system.service.ISysMenuService; +import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.SysLoginService; import com.ruoyi.system.service.SysPermissionService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -36,12 +34,13 @@ import java.util.Set; */ @Validated @Api(value = "登录验证控制器", tags = {"登录验证管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController public class SysLoginController { private final SysLoginService loginService; private final ISysMenuService menuService; + private final ISysUserService userService; private final SysPermissionService permissionService; /** @@ -52,23 +51,23 @@ public class SysLoginController { */ @ApiOperation("登录方法") @PostMapping("/login") - public AjaxResult> login(@RequestBody LoginBody loginBody) { + public R> login(@Validated @RequestBody LoginBody loginBody) { Map ajax = new HashMap<>(); // 生成令牌 String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), - loginBody.getUuid()); + loginBody.getUuid()); ajax.put(Constants.TOKEN, token); - return AjaxResult.success(ajax); + return R.ok(ajax); } @ApiOperation("登出方法") @PostMapping("/logout") - public AjaxResult logout(){ + public R logout() { try { StpUtil.logout(); } catch (NotLoginException e) { } - return AjaxResult.success("退出成功"); + return R.ok("退出成功"); } /** @@ -78,8 +77,8 @@ public class SysLoginController { */ @ApiOperation("获取用户信息") @GetMapping("getInfo") - public AjaxResult> getInfo() { - SysUser user = SpringUtils.getBean(UserService.class).selectUserById(LoginUtils.getUserId()); + public R> getInfo() { + SysUser user = userService.selectUserById(LoginHelper.getUserId()); // 角色集合 Set roles = permissionService.getRolePermission(user); // 权限集合 @@ -88,7 +87,7 @@ public class SysLoginController { ajax.put("user", user); ajax.put("roles", roles); ajax.put("permissions", permissions); - return AjaxResult.success(ajax); + return R.ok(ajax); } /** @@ -98,9 +97,9 @@ public class SysLoginController { */ @ApiOperation("获取路由信息") @GetMapping("getRouters") - public AjaxResult> getRouters() { - Long userId = LoginUtils.getUserId(); + public R> getRouters() { + Long userId = LoginHelper.getUserId(); List menus = menuService.selectMenuTreeByUserId(userId); - return AjaxResult.success(menuService.buildMenus(menus)); + return R.ok(menuService.buildMenus(menus)); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java index 118f87b1..030363e0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java @@ -5,7 +5,7 @@ import cn.hutool.core.lang.tree.Tree; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysMenu; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.StringUtils; @@ -14,7 +14,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -29,7 +28,7 @@ import java.util.Map; */ @Validated @Api(value = "菜单信息控制器", tags = {"菜单信息管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/system/menu") public class SysMenuController extends BaseController { @@ -42,9 +41,9 @@ public class SysMenuController extends BaseController { @ApiOperation("获取菜单列表") @SaCheckPermission("system:menu:list") @GetMapping("/list") - public AjaxResult> list(SysMenu menu) { + public R> list(SysMenu menu) { List menus = menuService.selectMenuList(menu, getUserId()); - return AjaxResult.success(menus); + return R.ok(menus); } /** @@ -53,8 +52,8 @@ public class SysMenuController extends BaseController { @ApiOperation("根据菜单编号获取详细信息") @SaCheckPermission("system:menu:query") @GetMapping(value = "/{menuId}") - public AjaxResult getInfo(@ApiParam("菜单ID") @PathVariable Long menuId) { - return AjaxResult.success(menuService.selectMenuById(menuId)); + public R getInfo(@ApiParam("菜单ID") @PathVariable Long menuId) { + return R.ok(menuService.selectMenuById(menuId)); } /** @@ -62,9 +61,9 @@ public class SysMenuController extends BaseController { */ @ApiOperation("获取菜单下拉树列表") @GetMapping("/treeselect") - public AjaxResult>> treeselect(SysMenu menu) { + public R>> treeselect(SysMenu menu) { List menus = menuService.selectMenuList(menu, getUserId()); - return AjaxResult.success(menuService.buildMenuTreeSelect(menus)); + return R.ok(menuService.buildMenuTreeSelect(menus)); } /** @@ -72,12 +71,12 @@ public class SysMenuController extends BaseController { */ @ApiOperation("加载对应角色菜单列表树") @GetMapping(value = "/roleMenuTreeselect/{roleId}") - public AjaxResult> roleMenuTreeselect(@ApiParam("角色ID") @PathVariable("roleId") Long roleId) { + public R> roleMenuTreeselect(@ApiParam("角色ID") @PathVariable("roleId") Long roleId) { List menus = menuService.selectMenuList(getUserId()); Map ajax = new HashMap<>(); ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId)); ajax.put("menus", menuService.buildMenuTreeSelect(menus)); - return AjaxResult.success(ajax); + return R.ok(ajax); } /** @@ -87,11 +86,11 @@ public class SysMenuController extends BaseController { @SaCheckPermission("system:menu:add") @Log(title = "菜单管理", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@Validated @RequestBody SysMenu menu) { + public R add(@Validated @RequestBody SysMenu menu) { if (UserConstants.NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) { - return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); + return R.fail("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); } else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) { - return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); + return R.fail("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); } return toAjax(menuService.insertMenu(menu)); } @@ -103,13 +102,13 @@ public class SysMenuController extends BaseController { @SaCheckPermission("system:menu:edit") @Log(title = "菜单管理", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@Validated @RequestBody SysMenu menu) { + public R edit(@Validated @RequestBody SysMenu menu) { if (UserConstants.NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) { - return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); + return R.fail("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); } else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) { - return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); + return R.fail("修改菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); } else if (menu.getMenuId().equals(menu.getParentId())) { - return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己"); + return R.fail("修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己"); } return toAjax(menuService.updateMenu(menu)); } @@ -121,12 +120,12 @@ public class SysMenuController extends BaseController { @SaCheckPermission("system:menu:remove") @Log(title = "菜单管理", businessType = BusinessType.DELETE) @DeleteMapping("/{menuId}") - public AjaxResult remove(@ApiParam("菜单ID") @PathVariable("menuId") Long menuId) { + public R remove(@ApiParam("菜单ID") @PathVariable("menuId") Long menuId) { if (menuService.hasChildByMenuId(menuId)) { - return AjaxResult.error("存在子菜单,不允许删除"); + return R.fail("存在子菜单,不允许删除"); } if (menuService.checkMenuExistRole(menuId)) { - return AjaxResult.error("菜单已分配,不允许删除"); + return R.fail("菜单已分配,不允许删除"); } return toAjax(menuService.deleteMenuById(menuId)); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java index 23e8593e..6febd3e3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java @@ -3,19 +3,18 @@ package com.ruoyi.web.controller.system; import cn.dev33.satoken.annotation.SaCheckPermission; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.system.domain.SysNotice; import com.ruoyi.system.service.ISysNoticeService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; /** * 公告 信息操作处理 @@ -24,7 +23,7 @@ import lombok.RequiredArgsConstructor; */ @Validated @Api(value = "公告信息控制器", tags = {"公告信息管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/system/notice") public class SysNoticeController extends BaseController { @@ -47,8 +46,8 @@ public class SysNoticeController extends BaseController { @ApiOperation("根据通知公告编号获取详细信息") @SaCheckPermission("system:notice:query") @GetMapping(value = "/{noticeId}") - public AjaxResult getInfo(@ApiParam("公告ID") @PathVariable Long noticeId) { - return AjaxResult.success(noticeService.selectNoticeById(noticeId)); + public R getInfo(@ApiParam("公告ID") @PathVariable Long noticeId) { + return R.ok(noticeService.selectNoticeById(noticeId)); } /** @@ -58,7 +57,7 @@ public class SysNoticeController extends BaseController { @SaCheckPermission("system:notice:add") @Log(title = "通知公告", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@Validated @RequestBody SysNotice notice) { + public R add(@Validated @RequestBody SysNotice notice) { return toAjax(noticeService.insertNotice(notice)); } @@ -69,7 +68,7 @@ public class SysNoticeController extends BaseController { @SaCheckPermission("system:notice:edit") @Log(title = "通知公告", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@Validated @RequestBody SysNotice notice) { + public R edit(@Validated @RequestBody SysNotice notice) { return toAjax(noticeService.updateNotice(notice)); } @@ -80,7 +79,7 @@ public class SysNoticeController extends BaseController { @SaCheckPermission("system:notice:remove") @Log(title = "通知公告", businessType = BusinessType.DELETE) @DeleteMapping("/{noticeIds}") - public AjaxResult remove(@ApiParam("公告ID串") @PathVariable Long[] noticeIds) { + public R remove(@ApiParam("公告ID串") @PathVariable Long[] noticeIds) { return toAjax(noticeService.deleteNoticeByIds(noticeIds)); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssConfigController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssConfigController.java index 0562cdf8..e344dea9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssConfigController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssConfigController.java @@ -4,7 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.validate.AddGroup; @@ -18,7 +18,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -35,7 +34,7 @@ import java.util.Arrays; */ @Validated @Api(value = "对象存储配置控制器", tags = {"对象存储配置管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/system/oss/config") public class SysOssConfigController extends BaseController { @@ -58,10 +57,10 @@ public class SysOssConfigController extends BaseController { @ApiOperation("获取对象存储配置详细信息") @SaCheckPermission("system:oss:query") @GetMapping("/{ossConfigId}") - public AjaxResult getInfo(@ApiParam("OSS配置ID") + public R getInfo(@ApiParam("OSS配置ID") @NotNull(message = "主键不能为空") @PathVariable("ossConfigId") Integer ossConfigId) { - return AjaxResult.success(iSysOssConfigService.queryById(ossConfigId)); + return R.ok(iSysOssConfigService.queryById(ossConfigId)); } /** @@ -72,7 +71,7 @@ public class SysOssConfigController extends BaseController { @Log(title = "对象存储配置", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() - public AjaxResult add(@Validated(AddGroup.class) @RequestBody SysOssConfigBo bo) { + public R add(@Validated(AddGroup.class) @RequestBody SysOssConfigBo bo) { return toAjax(iSysOssConfigService.insertByBo(bo) ? 1 : 0); } @@ -84,7 +83,7 @@ public class SysOssConfigController extends BaseController { @Log(title = "对象存储配置", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() - public AjaxResult edit(@Validated(EditGroup.class) @RequestBody SysOssConfigBo bo) { + public R edit(@Validated(EditGroup.class) @RequestBody SysOssConfigBo bo) { return toAjax(iSysOssConfigService.updateByBo(bo) ? 1 : 0); } @@ -95,7 +94,7 @@ public class SysOssConfigController extends BaseController { @SaCheckPermission("system:oss:remove") @Log(title = "对象存储配置", businessType = BusinessType.DELETE) @DeleteMapping("/{ossConfigIds}") - public AjaxResult remove(@ApiParam("OSS配置ID串") + public R remove(@ApiParam("OSS配置ID串") @NotEmpty(message = "主键不能为空") @PathVariable Long[] ossConfigIds) { return toAjax(iSysOssConfigService.deleteWithValidByIds(Arrays.asList(ossConfigIds), true) ? 1 : 0); @@ -108,7 +107,7 @@ public class SysOssConfigController extends BaseController { @SaCheckPermission("system:oss:edit") @Log(title = "对象存储状态修改", businessType = BusinessType.UPDATE) @PutMapping("/changeStatus") - public AjaxResult changeStatus(@RequestBody SysOssConfigBo bo) { + public R changeStatus(@RequestBody SysOssConfigBo bo) { return toAjax(iSysOssConfigService.updateOssConfigStatus(bo)); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java index 5a35a49e..15b30750 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java @@ -9,7 +9,7 @@ import cn.hutool.http.HttpUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.validate.QueryGroup; @@ -26,7 +26,6 @@ import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysOssService; import io.swagger.annotations.*; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -47,7 +46,7 @@ import java.util.Map; */ @Validated @Api(value = "OSS对象存储控制器", tags = {"OSS对象存储管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/system/oss") public class SysOssController extends BaseController { @@ -76,7 +75,7 @@ public class SysOssController extends BaseController { @Log(title = "OSS对象存储", businessType = BusinessType.INSERT) @RepeatSubmit @PostMapping("/upload") - public AjaxResult> upload(@RequestPart("file") MultipartFile file) { + public R> upload(@RequestPart("file") MultipartFile file) { if (ObjectUtil.isNull(file)) { throw new ServiceException("上传文件不能为空"); } @@ -84,7 +83,7 @@ public class SysOssController extends BaseController { Map map = new HashMap<>(2); map.put("url", oss.getUrl()); map.put("fileName", oss.getFileName()); - return AjaxResult.success(map); + return R.ok(map); } @ApiOperation("下载OSS对象存储") @@ -118,7 +117,7 @@ public class SysOssController extends BaseController { @SaCheckPermission("system:oss:remove") @Log(title = "OSS对象存储", businessType = BusinessType.DELETE) @DeleteMapping("/{ossIds}") - public AjaxResult remove(@ApiParam("OSS对象ID串") + public R remove(@ApiParam("OSS对象ID串") @NotEmpty(message = "主键不能为空") @PathVariable Long[] ossIds) { return toAjax(iSysOssService.deleteWithValidByIds(Arrays.asList(ossIds), true) ? 1 : 0); @@ -131,9 +130,11 @@ public class SysOssController extends BaseController { @SaCheckPermission("system:oss:edit") @Log(title = "OSS对象存储", businessType = BusinessType.UPDATE) @PutMapping("/changePreviewListResource") - public AjaxResult changePreviewListResource(@RequestBody String body) { + public R changePreviewListResource(@RequestBody String body) { Map map = JsonUtils.parseMap(body); - SysConfig config = iSysConfigService.getOne(new SysConfig().setConfigKey(OssConstant.PEREVIEW_LIST_RESOURCE_KEY)); + SysConfig sysConfig = new SysConfig(); + sysConfig.setConfigKey(OssConstant.PEREVIEW_LIST_RESOURCE_KEY); + SysConfig config = iSysConfigService.getOne(sysConfig); config.setConfigValue(map.get("previewListResource").toString()); return toAjax(iSysConfigService.updateConfig(config)); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysPostController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysPostController.java index 6b383a40..7e08698f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysPostController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysPostController.java @@ -4,7 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; @@ -15,7 +15,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -29,7 +28,7 @@ import java.util.List; */ @Validated @Api(value = "岗位信息控制器", tags = {"岗位信息管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/system/post") public class SysPostController extends BaseController { @@ -61,8 +60,8 @@ public class SysPostController extends BaseController { @ApiOperation("根据岗位编号获取详细信息") @SaCheckPermission("system:post:query") @GetMapping(value = "/{postId}") - public AjaxResult getInfo(@ApiParam("岗位ID") @PathVariable Long postId) { - return AjaxResult.success(postService.selectPostById(postId)); + public R getInfo(@ApiParam("岗位ID") @PathVariable Long postId) { + return R.ok(postService.selectPostById(postId)); } /** @@ -72,11 +71,11 @@ public class SysPostController extends BaseController { @SaCheckPermission("system:post:add") @Log(title = "岗位管理", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@Validated @RequestBody SysPost post) { + public R add(@Validated @RequestBody SysPost post) { if (UserConstants.NOT_UNIQUE.equals(postService.checkPostNameUnique(post))) { - return AjaxResult.error("新增岗位'" + post.getPostName() + "'失败,岗位名称已存在"); + return R.fail("新增岗位'" + post.getPostName() + "'失败,岗位名称已存在"); } else if (UserConstants.NOT_UNIQUE.equals(postService.checkPostCodeUnique(post))) { - return AjaxResult.error("新增岗位'" + post.getPostName() + "'失败,岗位编码已存在"); + return R.fail("新增岗位'" + post.getPostName() + "'失败,岗位编码已存在"); } return toAjax(postService.insertPost(post)); } @@ -88,11 +87,11 @@ public class SysPostController extends BaseController { @SaCheckPermission("system:post:edit") @Log(title = "岗位管理", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@Validated @RequestBody SysPost post) { + public R edit(@Validated @RequestBody SysPost post) { if (UserConstants.NOT_UNIQUE.equals(postService.checkPostNameUnique(post))) { - return AjaxResult.error("修改岗位'" + post.getPostName() + "'失败,岗位名称已存在"); + return R.fail("修改岗位'" + post.getPostName() + "'失败,岗位名称已存在"); } else if (UserConstants.NOT_UNIQUE.equals(postService.checkPostCodeUnique(post))) { - return AjaxResult.error("修改岗位'" + post.getPostName() + "'失败,岗位编码已存在"); + return R.fail("修改岗位'" + post.getPostName() + "'失败,岗位编码已存在"); } return toAjax(postService.updatePost(post)); } @@ -104,7 +103,7 @@ public class SysPostController extends BaseController { @SaCheckPermission("system:post:remove") @Log(title = "岗位管理", businessType = BusinessType.DELETE) @DeleteMapping("/{postIds}") - public AjaxResult remove(@ApiParam("岗位ID串") @PathVariable Long[] postIds) { + public R remove(@ApiParam("岗位ID串") @PathVariable Long[] postIds) { return toAjax(postService.deletePostByIds(postIds)); } @@ -113,8 +112,8 @@ public class SysPostController extends BaseController { */ @ApiOperation("获取岗位选择框列表") @GetMapping("/optionselect") - public AjaxResult> optionselect() { + public R> optionselect() { List posts = postService.selectPostAll(); - return AjaxResult.success(posts); + return R.ok(posts); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java index a4356275..6ed8454f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java @@ -3,14 +3,12 @@ package com.ruoyi.web.controller.system; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.common.core.service.UserService; import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.common.utils.LoginUtils; +import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.system.domain.SysOss; import com.ruoyi.system.service.ISysOssService; import com.ruoyi.system.service.ISysUserService; @@ -19,7 +17,6 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -35,7 +32,7 @@ import java.util.Map; */ @Validated @Api(value = "个人信息控制器", tags = {"个人信息管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/system/user/profile") public class SysProfileController extends BaseController { @@ -48,13 +45,13 @@ public class SysProfileController extends BaseController { */ @ApiOperation("个人信息") @GetMapping - public AjaxResult> profile() { + public R> profile() { SysUser user = userService.selectUserById(getUserId()); Map ajax = new HashMap<>(); ajax.put("user", user); ajax.put("roleGroup", userService.selectUserRoleGroup(user.getUserName())); ajax.put("postGroup", userService.selectUserPostGroup(user.getUserName())); - return AjaxResult.success(ajax); + return R.ok(ajax); } /** @@ -63,22 +60,22 @@ public class SysProfileController extends BaseController { @ApiOperation("修改用户") @Log(title = "个人信息", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult updateProfile(@RequestBody SysUser user) { + public R updateProfile(@RequestBody SysUser user) { if (StringUtils.isNotEmpty(user.getPhonenumber()) - && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) { - return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); + && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) { + return R.fail("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); } if (StringUtils.isNotEmpty(user.getEmail()) - && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) { - return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); + && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) { + return R.fail("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); } user.setUserId(getUserId()); user.setUserName(null); user.setPassword(null); if (userService.updateUserProfile(user) > 0) { - return AjaxResult.success(); + return R.ok(); } - return AjaxResult.error("修改个人信息异常,请联系管理员"); + return R.fail("修改个人信息异常,请联系管理员"); } /** @@ -91,20 +88,20 @@ public class SysProfileController extends BaseController { }) @Log(title = "个人信息", businessType = BusinessType.UPDATE) @PutMapping("/updatePwd") - public AjaxResult updatePwd(String oldPassword, String newPassword) { - SysUser user = SpringUtils.getBean(UserService.class).selectUserById(LoginUtils.getUserId()); + public R updatePwd(String oldPassword, String newPassword) { + SysUser user = userService.selectUserById(LoginHelper.getUserId()); String userName = user.getUserName(); String password = user.getPassword(); if (!SecurityUtils.matchesPassword(oldPassword, password)) { - return AjaxResult.error("修改密码失败,旧密码错误"); + return R.fail("修改密码失败,旧密码错误"); } if (SecurityUtils.matchesPassword(newPassword, password)) { - return AjaxResult.error("新密码不能与旧密码相同"); + return R.fail("新密码不能与旧密码相同"); } if (userService.resetUserPwd(userName, SecurityUtils.encryptPassword(newPassword)) > 0) { - return AjaxResult.success(); + return R.ok(); } - return AjaxResult.error("修改密码异常,请联系管理员"); + return R.fail("修改密码异常,请联系管理员"); } /** @@ -116,16 +113,16 @@ public class SysProfileController extends BaseController { }) @Log(title = "用户头像", businessType = BusinessType.UPDATE) @PostMapping("/avatar") - public AjaxResult> avatar(@RequestPart("avatarfile") MultipartFile file) { - Map ajax = new HashMap<>(); + public R> avatar(@RequestPart("avatarfile") MultipartFile file) { + Map ajax = new HashMap<>(); if (!file.isEmpty()) { SysOss oss = iSysOssService.upload(file); String avatar = oss.getUrl(); if (userService.updateUserAvatar(getUsername(), avatar)) { ajax.put("imgUrl", avatar); - return AjaxResult.success(ajax); + return R.ok(ajax); } } - return AjaxResult.error("上传图片异常,请联系管理员", ajax); + return R.fail("上传图片异常,请联系管理员"); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java index 11dc6ebc..c1c79503 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java @@ -1,15 +1,13 @@ package com.ruoyi.web.controller.system; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.model.RegisterBody; -import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.SysRegisterService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -22,7 +20,7 @@ import org.springframework.web.bind.annotation.RestController; */ @Validated @Api(value = "注册验证控制器", tags = {"注册验证管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController public class SysRegisterController extends BaseController { @@ -31,11 +29,11 @@ public class SysRegisterController extends BaseController { @ApiOperation("用户注册") @PostMapping("/register") - public AjaxResult register(@RequestBody RegisterBody user) { + public R register(@Validated @RequestBody RegisterBody user) { if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) { return error("当前系统没有开启注册功能!"); } - String msg = registerService.register(user); - return StringUtils.isEmpty(msg) ? success() : error(msg); + registerService.register(user); + return success(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java index 16ebf04d..5d9a2061 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java @@ -1,18 +1,18 @@ package com.ruoyi.web.controller.system; import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.util.ObjectUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.PageQuery; -import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.common.utils.LoginUtils; -import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.system.domain.SysUserRole; import com.ruoyi.system.service.ISysRoleService; @@ -20,7 +20,6 @@ import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.SysPermissionService; import io.swagger.annotations.*; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -34,7 +33,7 @@ import java.util.List; */ @Validated @Api(value = "角色信息控制器", tags = {"角色信息管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/system/role") public class SysRoleController extends BaseController { @@ -65,9 +64,9 @@ public class SysRoleController extends BaseController { @ApiOperation("根据角色编号获取详细信息") @SaCheckPermission("system:role:query") @GetMapping(value = "/{roleId}") - public AjaxResult getInfo(@ApiParam("角色ID") @PathVariable Long roleId) { + public R getInfo(@ApiParam("角色ID") @PathVariable Long roleId) { roleService.checkRoleDataScope(roleId); - return AjaxResult.success(roleService.selectRoleById(roleId)); + return R.ok(roleService.selectRoleById(roleId)); } /** @@ -77,11 +76,11 @@ public class SysRoleController extends BaseController { @SaCheckPermission("system:role:add") @Log(title = "角色管理", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@Validated @RequestBody SysRole role) { + public R add(@Validated @RequestBody SysRole role) { if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role))) { - return AjaxResult.error("新增角色'" + role.getRoleName() + "'失败,角色名称已存在"); + return R.fail("新增角色'" + role.getRoleName() + "'失败,角色名称已存在"); } else if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role))) { - return AjaxResult.error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在"); + return R.fail("新增角色'" + role.getRoleName() + "'失败,角色权限已存在"); } return toAjax(roleService.insertRole(role)); @@ -94,25 +93,26 @@ public class SysRoleController extends BaseController { @SaCheckPermission("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@Validated @RequestBody SysRole role) { + public R edit(@Validated @RequestBody SysRole role) { roleService.checkRoleAllowed(role); + roleService.checkRoleDataScope(role.getRoleId()); if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role))) { - return AjaxResult.error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在"); + return R.fail("修改角色'" + role.getRoleName() + "'失败,角色名称已存在"); } else if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role))) { - return AjaxResult.error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在"); + return R.fail("修改角色'" + role.getRoleName() + "'失败,角色权限已存在"); } if (roleService.updateRole(role) > 0) { // 更新缓存用户权限 LoginUser loginUser = getLoginUser(); SysUser sysUser = userService.selectUserById(loginUser.getUserId()); - if (StringUtils.isNotNull(sysUser) && !sysUser.isAdmin()) { + if (ObjectUtil.isNotNull(sysUser) && !sysUser.isAdmin()) { loginUser.setMenuPermission(permissionService.getMenuPermission(sysUser)); - LoginUtils.setLoginUser(loginUser); + LoginHelper.setLoginUser(loginUser); } - return AjaxResult.success(); + return R.ok(); } - return AjaxResult.error("修改角色'" + role.getRoleName() + "'失败,请联系管理员"); + return R.fail("修改角色'" + role.getRoleName() + "'失败,请联系管理员"); } /** @@ -122,8 +122,9 @@ public class SysRoleController extends BaseController { @SaCheckPermission("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.UPDATE) @PutMapping("/dataScope") - public AjaxResult dataScope(@RequestBody SysRole role) { + public R dataScope(@RequestBody SysRole role) { roleService.checkRoleAllowed(role); + roleService.checkRoleDataScope(role.getRoleId()); return toAjax(roleService.authDataScope(role)); } @@ -134,8 +135,9 @@ public class SysRoleController extends BaseController { @SaCheckPermission("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.UPDATE) @PutMapping("/changeStatus") - public AjaxResult changeStatus(@RequestBody SysRole role) { + public R changeStatus(@RequestBody SysRole role) { roleService.checkRoleAllowed(role); + roleService.checkRoleDataScope(role.getRoleId()); return toAjax(roleService.updateRoleStatus(role)); } @@ -146,7 +148,7 @@ public class SysRoleController extends BaseController { @SaCheckPermission("system:role:remove") @Log(title = "角色管理", businessType = BusinessType.DELETE) @DeleteMapping("/{roleIds}") - public AjaxResult remove(@ApiParam("岗位ID串") @PathVariable Long[] roleIds) { + public R remove(@ApiParam("岗位ID串") @PathVariable Long[] roleIds) { return toAjax(roleService.deleteRoleByIds(roleIds)); } @@ -156,8 +158,8 @@ public class SysRoleController extends BaseController { @ApiOperation("获取角色选择框列表") @SaCheckPermission("system:role:query") @GetMapping("/optionselect") - public AjaxResult> optionselect() { - return AjaxResult.success(roleService.selectRoleAll()); + public R> optionselect() { + return R.ok(roleService.selectRoleAll()); } /** @@ -187,7 +189,7 @@ public class SysRoleController extends BaseController { @SaCheckPermission("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.GRANT) @PutMapping("/authUser/cancel") - public AjaxResult cancelAuthUser(@RequestBody SysUserRole userRole) { + public R cancelAuthUser(@RequestBody SysUserRole userRole) { return toAjax(roleService.deleteAuthUser(userRole)); } @@ -202,7 +204,7 @@ public class SysRoleController extends BaseController { @SaCheckPermission("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.GRANT) @PutMapping("/authUser/cancelAll") - public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds) { + public R cancelAuthUserAll(Long roleId, Long[] userIds) { return toAjax(roleService.deleteAuthUsers(roleId, userIds)); } @@ -217,7 +219,8 @@ public class SysRoleController extends BaseController { @SaCheckPermission("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.GRANT) @PutMapping("/authUser/selectAll") - public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds) { + public R selectAuthUserAll(Long roleId, Long[] userIds) { + roleService.checkRoleDataScope(roleId); return toAjax(roleService.insertAuthUsers(roleId, userIds)); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java index f969ea4b..ac81600e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java @@ -7,7 +7,7 @@ import cn.hutool.core.util.ObjectUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.entity.SysRole; @@ -26,7 +26,6 @@ import com.ruoyi.system.service.ISysRoleService; import com.ruoyi.system.service.ISysUserService; import io.swagger.annotations.*; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -45,7 +44,7 @@ import java.util.stream.Collectors; */ @Validated @Api(value = "用户信息控制器", tags = {"用户信息管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/system/user") public class SysUserController extends BaseController { @@ -84,14 +83,14 @@ public class SysUserController extends BaseController { @ApiOperation("导入用户列表") @ApiImplicitParams({ - @ApiImplicitParam(name = "file", value = "导入文件", dataType = "java.io.File", required = true), + @ApiImplicitParam(name = "file", value = "导入文件", dataType = "java.io.File", required = true), }) @Log(title = "用户管理", businessType = BusinessType.IMPORT) @SaCheckPermission("system:user:import") @PostMapping("/importData") - public AjaxResult importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception { + public R importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception { ExcelResult result = ExcelUtil.importExcel(file.getInputStream(), SysUserImportVo.class, new SysUserImportListener(updateSupport)); - return AjaxResult.success(result.getAnalysis()); + return R.ok(result.getAnalysis()); } @ApiOperation("下载导入模板") @@ -105,20 +104,20 @@ public class SysUserController extends BaseController { */ @ApiOperation("根据用户编号获取详细信息") @SaCheckPermission("system:user:query") - @GetMapping(value = {"/", "/{userId}" }) - public AjaxResult> getInfo(@ApiParam("用户ID") @PathVariable(value = "userId", required = false) Long userId) { + @GetMapping(value = {"/", "/{userId}"}) + public R> getInfo(@ApiParam("用户ID") @PathVariable(value = "userId", required = false) Long userId) { userService.checkUserDataScope(userId); Map ajax = new HashMap<>(); List roles = roleService.selectRoleAll(); ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); ajax.put("posts", postService.selectPostAll()); - if (StringUtils.isNotNull(userId)) { + if (ObjectUtil.isNotNull(userId)) { SysUser sysUser = userService.selectUserById(userId); ajax.put("user", sysUser); ajax.put("postIds", postService.selectPostListByUserId(userId)); ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList())); } - return AjaxResult.success(ajax); + return R.ok(ajax); } /** @@ -128,15 +127,15 @@ public class SysUserController extends BaseController { @SaCheckPermission("system:user:add") @Log(title = "用户管理", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@Validated @RequestBody SysUser user) { + public R add(@Validated @RequestBody SysUser user) { if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user.getUserName()))) { - return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,登录账号已存在"); + return R.fail("新增用户'" + user.getUserName() + "'失败,登录账号已存在"); } else if (StringUtils.isNotEmpty(user.getPhonenumber()) - && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) { - return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,手机号码已存在"); + && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) { + return R.fail("新增用户'" + user.getUserName() + "'失败,手机号码已存在"); } else if (StringUtils.isNotEmpty(user.getEmail()) - && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) { - return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在"); + && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) { + return R.fail("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在"); } user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); return toAjax(userService.insertUser(user)); @@ -149,14 +148,15 @@ public class SysUserController extends BaseController { @SaCheckPermission("system:user:edit") @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@Validated @RequestBody SysUser user) { + public R edit(@Validated @RequestBody SysUser user) { userService.checkUserAllowed(user); + userService.checkUserDataScope(user.getUserId()); if (StringUtils.isNotEmpty(user.getPhonenumber()) - && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) { - return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); + && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) { + return R.fail("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); } else if (StringUtils.isNotEmpty(user.getEmail()) - && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) { - return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); + && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) { + return R.fail("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); } return toAjax(userService.updateUser(user)); } @@ -168,7 +168,7 @@ public class SysUserController extends BaseController { @SaCheckPermission("system:user:remove") @Log(title = "用户管理", businessType = BusinessType.DELETE) @DeleteMapping("/{userIds}") - public AjaxResult remove(@ApiParam("角色ID串") @PathVariable Long[] userIds) { + public R remove(@ApiParam("角色ID串") @PathVariable Long[] userIds) { if (ArrayUtil.contains(userIds, getUserId())) { return error("当前用户不能删除"); } @@ -182,8 +182,9 @@ public class SysUserController extends BaseController { @SaCheckPermission("system:user:resetPwd") @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping("/resetPwd") - public AjaxResult resetPwd(@RequestBody SysUser user) { + public R resetPwd(@RequestBody SysUser user) { userService.checkUserAllowed(user); + userService.checkUserDataScope(user.getUserId()); user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); return toAjax(userService.resetPwd(user)); } @@ -195,8 +196,9 @@ public class SysUserController extends BaseController { @SaCheckPermission("system:user:edit") @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping("/changeStatus") - public AjaxResult changeStatus(@RequestBody SysUser user) { + public R changeStatus(@RequestBody SysUser user) { userService.checkUserAllowed(user); + userService.checkUserDataScope(user.getUserId()); return toAjax(userService.updateUserStatus(user)); } @@ -206,13 +208,13 @@ public class SysUserController extends BaseController { @ApiOperation("根据用户编号获取授权角色") @SaCheckPermission("system:user:query") @GetMapping("/authRole/{userId}") - public AjaxResult> authRole(@ApiParam("用户ID") @PathVariable("userId") Long userId) { + public R> authRole(@ApiParam("用户ID") @PathVariable("userId") Long userId) { SysUser user = userService.selectUserById(userId); List roles = roleService.selectRolesByUserId(userId); Map ajax = new HashMap<>(); ajax.put("user", user); ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); - return AjaxResult.success(ajax); + return R.ok(ajax); } /** @@ -226,7 +228,8 @@ public class SysUserController extends BaseController { @SaCheckPermission("system:user:edit") @Log(title = "用户管理", businessType = BusinessType.GRANT) @PutMapping("/authRole") - public AjaxResult insertAuthRole(Long userId, Long[] roleIds) { + public R insertAuthRole(Long userId, Long[] roleIds) { + userService.checkUserDataScope(userId); userService.insertUserAuth(userId, roleIds); return success(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/FlowCategoryController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/FlowCategoryController.java index 6a783063..f05a03b2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/FlowCategoryController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/FlowCategoryController.java @@ -5,7 +5,7 @@ import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.PageQuery; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; @@ -72,10 +72,10 @@ public class FlowCategoryController extends BaseController { @ApiOperation("获取流程分类详细信息") @SaCheckPermission("workflow:category:query") @GetMapping("/{categoryId}") - public AjaxResult getInfo(@ApiParam("主键") + public R getInfo(@ApiParam("主键") @NotNull(message = "主键不能为空") @PathVariable("categoryId") Long categoryId) { - return AjaxResult.success(iFlowCategoryService.queryById(categoryId)); + return R.ok(iFlowCategoryService.queryById(categoryId)); } /** @@ -86,7 +86,7 @@ public class FlowCategoryController extends BaseController { @Log(title = "流程分类", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() - public AjaxResult add(@Validated(AddGroup.class) @RequestBody FlowCategoryBo bo) { + public R add(@Validated(AddGroup.class) @RequestBody FlowCategoryBo bo) { return toAjax(iFlowCategoryService.insertByBo(bo) ? 1 : 0); } @@ -98,7 +98,7 @@ public class FlowCategoryController extends BaseController { @Log(title = "流程分类", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() - public AjaxResult edit(@Validated(EditGroup.class) @RequestBody FlowCategoryBo bo) { + public R edit(@Validated(EditGroup.class) @RequestBody FlowCategoryBo bo) { return toAjax(iFlowCategoryService.updateByBo(bo) ? 1 : 0); } @@ -109,7 +109,7 @@ public class FlowCategoryController extends BaseController { @SaCheckPermission("workflow:category:remove") @Log(title = "流程分类" , businessType = BusinessType.DELETE) @DeleteMapping("/{categoryIds}") - public AjaxResult remove(@ApiParam("主键串") + public R remove(@ApiParam("主键串") @NotEmpty(message = "主键不能为空") @PathVariable Long[] categoryIds) { return toAjax(iFlowCategoryService.deleteWithValidByIds(Arrays.asList(categoryIds), true) ? 1 : 0); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/FlowDefinitionController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/FlowDefinitionController.java index 8407f007..e95e26ef 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/FlowDefinitionController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/FlowDefinitionController.java @@ -2,7 +2,7 @@ package com.ruoyi.web.controller.workflow; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.PageQuery; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.page.TableDataInfo; @@ -75,7 +75,7 @@ public class FlowDefinitionController extends BaseController { @ApiOperation(value = "导入流程文件", notes = "上传bpmn20的xml文件") @PostMapping("/import") - public AjaxResult importFile(@RequestParam(required = false) String name, + public R importFile(@RequestParam(required = false) String name, @RequestParam(required = false) String category, MultipartFile file) { try (InputStream in = file.getInputStream()) { @@ -91,11 +91,11 @@ public class FlowDefinitionController extends BaseController { @ApiOperation(value = "读取xml文件") @GetMapping("/readXml/{definitionId}") - public AjaxResult readXml(@ApiParam(value = "流程定义ID") @PathVariable(value = "definitionId") String definitionId) { + public R readXml(@ApiParam(value = "流程定义ID") @PathVariable(value = "definitionId") String definitionId) { try { - return AjaxResult.success(null, flowDefinitionService.readXml(definitionId)); + return R.ok(null, flowDefinitionService.readXml(definitionId)); } catch (Exception e) { - return AjaxResult.error("加载xml文件异常", null); + return R.fail("加载xml文件异常", null); } } @@ -118,7 +118,7 @@ public class FlowDefinitionController extends BaseController { @ApiOperation(value = "保存流程设计器内的xml文件") @PostMapping("/save") - public AjaxResult save(@RequestBody FlowSaveXmlVo vo) { + public R save(@RequestBody FlowSaveXmlVo vo) { try (InputStream in = new ByteArrayInputStream(vo.getXml().getBytes(StandardCharsets.UTF_8))) { flowDefinitionService.importFile(vo.getName(), vo.getCategory(), in); } catch (Exception e) { @@ -132,7 +132,7 @@ public class FlowDefinitionController extends BaseController { @ApiOperation(value = "根据流程定义id启动流程实例") @PostMapping("/start/{procDefId}") - public AjaxResult start(@ApiParam(value = "流程定义id") @PathVariable(value = "procDefId") String procDefId, + public R start(@ApiParam(value = "流程定义id") @PathVariable(value = "procDefId") String procDefId, @ApiParam(value = "变量集合,json对象") @RequestBody Map variables) { flowDefinitionService.startProcessInstanceById(procDefId, variables); return success("流程启动成功"); @@ -141,7 +141,7 @@ public class FlowDefinitionController extends BaseController { @ApiOperation(value = "激活或挂起流程定义") @PutMapping(value = "/updateState") - public AjaxResult updateState(@ApiParam(value = "ture:挂起,false:激活", required = true) @RequestParam Boolean suspended, + public R updateState(@ApiParam(value = "ture:挂起,false:激活", required = true) @RequestParam Boolean suspended, @ApiParam(value = "流程定义ID", required = true) @RequestParam String definitionId) { flowDefinitionService.updateState(suspended, definitionId); return success(); @@ -149,23 +149,23 @@ public class FlowDefinitionController extends BaseController { @ApiOperation(value = "删除流程") @DeleteMapping(value = "/delete") - public AjaxResult delete(@ApiParam(value = "流程部署ID", required = true) @RequestParam String deployId) { + public R delete(@ApiParam(value = "流程部署ID", required = true) @RequestParam String deployId) { flowDefinitionService.delete(deployId); return success(); } @ApiOperation(value = "指定流程办理人员列表") @GetMapping("/userList") - public AjaxResult> userList(SysUser user) { + public R> userList(SysUser user) { List list = userService.selectUserList(user); - return AjaxResult.success(list); + return R.ok(list); } @ApiOperation(value = "指定流程办理组列表") @GetMapping("/roleList") - public AjaxResult> roleList(SysRole role) { + public R> roleList(SysRole role) { List list = sysRoleService.selectRoleList(role); - return AjaxResult.success(list); + return R.ok(list); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/FlowInstanceController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/FlowInstanceController.java index d442e834..18ea1d19 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/FlowInstanceController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/FlowInstanceController.java @@ -1,7 +1,7 @@ package com.ruoyi.web.controller.workflow; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.workflow.domain.vo.FlowTaskVo; import com.ruoyi.workflow.service.IFlowInstanceService; import io.swagger.annotations.Api; @@ -30,7 +30,7 @@ public class FlowInstanceController { @ApiOperation(value = "根据流程定义id启动流程实例") @PostMapping("/startBy/{procDefId}") - public AjaxResult startById(@ApiParam(value = "流程定义id") @PathVariable(value = "procDefId") String procDefId, + public R startById(@ApiParam(value = "流程定义id") @PathVariable(value = "procDefId") String procDefId, @ApiParam(value = "变量集合,json对象") @RequestBody Map variables) { return flowInstanceService.startProcessInstanceById(procDefId, variables); } @@ -38,24 +38,24 @@ public class FlowInstanceController { @ApiOperation(value = "激活或挂起流程实例") @PostMapping(value = "/updateState") - public AjaxResult updateState(@ApiParam(value = "1:激活,2:挂起", required = true) @RequestParam Integer state, + public R updateState(@ApiParam(value = "1:激活,2:挂起", required = true) @RequestParam Integer state, @ApiParam(value = "流程实例ID", required = true) @RequestParam String instanceId) { flowInstanceService.updateState(state,instanceId); - return AjaxResult.success(); + return R.ok(); } @ApiOperation("结束流程实例") @PostMapping(value = "/stopProcessInstance") - public AjaxResult stopProcessInstance(@RequestBody FlowTaskVo flowTaskVo) { + public R stopProcessInstance(@RequestBody FlowTaskVo flowTaskVo) { flowInstanceService.stopProcessInstance(flowTaskVo); - return AjaxResult.success(); + return R.ok(); } @ApiOperation(value = "删除流程实例") @DeleteMapping(value = "/delete") - public AjaxResult delete(@ApiParam(value = "流程实例ID", required = true) @RequestParam String instanceId, + public R delete(@ApiParam(value = "流程实例ID", required = true) @RequestParam String instanceId, @ApiParam(value = "删除原因") @RequestParam(required = false) String deleteReason) { flowInstanceService.delete(instanceId,deleteReason); - return AjaxResult.success(); + return R.ok(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/FlowTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/FlowTaskController.java index 6d5bdaac..5047e600 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/FlowTaskController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/FlowTaskController.java @@ -1,6 +1,6 @@ package com.ruoyi.web.controller.workflow; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.workflow.domain.dto.FlowTaskDto; import com.ruoyi.workflow.domain.vo.FlowTaskVo; import com.ruoyi.workflow.service.IFlowTaskService; @@ -35,33 +35,33 @@ public class FlowTaskController { @ApiOperation(value = "我发起的流程", response = FlowTaskDto.class) @GetMapping(value = "/myProcess") - public AjaxResult myProcess(@ApiParam(value = "当前页码", required = true) @RequestParam Integer pageNum, + public R myProcess(@ApiParam(value = "当前页码", required = true) @RequestParam Integer pageNum, @ApiParam(value = "每页条数", required = true) @RequestParam Integer pageSize) { return flowTaskService.myProcess(pageNum, pageSize); } @ApiOperation(value = "取消申请", response = FlowTaskDto.class) @PostMapping(value = "/stopProcess") - public AjaxResult stopProcess(@RequestBody FlowTaskVo flowTaskVo) { + public R stopProcess(@RequestBody FlowTaskVo flowTaskVo) { return flowTaskService.stopProcess(flowTaskVo); } @ApiOperation(value = "撤回流程", response = FlowTaskDto.class) @PostMapping(value = "/revokeProcess") - public AjaxResult revokeProcess(@RequestBody FlowTaskVo flowTaskVo) { + public R revokeProcess(@RequestBody FlowTaskVo flowTaskVo) { return flowTaskService.revokeProcess(flowTaskVo); } @ApiOperation(value = "获取待办列表", response = FlowTaskDto.class) @GetMapping(value = "/todoList") - public AjaxResult todoList(@ApiParam(value = "当前页码", required = true) @RequestParam Integer pageNum, + public R todoList(@ApiParam(value = "当前页码", required = true) @RequestParam Integer pageNum, @ApiParam(value = "每页条数", required = true) @RequestParam Integer pageSize) { return flowTaskService.todoList(pageNum, pageSize); } @ApiOperation(value = "获取已办任务", response = FlowTaskDto.class) @GetMapping(value = "/finishedList") - public AjaxResult finishedList(@ApiParam(value = "当前页码", required = true) @RequestParam Integer pageNum, + public R finishedList(@ApiParam(value = "当前页码", required = true) @RequestParam Integer pageNum, @ApiParam(value = "每页条数", required = true) @RequestParam Integer pageSize) { return flowTaskService.finishedList(pageNum, pageSize); } @@ -69,81 +69,81 @@ public class FlowTaskController { @ApiOperation(value = "流程历史流转记录", response = FlowTaskDto.class) @GetMapping(value = "/flowRecord") - public AjaxResult flowRecord(String procInsId, String deployId) { + public R flowRecord(String procInsId, String deployId) { return flowTaskService.flowRecord(procInsId,deployId); } @ApiOperation(value = "获取流程变量", response = FlowTaskDto.class) @GetMapping(value = "/processVariables/{taskId}") - public AjaxResult processVariables(@ApiParam(value = "流程任务Id") @PathVariable(value = "taskId") String taskId) { + public R processVariables(@ApiParam(value = "流程任务Id") @PathVariable(value = "taskId") String taskId) { return flowTaskService.processVariables(taskId); } @ApiOperation(value = "审批任务") @PostMapping(value = "/complete") - public AjaxResult complete(@RequestBody FlowTaskVo flowTaskVo) { + public R complete(@RequestBody FlowTaskVo flowTaskVo) { return flowTaskService.complete(flowTaskVo); } @ApiOperation(value = "驳回任务") @PostMapping(value = "/reject") - public AjaxResult taskReject(@RequestBody FlowTaskVo flowTaskVo) { + public R taskReject(@RequestBody FlowTaskVo flowTaskVo) { flowTaskService.taskReject(flowTaskVo); - return AjaxResult.success(); + return R.ok(); } @ApiOperation(value = "退回任务") @PostMapping(value = "/return") - public AjaxResult taskReturn(@RequestBody FlowTaskVo flowTaskVo) { + public R taskReturn(@RequestBody FlowTaskVo flowTaskVo) { flowTaskService.taskReturn(flowTaskVo); - return AjaxResult.success(); + return R.ok(); } @ApiOperation(value = "获取所有可回退的节点") @PostMapping(value = "/returnList") - public AjaxResult findReturnTaskList(@RequestBody FlowTaskVo flowTaskVo) { + public R findReturnTaskList(@RequestBody FlowTaskVo flowTaskVo) { return flowTaskService.findReturnTaskList(flowTaskVo); } @ApiOperation(value = "删除任务") @DeleteMapping(value = "/delete") - public AjaxResult delete(@RequestBody FlowTaskVo flowTaskVo) { + public R delete(@RequestBody FlowTaskVo flowTaskVo) { flowTaskService.deleteTask(flowTaskVo); - return AjaxResult.success(); + return R.ok(); } @ApiOperation(value = "认领/签收任务") @PostMapping(value = "/claim") - public AjaxResult claim(@RequestBody FlowTaskVo flowTaskVo) { + public R claim(@RequestBody FlowTaskVo flowTaskVo) { flowTaskService.claim(flowTaskVo); - return AjaxResult.success(); + return R.ok(); } @ApiOperation(value = "取消认领/签收任务") @PostMapping(value = "/unClaim") - public AjaxResult unClaim(@RequestBody FlowTaskVo flowTaskVo) { + public R unClaim(@RequestBody FlowTaskVo flowTaskVo) { flowTaskService.unClaim(flowTaskVo); - return AjaxResult.success(); + return R.ok(); } @ApiOperation(value = "委派任务") @PostMapping(value = "/delegate") - public AjaxResult delegate(@RequestBody FlowTaskVo flowTaskVo) { + public R delegate(@RequestBody FlowTaskVo flowTaskVo) { flowTaskService.delegateTask(flowTaskVo); - return AjaxResult.success(); + return R.ok(); } @ApiOperation(value = "转办任务") @PostMapping(value = "/assign") - public AjaxResult assign(@RequestBody FlowTaskVo flowTaskVo) { + public R assign(@RequestBody FlowTaskVo flowTaskVo) { flowTaskService.assignTask(flowTaskVo); - return AjaxResult.success(); + return R.ok(); } @ApiOperation(value = "获取下一节点") @PostMapping(value = "/nextFlowNode") - public AjaxResult getNextFlowNode(@RequestBody FlowTaskVo flowTaskVo) { + public R getNextFlowNode(@RequestBody FlowTaskVo flowTaskVo) { return flowTaskService.getNextFlowNode(flowTaskVo); } @@ -185,7 +185,7 @@ public class FlowTaskController { * @param procInsId 任务ID */ @RequestMapping("/flowViewer/{procInsId}") - public AjaxResult getFlowViewer(@PathVariable("procInsId") String procInsId) { + public R getFlowViewer(@PathVariable("procInsId") String procInsId) { return flowTaskService.getFlowViewer(procInsId); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/SysFormController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/SysFormController.java index dd3f683e..924a9795 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/SysFormController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/SysFormController.java @@ -4,7 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.PageQuery; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; @@ -58,8 +58,8 @@ public class SysFormController extends BaseController { */ @SaCheckPermission("flowable:form:query") @GetMapping(value = "/{formId}") - public AjaxResult getInfo(@PathVariable("formId") Long formId) { - return AjaxResult.success(SysFormService.selectSysFormById(formId)); + public R getInfo(@PathVariable("formId") Long formId) { + return R.ok(SysFormService.selectSysFormById(formId)); } /** @@ -68,7 +68,7 @@ public class SysFormController extends BaseController { @SaCheckPermission("flowable:form:add") @Log(title = "流程表单", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@RequestBody SysForm sysForm) { + public R add(@RequestBody SysForm sysForm) { return toAjax(SysFormService.insertSysForm(sysForm)); } @@ -78,7 +78,7 @@ public class SysFormController extends BaseController { @SaCheckPermission("flowable:form:edit") @Log(title = "流程表单", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@RequestBody SysForm sysForm) { + public R edit(@RequestBody SysForm sysForm) { return toAjax(SysFormService.updateSysForm(sysForm)); } @@ -88,7 +88,7 @@ public class SysFormController extends BaseController { @SaCheckPermission("flowable:form:remove") @Log(title = "流程表单", businessType = BusinessType.DELETE) @DeleteMapping("/{formIds}") - public AjaxResult remove(@PathVariable Long[] formIds) { + public R remove(@PathVariable Long[] formIds) { return toAjax(SysFormService.deleteSysFormByIds(formIds)); } @@ -98,7 +98,7 @@ public class SysFormController extends BaseController { */ @Log(title = "流程表单", businessType = BusinessType.INSERT) @PostMapping("/addDeployForm") - public AjaxResult addDeployForm(@RequestBody SysDeployForm sysDeployForm) { + public R addDeployForm(@RequestBody SysDeployForm sysDeployForm) { return toAjax(sysDeployFormService.insertSysDeployForm(sysDeployForm)); } } diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 90641a69..40a76b10 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -9,7 +9,7 @@ spring: # 设置 Spring Boot Admin Server 地址 url: http://localhost:9090/admin instance: - prefer-ip: true # 注册实例时,优先使用 IP + service-host-type: IP username: ruoyi password: 123456 @@ -55,7 +55,7 @@ spring: # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题) url: jdbc:mysql://localhost:3306/ry-flowable-plus?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&nullCatalogMeansCurrent=true username: root - password: 123456 + password: root # 从库数据源 slave: lazy: true @@ -121,7 +121,7 @@ spring: # 数据库索引 database: 0 # 密码 - password: konbai123.. + password: # 连接超时时间 timeout: 10s # 是否开启ssl @@ -150,11 +150,5 @@ redisson: retryAttempts: 3 # 命令重试发送时间间隔,单位:毫秒 retryInterval: 1500 - # 发布和订阅连接的最小空闲连接数 - subscriptionConnectionMinimumIdleSize: 1 # 发布和订阅连接池大小 subscriptionConnectionPoolSize: 50 - # 单个连接最大订阅数量 - subscriptionsPerConnection: 5 - # DNS监测时间间隔,单位:毫秒 - dnsMonitoringInterval: 5000 diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index c8f890f6..493ce547 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -16,7 +16,7 @@ spring: # 设置 Spring Boot Admin Server 地址 url: http://172.30.0.90:9090/admin instance: - prefer-ip: true # 注册实例时,优先使用 IP + service-host-type: IP username: ruoyi password: 123456 @@ -60,7 +60,7 @@ spring: driverClassName: com.mysql.cj.jdbc.Driver # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562 # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题) - url: jdbc:mysql://172.30.0.36:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true + url: jdbc:mysql://172.30.0.36:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true username: root password: root # 从库数据源 @@ -157,11 +157,5 @@ redisson: retryAttempts: 3 # 命令重试发送时间间隔,单位:毫秒 retryInterval: 1500 - # 发布和订阅连接的最小空闲连接数 - subscriptionConnectionMinimumIdleSize: 1 # 发布和订阅连接池大小 subscriptionConnectionPoolSize: 50 - # 单个连接最大订阅数量 - subscriptionsPerConnection: 5 - # DNS监测时间间隔,单位:毫秒 - dnsMonitoringInterval: 5000 diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index f2e6fb8d..cfe7c262 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -5,7 +5,7 @@ ruoyi: # 版本 version: ${ruoyi-flowable-plus.version} # 版权年份 - copyrightYear: 2021 + copyrightYear: 2022 # 实例演示开关 demoEnabled: true # 获取ip地址开关 @@ -53,10 +53,6 @@ logging: org.springframework: warn config: classpath:logback.xml -# tlog 全局访问性能拦截 -tlog: - enable-invoke-time-print: true - # Spring配置 spring: application: @@ -326,5 +322,9 @@ management: logfile: external-file: ./logs/sys-console.log +--- # Flowable 配置 flowable: + # 关闭定时任务 job + async-executor-activate: false + # 库与数据库表结构不一致时,会自动将数据库表结构升级至新版本。 database-schema-update: true diff --git a/ruoyi-admin/src/main/resources/i18n/messages.properties b/ruoyi-admin/src/main/resources/i18n/messages.properties index 6db4b42c..06e85c1e 100644 --- a/ruoyi-admin/src/main/resources/i18n/messages.properties +++ b/ruoyi-admin/src/main/resources/i18n/messages.properties @@ -1,5 +1,6 @@ #错误消息 not.null=* 必须填写 +user.jcaptcha.blank=验证码不能为空 user.jcaptcha.error=验证码错误 user.jcaptcha.expire=验证码已失效 user.not.exists=对不起, 您的账号:{0} 不存在. @@ -11,12 +12,18 @@ user.blocked=对不起,您的账号:{0} 已禁用,请联系管理员 role.blocked=角色已封禁,请联系管理员 user.logout.success=退出成功 length.not.valid=长度必须在{min}到{max}个字符之间 +user.username.not.blank=用户名不能为空 user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成,且必须以非数字开头 +user.username.length.valid=账户长度必须在{min}到{max}个字符之间 +user.password.not.blank=用户密码不能为空 +user.password.length.valid=用户密码长度必须在{min}到{max}个字符之间 user.password.not.valid=* 5-50个字符 user.email.not.valid=邮箱格式错误 user.mobile.phone.number.not.valid=手机号格式错误 user.login.success=登录成功 user.register.success=注册成功 +user.register.save.error=保存用户 {0} 失败,注册账号已存在 +user.register.error=注册失败,请联系系统管理人员 user.notfound=请重新登录 user.forcelogout=管理员强制退出,请重新登录 user.unknown.error=未知错误,请重新登录 diff --git a/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties b/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties index c67beab6..960538a5 100644 --- a/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties +++ b/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties @@ -11,12 +11,18 @@ user.blocked=Sorry, your account: {0} has been disabled. Please contact the admi role.blocked=Role disabled,please contact administrators user.logout.success=Exit successful length.not.valid=The length must be between {min} and {max} characters +user.username.not.blank=Username cannot be blank user.username.not.valid=* 2 to 20 chinese characters, letters, numbers or underscores, and must start with a non number +user.username.length.valid=Account length must be between {min} and {max} characters +user.password.not.blank=Password cannot be empty +user.password.length.valid=Password length must be between {min} and {max} characters user.password.not.valid=* 5-50 characters user.email.not.valid=Mailbox format error user.mobile.phone.number.not.valid=Phone number format error user.login.success=Login successful user.register.success=Register successful +user.register.save.error=Failed to save user {0}, The registered account already exists +user.register.error=Register failed, please contact system administrator user.notfound=Please login again user.forcelogout=The administrator is forced to exit,please login again user.unknown.error=Unknown error, please login again diff --git a/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties b/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties index 6db4b42c..ee68c98c 100644 --- a/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties +++ b/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties @@ -11,12 +11,18 @@ user.blocked=对不起,您的账号:{0} 已禁用,请联系管理员 role.blocked=角色已封禁,请联系管理员 user.logout.success=退出成功 length.not.valid=长度必须在{min}到{max}个字符之间 +user.username.not.blank=用户名不能为空 user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成,且必须以非数字开头 +user.username.length.valid=账户长度必须在{min}到{max}个字符之间 +user.password.not.blank=用户密码不能为空 +user.password.length.valid=用户密码长度必须在{min}到{max}个字符之间 user.password.not.valid=* 5-50个字符 user.email.not.valid=邮箱格式错误 user.mobile.phone.number.not.valid=手机号格式错误 user.login.success=登录成功 user.register.success=注册成功 +user.register.save.error=保存用户 {0} 失败,注册账号已存在 +user.register.error=注册失败,请联系系统管理人员 user.notfound=请重新登录 user.forcelogout=管理员强制退出,请重新登录 user.unknown.error=未知错误,请重新登录 diff --git a/ruoyi-admin/src/main/resources/logback.xml b/ruoyi-admin/src/main/resources/logback.xml index 856ee2c7..e8d62753 100644 --- a/ruoyi-admin/src/main/resources/logback.xml +++ b/ruoyi-admin/src/main/resources/logback.xml @@ -2,7 +2,7 @@ + value="%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}%n) - %msg%n"/> diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Sensitive.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Sensitive.java index ff17b09d..2ad9777c 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Sensitive.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Sensitive.java @@ -12,6 +12,7 @@ import java.lang.annotation.Target; /** * 数据脱敏注解 + * * @author zhujie */ @Retention(RetentionPolicy.RUNTIME) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/captcha/UnsignedMathGenerator.java b/ruoyi-common/src/main/java/com/ruoyi/common/captcha/UnsignedMathGenerator.java index ec2d6825..7b908a24 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/captcha/UnsignedMathGenerator.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/captcha/UnsignedMathGenerator.java @@ -15,7 +15,7 @@ public class UnsignedMathGenerator implements CodeGenerator { private static final long serialVersionUID = -5514819971774091076L; - private static final String operators = "+-*"; + private static final String OPERATORS = "+-*"; /** * 参与计算数字最大长度 @@ -48,7 +48,7 @@ public class UnsignedMathGenerator implements CodeGenerator { number1 = StringUtils.rightPad(number1, this.numberLength, CharUtil.SPACE); number2 = StringUtils.rightPad(number2, this.numberLength, CharUtil.SPACE); - return number1 + RandomUtil.randomChar(operators) + number2 + '='; + return number1 + RandomUtil.randomChar(OPERATORS) + number2 + '='; } @Override diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java index bcfc677b..8ce7a8c4 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java @@ -2,7 +2,6 @@ package com.ruoyi.common.config; import lombok.Data; import lombok.Getter; -import lombok.experimental.Accessors; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @@ -13,7 +12,6 @@ import org.springframework.stereotype.Component; */ @Data -@Accessors(chain = true) @Component @ConfigurationProperties(prefix = "ruoyi") public class RuoYiConfig { diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelBigNumberConvert.java b/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelBigNumberConvert.java index 690b4791..432ab74e 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelBigNumberConvert.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelBigNumberConvert.java @@ -4,8 +4,9 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import com.alibaba.excel.converters.Converter; import com.alibaba.excel.enums.CellDataTypeEnum; -import com.alibaba.excel.metadata.CellData; import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.metadata.property.ExcelContentProperty; import lombok.extern.slf4j.Slf4j; @@ -31,19 +32,19 @@ public class ExcelBigNumberConvert implements Converter { } @Override - public Long convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { + public Long convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { return Convert.toLong(cellData.getData()); } @Override - public CellData convertToExcelData(Long object, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { + public WriteCellData convertToExcelData(Long object, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { if (ObjectUtil.isNotNull(object)) { String str = Convert.toStr(object); if (str.length() > 15) { - return new CellData<>(str); + return new WriteCellData<>(str); } } - CellData cellData = new CellData<>(new BigDecimal(object)); + WriteCellData cellData = new WriteCellData<>(new BigDecimal(object)); cellData.setType(CellDataTypeEnum.NUMBER); return cellData; } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelDictConvert.java b/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelDictConvert.java index cf612c98..03dad1f8 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelDictConvert.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelDictConvert.java @@ -2,10 +2,12 @@ package com.ruoyi.common.convert; import cn.hutool.core.annotation.AnnotationUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.excel.converters.Converter; import com.alibaba.excel.enums.CellDataTypeEnum; -import com.alibaba.excel.metadata.CellData; import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.metadata.property.ExcelContentProperty; import com.ruoyi.common.annotation.ExcelDictFormat; import com.ruoyi.common.core.service.DictService; @@ -35,7 +37,7 @@ public class ExcelDictConvert implements Converter { } @Override - public Object convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { + public Object convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { ExcelDictFormat anno = getAnnotation(contentProperty.getField()); String type = anno.dictType(); String label = cellData.getStringValue(); @@ -49,9 +51,9 @@ public class ExcelDictConvert implements Converter { } @Override - public CellData convertToExcelData(Object object, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { - if (StringUtils.isNull(object)) { - return new CellData<>(""); + public WriteCellData convertToExcelData(Object object, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { + if (ObjectUtil.isNull(object)) { + return new WriteCellData<>(""); } ExcelDictFormat anno = getAnnotation(contentProperty.getField()); String type = anno.dictType(); @@ -62,7 +64,7 @@ public class ExcelDictConvert implements Converter { } else { label = SpringUtils.getBean(DictService.class).getDictLabel(type, value, anno.separator()); } - return new CellData<>(label); + return new WriteCellData<>(label); } private ExcelDictFormat getAnnotation(Field field) { diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java index 4c5e1977..611cb156 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java @@ -1,8 +1,8 @@ package com.ruoyi.common.core.controller; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.model.LoginUser; -import com.ruoyi.common.utils.LoginUtils; +import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.StringUtils; /** @@ -15,29 +15,29 @@ public class BaseController { /** * 返回成功 */ - public AjaxResult success() { - return AjaxResult.success(); + public R success() { + return R.ok(); } /** * 返回失败消息 */ - public AjaxResult error() { - return AjaxResult.error(); + public R error() { + return R.fail(); } /** * 返回成功消息 */ - public AjaxResult success(String message) { - return AjaxResult.success(message); + public R success(String message) { + return R.ok(message); } /** * 返回失败消息 */ - public AjaxResult error(String message) { - return AjaxResult.error(message); + public R error(String message) { + return R.fail(message); } /** @@ -46,8 +46,8 @@ public class BaseController { * @param rows 影响行数 * @return 操作结果 */ - protected AjaxResult toAjax(int rows) { - return rows > 0 ? AjaxResult.success() : AjaxResult.error(); + protected R toAjax(int rows) { + return rows > 0 ? R.ok() : R.fail(); } /** @@ -56,7 +56,7 @@ public class BaseController { * @param result 结果 * @return 操作结果 */ - protected AjaxResult toAjax(boolean result) { + protected R toAjax(boolean result) { return result ? success() : error(); } @@ -71,27 +71,27 @@ public class BaseController { * 获取用户缓存信息 */ public LoginUser getLoginUser() { - return LoginUtils.getLoginUser(); + return LoginHelper.getLoginUser(); } /** * 获取登录用户id */ public Long getUserId() { - return LoginUtils.getUserId(); + return LoginHelper.getUserId(); } /** * 获取登录部门id */ public Long getDeptId() { - return LoginUtils.getDeptId(); + return LoginHelper.getDeptId(); } /** * 获取登录用户名 */ public String getUsername() { - return LoginUtils.getUsername(); + return LoginHelper.getUsername(); } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java deleted file mode 100644 index 5b8009a2..00000000 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java +++ /dev/null @@ -1,134 +0,0 @@ -package com.ruoyi.common.core.domain; - -import cn.hutool.http.HttpStatus; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; - -/** - * 操作消息提醒 - * - * @author Lion Li - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -@Accessors(chain = true) -@ApiModel("请求响应对象") -public class AjaxResult { - - private static final long serialVersionUID = 1L; - - /** - * 状态码 - */ - @ApiModelProperty("消息状态码") - private int code; - - /** - * 返回内容 - */ - @ApiModelProperty("消息内容") - private String msg; - - /** - * 数据对象 - */ - @ApiModelProperty("数据对象") - private T data; - - /** - * 初始化一个新创建的 R 对象 - * - * @param code 状态码 - * @param msg 返回内容 - */ - public AjaxResult(int code, String msg) { - this.code = code; - this.msg = msg; - } - - /** - * 返回成功消息 - * - * @return 成功消息 - */ - public static AjaxResult success() { - return AjaxResult.success("操作成功"); - } - - /** - * 返回成功数据 - * - * @return 成功消息 - */ - public static AjaxResult success(T data) { - return AjaxResult.success("操作成功", data); - } - - /** - * 返回成功消息 - * - * @param msg 返回内容 - * @return 成功消息 - */ - public static AjaxResult success(String msg) { - return AjaxResult.success(msg, null); - } - - /** - * 返回成功消息 - * - * @param msg 返回内容 - * @param data 数据对象 - * @return 成功消息 - */ - public static AjaxResult success(String msg, T data) { - return new AjaxResult<>(HttpStatus.HTTP_OK, msg, data); - } - - /** - * 返回错误消息 - * - * @return - */ - public static AjaxResult error() { - return AjaxResult.error("操作失败"); - } - - /** - * 返回错误消息 - * - * @param msg 返回内容 - * @return 警告消息 - */ - public static AjaxResult error(String msg) { - return AjaxResult.error(msg, null); - } - - /** - * 返回错误消息 - * - * @param msg 返回内容 - * @param data 数据对象 - * @return 警告消息 - */ - public static AjaxResult error(String msg, T data) { - return new AjaxResult<>(HttpStatus.HTTP_INTERNAL_ERROR, msg, data); - } - - /** - * 返回错误消息 - * - * @param code 状态码 - * @param msg 返回内容 - * @return 警告消息 - */ - public static AjaxResult error(int code, String msg) { - return new AjaxResult<>(code, msg, null); - } - -} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java index 9c7857a5..d1ad296f 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; @@ -18,7 +17,6 @@ import java.util.Map; */ @Data -@Accessors(chain = true) public class BaseEntity implements Serializable { private static final long serialVersionUID = 1L; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/PageQuery.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/PageQuery.java index 5ffd5889..7a61237c 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/PageQuery.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/PageQuery.java @@ -7,7 +7,6 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.sql.SqlUtil; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import lombok.experimental.Accessors; import java.io.Serializable; @@ -18,7 +17,6 @@ import java.io.Serializable; */ @Data -@Accessors(chain = true) public class PageQuery implements Serializable { private static final long serialVersionUID = 1L; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/R.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/R.java new file mode 100644 index 00000000..8fa4a649 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/R.java @@ -0,0 +1,84 @@ +package com.ruoyi.common.core.domain; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 响应信息主体 + * + * @author Lion Li + */ +@Data +@NoArgsConstructor +@ApiModel("请求响应对象") +public class R implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 成功 + */ + public static final int SUCCESS = 200; + + /** + * 失败 + */ + public static final int FAIL = 500; + + @ApiModelProperty("消息状态码") + private int code; + + @ApiModelProperty("消息内容") + private String msg; + + @ApiModelProperty("数据对象") + private T data; + + public static R ok() { + return restResult(null, SUCCESS, null); + } + + public static R ok(T data) { + return restResult(data, SUCCESS, null); + } + + public static R ok(String msg) { + return restResult(null, SUCCESS, msg); + } + + public static R ok(T data, String msg) { + return restResult(data, SUCCESS, msg); + } + + public static R fail() { + return restResult(null, FAIL, null); + } + + public static R fail(String msg) { + return restResult(null, FAIL, msg); + } + + public static R fail(T data) { + return restResult(data, FAIL, null); + } + + public static R fail(T data, String msg) { + return restResult(data, FAIL, msg); + } + + public static R fail(int code, String msg) { + return restResult(null, code, msg); + } + + private static R restResult(T data, int code, String msg) { + R r = new R<>(); + r.setCode(code); + r.setData(data); + r.setMsg(msg); + return r; + } + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeEntity.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeEntity.java index 819e6b72..5e7af739 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeEntity.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeEntity.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; import java.util.ArrayList; import java.util.List; @@ -17,7 +16,6 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = true) -@Accessors(chain = true) public class TreeEntity extends BaseEntity { private static final long serialVersionUID = 1L; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/OperLogDTO.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/OperLogDTO.java index 773858f6..26bf6744 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/OperLogDTO.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/OperLogDTO.java @@ -1,8 +1,6 @@ package com.ruoyi.common.core.domain.dto; import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; @@ -14,8 +12,6 @@ import java.util.Date; */ @Data -@NoArgsConstructor -@Accessors(chain = true) public class OperLogDTO implements Serializable { private static final long serialVersionUID = 1L; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/RoleDTO.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/RoleDTO.java new file mode 100644 index 00000000..e25243f5 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/RoleDTO.java @@ -0,0 +1,38 @@ +package com.ruoyi.common.core.domain.dto; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 角色 + * + * @author Lion Li + */ + +@Data +@NoArgsConstructor +public class RoleDTO implements Serializable { + + /** + * 角色ID + */ + private Long roleId; + + /** + * 角色名称 + */ + private String roleName; + + /** + * 角色权限 + */ + private String roleKey; + + /** + * 数据范围(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限) + */ + private String dataScope; + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/UserOnlineDTO.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/UserOnlineDTO.java index 5eb52806..29ce1d1e 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/UserOnlineDTO.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/UserOnlineDTO.java @@ -1,8 +1,8 @@ package com.ruoyi.common.core.domain.dto; +import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; import java.io.Serializable; @@ -14,7 +14,6 @@ import java.io.Serializable; @Data @NoArgsConstructor -@Accessors(chain = true) public class UserOnlineDTO implements Serializable { private static final long serialVersionUID = 1L; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java index 860f2f2c..46e99368 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java @@ -8,10 +8,10 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; import javax.validation.constraints.Email; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; /** @@ -22,7 +22,6 @@ import javax.validation.constraints.Size; @Data @EqualsAndHashCode(callSuper = true) -@Accessors(chain = true) @TableName("sys_dept") @ApiModel("部门业务对象") public class SysDept extends TreeEntity { @@ -47,8 +46,8 @@ public class SysDept extends TreeEntity { * 显示顺序 */ @ApiModelProperty(value = "显示顺序") - @NotBlank(message = "显示顺序不能为空") - private String orderNum; + @NotNull(message = "显示顺序不能为空") + private Long orderNum; /** * 负责人 diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java index 241aecd8..dc7f0512 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java @@ -12,7 +12,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; @@ -25,7 +24,6 @@ import javax.validation.constraints.Size; @Data @EqualsAndHashCode(callSuper = true) -@Accessors(chain = true) @TableName("sys_dict_data") @ExcelIgnoreUnannotated @ApiModel("字典数据业务对象") diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictType.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictType.java index 702ec09d..082a5bee 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictType.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictType.java @@ -24,7 +24,6 @@ import javax.validation.constraints.Size; @Data @EqualsAndHashCode(callSuper = true) -@Accessors(chain = true) @TableName("sys_dict_type") @ExcelIgnoreUnannotated @ApiModel("字典类型业务对象") diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java index 3febc94b..8eb97d0e 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java @@ -8,9 +8,9 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; /** @@ -21,7 +21,6 @@ import javax.validation.constraints.Size; @Data @EqualsAndHashCode(callSuper = true) -@Accessors(chain = true) @TableName("sys_menu") @ApiModel("菜单权限业务对象") public class SysMenu extends TreeEntity { @@ -45,8 +44,8 @@ public class SysMenu extends TreeEntity { * 显示顺序 */ @ApiModelProperty(value = "显示顺序") - @NotBlank(message = "显示顺序不能为空") - private String orderNum; + @NotNull(message = "显示顺序不能为空") + private Long orderNum; /** * 路由地址 diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java index 3153e41b..aeffc409 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java @@ -13,7 +13,6 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; @@ -27,7 +26,6 @@ import javax.validation.constraints.Size; @Data @NoArgsConstructor @EqualsAndHashCode(callSuper = true) -@Accessors(chain = true) @TableName("sys_role") @ExcelIgnoreUnannotated public class SysRole extends BaseEntity { diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java index 09b82e99..b6f5d17c 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java @@ -12,7 +12,6 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; import javax.validation.constraints.Email; import javax.validation.constraints.NotBlank; @@ -29,7 +28,6 @@ import java.util.List; @Data @NoArgsConstructor @EqualsAndHashCode(callSuper = true) -@Accessors(chain = true) @TableName("sys_user") @ApiModel("用户信息业务对象") public class SysUser extends BaseEntity { @@ -64,6 +62,12 @@ public class SysUser extends BaseEntity { @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符") private String nickName; + /** + * 用户类型(sys_user系统用户) + */ + @ApiModelProperty(value = "用户类型") + private String userType; + /** * 用户邮箱 */ diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java index 4566ee67..289727a2 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java @@ -1,9 +1,12 @@ package com.ruoyi.common.core.domain.model; +import com.ruoyi.common.constant.UserConstants; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; /** * 用户登录对象 @@ -12,25 +15,29 @@ import lombok.experimental.Accessors; */ @Data -@Accessors(chain = true) @ApiModel("用户登录对象") public class LoginBody { /** * 用户名 */ + @NotBlank(message = "{user.username.not.blank}") + @Length(min = UserConstants.USERNAME_MIN_LENGTH, max = UserConstants.USERNAME_MAX_LENGTH, message = "{user.username.length.valid}") @ApiModelProperty(value = "用户名") private String username; /** * 用户密码 */ + @NotBlank(message = "{user.password.not.blank}") + @Length(min = UserConstants.PASSWORD_MIN_LENGTH, max = UserConstants.PASSWORD_MAX_LENGTH, message = "{user.password.length.valid}") @ApiModelProperty(value = "用户密码") private String password; /** * 验证码 */ + @NotBlank(message = "{user.jcaptcha.blank}") @ApiModelProperty(value = "验证码") private String code; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java index 529ac619..cad4f168 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java @@ -1,10 +1,12 @@ package com.ruoyi.common.core.domain.model; +import com.ruoyi.common.core.domain.dto.RoleDTO; +import com.ruoyi.common.helper.LoginHelper; import lombok.Data; import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; import java.io.Serializable; +import java.util.List; import java.util.Set; /** @@ -15,7 +17,6 @@ import java.util.Set; @Data @NoArgsConstructor -@Accessors(chain = true) public class LoginUser implements Serializable { private static final long serialVersionUID = 1L; @@ -30,11 +31,21 @@ public class LoginUser implements Serializable { */ private Long deptId; + /** + * 部门名 + */ + private String deptName; + /** * 用户唯一标识 */ private String token; + /** + * 用户类型 + */ + private String userType; + /** * 登录时间 */ @@ -75,14 +86,31 @@ public class LoginUser implements Serializable { */ private Set rolePermission; - /** - * 昵称 - */ - private String nickName; - /** * 用户名 */ private String username; + /** + * 用户名 + */ + private String nickName; + + /** + * 角色对象 + */ + private List roles; + + /** + * 数据权限 当前角色ID + */ + private Long roleId; + + /** + * 获取登录id + */ + public String getLoginId() { + return userType + LoginHelper.JOIN_CODE + userId; + } + } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java index 7d5f76a6..bd9b84cc 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java @@ -1,13 +1,21 @@ package com.ruoyi.common.core.domain.model; import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; /** * 用户注册对象 * * @author Lion Li */ +@Data +@EqualsAndHashCode(callSuper = true) @ApiModel("用户注册对象") public class RegisterBody extends LoginBody { + @ApiModelProperty(value = "用户类型") + private String userType; + } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java index b2537c18..48353e3e 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java @@ -19,7 +19,6 @@ import java.util.List; @Data @NoArgsConstructor -@Accessors(chain = true) @ApiModel("分页响应对象") public class TableDataInfo implements Serializable { private static final long serialVersionUID = 1L; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/service/UserService.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/UserService.java deleted file mode 100644 index e637f473..00000000 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/service/UserService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.ruoyi.common.core.service; - -import com.ruoyi.common.core.domain.entity.SysUser; - -/** - * 通用 用户业务 - * - * @author Lion Li - */ -public interface UserService { - - /** - * 通过用户名查询用户 - * - * @param userName 用户名 - * @return 用户对象信息 - */ - SysUser selectUserByUserName(String userName); - - /** - * 通过用户ID查询用户 - * - * @param userId 用户ID - * @return 用户对象信息 - */ - SysUser selectUserById(Long userId); - -} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java index 7cf3d5e3..64324652 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java @@ -6,10 +6,10 @@ import lombok.Getter; /** * 数据权限类型 - * + *

* 语法支持 spel 模板表达式 - * - * 内置数据 user 当前用户 内容参考 SysUser + *

+ * 内置数据 user 当前用户 内容参考 LoginUser * 如需扩展数据 可使用 {@link com.ruoyi.common.helper.DataPermissionHelper} 操作 * 内置服务 sdss 系统数据权限服务 内容参考 SysDataScopeService * 如需扩展更多自定义服务 可以参考 sdss 自行编写 @@ -44,7 +44,7 @@ public enum DataScopeType { /** * 仅本人数据权限 */ - SELF("5", " #{#userName} = #{#user.userId} " , " 1 = 0 "); + SELF("5", " #{#userName} = #{#user.userId} ", " 1 = 0 "); private final String code; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserType.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserType.java index 9c3b5319..ec6510d9 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserType.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserType.java @@ -1,11 +1,12 @@ package com.ruoyi.common.enums; +import com.ruoyi.common.utils.StringUtils; import lombok.AllArgsConstructor; import lombok.Getter; /** * 设备类型 - * 针对两套 用户体系 + * 针对多套 用户体系 * * @author Lion Li */ @@ -16,12 +17,21 @@ public enum UserType { /** * pc端 */ - SYS_USER("sys_user:"), + SYS_USER("sys_user"), /** * app端 */ - APP_USER("app_user:"); + APP_USER("app_user"); private final String userType; + + public static UserType getUserType(String str) { + for (UserType value : values()) { + if (StringUtils.contains(str, value.getUserType())) { + return value; + } + } + throw new RuntimeException("'UserType' not found By " + str); + } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/GlobalException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/GlobalException.java index 080785c9..b1fc9c13 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/GlobalException.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/GlobalException.java @@ -49,4 +49,4 @@ public class GlobalException extends RuntimeException { this.message = message; return this; } -} +} \ No newline at end of file diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/ServiceException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/ServiceException.java index 53f41b3b..15ceb5ef 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/ServiceException.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/ServiceException.java @@ -62,4 +62,4 @@ public final class ServiceException extends RuntimeException { this.detailMessage = detailMessage; return this; } -} +} \ No newline at end of file diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/base/BaseException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/base/BaseException.java index 13c0d2fe..dc0b84bf 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/base/BaseException.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/base/BaseException.java @@ -2,7 +2,9 @@ package com.ruoyi.common.exception.base; import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.StringUtils; -import lombok.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; /** * 基础异常 diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java b/ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java index 0e4b2658..8927366e 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java @@ -20,10 +20,10 @@ public class RepeatableFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) - throws IOException, ServletException { + throws IOException, ServletException { ServletRequest requestWrapper = null; if (request instanceof HttpServletRequest - && StringUtils.startsWithIgnoreCase(request.getContentType(), MediaType.APPLICATION_JSON_VALUE)) { + && StringUtils.startsWithIgnoreCase(request.getContentType(), MediaType.APPLICATION_JSON_VALUE)) { requestWrapper = new RepeatedlyRequestWrapper((HttpServletRequest) request, response); } if (null == requestWrapper) { diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/filter/XssFilter.java b/ruoyi-common/src/main/java/com/ruoyi/common/filter/XssFilter.java index f397de1e..72a8f274 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/filter/XssFilter.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/filter/XssFilter.java @@ -33,7 +33,7 @@ public class XssFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) - throws IOException, ServletException { + throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; if (handleExcludeURL(req, resp)) { diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/helper/DataPermissionHelper.java b/ruoyi-common/src/main/java/com/ruoyi/common/helper/DataPermissionHelper.java index 96f5425f..ec4d5676 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/helper/DataPermissionHelper.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/helper/DataPermissionHelper.java @@ -2,6 +2,8 @@ package com.ruoyi.common.helper; import cn.hutool.core.util.ObjectUtil; import com.ruoyi.common.utils.ServletUtils; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; import javax.servlet.http.HttpServletRequest; import java.util.HashMap; @@ -13,6 +15,7 @@ import java.util.Map; * @author Lion Li * @version 3.5.0 */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) @SuppressWarnings("unchecked cast") public class DataPermissionHelper { @@ -24,7 +27,6 @@ public class DataPermissionHelper { } - public static void setVariable(String key, Object value) { Map context = getContext(); context.put(key, value); diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/LoginUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/helper/LoginHelper.java similarity index 53% rename from ruoyi-common/src/main/java/com/ruoyi/common/utils/LoginUtils.java rename to ruoyi-common/src/main/java/com/ruoyi/common/helper/LoginHelper.java index 1fe939a2..1239f55b 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/LoginUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/helper/LoginHelper.java @@ -1,4 +1,4 @@ -package com.ruoyi.common.utils; +package com.ruoyi.common.helper; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.util.ObjectUtil; @@ -6,51 +6,73 @@ import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.enums.DeviceType; import com.ruoyi.common.enums.UserType; import com.ruoyi.common.exception.UtilException; +import com.ruoyi.common.utils.StringUtils; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; /** - * 登录鉴权工具 + * 登录鉴权助手 * 为适配多端登录而封装 * * @author Lion Li */ -public class LoginUtils { +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class LoginHelper { - private final static String LOGIN_USER_KEY = "loginUser"; + public static final String JOIN_CODE = ":"; + public static final String LOGIN_USER_KEY = "loginUser"; + + private static final ThreadLocal LOGIN_CACHE = new ThreadLocal<>(); /** * 登录系统 * 针对两套用户体系 + * * @param loginUser 登录用户信息 */ - public static void login(LoginUser loginUser, UserType userType) { - StpUtil.login(userType.getUserType() + loginUser.getUserId()); + public static void login(LoginUser loginUser) { + LOGIN_CACHE.set(loginUser); + StpUtil.login(loginUser.getLoginId()); setLoginUser(loginUser); } /** * 登录系统 基于 设备类型 * 针对一套用户体系 + * * @param loginUser 登录用户信息 */ - public static void loginByDevice(LoginUser loginUser, UserType userType, DeviceType deviceType) { - StpUtil.login(userType.getUserType() + loginUser.getUserId(), deviceType.getDevice()); + public static void loginByDevice(LoginUser loginUser, DeviceType deviceType) { + LOGIN_CACHE.set(loginUser); + StpUtil.login(loginUser.getLoginId(), deviceType.getDevice()); setLoginUser(loginUser); } /** - * 设置用户数据 + * 设置用户数据(多级缓存) */ public static void setLoginUser(LoginUser loginUser) { StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser); } /** - * 获取用户 - **/ + * 获取用户(多级缓存) + */ public static LoginUser getLoginUser() { + LoginUser loginUser = LOGIN_CACHE.get(); + if (loginUser != null) { + return loginUser; + } return (LoginUser) StpUtil.getTokenSession().get(LOGIN_USER_KEY); } + /** + * 清除一级缓存 防止内存问题 + */ + public static void clearCache() { + LOGIN_CACHE.remove(); + } + /** * 获取用户id */ @@ -58,13 +80,15 @@ public class LoginUtils { LoginUser loginUser = getLoginUser(); if (ObjectUtil.isNull(loginUser)) { String loginId = StpUtil.getLoginIdAsString(); - String userId; - String replace = ""; - if (StringUtils.contains(loginId, UserType.SYS_USER.getUserType())) { - userId = StringUtils.replace(loginId, UserType.SYS_USER.getUserType(), replace); - } else if (StringUtils.contains(loginId, UserType.APP_USER.getUserType())){ - userId = StringUtils.replace(loginId, UserType.APP_USER.getUserType(), replace); - } else { + String userId = null; + for (UserType value : UserType.values()) { + if (StringUtils.contains(loginId, value.getUserType())) { + String[] strs = StringUtils.split(loginId, JOIN_CODE); + // 用户id在总是在最后 + userId = strs[strs.length - 1]; + } + } + if (StringUtils.isBlank(userId)) { throw new UtilException("登录用户: LoginId异常 => " + loginId); } return Long.parseLong(userId); @@ -74,21 +98,21 @@ public class LoginUtils { /** * 获取部门ID - **/ + */ public static Long getDeptId() { return getLoginUser().getDeptId(); } /** * 获取用户账户 - **/ + */ public static String getUsername() { return getLoginUser().getUsername(); } /** - * 获取用户账户 - **/ + * 获取用户昵称 + */ public static String getNickName() { return getLoginUser().getNickName(); } @@ -98,17 +122,7 @@ public class LoginUtils { */ public static UserType getUserType() { String loginId = StpUtil.getLoginIdAsString(); - return getUserType(loginId); - } - - public static UserType getUserType(Object loginId) { - if (StringUtils.contains(loginId.toString(), UserType.SYS_USER.getUserType())) { - return UserType.SYS_USER; - } else if (StringUtils.contains(loginId.toString(), UserType.APP_USER.getUserType())){ - return UserType.APP_USER; - } else { - throw new UtilException("登录用户: LoginId异常 => " + loginId); - } + return UserType.getUserType(loginId); } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/jackson/SensitiveJsonSerializer.java b/ruoyi-common/src/main/java/com/ruoyi/common/jackson/SensitiveJsonSerializer.java index 39038ab9..55c4e6a7 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/jackson/SensitiveJsonSerializer.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/jackson/SensitiveJsonSerializer.java @@ -16,6 +16,7 @@ import java.util.Objects; /** * 数据脱敏json序列化工具 + * * @author Yjoioooo */ public class SensitiveJsonSerializer extends JsonSerializer implements ContextualSerializer { @@ -25,7 +26,7 @@ public class SensitiveJsonSerializer extends JsonSerializer implements C @Override public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException { SensitiveService sensitiveService = SpringUtils.getBean(SensitiveService.class); - if (sensitiveService.isSensitive()){ + if (sensitiveService.isSensitive()) { gen.writeString(value); } else { gen.writeString(strategy.desensitizer().apply(value)); @@ -36,7 +37,7 @@ public class SensitiveJsonSerializer extends JsonSerializer implements C @Override public JsonSerializer createContextual(SerializerProvider prov, BeanProperty property) throws JsonMappingException { Sensitive annotation = property.getAnnotation(Sensitive.class); - if (Objects.nonNull(annotation)&&Objects.equals(String.class, property.getType().getRawClass())) { + if (Objects.nonNull(annotation) && Objects.equals(String.class, property.getType().getRawClass())) { this.strategy = annotation.strategy(); return this; } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/BeanCopyUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/BeanCopyUtils.java index 0bd4a55b..23ace00f 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/BeanCopyUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/BeanCopyUtils.java @@ -13,6 +13,10 @@ import java.util.Map; /** * bean深拷贝工具(基于 cglib 性能优异) + *

+ * 重点 cglib 不支持 拷贝到链式对象 + * 例如: 源对象 拷贝到 目标(链式对象) + * 请区分好`浅拷贝`和`深拷贝`再做使用 * * @author Lion Li */ diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java index bc38eedd..9d1a14cd 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java @@ -28,9 +28,9 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; private static String[] parsePatterns = { - "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", - "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", - "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; + "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", + "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", + "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; /** * 获取当前Date型日期 diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java deleted file mode 100644 index 8fa10f53..00000000 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java +++ /dev/null @@ -1,159 +0,0 @@ -package com.ruoyi.common.utils; - -import cn.hutool.core.collection.CollUtil; -import com.ruoyi.common.constant.Constants; -import com.ruoyi.common.core.domain.entity.SysDictData; -import com.ruoyi.common.utils.redis.RedisUtils; - -import java.util.Collection; -import java.util.List; - -/** - * 字典工具类 - * - * @author ruoyi - * @deprecated 3.5.0 版本删除 迁移至 {@link com.ruoyi.common.core.service.DictService} - */ -@Deprecated -public class DictUtils { - - /** - * 分隔符 - */ - public static final String SEPARATOR = ","; - - /** - * 设置字典缓存 - * - * @param key 参数键 - * @param dictDatas 字典数据列表 - */ - public static void setDictCache(String key, List dictDatas) { - RedisUtils.setCacheObject(getCacheKey(key), dictDatas); - } - - /** - * 获取字典缓存 - * - * @param key 参数键 - * @return dictDatas 字典数据列表 - */ - public static List getDictCache(String key) { - List dictDatas = RedisUtils.getCacheObject(getCacheKey(key)); - if (StringUtils.isNotNull(dictDatas)) { - return dictDatas; - } - return null; - } - - /** - * 根据字典类型和字典值获取字典标签 - * - * @param dictType 字典类型 - * @param dictValue 字典值 - * @return 字典标签 - */ - public static String getDictLabel(String dictType, String dictValue) { - return getDictLabel(dictType, dictValue, SEPARATOR); - } - - /** - * 根据字典类型和字典标签获取字典值 - * - * @param dictType 字典类型 - * @param dictLabel 字典标签 - * @return 字典值 - */ - public static String getDictValue(String dictType, String dictLabel) { - return getDictValue(dictType, dictLabel, SEPARATOR); - } - - /** - * 根据字典类型和字典值获取字典标签 - * - * @param dictType 字典类型 - * @param dictValue 字典值 - * @param separator 分隔符 - * @return 字典标签 - */ - public static String getDictLabel(String dictType, String dictValue, String separator) { - StringBuilder propertyString = new StringBuilder(); - List datas = getDictCache(dictType); - - if (StringUtils.containsAny(dictValue, separator) && CollUtil.isNotEmpty(datas)) { - for (SysDictData dict : datas) { - for (String value : dictValue.split(separator)) { - if (value.equals(dict.getDictValue())) { - propertyString.append(dict.getDictLabel() + separator); - break; - } - } - } - } else { - for (SysDictData dict : datas) { - if (dictValue.equals(dict.getDictValue())) { - return dict.getDictLabel(); - } - } - } - return StringUtils.stripEnd(propertyString.toString(), separator); - } - - /** - * 根据字典类型和字典标签获取字典值 - * - * @param dictType 字典类型 - * @param dictLabel 字典标签 - * @param separator 分隔符 - * @return 字典值 - */ - public static String getDictValue(String dictType, String dictLabel, String separator) { - StringBuilder propertyString = new StringBuilder(); - List datas = getDictCache(dictType); - - if (StringUtils.containsAny(dictLabel, separator) && CollUtil.isNotEmpty(datas)) { - for (SysDictData dict : datas) { - for (String label : dictLabel.split(separator)) { - if (label.equals(dict.getDictLabel())) { - propertyString.append(dict.getDictValue() + separator); - break; - } - } - } - } else { - for (SysDictData dict : datas) { - if (dictLabel.equals(dict.getDictLabel())) { - return dict.getDictValue(); - } - } - } - return StringUtils.stripEnd(propertyString.toString(), separator); - } - - /** - * 删除指定字典缓存 - * - * @param key 字典键 - */ - public static void removeDictCache(String key) { - RedisUtils.deleteObject(getCacheKey(key)); - } - - /** - * 清空字典缓存 - */ - public static void clearDictCache() { - Collection keys = RedisUtils.keys(Constants.SYS_DICT_KEY + "*"); - RedisUtils.deleteObject(keys); - } - - /** - * 设置cache key - * - * @param configKey 参数键 - * @return 缓存键key - */ - public static String getCacheKey(String configKey) { - return Constants.SYS_DICT_KEY + configKey; - } -} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java index 1c01912a..11004be8 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java @@ -1,6 +1,7 @@ package com.ruoyi.common.utils; import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjectUtil; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -28,7 +29,7 @@ public class JsonUtils { } public static String toJsonString(Object object) { - if (StringUtils.isNull(object)) { + if (ObjectUtil.isNull(object)) { return null; } try { diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java index 0b1d3f41..77a484ec 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java @@ -2,15 +2,15 @@ package com.ruoyi.common.utils; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Validator; -import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.ArrayUtil; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import lombok.AccessLevel; import lombok.NoArgsConstructor; import org.springframework.util.AntPathMatcher; -import java.util.*; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; /** * 字符串工具类 @@ -20,16 +20,6 @@ import java.util.*; @NoArgsConstructor(access = AccessLevel.PRIVATE) public class StringUtils extends org.apache.commons.lang3.StringUtils { - /** - * 获取参数不为空值 - * - * @param value defaultValue 要判断的value - * @return value 返回值 - */ - public static T nvl(T value, T defaultValue) { - return ObjectUtil.defaultIfNull(value, defaultValue); - } - /** * 获取参数不为空值 * @@ -40,86 +30,6 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { return StrUtil.blankToDefault(str, defaultValue); } - /** - * * 判断一个Collection是否为空, 包含List,Set,Queue - * - * @param coll 要判断的Collection - * @return true:为空 false:非空 - */ - public static boolean isEmpty(Collection coll) { - return CollUtil.isEmpty(coll); - } - - /** - * * 判断一个Collection是否非空,包含List,Set,Queue - * - * @param coll 要判断的Collection - * @return true:非空 false:空 - */ - public static boolean isNotEmpty(Collection coll) { - return !isEmpty(coll); - } - - /** - * * 判断一个对象数组是否为空 - * - * @param objects 要判断的对象数组 - * * @return true:为空 false:非空 - */ - public static boolean isEmpty(Object[] objects) { - return ArrayUtil.isEmpty(objects); - } - - /** - * * 判断一个对象数组是否非空 - * - * @param objects 要判断的对象数组 - * @return true:非空 false:空 - */ - public static boolean isNotEmpty(Object[] objects) { - return !isEmpty(objects); - } - - /** - * * 判断一个对象是否为空 - * - * @param object 要判断的对象数组 - * * @return true:为空 false:非空 - */ - public static boolean isEmpty(Object object) { - return ObjectUtil.isEmpty(object); - } - - /** - * * 判断一个对象是否非空 - * - * @param object 要判断的对象数组 - * @return true:非空 false:空 - */ - public static boolean isNotEmpty(Object object) { - return !isEmpty(object); - } - - /** - * * 判断一个Map是否为空 - * - * @param map 要判断的Map - * @return true:为空 false:非空 - */ - public static boolean isEmpty(Map map) { - return MapUtil.isEmpty(map); - } - - /** - * * 判断一个Map是否为空 - * - * @param map 要判断的Map - * @return true:非空 false:空 - */ - public static boolean isNotEmpty(Map map) { - return !isEmpty(map); - } - /** * * 判断一个字符串是否为空串 * @@ -140,36 +50,6 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { return !isEmpty(str); } - /** - * * 判断一个对象是否为空 - * - * @param object Object - * @return true:为空 false:非空 - */ - public static boolean isNull(Object object) { - return ObjectUtil.isNull(object); - } - - /** - * * 判断一个对象是否非空 - * - * @param object Object - * @return true:非空 false:空 - */ - public static boolean isNotNull(Object object) { - return !isNull(object); - } - - /** - * * 判断一个对象是否是数组类型(Java基本型别的数组) - * - * @param object 对象 - * @return true:是数组 false:不是数组 - */ - public static boolean isArray(Object object) { - return ArrayUtil.isArray(object); - } - /** * 去空格 */ @@ -325,7 +205,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { * @return 是否匹配 */ public static boolean matches(String str, List strs) { - if (isEmpty(str) || isEmpty(strs)) { + if (isEmpty(str) || CollUtil.isEmpty(strs)) { return false; } for (String pattern : strs) { @@ -351,8 +231,4 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { return matcher.match(pattern, url); } - @SuppressWarnings("unchecked") - public static T cast(Object obj) { - return (T) obj; - } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java index 5118d516..61f26005 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java @@ -29,11 +29,11 @@ public class FileUtils extends FileUtil { StringBuilder contentDispositionValue = new StringBuilder(); contentDispositionValue.append("attachment; filename=") - .append(percentEncodedFileName) - .append(";") - .append("filename*=") - .append("utf-8''") - .append(percentEncodedFileName); + .append(percentEncodedFileName) + .append(";") + .append("filename*=") + .append("utf-8''") + .append(percentEncodedFileName); response.addHeader("Access-Control-Allow-Origin", "*"); response.addHeader("Access-Control-Expose-Headers", "Content-Disposition,download-filename"); diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java index b519226b..1d612305 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java @@ -41,9 +41,9 @@ public class AddressUtils { if (RuoYiConfig.isAddressEnabled()) { try { String rspStr = HttpUtil.createGet(IP_URL) - .body("ip=" + ip + "&json=true", Constants.GBK) - .execute() - .body(); + .body("ip=" + ip + "&json=true", Constants.GBK) + .execute() + .body(); if (StringUtils.isEmpty(rspStr)) { log.error("获取地理位置异常 {}", ip); return UNKNOWN; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/RedisUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/RedisUtils.java index 49ec4ed3..5a15d46b 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/RedisUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/RedisUtils.java @@ -130,7 +130,7 @@ public class RedisUtils { /** * 注册对象监听器 - * + *

* key 监听器需开启 `notify-keyspace-events` 等 redis 相关配置 * * @param key 缓存的键值 @@ -223,7 +223,7 @@ public class RedisUtils { /** * 注册List监听器 - * + *

* key 监听器需开启 `notify-keyspace-events` 等 redis 相关配置 * * @param key 缓存的键值 @@ -259,7 +259,7 @@ public class RedisUtils { /** * 注册Set监听器 - * + *

* key 监听器需开启 `notify-keyspace-events` 等 redis 相关配置 * * @param key 缓存的键值 @@ -296,7 +296,7 @@ public class RedisUtils { /** * 注册Map监听器 - * + *

* key 监听器需开启 `notify-keyspace-events` 等 redis 相关配置 * * @param key 缓存的键值 diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java index 5829a1e9..78914961 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java @@ -16,7 +16,7 @@ public class SqlUtil { /** * 定义常用的 sql关键字 */ - public static String SQL_REGEX = "select |insert |delete |update |drop |count |exec |chr |mid |master |truncate |char |and |declare "; + public static final String SQL_REGEX = "select |insert |delete |update |drop |count |exec |chr |mid |master |truncate |char |and |declare "; /** * 仅支持字母、数字、下划线、空格、逗号、小数点(支持多个字段排序) diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisCacheController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisCacheController.java index 775779ac..98cca18c 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisCacheController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisCacheController.java @@ -1,11 +1,10 @@ package com.ruoyi.demo.controller; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.utils.redis.RedisUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CachePut; import org.springframework.cache.annotation.Cacheable; @@ -23,7 +22,7 @@ import java.util.concurrent.TimeUnit; // 类级别 缓存统一配置 //@CacheConfig(cacheNames = "redissonCacheMap") @Api(value = "spring-cache 演示案例", tags = {"spring-cache 演示案例"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/demo/cache") public class RedisCacheController { @@ -45,8 +44,8 @@ public class RedisCacheController { @ApiOperation("测试 @Cacheable") @Cacheable(cacheNames = "redissonCacheMap", key = "#key", condition = "#key != null") @GetMapping("/test1") - public AjaxResult test1(String key, String value) { - return AjaxResult.success("操作成功", value); + public R test1(String key, String value) { + return R.ok("操作成功", value); } /** @@ -60,8 +59,8 @@ public class RedisCacheController { @ApiOperation("测试 @CachePut") @CachePut(cacheNames = "redissonCacheMap", key = "#key", condition = "#key != null") @GetMapping("/test2") - public AjaxResult test2(String key, String value) { - return AjaxResult.success("操作成功", value); + public R test2(String key, String value) { + return R.ok("操作成功", value); } /** @@ -75,8 +74,8 @@ public class RedisCacheController { @ApiOperation("测试 @CacheEvict") @CacheEvict(cacheNames = "redissonCacheMap", key = "#key", condition = "#key != null") @GetMapping("/test3") - public AjaxResult test3(String key, String value) { - return AjaxResult.success("操作成功", value); + public R test3(String key, String value) { + return R.ok("操作成功", value); } /** @@ -86,7 +85,7 @@ public class RedisCacheController { */ @ApiOperation("测试设置过期时间") @GetMapping("/test6") - public AjaxResult test6(String key, String value) { + public R test6(String key, String value) { RedisUtils.setCacheObject(key, value); boolean flag = RedisUtils.expire(key, 10, TimeUnit.SECONDS); System.out.println("***********" + flag); @@ -96,7 +95,7 @@ public class RedisCacheController { e.printStackTrace(); } Object obj = RedisUtils.getCacheObject(key); - return AjaxResult.success("操作成功", value.equals(obj)); + return R.ok(value.equals(obj)); } } diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java index 94ad3c3a..c31925a5 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java @@ -4,7 +4,7 @@ import com.baomidou.lock.LockInfo; import com.baomidou.lock.LockTemplate; import com.baomidou.lock.annotation.Lock4j; import com.baomidou.lock.executor.RedissonLockExecutor; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -36,7 +36,7 @@ public class RedisLockController { @ApiOperation("测试lock4j 注解") @Lock4j(keys = {"#key"}) @GetMapping("/testLock4j") - public AjaxResult testLock4j(String key, String value) { + public R testLock4j(String key, String value) { System.out.println("start:" + key + ",time:" + LocalTime.now().toString()); try { Thread.sleep(10000); @@ -44,15 +44,15 @@ public class RedisLockController { e.printStackTrace(); } System.out.println("end :" + key + ",time:" + LocalTime.now().toString()); - return AjaxResult.success("操作成功", value); + return R.ok("操作成功", value); } /** * 测试lock4j 工具 */ @ApiOperation("测试lock4j 工具") - @GetMapping("/testLock4jLockTemaplate") - public AjaxResult testLock4jLockTemaplate(String key, String value) { + @GetMapping("/testLock4jLockTemplate") + public R testLock4jLockTemplate(String key, String value) { final LockInfo lockInfo = lockTemplate.lock(key, 30000L, 5000L, RedissonLockExecutor.class); if (null == lockInfo) { throw new RuntimeException("业务处理中,请稍后再试"); @@ -70,7 +70,7 @@ public class RedisLockController { lockTemplate.releaseLock(lockInfo); } //结束 - return AjaxResult.success("操作成功", value); + return R.ok("操作成功", value); } } diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisPubSubController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisPubSubController.java index 5dcb896c..99c3131b 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisPubSubController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisPubSubController.java @@ -1,12 +1,11 @@ package com.ruoyi.demo.controller; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.utils.redis.RedisUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -17,27 +16,27 @@ import org.springframework.web.bind.annotation.RestController; * @author Lion Li */ @Api(value = "Redis发布订阅 演示案例", tags = {"Redis发布订阅"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/demo/redis/pubsub") public class RedisPubSubController { @ApiOperation("发布消息") @GetMapping("/pub") - public AjaxResult pub(@ApiParam("通道Key") String key, @ApiParam("发送内容") String value) { + public R pub(@ApiParam("通道Key") String key, @ApiParam("发送内容") String value) { RedisUtils.publish(key, value, consumer -> { System.out.println("发布通道 => " + key + ", 发送值 => " + value); }); - return AjaxResult.success("操作成功"); + return R.ok("操作成功"); } @ApiOperation("订阅消息") @GetMapping("/sub") - public AjaxResult sub(@ApiParam("通道Key") String key) { + public R sub(@ApiParam("通道Key") String key) { RedisUtils.subscribe(key, String.class, msg -> { System.out.println("订阅通道 => " + key + ", 接收值 => " + msg); }); - return AjaxResult.success("操作成功"); + return R.ok("操作成功"); } } diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisRateLimiterController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisRateLimiterController.java index 1eeab611..c7f48e51 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisRateLimiterController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisRateLimiterController.java @@ -1,7 +1,7 @@ package com.ruoyi.demo.controller; import com.ruoyi.common.annotation.RateLimiter; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.LimitType; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -29,8 +29,8 @@ public class RedisRateLimiterController { @ApiOperation("测试全局限流") @RateLimiter(count = 2, time = 10) @GetMapping("/test") - public AjaxResult test(String value) { - return AjaxResult.success("操作成功", value); + public R test(String value) { + return R.ok("操作成功", value); } /** @@ -40,8 +40,8 @@ public class RedisRateLimiterController { @ApiOperation("测试请求IP限流") @RateLimiter(count = 2, time = 10, limitType = LimitType.IP) @GetMapping("/testip") - public AjaxResult testip(String value) { - return AjaxResult.success("操作成功", value); + public R testip(String value) { + return R.ok("操作成功", value); } /** @@ -51,8 +51,8 @@ public class RedisRateLimiterController { @ApiOperation("测试集群实例限流") @RateLimiter(count = 2, time = 10, limitType = LimitType.CLUSTER) @GetMapping("/testcluster") - public AjaxResult testcluster(String value) { - return AjaxResult.success("操作成功", value); + public R testcluster(String value) { + return R.ok("操作成功", value); } } diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/Swagger3DemoController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/Swagger3DemoController.java index 6b73d64a..b0f0b3bc 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/Swagger3DemoController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/Swagger3DemoController.java @@ -1,6 +1,6 @@ package com.ruoyi.demo.controller; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -31,8 +31,8 @@ public class Swagger3DemoController { @ApiImplicitParam(name = "file", value = "文件", dataType = "java.io.File", required = true), }) @PostMapping(value = "/upload") - public AjaxResult upload(@RequestPart("file") MultipartFile file) { - return AjaxResult.success("操作成功", file.getOriginalFilename()); + public R upload(@RequestPart("file") MultipartFile file) { + return R.ok("操作成功", file.getOriginalFilename()); } } diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestBatchController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestBatchController.java index a9b4dbdf..1bb9d9fa 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestBatchController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestBatchController.java @@ -2,13 +2,12 @@ package com.ruoyi.demo.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.demo.domain.TestDemo; import com.ruoyi.demo.mapper.TestDemoMapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -24,7 +23,7 @@ import java.util.List; * @date 2021-05-30 */ @Api(value = "测试批量方法", tags = {"测试批量方法"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/demo/batch") public class TestBatchController extends BaseController { @@ -36,37 +35,45 @@ public class TestBatchController extends BaseController { /** * 新增批量方法 可完美替代 saveBatch 秒级插入上万数据 (对mysql负荷较大) - * + *

* 3.5.0 版本 增加 rewriteBatchedStatements=true 批处理参数 使 MP 原生批处理可以达到同样的速度 */ @ApiOperation(value = "新增批量方法") @PostMapping("/add") // @DS("slave") - public AjaxResult add() { + public R add() { List list = new ArrayList<>(); for (int i = 0; i < 1000; i++) { - list.add(new TestDemo().setOrderNum(-1L).setTestKey("批量新增").setValue("测试新增")); + TestDemo testDemo = new TestDemo(); + testDemo.setOrderNum(-1L); + testDemo.setTestKey("批量新增"); + testDemo.setValue("测试新增"); + list.add(testDemo); } return toAjax(testDemoMapper.insertBatch(list) ? 1 : 0); } /** * 新增或更新 可完美替代 saveOrUpdateBatch 高性能 - * + *

* 3.5.0 版本 增加 rewriteBatchedStatements=true 批处理参数 使 MP 原生批处理可以达到同样的速度 */ @ApiOperation(value = "新增或更新批量方法") @PostMapping("/addOrUpdate") // @DS("slave") - public AjaxResult addOrUpdate() { + public R addOrUpdate() { List list = new ArrayList<>(); for (int i = 0; i < 1000; i++) { - list.add(new TestDemo().setOrderNum(-1L).setTestKey("批量新增").setValue("测试新增")); - } + TestDemo testDemo = new TestDemo(); + testDemo.setOrderNum(-1L); + testDemo.setTestKey("批量新增"); + testDemo.setValue("测试新增"); + list.add(testDemo); } testDemoMapper.insertBatch(list); for (int i = 0; i < list.size(); i++) { TestDemo testDemo = list.get(i); - testDemo.setTestKey("批量新增或修改").setValue("批量新增或修改"); + testDemo.setTestKey("批量新增或修改"); + testDemo.setValue("批量新增或修改"); if (i % 2 == 0) { testDemo.setId(null); } @@ -80,7 +87,7 @@ public class TestBatchController extends BaseController { @ApiOperation(value = "删除批量方法") @DeleteMapping() // @DS("slave") - public AjaxResult remove() { + public R remove() { return toAjax(testDemoMapper.delete(new LambdaQueryWrapper() .eq(TestDemo::getOrderNum, -1L))); } diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java index 837d1482..593f22ad 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java @@ -5,15 +5,15 @@ import cn.hutool.core.bean.BeanUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.core.validate.QueryGroup; import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.common.utils.ValidatorUtils; import com.ruoyi.common.excel.ExcelResult; +import com.ruoyi.common.utils.ValidatorUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.demo.domain.TestDemo; import com.ruoyi.demo.domain.bo.TestDemoBo; @@ -22,7 +22,6 @@ import com.ruoyi.demo.domain.vo.TestDemoVo; import com.ruoyi.demo.service.ITestDemoService; import io.swagger.annotations.*; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -42,7 +41,7 @@ import java.util.concurrent.TimeUnit; */ @Validated @Api(value = "测试单表控制器", tags = {"测试单表管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/demo/demo") public class TestDemoController extends BaseController { @@ -76,12 +75,12 @@ public class TestDemoController extends BaseController { @Log(title = "测试单表", businessType = BusinessType.IMPORT) @SaCheckPermission("demo:demo:import") @PostMapping("/importData") - public AjaxResult importData(@RequestPart("file") MultipartFile file) throws Exception { + public R importData(@RequestPart("file") MultipartFile file) throws Exception { ExcelResult excelResult = ExcelUtil.importExcel(file.getInputStream(), TestDemoImportVo.class, true); List volist = excelResult.getList(); List list = BeanUtil.copyToList(volist, TestDemo.class); iTestDemoService.saveBatch(list); - return AjaxResult.success(excelResult.getAnalysis()); + return R.ok(excelResult.getAnalysis()); } /** @@ -106,10 +105,10 @@ public class TestDemoController extends BaseController { @ApiOperation("获取测试单表详细信息") @SaCheckPermission("demo:demo:query") @GetMapping("/{id}") - public AjaxResult getInfo(@ApiParam("测试ID") + public R getInfo(@ApiParam("测试ID") @NotNull(message = "主键不能为空") @PathVariable("id") Long id) { - return AjaxResult.success(iTestDemoService.queryById(id)); + return R.ok(iTestDemoService.queryById(id)); } /** @@ -120,7 +119,7 @@ public class TestDemoController extends BaseController { @Log(title = "测试单表", businessType = BusinessType.INSERT) @RepeatSubmit(interval = 2, timeUnit = TimeUnit.SECONDS, message = "不允许重复提交") @PostMapping() - public AjaxResult add(@RequestBody TestDemoBo bo) { + public R add(@RequestBody TestDemoBo bo) { // 使用校验工具对标 @Validated(AddGroup.class) 注解 // 用于在非 Controller 的地方校验对象 ValidatorUtils.validate(bo, AddGroup.class); @@ -135,7 +134,7 @@ public class TestDemoController extends BaseController { @Log(title = "测试单表", businessType = BusinessType.UPDATE) @RepeatSubmit @PutMapping() - public AjaxResult edit(@Validated(EditGroup.class) @RequestBody TestDemoBo bo) { + public R edit(@Validated(EditGroup.class) @RequestBody TestDemoBo bo) { return toAjax(iTestDemoService.updateByBo(bo) ? 1 : 0); } @@ -144,9 +143,9 @@ public class TestDemoController extends BaseController { */ @ApiOperation("删除测试单表") @SaCheckPermission("demo:demo:remove") - @Log(title = "测试单表" , businessType = BusinessType.DELETE) + @Log(title = "测试单表", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") - public AjaxResult remove(@ApiParam("测试ID串") + public R remove(@ApiParam("测试ID串") @NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { return toAjax(iTestDemoService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0); diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestI18nController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestI18nController.java index f5688821..9b3bffc0 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestI18nController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestI18nController.java @@ -1,6 +1,6 @@ package com.ruoyi.demo.controller; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.utils.MessageUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -35,8 +35,8 @@ public class TestI18nController { */ @ApiOperation("通过code获取国际化内容") @GetMapping() - public AjaxResult get(@ApiParam("国际化code") String code) { - return AjaxResult.success(MessageUtils.message(code)); + public R get(@ApiParam("国际化code") String code) { + return R.ok(MessageUtils.message(code)); } /** @@ -47,8 +47,8 @@ public class TestI18nController { */ @ApiOperation("Validator 校验国际化") @GetMapping("/test1") - public AjaxResult test1(@NotBlank(message = "{not.null}") String str) { - return AjaxResult.success(str); + public R test1(@NotBlank(message = "{not.null}") String str) { + return R.ok(str); } /** @@ -59,8 +59,8 @@ public class TestI18nController { */ @ApiOperation("Bean 校验国际化") @GetMapping("/test2") - public AjaxResult test2(@Validated TestI18nBo bo) { - return AjaxResult.success(bo); + public R test2(@Validated TestI18nBo bo) { + return R.ok(bo); } @Data diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestSensitiveController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestSensitiveController.java index 3c6d23ec..1f34f9cf 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestSensitiveController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestSensitiveController.java @@ -2,25 +2,24 @@ package com.ruoyi.demo.controller; import com.ruoyi.common.annotation.Sensitive; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.SensitiveStrategy; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.Data; -import lombok.experimental.Accessors; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 测试数据脱敏控制器 - * + *

* 默认管理员不过滤 * 需自行根据业务重写实现 * - * @see com.ruoyi.common.core.service.SensitiveService * @author Lion Li * @version 3.6.0 + * @see com.ruoyi.common.core.service.SensitiveService */ @Api(value = "测试数据脱敏控制器", tags = {"测试数据脱敏管理"}) @RestController @@ -32,18 +31,17 @@ public class TestSensitiveController extends BaseController { */ @ApiOperation("查询测试单表列表") @GetMapping("/test") - public AjaxResult test() { - TestSensitive testSensitive = new TestSensitive() - .setIdCard("210397198608215431") - .setPhone("17640125371") - .setAddress("北京市朝阳区某某四合院1203室") - .setEmail("17640125371@163.com") - .setBankCard("6226456952351452853"); - return AjaxResult.success(testSensitive); + public R test() { + TestSensitive testSensitive = new TestSensitive(); + testSensitive.setIdCard("210397198608215431"); + testSensitive.setPhone("17640125371"); + testSensitive.setAddress("北京市朝阳区某某四合院1203室"); + testSensitive.setEmail("17640125371@163.com"); + testSensitive.setBankCard("6226456952351452853"); + return R.ok(testSensitive); } @Data - @Accessors(chain = true) static class TestSensitive { /** diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestTreeController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestTreeController.java index f0231bb2..64f36c94 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestTreeController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestTreeController.java @@ -4,7 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.core.validate.QueryGroup; @@ -17,7 +17,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -35,7 +34,7 @@ import java.util.List; */ @Validated @Api(value = "测试树表控制器", tags = {"测试树表管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/demo/tree") public class TestTreeController extends BaseController { @@ -48,9 +47,9 @@ public class TestTreeController extends BaseController { @ApiOperation("查询测试树表列表") @SaCheckPermission("demo:tree:list") @GetMapping("/list") - public AjaxResult> list(@Validated(QueryGroup.class) TestTreeBo bo) { + public R> list(@Validated(QueryGroup.class) TestTreeBo bo) { List list = iTestTreeService.queryList(bo); - return AjaxResult.success(list); + return R.ok(list); } /** @@ -71,10 +70,10 @@ public class TestTreeController extends BaseController { @ApiOperation("获取测试树表详细信息") @SaCheckPermission("demo:tree:query") @GetMapping("/{id}") - public AjaxResult getInfo(@ApiParam("测试树ID") + public R getInfo(@ApiParam("测试树ID") @NotNull(message = "主键不能为空") @PathVariable("id") Long id) { - return AjaxResult.success(iTestTreeService.queryById(id)); + return R.ok(iTestTreeService.queryById(id)); } /** @@ -85,7 +84,7 @@ public class TestTreeController extends BaseController { @Log(title = "测试树表", businessType = BusinessType.INSERT) @RepeatSubmit @PostMapping() - public AjaxResult add(@Validated(AddGroup.class) @RequestBody TestTreeBo bo) { + public R add(@Validated(AddGroup.class) @RequestBody TestTreeBo bo) { return toAjax(iTestTreeService.insertByBo(bo) ? 1 : 0); } @@ -97,7 +96,7 @@ public class TestTreeController extends BaseController { @Log(title = "测试树表", businessType = BusinessType.UPDATE) @RepeatSubmit @PutMapping() - public AjaxResult edit(@Validated(EditGroup.class) @RequestBody TestTreeBo bo) { + public R edit(@Validated(EditGroup.class) @RequestBody TestTreeBo bo) { return toAjax(iTestTreeService.updateByBo(bo) ? 1 : 0); } @@ -106,9 +105,9 @@ public class TestTreeController extends BaseController { */ @ApiOperation("删除测试树表") @SaCheckPermission("demo:tree:remove") - @Log(title = "测试树表" , businessType = BusinessType.DELETE) + @Log(title = "测试树表", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") - public AjaxResult remove(@ApiParam("测试树ID串") + public R remove(@ApiParam("测试树ID串") @NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { return toAjax(iTestTreeService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0); diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/BoundedQueueController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/BoundedQueueController.java index 9be47a1d..532c499e 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/BoundedQueueController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/BoundedQueueController.java @@ -1,13 +1,12 @@ package com.ruoyi.demo.controller.queue; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.utils.redis.QueueUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -25,7 +24,7 @@ import org.springframework.web.bind.annotation.RestController; */ @Slf4j @Api(value = "有界队列 演示案例", tags = {"有界队列"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/demo/queue/bounded") public class BoundedQueueController { @@ -33,7 +32,7 @@ public class BoundedQueueController { @ApiOperation("添加队列数据") @GetMapping("/add") - public AjaxResult add(@ApiParam("队列名") String queueName, + public R add(@ApiParam("队列名") String queueName, @ApiParam("容量") int capacity) { // 用完了一定要销毁 否则会一直存在 boolean b = QueueUtils.destroyBoundedQueueObject(queueName); @@ -43,7 +42,7 @@ public class BoundedQueueController { log.info("通道: {} , 设置容量: {}", queueName, capacity); } else { log.info("通道: {} , 设置容量失败", queueName); - return AjaxResult.error("操作失败"); + return R.fail("操作失败"); } for (int i = 0; i < 11; i++) { String data = "data-" + i; @@ -54,30 +53,30 @@ public class BoundedQueueController { log.info("通道: {} , 发送数据: {}", queueName, data); } } - return AjaxResult.success("操作成功"); + return R.ok("操作成功"); } @ApiOperation("删除队列数据") @GetMapping("/remove") - public AjaxResult remove(@ApiParam("队列名") String queueName) { + public R remove(@ApiParam("队列名") String queueName) { String data = "data-" + 5; if (QueueUtils.removeBoundedQueueObject(queueName, data)) { log.info("通道: {} , 删除数据: {}", queueName, data); } else { - return AjaxResult.error("操作失败"); + return R.fail("操作失败"); } - return AjaxResult.success("操作成功"); + return R.ok("操作成功"); } @ApiOperation("获取队列数据") @GetMapping("/get") - public AjaxResult get(@ApiParam("队列名") String queueName) { + public R get(@ApiParam("队列名") String queueName) { String data; do { data = QueueUtils.getBoundedQueueObject(queueName); log.info("通道: {} , 获取数据: {}", queueName, data); } while (data != null); - return AjaxResult.success("操作成功"); + return R.ok("操作成功"); } } diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/DelayedQueueController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/DelayedQueueController.java index f81765b0..f8777533 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/DelayedQueueController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/DelayedQueueController.java @@ -1,13 +1,12 @@ package com.ruoyi.demo.controller.queue; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.utils.redis.QueueUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -28,52 +27,52 @@ import java.util.concurrent.TimeUnit; */ @Slf4j @Api(value = "延迟队列 演示案例", tags = {"延迟队列"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/demo/queue/delayed") public class DelayedQueueController { @ApiOperation("订阅队列") @GetMapping("/subscribe") - public AjaxResult subscribe(@ApiParam("队列名") String queueName) { + public R subscribe(@ApiParam("队列名") String queueName) { log.info("通道: {} 监听中......", queueName); // 项目初始化设置一次即可 QueueUtils.subscribeBlockingQueue(queueName, (String orderNum) -> { // 观察接收时间 log.info("通道: {}, 收到数据: {}", queueName, orderNum); }); - return AjaxResult.success("操作成功"); + return R.ok("操作成功"); } @ApiOperation("添加队列数据") @GetMapping("/add") - public AjaxResult add(@ApiParam("队列名") String queueName, + public R add(@ApiParam("队列名") String queueName, @ApiParam("订单号") String orderNum, @ApiParam("延迟时间(秒)") Long time) { QueueUtils.addDelayedQueueObject(queueName, orderNum, time, TimeUnit.SECONDS); // 观察发送时间 log.info("通道: {} , 发送数据: {}", queueName, orderNum); - return AjaxResult.success("操作成功"); + return R.ok("操作成功"); } @ApiOperation("删除队列数据") @GetMapping("/remove") - public AjaxResult remove(@ApiParam("队列名") String queueName, + public R remove(@ApiParam("队列名") String queueName, @ApiParam("订单号") String orderNum) { if (QueueUtils.removeDelayedQueueObject(queueName, orderNum)) { log.info("通道: {} , 删除数据: {}", queueName, orderNum); } else { - return AjaxResult.error("操作失败"); + return R.fail("操作失败"); } - return AjaxResult.success("操作成功"); + return R.ok("操作成功"); } @ApiOperation("销毁队列") @GetMapping("/destroy") - public AjaxResult destroy(@ApiParam("队列名") String queueName) { + public R destroy(@ApiParam("队列名") String queueName) { // 用完了一定要销毁 否则会一直存在 QueueUtils.destroyDelayedQueue(queueName); - return AjaxResult.success("操作成功"); + return R.ok("操作成功"); } } diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityDemo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityDemo.java index 08576904..80f1b115 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityDemo.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityDemo.java @@ -2,7 +2,6 @@ package com.ruoyi.demo.controller.queue; import lombok.Data; import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; /** * 实体类 注意不允许使用内部类 否则会找不到类 @@ -11,7 +10,6 @@ import lombok.experimental.Accessors; * @version 3.6.0 */ @Data -@Accessors(chain = true) @NoArgsConstructor public class PriorityDemo { private String name; diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityQueueController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityQueueController.java index 130c1f04..baec1844 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityQueueController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityQueueController.java @@ -1,14 +1,13 @@ package com.ruoyi.demo.controller.queue; import cn.hutool.core.util.RandomUtil; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.utils.redis.QueueUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -26,14 +25,14 @@ import org.springframework.web.bind.annotation.RestController; */ @Slf4j @Api(value = "优先队列 演示案例", tags = {"优先队列"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/demo/queue/priority") public class PriorityQueueController { @ApiOperation("添加队列数据") @GetMapping("/add") - public AjaxResult add(@ApiParam("队列名") String queueName) { + public R add(@ApiParam("队列名") String queueName) { // 用完了一定要销毁 否则会一直存在 boolean b = QueueUtils.destroyPriorityQueueObject(queueName); log.info("通道: {} , 删除: {}", queueName, b); @@ -43,43 +42,47 @@ public class PriorityQueueController { log.info("通道: {} , 设置比较器成功", queueName); } else { log.info("通道: {} , 设置比较器失败", queueName); - return AjaxResult.error("操作失败"); + return R.fail("操作失败"); } for (int i = 0; i < 10; i++) { int randomNum = RandomUtil.randomInt(10); - PriorityDemo data = new PriorityDemo().setName("data-" + i).setOrderNum(randomNum); + PriorityDemo data = new PriorityDemo(); + data.setName("data-" + i); + data.setOrderNum(randomNum); if (QueueUtils.addPriorityQueueObject(queueName, data)) { log.info("通道: {} , 发送数据: {}", queueName, data); } else { log.info("通道: {} , 发送数据: {}, 发送失败", queueName, data); } } - return AjaxResult.success("操作成功"); + return R.ok("操作成功"); } @ApiOperation("删除队列数据") @GetMapping("/remove") - public AjaxResult remove(@ApiParam("队列名") String queueName, + public R remove(@ApiParam("队列名") String queueName, @ApiParam("对象名") String name, @ApiParam("排序号") Integer orderNum) { - PriorityDemo data = new PriorityDemo().setName(name).setOrderNum(orderNum); + PriorityDemo data = new PriorityDemo(); + data.setName(name); + data.setOrderNum(orderNum); if (QueueUtils.removePriorityQueueObject(queueName, data)) { log.info("通道: {} , 删除数据: {}", queueName, data); } else { - return AjaxResult.error("操作失败"); + return R.fail("操作失败"); } - return AjaxResult.success("操作成功"); + return R.ok("操作成功"); } @ApiOperation("获取队列数据") @GetMapping("/get") - public AjaxResult get(@ApiParam("队列名") String queueName) { + public R get(@ApiParam("队列名") String queueName) { PriorityDemo data; do { data = QueueUtils.getPriorityQueueObject(queueName); log.info("通道: {} , 获取数据: {}", queueName, data); } while (data != null); - return AjaxResult.success("操作成功"); + return R.ok("操作成功"); } } diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestDemo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestDemo.java index f36ae2b3..c079d122 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestDemo.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestDemo.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.*; import com.ruoyi.common.core.domain.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; /** * 测试单表对象 test_demo @@ -14,7 +13,6 @@ import lombok.experimental.Accessors; */ @Data @EqualsAndHashCode(callSuper = true) -@Accessors(chain = true) @TableName("test_demo") public class TestDemo extends BaseEntity { diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestTree.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestTree.java index 7459362f..1ca4a7ad 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestTree.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestTree.java @@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.annotation.Version; import com.ruoyi.common.core.domain.TreeEntity; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; /** * 测试树表对象 test_tree @@ -17,7 +16,6 @@ import lombok.experimental.Accessors; */ @Data @EqualsAndHashCode(callSuper = true) -@Accessors(chain = true) @TableName("test_tree") public class TestTree extends TreeEntity { diff --git a/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application-dev.yml b/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application-dev.yml index 829314b4..0b10bbd7 100644 --- a/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application-dev.yml +++ b/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application-dev.yml @@ -9,6 +9,6 @@ spring: # 设置 Spring Boot Admin Server 地址 url: http://localhost:9090/admin instance: - prefer-ip: true # 注册实例时,优先使用 IP + service-host-type: IP username: ruoyi password: 123456 diff --git a/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application-prod.yml b/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application-prod.yml index e8cac136..2e020390 100644 --- a/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application-prod.yml +++ b/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application-prod.yml @@ -9,6 +9,6 @@ spring: # 设置 Spring Boot Admin Server 地址 url: http://172.30.0.90:9090/admin instance: - prefer-ip: true # 注册实例时,优先使用 IP + service-host-type: IP username: ruoyi password: 123456 diff --git a/ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/application-dev.yml b/ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/application-dev.yml index 540a3237..09ed519f 100644 --- a/ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/application-dev.yml +++ b/ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/application-dev.yml @@ -9,7 +9,7 @@ spring: # 设置 Spring Boot Admin Server 地址 url: http://localhost:9090/admin instance: - prefer-ip: true # 注册实例时,优先使用 IP + service-host-type: IP username: ruoyi password: 123456 diff --git a/ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/application-prod.yml b/ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/application-prod.yml index bcec9d82..401f60af 100644 --- a/ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/application-prod.yml +++ b/ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/application-prod.yml @@ -9,7 +9,7 @@ spring: # 设置 Spring Boot Admin Server 地址 url: http://172.30.0.90:9090/admin instance: - prefer-ip: true # 注册实例时,优先使用 IP + service-host-type: IP username: ruoyi password: 123456 diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java index e7aa9099..551a1ece 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java @@ -1,12 +1,13 @@ package com.ruoyi.framework.aspectj; +import cn.hutool.core.util.ObjectUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.domain.dto.OperLogDTO; import com.ruoyi.common.core.service.OperLogService; import com.ruoyi.common.enums.BusinessStatus; import com.ruoyi.common.enums.HttpMethod; +import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.JsonUtils; -import com.ruoyi.common.utils.LoginUtils; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.spring.SpringUtils; @@ -66,7 +67,7 @@ public class LogAspect { String ip = ServletUtils.getClientIP(); operLog.setOperIp(ip); operLog.setOperUrl(ServletUtils.getRequest().getRequestURI()); - operLog.setOperName(LoginUtils.getUsername()); + operLog.setOperName(LoginHelper.getUsername()); if (e != null) { operLog.setStatus(BusinessStatus.FAIL.ordinal()); @@ -110,7 +111,7 @@ public class LogAspect { setRequestValue(joinPoint, operLog); } // 是否需要保存response,参数和值 - if (log.isSaveResponseData() && StringUtils.isNotNull(jsonResult)) { + if (log.isSaveResponseData() && ObjectUtil.isNotNull(jsonResult)) { operLog.setJsonResult(StringUtils.substring(JsonUtils.toJsonString(jsonResult), 0, 2000)); } } @@ -139,7 +140,7 @@ public class LogAspect { StringBuilder params = new StringBuilder(); if (paramsArray != null && paramsArray.length > 0) { for (Object o : paramsArray) { - if (StringUtils.isNotNull(o) && !isFilterObject(o)) { + if (ObjectUtil.isNotNull(o) && !isFilterObject(o)) { try { params.append(JsonUtils.toJsonString(o)).append(" "); } catch (Exception e) { @@ -175,6 +176,6 @@ public class LogAspect { } } return o instanceof MultipartFile || o instanceof HttpServletRequest || o instanceof HttpServletResponse - || o instanceof BindingResult; + || o instanceof BindingResult; } } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RateLimiterAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RateLimiterAspect.java index 0120432a..298eb43b 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RateLimiterAspect.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RateLimiterAspect.java @@ -3,8 +3,8 @@ package com.ruoyi.framework.aspectj; import com.ruoyi.common.annotation.RateLimiter; import com.ruoyi.common.enums.LimitType; import com.ruoyi.common.exception.ServiceException; -import com.ruoyi.common.utils.redis.RedisUtils; import com.ruoyi.common.utils.ServletUtils; +import com.ruoyi.common.utils.redis.RedisUtils; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; @@ -52,7 +52,7 @@ public class RateLimiterAspect { if (rateLimiter.limitType() == LimitType.IP) { // 获取请求ip stringBuffer.append(ServletUtils.getClientIP()).append("-"); - } else if (rateLimiter.limitType() == LimitType.CLUSTER){ + } else if (rateLimiter.limitType() == LimitType.CLUSTER) { // 获取客户端实例id stringBuffer.append(RedisUtils.getClient().getId()).append("-"); } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RepeatSubmitAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RepeatSubmitAspect.java index 9fa586b4..e7bbbdd6 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RepeatSubmitAspect.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RepeatSubmitAspect.java @@ -1,21 +1,21 @@ package com.ruoyi.framework.aspectj; import cn.dev33.satoken.SaManager; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.crypto.SecureUtil; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.JsonUtils; -import com.ruoyi.common.utils.redis.RedisUtils; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.redis.RedisUtils; import com.ruoyi.framework.config.properties.RepeatSubmitProperties; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.validation.BindingResult; import org.springframework.web.multipart.MultipartFile; @@ -32,7 +32,7 @@ import java.util.concurrent.TimeUnit; * @author Lion Li */ @Slf4j -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @Aspect @Component public class RepeatSubmitAspect { @@ -76,7 +76,7 @@ public class RepeatSubmitAspect { StringBuilder params = new StringBuilder(); if (paramsArray != null && paramsArray.length > 0) { for (Object o : paramsArray) { - if (StringUtils.isNotNull(o) && !isFilterObject(o)) { + if (ObjectUtil.isNotNull(o) && !isFilterObject(o)) { try { params.append(JsonUtils.toJsonString(o)).append(" "); } catch (Exception e) { diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java index 6fa54e2a..a8bec417 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java @@ -11,15 +11,14 @@ import org.redisson.config.Config; import org.redisson.spring.cache.CacheConfig; import org.redisson.spring.cache.RedissonSpringCacheManager; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.data.redis.RedisProperties; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; -import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -44,9 +43,9 @@ public class RedisConfig extends CachingConfigurerSupport { @Autowired private RedissonProperties redissonProperties; + @Primary @Bean(destroyMethod = "shutdown") - @ConditionalOnMissingBean(RedissonClient.class) - public RedissonClient redisson() throws IOException { + public RedissonClient redisson() { String prefix = REDIS_PROTOCOL_PREFIX; if (redisProperties.isSsl()) { prefix = REDISS_PROTOCOL_PREFIX; @@ -68,14 +67,11 @@ public class RedisConfig extends CachingConfigurerSupport { .setTimeout(singleServerConfig.getTimeout()) .setRetryAttempts(singleServerConfig.getRetryAttempts()) .setRetryInterval(singleServerConfig.getRetryInterval()) - .setSubscriptionsPerConnection(singleServerConfig.getSubscriptionsPerConnection()) .setClientName(singleServerConfig.getClientName()) .setIdleConnectionTimeout(singleServerConfig.getIdleConnectionTimeout()) - .setSubscriptionConnectionMinimumIdleSize(singleServerConfig.getSubscriptionConnectionMinimumIdleSize()) .setSubscriptionConnectionPoolSize(singleServerConfig.getSubscriptionConnectionPoolSize()) .setConnectionMinimumIdleSize(singleServerConfig.getConnectionMinimumIdleSize()) - .setConnectionPoolSize(singleServerConfig.getConnectionPoolSize()) - .setDnsMonitoringInterval(singleServerConfig.getDnsMonitoringInterval()); + .setConnectionPoolSize(singleServerConfig.getConnectionPoolSize()); } // 集群配置方式 参考下方注释 RedissonProperties.ClusterServersConfig clusterServersConfig = redissonProperties.getClusterServersConfig(); @@ -93,19 +89,14 @@ public class RedisConfig extends CachingConfigurerSupport { .setTimeout(clusterServersConfig.getTimeout()) .setRetryAttempts(clusterServersConfig.getRetryAttempts()) .setRetryInterval(clusterServersConfig.getRetryInterval()) - .setSubscriptionsPerConnection(clusterServersConfig.getSubscriptionsPerConnection()) .setClientName(clusterServersConfig.getClientName()) .setIdleConnectionTimeout(clusterServersConfig.getIdleConnectionTimeout()) .setPingConnectionInterval(clusterServersConfig.getPingConnectionInterval()) - .setSubscriptionConnectionMinimumIdleSize(clusterServersConfig.getSubscriptionConnectionMinimumIdleSize()) .setSubscriptionConnectionPoolSize(clusterServersConfig.getSubscriptionConnectionPoolSize()) .setMasterConnectionMinimumIdleSize(clusterServersConfig.getMasterConnectionMinimumIdleSize()) .setMasterConnectionPoolSize(clusterServersConfig.getMasterConnectionPoolSize()) .setSlaveConnectionMinimumIdleSize(clusterServersConfig.getSlaveConnectionMinimumIdleSize()) .setSlaveConnectionPoolSize(clusterServersConfig.getSlaveConnectionPoolSize()) - .setDnsMonitoringInterval(clusterServersConfig.getDnsMonitoringInterval()) - .setFailedSlaveReconnectionInterval(clusterServersConfig.getFailedSlaveReconnectionInterval()) - .setScanInterval(clusterServersConfig.getScanInterval()) .setReadMode(clusterServersConfig.getReadMode()) .setSubscriptionMode(clusterServersConfig.getSubscriptionMode()) .setNodeAddresses(nodes); @@ -177,18 +168,8 @@ public class RedisConfig extends CachingConfigurerSupport { * retryAttempts: 3 * # 命令重试发送时间间隔,单位:毫秒 * retryInterval: 1500 - * # 从可用服务器的内部列表中排除 Redis Slave 重新连接尝试的间隔。 - * failedSlaveReconnectionInterval: 3000 - * # 发布和订阅连接池最小空闲连接数 - * subscriptionConnectionMinimumIdleSize: 1 * # 发布和订阅连接池大小 * subscriptionConnectionPoolSize: 50 - * # 单个连接最大订阅数量 - * subscriptionsPerConnection: 5 - * # 扫描间隔 - * scanInterval: 1000 - * # DNS监测时间间隔,单位:毫秒 - * dnsMonitoringInterval: 5000 * # 读取模式 * readMode: "SLAVE" * # 订阅模式 diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SaTokenConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SaTokenConfig.java index 05cff030..54f373be 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SaTokenConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SaTokenConfig.java @@ -5,25 +5,30 @@ import cn.dev33.satoken.interceptor.SaRouteInterceptor; import cn.dev33.satoken.jwt.StpLogicJwtForStyle; import cn.dev33.satoken.router.SaRouter; import cn.dev33.satoken.stp.StpLogic; +import cn.hutool.core.util.ObjectUtil; +import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.framework.config.properties.SecurityProperties; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + /** * sa-token 配置 * * @author Lion Li */ +@RequiredArgsConstructor @Slf4j @Configuration public class SaTokenConfig implements WebMvcConfigurer { - @Autowired - private SecurityProperties securityProperties; + private final SecurityProperties securityProperties; /** * 注册sa-token的拦截器 @@ -39,16 +44,22 @@ public class SaTokenConfig implements WebMvcConfigurer { // 排除下不需要拦截的 .notMatch(securityProperties.getExcludes()) .check(() -> { - // 做一些访问检查 -// if (log.isDebugEnabled()) { -// Long userId = LoginUtils.getUserId(); -// if (StringUtils.isNotNull(userId)) { -// log.debug("剩余有效时间: {}", StpUtil.getTokenTimeout()); -// log.debug("临时有效时间: {}", StpUtil.getTokenActivityTimeout()); -// } -// } + Long userId = LoginHelper.getUserId(); + if (ObjectUtil.isNotNull(userId)) { + // 有效率影响 用于临时测试 + // if (log.isDebugEnabled()) { + // log.debug("剩余有效时间: {}", StpUtil.getTokenTimeout()); + // log.debug("临时有效时间: {}", StpUtil.getTokenActivityTimeout()); + // } + } }); - })).addPathPatterns("/**"); + }) { + @SuppressWarnings("all") + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + LoginHelper.clearCache(); + } + }).addPathPatterns("/**"); registry.addInterceptor(new SaAnnotationInterceptor()).addPathPatterns("/**"); } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java index 167ac2ec..22ef7c1b 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java @@ -132,7 +132,7 @@ public class SwaggerConfig { * 默认的安全上引用 */ private List defaultAuth() { - AuthorizationScope authorizationScope = new AuthorizationScope("global" , "accessEverything"); + AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; authorizationScopes[0] = authorizationScope; List securityReferences = new ArrayList<>(); diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java index 5dd2b5f6..f6e07fed 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java @@ -13,6 +13,7 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.ThreadPoolExecutor; /** * 线程池配置 @@ -44,7 +45,8 @@ public class ThreadPoolConfig { @Bean(name = "scheduledExecutorService") protected ScheduledExecutorService scheduledExecutorService() { return new ScheduledThreadPoolExecutor(threadPoolProperties.getCorePoolSize(), - new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build()) { + new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build(), + new ThreadPoolExecutor.CallerRunsPolicy()) { @Override protected void afterExecute(Runnable r, Throwable t) { super.afterExecute(r, t); diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/RedissonProperties.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/RedissonProperties.java index 0b9024d2..eae9e3fc 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/RedissonProperties.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/RedissonProperties.java @@ -89,26 +89,11 @@ public class RedissonProperties { */ private int retryInterval; - /** - * 发布和订阅连接的最小空闲连接数 - */ - private int subscriptionConnectionMinimumIdleSize; - /** * 发布和订阅连接池大小 */ private int subscriptionConnectionPoolSize; - /** - * 单个连接最大订阅数量 - */ - private int subscriptionsPerConnection; - - /** - * DNS监测时间间隔,单位:毫秒 - */ - private int dnsMonitoringInterval; - } @Data @@ -165,36 +150,11 @@ public class RedissonProperties { */ private int retryInterval; - /** - * 错误重试次数 - */ - private int failedSlaveReconnectionInterval; - - /** - * 发布和订阅连接池最小空闲连接数 - */ - private int subscriptionConnectionMinimumIdleSize; - /** * 发布和订阅连接池大小 */ private int subscriptionConnectionPoolSize; - /** - * 单个连接最大订阅数量 - */ - private int subscriptionsPerConnection; - - /** - * 扫描间隔 - */ - private int scanInterval; - - /** - * DNS监测时间间隔,单位:毫秒 - */ - private int dnsMonitoringInterval; - /** * 读取模式 */ diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/CreateAndUpdateMetaObjectHandler.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/CreateAndUpdateMetaObjectHandler.java index f311a65c..6d7c977d 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/CreateAndUpdateMetaObjectHandler.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/CreateAndUpdateMetaObjectHandler.java @@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.exception.ServiceException; -import com.ruoyi.common.utils.LoginUtils; +import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.StringUtils; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.reflection.MetaObject; @@ -27,26 +27,16 @@ public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler { try { if (ObjectUtil.isNotNull(metaObject) && metaObject.getOriginalObject() instanceof BaseEntity) { BaseEntity baseEntity = (BaseEntity) metaObject.getOriginalObject(); - Date current = new Date(); - // 创建时间为空 则填充 - if (ObjectUtil.isNull(baseEntity.getCreateTime())) { - baseEntity.setCreateTime(current); - } - // 更新时间为空 则填充 - if (ObjectUtil.isNull(baseEntity.getUpdateTime())) { - baseEntity.setUpdateTime(current); - } - String username = getLoginUsername(); + Date current = ObjectUtil.isNotNull(baseEntity.getCreateTime()) + ? baseEntity.getCreateTime() : new Date(); + baseEntity.setCreateTime(current); + baseEntity.setUpdateTime(current); + String username = StringUtils.isNotBlank(baseEntity.getCreateBy()) + ? baseEntity.getCreateBy() : getLoginUsername(); // 当前已登录 且 创建人为空 则填充 - if (StringUtils.isNotBlank(username) - && StringUtils.isBlank(baseEntity.getCreateBy())) { - baseEntity.setCreateBy(username); - } + baseEntity.setCreateBy(username); // 当前已登录 且 更新人为空 则填充 - if (StringUtils.isNotBlank(username) - && StringUtils.isBlank(baseEntity.getUpdateBy())) { - baseEntity.setUpdateBy(username); - } + baseEntity.setUpdateBy(username); } } catch (Exception e) { throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED); @@ -78,7 +68,7 @@ public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler { private String getLoginUsername() { LoginUser loginUser; try { - loginUser = LoginUtils.getLoginUser(); + loginUser = LoginHelper.getLoginUser(); } catch (Exception e) { log.warn("自动注入警告 => 用户未登录"); return null; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java index 2318f6f4..5e762424 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java @@ -7,13 +7,13 @@ import cn.hutool.core.util.ClassUtil; import cn.hutool.core.util.ObjectUtil; import com.ruoyi.common.annotation.DataColumn; import com.ruoyi.common.annotation.DataPermission; -import com.ruoyi.common.core.domain.entity.SysRole; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.common.core.service.UserService; +import com.ruoyi.common.core.domain.dto.RoleDTO; +import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.enums.DataScopeType; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.helper.DataPermissionHelper; -import com.ruoyi.common.utils.LoginUtils; +import com.ruoyi.common.helper.LoginHelper; +import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.spring.SpringUtils; import lombok.extern.slf4j.Slf4j; @@ -74,13 +74,13 @@ public class PlusDataPermissionHandler { inavlidCacheSet.add(mappedStatementId); return where; } - SysUser currentUser = DataPermissionHelper.getVariable("user"); + LoginUser currentUser = DataPermissionHelper.getVariable("user"); if (ObjectUtil.isNull(currentUser)) { - currentUser = SpringUtils.getBean(UserService.class).selectUserById(LoginUtils.getUserId()); + currentUser = LoginHelper.getLoginUser(); DataPermissionHelper.setVariable("user", currentUser); } // 如果是超级管理员,则不过滤数据 - if (ObjectUtil.isNull(currentUser) || currentUser.isAdmin()) { + if (ObjectUtil.isNull(currentUser) || SecurityUtils.isAdmin(currentUser.getUserId())) { return where; } String dataFilterSql = buildDataFilter(dataColumns, isSelect); @@ -108,11 +108,11 @@ public class PlusDataPermissionHandler { StringBuilder sqlString = new StringBuilder(); // 更新或删除需满足所有条件 String joinStr = isSelect ? " OR " : " AND "; - SysUser user = DataPermissionHelper.getVariable("user"); + LoginUser user = DataPermissionHelper.getVariable("user"); StandardEvaluationContext context = new StandardEvaluationContext(); context.setBeanResolver(beanResolver); DataPermissionHelper.getContext().forEach(context::setVariable); - for (SysRole role : user.getRoles()) { + for (RoleDTO role : user.getRoles()) { user.setRoleId(role.getRoleId()); // 获取角色权限泛型 DataScopeType type = DataScopeType.findCode(role.getDataScope()); @@ -160,13 +160,13 @@ public class PlusDataPermissionHandler { DataPermission dataPermission; // 获取方法注解 for (Method method : methods) { - dataPermission = dataPermissionCacheMap.get(method.getName()); + dataPermission = dataPermissionCacheMap.get(mappedStatementId); if (ObjectUtil.isNotNull(dataPermission)) { return dataPermission.value(); } if (AnnotationUtil.hasAnnotation(method, DataPermission.class)) { dataPermission = AnnotationUtil.getAnnotation(method, DataPermission.class); - dataPermissionCacheMap.put(method.getName(), dataPermission); + dataPermissionCacheMap.put(mappedStatementId, dataPermission); return dataPermission.value(); } } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java index 15b04d82..bbd92141 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java @@ -8,55 +8,52 @@ import cn.hutool.http.useragent.UserAgent; import cn.hutool.http.useragent.UserAgentUtil; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.dto.UserOnlineDTO; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.common.core.service.UserService; +import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.enums.UserType; -import com.ruoyi.common.utils.LoginUtils; +import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.ServletUtils; -import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.ip.AddressUtils; import com.ruoyi.common.utils.redis.RedisUtils; -import com.ruoyi.common.utils.spring.SpringUtils; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.concurrent.TimeUnit; /** * 用户行为 侦听器的实现 + * + * @author Lion Li */ +@RequiredArgsConstructor @Component @Slf4j public class UserActionListener implements SaTokenListener { - @Autowired - private SaTokenConfig saTokenConfig; + private final SaTokenConfig tokenConfig; /** * 每次登录时触发 */ @Override public void doLogin(String loginType, Object loginId, SaLoginModel loginModel) { - UserType userType = LoginUtils.getUserType(loginId); + UserType userType = UserType.getUserType(loginId.toString()); if (userType == UserType.SYS_USER) { UserAgent userAgent = UserAgentUtil.parse(ServletUtils.getRequest().getHeader("User-Agent")); String ip = ServletUtils.getClientIP(); - SysUser user = SpringUtils.getBean(UserService.class).selectUserById(LoginUtils.getUserId()); + LoginUser user = LoginHelper.getLoginUser(); String tokenValue = StpUtil.getTokenValue(); - UserOnlineDTO userOnlineDTO = new UserOnlineDTO() - .setIpaddr(ip) - .setLoginLocation(AddressUtils.getRealAddressByIP(ip)) - .setBrowser(userAgent.getBrowser().getName()) - .setOs(userAgent.getOs().getName()) - .setLoginTime(System.currentTimeMillis()) - .setTokenId(tokenValue) - .setUserName(user.getUserName()); - if (StringUtils.isNotNull(user.getDept())) { - userOnlineDTO.setDeptName(user.getDept().getDeptName()); - } - RedisUtils.setCacheObject(Constants.ONLINE_TOKEN_KEY + tokenValue, userOnlineDTO, saTokenConfig.getTimeout(), TimeUnit.SECONDS); - log.info("user doLogin, useId:{}, token:{}" , loginId, tokenValue); + UserOnlineDTO dto = new UserOnlineDTO(); + dto.setIpaddr(ip); + dto.setLoginLocation(AddressUtils.getRealAddressByIP(ip)); + dto.setBrowser(userAgent.getBrowser().getName()); + dto.setOs(userAgent.getOs().getName()); + dto.setLoginTime(System.currentTimeMillis()); + dto.setTokenId(tokenValue); + dto.setUserName(user.getUsername()); + dto.setDeptName(user.getDeptName()); + RedisUtils.setCacheObject(Constants.ONLINE_TOKEN_KEY + tokenValue, dto, tokenConfig.getTimeout(), TimeUnit.SECONDS); + log.info("user doLogin, useId:{}, token:{}", loginId, tokenValue); } else if (userType == UserType.APP_USER) { // app端 自行根据业务编写 } @@ -68,7 +65,7 @@ public class UserActionListener implements SaTokenListener { @Override public void doLogout(String loginType, Object loginId, String tokenValue) { RedisUtils.deleteObject(Constants.ONLINE_TOKEN_KEY + tokenValue); - log.info("user doLogout, useId:{}, token:{}" , loginId, tokenValue); + log.info("user doLogout, useId:{}, token:{}", loginId, tokenValue); } /** @@ -77,7 +74,7 @@ public class UserActionListener implements SaTokenListener { @Override public void doKickout(String loginType, Object loginId, String tokenValue) { RedisUtils.deleteObject(Constants.ONLINE_TOKEN_KEY + tokenValue); - log.info("user doLogoutByLoginId, useId:{}, token:{}" , loginId, tokenValue); + log.info("user doLogoutByLoginId, useId:{}, token:{}", loginId, tokenValue); } /** @@ -86,7 +83,7 @@ public class UserActionListener implements SaTokenListener { @Override public void doReplaced(String loginType, Object loginId, String tokenValue) { RedisUtils.deleteObject(Constants.ONLINE_TOKEN_KEY + tokenValue); - log.info("user doReplaced, useId:{}, token:{}" , loginId, tokenValue); + log.info("user doReplaced, useId:{}, token:{}", loginId, tokenValue); } /** diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/dao/PlusSaTokenDao.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/dao/PlusSaTokenDao.java index 174cd0f8..f78e8141 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/dao/PlusSaTokenDao.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/dao/PlusSaTokenDao.java @@ -31,11 +31,11 @@ public class PlusSaTokenDao implements SaTokenDao { */ @Override public void set(String key, String value, long timeout) { - if(timeout == 0 || timeout <= SaTokenDao.NOT_VALUE_EXPIRE) { + if (timeout == 0 || timeout <= SaTokenDao.NOT_VALUE_EXPIRE) { return; } // 判断是否为永不过期 - if(timeout == SaTokenDao.NEVER_EXPIRE) { + if (timeout == SaTokenDao.NEVER_EXPIRE) { RedisUtils.setCacheObject(key, value); } else { RedisUtils.setCacheObject(key, value, timeout, TimeUnit.SECONDS); @@ -49,7 +49,7 @@ public class PlusSaTokenDao implements SaTokenDao { public void update(String key, String value) { long expire = getTimeout(key); // -2 = 无此键 - if(expire == SaTokenDao.NOT_VALUE_EXPIRE) { + if (expire == SaTokenDao.NOT_VALUE_EXPIRE) { return; } this.set(key, value, expire); @@ -77,9 +77,9 @@ public class PlusSaTokenDao implements SaTokenDao { @Override public void updateTimeout(String key, long timeout) { // 判断是否想要设置为永久 - if(timeout == SaTokenDao.NEVER_EXPIRE) { + if (timeout == SaTokenDao.NEVER_EXPIRE) { long expire = getTimeout(key); - if(expire == SaTokenDao.NEVER_EXPIRE) { + if (expire == SaTokenDao.NEVER_EXPIRE) { // 如果其已经被设置为永久,则不作任何处理 } else { // 如果尚未被设置为永久,那么再次set一次 @@ -91,7 +91,6 @@ public class PlusSaTokenDao implements SaTokenDao { } - /** * 获取Object,如无返空 */ @@ -105,11 +104,11 @@ public class PlusSaTokenDao implements SaTokenDao { */ @Override public void setObject(String key, Object object, long timeout) { - if(timeout == 0 || timeout <= SaTokenDao.NOT_VALUE_EXPIRE) { + if (timeout == 0 || timeout <= SaTokenDao.NOT_VALUE_EXPIRE) { return; } // 判断是否为永不过期 - if(timeout == SaTokenDao.NEVER_EXPIRE) { + if (timeout == SaTokenDao.NEVER_EXPIRE) { RedisUtils.setCacheObject(key, object); } else { RedisUtils.setCacheObject(key, object, timeout, TimeUnit.SECONDS); @@ -123,7 +122,7 @@ public class PlusSaTokenDao implements SaTokenDao { public void updateObject(String key, Object object) { long expire = getObjectTimeout(key); // -2 = 无此键 - if(expire == SaTokenDao.NOT_VALUE_EXPIRE) { + if (expire == SaTokenDao.NOT_VALUE_EXPIRE) { return; } this.setObject(key, object, expire); @@ -151,9 +150,9 @@ public class PlusSaTokenDao implements SaTokenDao { @Override public void updateObjectTimeout(String key, long timeout) { // 判断是否想要设置为永久 - if(timeout == SaTokenDao.NEVER_EXPIRE) { + if (timeout == SaTokenDao.NEVER_EXPIRE) { long expire = getObjectTimeout(key); - if(expire == SaTokenDao.NEVER_EXPIRE) { + if (expire == SaTokenDao.NEVER_EXPIRE) { // 如果其已经被设置为永久,则不作任何处理 } else { // 如果尚未被设置为永久,那么再次set一次 diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/service/SaInterfaceImpl.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/service/SaInterfaceImpl.java index e5bacd34..8e97d057 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/service/SaInterfaceImpl.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/service/SaInterfaceImpl.java @@ -3,7 +3,7 @@ package com.ruoyi.framework.satoken.service; import cn.dev33.satoken.stp.StpInterface; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.enums.UserType; -import com.ruoyi.common.utils.LoginUtils; +import com.ruoyi.common.helper.LoginHelper; import org.springframework.stereotype.Component; import java.util.ArrayList; @@ -14,9 +14,9 @@ public class SaInterfaceImpl implements StpInterface { @Override public List getPermissionList(Object loginId, String loginType) { - UserType userType = LoginUtils.getUserType(loginId); + LoginUser loginUser = LoginHelper.getLoginUser(); + UserType userType = UserType.getUserType(loginUser.getUserType()); if (userType == UserType.SYS_USER) { - LoginUser loginUser = LoginUtils.getLoginUser(); return new ArrayList<>(loginUser.getMenuPermission()); } else if (userType == UserType.APP_USER) { // app端权限返回 自行根据业务编写 @@ -26,9 +26,9 @@ public class SaInterfaceImpl implements StpInterface { @Override public List getRoleList(Object loginId, String loginType) { - UserType userType = LoginUtils.getUserType(loginId); + LoginUser loginUser = LoginHelper.getLoginUser(); + UserType userType = UserType.getUserType(loginUser.getUserType()); if (userType == UserType.SYS_USER) { - LoginUser loginUser = LoginUtils.getLoginUser(); return new ArrayList<>(loginUser.getRolePermission()); } else if (userType == UserType.APP_USER) { // app端权限返回 自行根据业务编写 diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java index b76961a1..90b265e2 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java @@ -3,11 +3,11 @@ package com.ruoyi.framework.web.exception; import cn.dev33.satoken.exception.NotLoginException; import cn.dev33.satoken.exception.NotPermissionException; import cn.dev33.satoken.exception.NotRoleException; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.http.HttpStatus; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.exception.DemoModeException; import com.ruoyi.common.exception.ServiceException; -import com.ruoyi.common.utils.StringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.context.support.DefaultMessageSourceResolvable; import org.springframework.validation.BindException; @@ -31,115 +31,115 @@ import java.util.stream.Collectors; public class GlobalExceptionHandler { /** - * 权限校验异常 + * 权限码异常 */ @ExceptionHandler(NotPermissionException.class) - public AjaxResult handleAccessDeniedException(NotPermissionException e, HttpServletRequest request) { + public R handleNotPermissionException(NotPermissionException e, HttpServletRequest request) { String requestURI = request.getRequestURI(); - log.error("请求地址'{}',权限校验失败'{}'", requestURI, e.getMessage()); - return AjaxResult.error(HttpStatus.HTTP_FORBIDDEN, "没有权限,请联系管理员授权"); + log.error("请求地址'{}',权限码校验失败'{}'", requestURI, e.getMessage()); + return R.fail(HttpStatus.HTTP_FORBIDDEN, "没有访问权限,请联系管理员授权"); } /** - * 角色校验异常 + * 角色权限异常 */ @ExceptionHandler(NotRoleException.class) - public AjaxResult handleAccessDeniedException(NotRoleException e, HttpServletRequest request) { + public R handleNotRoleException(NotRoleException e, HttpServletRequest request) { String requestURI = request.getRequestURI(); - log.error("请求地址'{}',角色校验失败'{}'", requestURI, e.getMessage()); - return AjaxResult.error(HttpStatus.HTTP_FORBIDDEN, "没有角色,请联系管理员授权"); + log.error("请求地址'{}',角色权限校验失败'{}'", requestURI, e.getMessage()); + return R.fail(HttpStatus.HTTP_FORBIDDEN, "没有访问权限,请联系管理员授权"); } /** * 认证失败 */ @ExceptionHandler(NotLoginException.class) - public AjaxResult handleAccessDeniedException(NotLoginException e, HttpServletRequest request) { + public R handleNotLoginException(NotLoginException e, HttpServletRequest request) { String requestURI = request.getRequestURI(); log.error("请求地址'{}',认证失败'{}',无法访问系统资源", requestURI, e.getMessage()); - return AjaxResult.error(HttpStatus.HTTP_UNAUTHORIZED, StringUtils.format("请求地址'{}',认证失败'{}',无法访问系统资源", requestURI)); + return R.fail(HttpStatus.HTTP_UNAUTHORIZED, "认证失败,无法访问系统资源"); } /** * 请求方式不支持 */ @ExceptionHandler(HttpRequestMethodNotSupportedException.class) - public AjaxResult handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException e, + public R handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException e, HttpServletRequest request) { String requestURI = request.getRequestURI(); log.error("请求地址'{}',不支持'{}'请求", requestURI, e.getMethod()); - return AjaxResult.error(e.getMessage()); + return R.fail(e.getMessage()); } /** * 业务异常 */ @ExceptionHandler(ServiceException.class) - public AjaxResult handleServiceException(ServiceException e, HttpServletRequest request) { + public R handleServiceException(ServiceException e, HttpServletRequest request) { log.error(e.getMessage(), e); Integer code = e.getCode(); - return StringUtils.isNotNull(code) ? AjaxResult.error(code, e.getMessage()) : AjaxResult.error(e.getMessage()); + return ObjectUtil.isNotNull(code) ? R.fail(code.intValue(), e.getMessage()) : R.fail(e.getMessage()); } /** * 拦截未知的运行时异常 */ @ExceptionHandler(RuntimeException.class) - public AjaxResult handleRuntimeException(RuntimeException e, HttpServletRequest request) { + public R handleRuntimeException(RuntimeException e, HttpServletRequest request) { String requestURI = request.getRequestURI(); log.error("请求地址'{}',发生未知异常.", requestURI, e); - return AjaxResult.error(e.getMessage()); + return R.fail(e.getMessage()); } /** * 系统异常 */ @ExceptionHandler(Exception.class) - public AjaxResult handleException(Exception e, HttpServletRequest request) { + public R handleException(Exception e, HttpServletRequest request) { String requestURI = request.getRequestURI(); log.error("请求地址'{}',发生系统异常.", requestURI, e); - return AjaxResult.error(e.getMessage()); + return R.fail(e.getMessage()); } /** * 自定义验证异常 */ @ExceptionHandler(BindException.class) - public AjaxResult handleBindException(BindException e) { + public R handleBindException(BindException e) { log.error(e.getMessage(), e); String message = e.getAllErrors().stream() .map(DefaultMessageSourceResolvable::getDefaultMessage) .collect(Collectors.joining(", ")); - return AjaxResult.error(message); + return R.fail(message); } /** * 自定义验证异常 */ @ExceptionHandler(ConstraintViolationException.class) - public AjaxResult constraintViolationException(ConstraintViolationException e) { + public R constraintViolationException(ConstraintViolationException e) { log.error(e.getMessage(), e); String message = e.getConstraintViolations().stream() .map(ConstraintViolation::getMessage) .collect(Collectors.joining(", ")); - return AjaxResult.error(message); + return R.fail(message); } /** * 自定义验证异常 */ @ExceptionHandler(MethodArgumentNotValidException.class) - public AjaxResult handleMethodArgumentNotValidException(MethodArgumentNotValidException e) { + public R handleMethodArgumentNotValidException(MethodArgumentNotValidException e) { log.error(e.getMessage(), e); String message = e.getBindingResult().getFieldError().getDefaultMessage(); - return AjaxResult.error(message); + return R.fail(message); } /** * 演示模式异常 */ @ExceptionHandler(DemoModeException.class) - public AjaxResult handleDemoModeException(DemoModeException e) { - return AjaxResult.error("演示模式,不允许操作"); + public R handleDemoModeException(DemoModeException e) { + return R.fail("演示模式,不允许操作"); } } diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java index f1ff61a3..09bf1aeb 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java @@ -5,7 +5,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.io.IoUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; @@ -16,7 +16,6 @@ import com.ruoyi.generator.service.IGenTableService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -33,7 +32,7 @@ import java.util.Map; */ @Validated @Api(value = "代码生成", tags = {"代码生成管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/tool/gen") public class GenController extends BaseController { @@ -57,7 +56,7 @@ public class GenController extends BaseController { @ApiOperation("修改代码生成业务") @SaCheckPermission("tool:gen:query") @GetMapping(value = "/{talbleId}") - public AjaxResult> getInfo(@PathVariable Long talbleId) { + public R> getInfo(@PathVariable Long talbleId) { GenTable table = genTableService.selectGenTableById(talbleId); List tables = genTableService.selectGenTableAll(); List list = genTableColumnService.selectGenTableColumnListByTableId(talbleId); @@ -65,7 +64,7 @@ public class GenController extends BaseController { map.put("info", table); map.put("rows", list); map.put("tables", tables); - return AjaxResult.success(map); + return R.ok(map); } /** @@ -99,12 +98,12 @@ public class GenController extends BaseController { @SaCheckPermission("tool:gen:import") @Log(title = "代码生成", businessType = BusinessType.IMPORT) @PostMapping("/importTable") - public AjaxResult importTableSave(String tables) { + public R importTableSave(String tables) { String[] tableNames = Convert.toStrArray(tables); // 查询表信息 List tableList = genTableService.selectDbTableListByNames(tableNames); genTableService.importGenTable(tableList); - return AjaxResult.success(); + return R.ok(); } /** @@ -114,10 +113,10 @@ public class GenController extends BaseController { @SaCheckPermission("tool:gen:edit") @Log(title = "代码生成", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult editSave(@Validated @RequestBody GenTable genTable) { + public R editSave(@Validated @RequestBody GenTable genTable) { genTableService.validateEdit(genTable); genTableService.updateGenTable(genTable); - return AjaxResult.success(); + return R.ok(); } /** @@ -127,9 +126,9 @@ public class GenController extends BaseController { @SaCheckPermission("tool:gen:remove") @Log(title = "代码生成", businessType = BusinessType.DELETE) @DeleteMapping("/{tableIds}") - public AjaxResult remove(@PathVariable Long[] tableIds) { + public R remove(@PathVariable Long[] tableIds) { genTableService.deleteGenTableByIds(tableIds); - return AjaxResult.success(); + return R.ok(); } /** @@ -138,9 +137,9 @@ public class GenController extends BaseController { @ApiOperation("预览代码") @SaCheckPermission("tool:gen:preview") @GetMapping("/preview/{tableId}") - public AjaxResult> preview(@PathVariable("tableId") Long tableId) throws IOException { + public R> preview(@PathVariable("tableId") Long tableId) throws IOException { Map dataMap = genTableService.previewCode(tableId); - return AjaxResult.success(dataMap); + return R.ok(dataMap); } /** @@ -162,9 +161,9 @@ public class GenController extends BaseController { @SaCheckPermission("tool:gen:code") @Log(title = "代码生成", businessType = BusinessType.GENCODE) @GetMapping("/genCode/{tableName}") - public AjaxResult genCode(@PathVariable("tableName") String tableName) { + public R genCode(@PathVariable("tableName") String tableName) { genTableService.generatorCode(tableName); - return AjaxResult.success(); + return R.ok(); } /** @@ -174,9 +173,9 @@ public class GenController extends BaseController { @SaCheckPermission("tool:gen:edit") @Log(title = "代码生成", businessType = BusinessType.UPDATE) @GetMapping("/synchDb/{tableName}") - public AjaxResult synchDb(@PathVariable("tableName") String tableName) { + public R synchDb(@PathVariable("tableName") String tableName) { genTableService.synchDb(tableName); - return AjaxResult.success(); + return R.ok(); } /** diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java index 252f32cb..965c9f34 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java @@ -8,7 +8,6 @@ import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.utils.StringUtils; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; import org.apache.commons.lang3.ArrayUtils; import javax.validation.Valid; @@ -23,7 +22,6 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = true) -@Accessors(chain = true) @TableName("gen_table") public class GenTable extends BaseEntity { @@ -196,7 +194,7 @@ public class GenTable extends BaseEntity { public static boolean isSuperColumn(String tplCategory, String javaField) { if (isTree(tplCategory)) { return StringUtils.equalsAnyIgnoreCase(javaField, - ArrayUtils.addAll(GenConstants.TREE_ENTITY, GenConstants.BASE_ENTITY)); + ArrayUtils.addAll(GenConstants.TREE_ENTITY, GenConstants.BASE_ENTITY)); } return StringUtils.equalsAnyIgnoreCase(javaField, GenConstants.BASE_ENTITY); } diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java index 8c08d543..763acd74 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java @@ -20,7 +20,6 @@ import javax.validation.constraints.NotBlank; @Data @EqualsAndHashCode(callSuper = true) -@Accessors(chain = true) @TableName("gen_table_column") public class GenTableColumn extends BaseEntity { @@ -190,10 +189,10 @@ public class GenTableColumn extends BaseEntity { public static boolean isSuperColumn(String javaField) { return StringUtils.equalsAnyIgnoreCase(javaField, - // BaseEntity - "createBy", "createTime", "updateBy", "updateTime", - // TreeEntity - "parentName", "parentId"); + // BaseEntity + "createBy", "createTime", "updateBy", "updateTime", + // TreeEntity + "parentName", "parentId"); } public boolean isUsableColumn() { diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableColumnServiceImpl.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableColumnServiceImpl.java index 214e7f31..78260aa7 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableColumnServiceImpl.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableColumnServiceImpl.java @@ -29,8 +29,8 @@ public class GenTableColumnServiceImpl implements IGenTableColumnService { @Override public List selectGenTableColumnListByTableId(Long tableId) { return baseMapper.selectList(new LambdaQueryWrapper() - .eq(GenTableColumn::getTableId, tableId) - .orderByAsc(GenTableColumn::getSort)); + .eq(GenTableColumn::getTableId, tableId) + .orderByAsc(GenTableColumn::getSort)); } /** diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java index 83824438..8f6a40fe 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java @@ -3,6 +3,7 @@ package com.ruoyi.generator.service; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.io.IoUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.constant.Constants; @@ -10,7 +11,9 @@ import com.ruoyi.common.constant.GenConstants; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.exception.ServiceException; -import com.ruoyi.common.utils.*; +import com.ruoyi.common.helper.LoginHelper; +import com.ruoyi.common.utils.JsonUtils; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.generator.domain.GenTable; import com.ruoyi.generator.domain.GenTableColumn; @@ -33,6 +36,7 @@ import java.io.IOException; import java.io.StringWriter; import java.nio.charset.StandardCharsets; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -159,7 +163,7 @@ public class GenTableServiceImpl implements IGenTableService { @Override @Transactional(rollbackFor = Exception.class) public void importGenTable(List tableList) { - String operName = LoginUtils.getUsername(); + String operName = LoginHelper.getUsername(); try { for (GenTable table : tableList) { String tableName = table.getTableName(); @@ -275,19 +279,27 @@ public class GenTableServiceImpl implements IGenTableService { public void synchDb(String tableName) { GenTable table = baseMapper.selectGenTableByName(tableName); List tableColumns = table.getColumns(); - List tableColumnNames = tableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); + Map tableColumnMap = tableColumns.stream().collect(Collectors.toMap(GenTableColumn::getColumnName, Function.identity())); List dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); - if (StringUtils.isEmpty(dbTableColumns)) { + if (CollUtil.isEmpty(dbTableColumns)) { throw new ServiceException("同步数据失败,原表结构不存在"); } List dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); List saveColumns = new ArrayList<>(); dbTableColumns.forEach(column -> { - if (!tableColumnNames.contains(column.getColumnName())) { - GenUtils.initColumnField(column, table); - saveColumns.add(column); + GenUtils.initColumnField(column, table); + if (tableColumnMap.containsKey(column.getColumnName())) { + GenTableColumn prevColumn = tableColumnMap.get(column.getColumnName()); + column.setColumnId(prevColumn.getColumnId()); + if (column.isList()) { + // 如果是列表,继续保留字典类型 + column.setDictType(prevColumn.getDictType()); + } + genTableColumnMapper.updateById(column); + } else { + genTableColumnMapper.insert(column); } }); if (CollUtil.isNotEmpty(saveColumns)) { @@ -362,11 +374,11 @@ public class GenTableServiceImpl implements IGenTableService { public void validateEdit(GenTable genTable) { if (GenConstants.TPL_TREE.equals(genTable.getTplCategory())) { Map paramsObj = genTable.getParams(); - if (StringUtils.isEmpty(paramsObj.get(GenConstants.TREE_CODE))) { + if (ObjectUtil.isEmpty(paramsObj.get(GenConstants.TREE_CODE))) { throw new ServiceException("树编码字段不能为空"); - } else if (StringUtils.isEmpty(paramsObj.get(GenConstants.TREE_PARENT_CODE))) { + } else if (ObjectUtil.isEmpty(paramsObj.get(GenConstants.TREE_PARENT_CODE))) { throw new ServiceException("树父编码字段不能为空"); - } else if (StringUtils.isEmpty(paramsObj.get(GenConstants.TREE_NAME))) { + } else if (ObjectUtil.isEmpty(paramsObj.get(GenConstants.TREE_NAME))) { throw new ServiceException("树名称字段不能为空"); } else if (GenConstants.TPL_SUB.equals(genTable.getTplCategory())) { if (StringUtils.isEmpty(genTable.getSubTableName())) { @@ -390,7 +402,7 @@ public class GenTableServiceImpl implements IGenTableService { break; } } - if (StringUtils.isNull(table.getPkColumn())) { + if (ObjectUtil.isNull(table.getPkColumn())) { table.setPkColumn(table.getColumns().get(0)); } if (GenConstants.TPL_SUB.equals(table.getTplCategory())) { @@ -400,7 +412,7 @@ public class GenTableServiceImpl implements IGenTableService { break; } } - if (StringUtils.isNull(table.getSubTable().getPkColumn())) { + if (ObjectUtil.isNull(table.getSubTable().getPkColumn())) { table.getSubTable().setPkColumn(table.getSubTable().getColumns().get(0)); } } @@ -425,7 +437,7 @@ public class GenTableServiceImpl implements IGenTableService { */ public void setTableFromOptions(GenTable genTable) { Map paramsObj = JsonUtils.parseMap(genTable.getOptions()); - if (StringUtils.isNotNull(paramsObj)) { + if (ObjectUtil.isNotNull(paramsObj)) { String treeCode = Convert.toStr(paramsObj.get(GenConstants.TREE_CODE)); String treeParentCode = Convert.toStr(paramsObj.get(GenConstants.TREE_PARENT_CODE)); String treeName = Convert.toStr(paramsObj.get(GenConstants.TREE_NAME)); diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java index c434ca88..cb977d94 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java @@ -99,7 +99,7 @@ public class GenUtils { } // 类型&性别字段设置下拉框 else if (StringUtils.endsWithIgnoreCase(columnName, "type") - || StringUtils.endsWithIgnoreCase(columnName, "sex")) { + || StringUtils.endsWithIgnoreCase(columnName, "sex")) { column.setHtmlType(GenConstants.HTML_SELECT); } // 图片字段设置图片上传控件 diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java index 13f7d899..67296b70 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java @@ -1,6 +1,8 @@ package com.ruoyi.generator.util; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; import com.ruoyi.common.constant.GenConstants; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.JsonUtils; @@ -219,7 +221,7 @@ public class VelocityUtils { List columns = genTable.getColumns(); GenTable subGenTable = genTable.getSubTable(); HashSet importList = new HashSet(); - if (StringUtils.isNotNull(subGenTable)) { + if (ObjectUtil.isNotNull(subGenTable)) { importList.add("java.util.List"); } for (GenTableColumn column : columns) { @@ -244,8 +246,8 @@ public class VelocityUtils { Set dicts = new HashSet(); for (GenTableColumn column : columns) { if (!column.isSuperColumn() && StringUtils.isNotEmpty(column.getDictType()) && StringUtils.equalsAny( - column.getHtmlType(), - new String[] { GenConstants.HTML_SELECT, GenConstants.HTML_RADIO, GenConstants.HTML_CHECKBOX })) { + column.getHtmlType(), + new String[]{GenConstants.HTML_SELECT, GenConstants.HTML_RADIO, GenConstants.HTML_CHECKBOX})) { dicts.add("'" + column.getDictType() + "'"); } } @@ -270,8 +272,8 @@ public class VelocityUtils { * @return 上级菜单ID字段 */ public static String getParentMenuId(Map paramsObj) { - if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.PARENT_MENU_ID) - && StringUtils.isNotEmpty(Convert.toStr(paramsObj.get(GenConstants.PARENT_MENU_ID)))) { + if (CollUtil.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.PARENT_MENU_ID) + && StringUtils.isNotEmpty(Convert.toStr(paramsObj.get(GenConstants.PARENT_MENU_ID)))) { return Convert.toStr(paramsObj.get(GenConstants.PARENT_MENU_ID)); } return DEFAULT_PARENT_MENU_ID; @@ -284,7 +286,7 @@ public class VelocityUtils { * @return 树编码 */ public static String getTreecode(Map paramsObj) { - if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_CODE)) { + if (CollUtil.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_CODE)) { return StringUtils.toCamelCase(Convert.toStr(paramsObj.get(GenConstants.TREE_CODE))); } return StringUtils.EMPTY; @@ -297,7 +299,7 @@ public class VelocityUtils { * @return 树父编码 */ public static String getTreeParentCode(Map paramsObj) { - if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) { + if (CollUtil.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) { return StringUtils.toCamelCase(Convert.toStr(paramsObj.get(GenConstants.TREE_PARENT_CODE))); } return StringUtils.EMPTY; @@ -310,7 +312,7 @@ public class VelocityUtils { * @return 树名称 */ public static String getTreeName(Map paramsObj) { - if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_NAME)) { + if (CollUtil.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_NAME)) { return StringUtils.toCamelCase(Convert.toStr(paramsObj.get(GenConstants.TREE_NAME))); } return StringUtils.EMPTY; diff --git a/ruoyi-generator/src/main/resources/generator.yml b/ruoyi-generator/src/main/resources/generator.yml index d7e9a1aa..5bd3dd67 100644 --- a/ruoyi-generator/src/main/resources/generator.yml +++ b/ruoyi-generator/src/main/resources/generator.yml @@ -1,5 +1,5 @@ # 代码生成 -gen: +gen: # 作者 author: ruoyi # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool @@ -7,4 +7,4 @@ gen: # 自动去除表前缀,默认是false autoRemovePre: false # 表前缀(生成类名不会包含表前缀,多个用逗号分隔) - tablePrefix: sys_ + tablePrefix: sys_ \ No newline at end of file diff --git a/ruoyi-generator/src/main/resources/vm/java/controller.java.vm b/ruoyi-generator/src/main/resources/vm/java/controller.java.vm index c48a1e6d..20580d86 100644 --- a/ruoyi-generator/src/main/resources/vm/java/controller.java.vm +++ b/ruoyi-generator/src/main/resources/vm/java/controller.java.vm @@ -2,19 +2,19 @@ package ${packageName}.controller; import java.util.List; import java.util.Arrays; +import java.util.concurrent.TimeUnit; import lombok.RequiredArgsConstructor; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.PageQuery; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.core.validate.QueryGroup; @@ -39,7 +39,7 @@ import io.swagger.annotations.ApiOperation; */ @Validated @Api(value = "${functionName}控制器", tags = {"${functionName}管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @RestController @RequestMapping("/${moduleName}/${businessName}") public class ${ClassName}Controller extends BaseController { @@ -57,9 +57,9 @@ public class ${ClassName}Controller extends BaseController { return i${ClassName}Service.queryPageList(bo, pageQuery); } #elseif($table.tree) - public AjaxResult> list(@Validated(QueryGroup.class) ${ClassName}Bo bo) { + public R> list(@Validated(QueryGroup.class) ${ClassName}Bo bo) { List<${ClassName}Vo> list = i${ClassName}Service.queryList(bo); - return AjaxResult.success(list); + return R.ok(list); } #end @@ -81,10 +81,10 @@ public class ${ClassName}Controller extends BaseController { @ApiOperation("获取${functionName}详细信息") @SaCheckPermission("${permissionPrefix}:query") @GetMapping("/{${pkColumn.javaField}}") - public AjaxResult<${ClassName}Vo> getInfo(@ApiParam("主键") + public R<${ClassName}Vo> getInfo(@ApiParam("主键") @NotNull(message = "主键不能为空") @PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}) { - return AjaxResult.success(i${ClassName}Service.queryById(${pkColumn.javaField})); + return R.ok(i${ClassName}Service.queryById(${pkColumn.javaField})); } /** @@ -95,7 +95,7 @@ public class ${ClassName}Controller extends BaseController { @Log(title = "${functionName}", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() - public AjaxResult add(@Validated(AddGroup.class) @RequestBody ${ClassName}Bo bo) { + public R add(@Validated(AddGroup.class) @RequestBody ${ClassName}Bo bo) { return toAjax(i${ClassName}Service.insertByBo(bo) ? 1 : 0); } @@ -107,7 +107,7 @@ public class ${ClassName}Controller extends BaseController { @Log(title = "${functionName}", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() - public AjaxResult edit(@Validated(EditGroup.class) @RequestBody ${ClassName}Bo bo) { + public R edit(@Validated(EditGroup.class) @RequestBody ${ClassName}Bo bo) { return toAjax(i${ClassName}Service.updateByBo(bo) ? 1 : 0); } @@ -116,9 +116,9 @@ public class ${ClassName}Controller extends BaseController { */ @ApiOperation("删除${functionName}") @SaCheckPermission("${permissionPrefix}:remove") - @Log(title = "${functionName}" , businessType = BusinessType.DELETE) + @Log(title = "${functionName}", businessType = BusinessType.DELETE) @DeleteMapping("/{${pkColumn.javaField}s}") - public AjaxResult remove(@ApiParam("主键串") + public R remove(@ApiParam("主键串") @NotEmpty(message = "主键不能为空") @PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) { return toAjax(i${ClassName}Service.deleteWithValidByIds(Arrays.asList(${pkColumn.javaField}s), true) ? 1 : 0); diff --git a/ruoyi-generator/src/main/resources/vm/java/domain.java.vm b/ruoyi-generator/src/main/resources/vm/java/domain.java.vm index dfd1465f..2cf259cc 100644 --- a/ruoyi-generator/src/main/resources/vm/java/domain.java.vm +++ b/ruoyi-generator/src/main/resources/vm/java/domain.java.vm @@ -3,7 +3,6 @@ package ${packageName}.domain; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; import java.math.BigDecimal; @@ -29,7 +28,6 @@ import com.ruoyi.common.core.domain.TreeEntity; #set($Entity="TreeEntity") #end @Data -@Accessors(chain = true) @TableName("${tableName}") public class ${ClassName} extends ${Entity} { diff --git a/ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm b/ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm index 1bc84c5d..a3f53eba 100644 --- a/ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm +++ b/ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm @@ -10,7 +10,7 @@ import com.ruoyi.common.core.domain.BaseEntity; /** * ${subTable.functionName}对象 ${subTableName} - * + * * @author ${author} * @date ${datetime} */ @@ -48,12 +48,12 @@ public class ${subClassName} extends BaseEntity #else #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) #end - public void set${AttrName}($column.javaType $column.javaField) + public void set${AttrName}($column.javaType $column.javaField) { this.$column.javaField = $column.javaField; } - public $column.javaType get${AttrName}() + public $column.javaType get${AttrName}() { return $column.javaField; } diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/entity/UploadResult.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/entity/UploadResult.java index 11f9a9be..379d283c 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/entity/UploadResult.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/entity/UploadResult.java @@ -1,8 +1,7 @@ package com.ruoyi.oss.entity; +import lombok.Builder; import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; /** * 上传返回体 @@ -10,8 +9,7 @@ import lombok.experimental.Accessors; * @author Lion Li */ @Data -@NoArgsConstructor -@Accessors(chain = true) +@Builder public class UploadResult { /** diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/OssEnumd.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/OssEnumd.java index 57f232aa..e16a6733 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/OssEnumd.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/OssEnumd.java @@ -1,6 +1,5 @@ package com.ruoyi.oss.enumd; -import com.ruoyi.common.utils.StringUtils; import com.ruoyi.oss.service.impl.AliyunOssStrategy; import com.ruoyi.oss.service.impl.MinioOssStrategy; import com.ruoyi.oss.service.impl.QcloudOssStrategy; @@ -39,25 +38,15 @@ public enum OssEnumd { private final String value; - private final Class serviceClass; + private final Class beanClass; - public static Class getServiceClass(String value) { - for (OssEnumd clazz : values()) { - if (clazz.getValue().equals(value)) { - return clazz.getServiceClass(); + public static OssEnumd find(String value) { + for (OssEnumd enumd : values()) { + if (enumd.getValue().equals(value)) { + return enumd; } } return null; } - public static String getServiceName(String value) { - for (OssEnumd clazz : values()) { - if (clazz.getValue().equals(value)) { - return StringUtils.uncapitalize(clazz.getServiceClass().getSimpleName()); - } - } - return null; - } - - } diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java index 3652f64e..9ac887e6 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java @@ -1,9 +1,9 @@ package com.ruoyi.oss.factory; import com.ruoyi.common.utils.JsonUtils; -import com.ruoyi.common.utils.redis.RedisUtils; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.common.utils.reflect.ReflectUtils; +import com.ruoyi.common.utils.redis.RedisUtils; +import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.oss.constant.OssConstant; import com.ruoyi.oss.enumd.OssEnumd; import com.ruoyi.oss.exception.OssException; @@ -12,9 +12,6 @@ import com.ruoyi.oss.service.IOssStrategy; import com.ruoyi.oss.service.abstractd.AbstractOssStrategy; import lombok.extern.slf4j.Slf4j; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - /** * 文件上传Factory * @@ -23,20 +20,16 @@ import java.util.concurrent.ConcurrentHashMap; @Slf4j public class OssFactory { - /** - * 服务实例缓存 - */ - private static final Map SERVICES = new ConcurrentHashMap<>(); - /** * 初始化工厂 */ public static void init() { log.info("初始化OSS工厂"); RedisUtils.subscribe(OssConstant.CACHE_CONFIG_KEY, String.class, type -> { - // 没有的实例不处理 - if (SERVICES.containsKey(type)) { - refreshService(type); + AbstractOssStrategy strategy = getStrategy(type); + // 未初始化不处理 + if (strategy.isInit) { + refresh(type); log.info("订阅刷新OSS配置 => " + type); } }); @@ -58,24 +51,29 @@ public class OssFactory { * 根据类型获取实例 */ public static IOssStrategy instance(String type) { - IOssStrategy service = SERVICES.get(type); - if (service == null) { - refreshService(type); - service = SERVICES.get(type); + OssEnumd enumd = OssEnumd.find(type); + if (enumd == null) { + throw new OssException("文件存储服务类型无法找到!"); } - return service; + AbstractOssStrategy strategy = getStrategy(type); + if (!strategy.isInit) { + refresh(type); + } + return strategy; } - private static void refreshService(String type) { + private static void refresh(String type) { Object json = RedisUtils.getCacheObject(OssConstant.SYS_OSS_KEY + type); OssProperties properties = JsonUtils.parseObject(json.toString(), OssProperties.class); if (properties == null) { throw new OssException("系统异常, '" + type + "'配置信息不存在!"); } - // 获取redis配置信息 创建对象 并缓存 - IOssStrategy service = (IOssStrategy) ReflectUtils.newInstance(OssEnumd.getServiceClass(type)); - ((AbstractOssStrategy)service).init(properties); - SERVICES.put(type, service); + getStrategy(type).init(properties); + } + + private static AbstractOssStrategy getStrategy(String type) { + OssEnumd enumd = OssEnumd.find(type); + return (AbstractOssStrategy) SpringUtils.getBean(enumd.getBeanClass()); } } diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/IOssStrategy.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/IOssStrategy.java index 2a8ef4ed..c6661e7c 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/IOssStrategy.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/IOssStrategy.java @@ -1,6 +1,7 @@ package com.ruoyi.oss.service; import com.ruoyi.oss.entity.UploadResult; +import com.ruoyi.oss.enumd.OssEnumd; import java.io.InputStream; @@ -15,8 +16,9 @@ public interface IOssStrategy { /** * 获取服务商类型 + * @return */ - String getServiceType(); + OssEnumd getServiceType(); /** * 文件上传 diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/abstractd/AbstractOssStrategy.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/abstractd/AbstractOssStrategy.java index 6ad4f12a..e4928cdb 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/abstractd/AbstractOssStrategy.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/abstractd/AbstractOssStrategy.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.IdUtil; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.oss.entity.UploadResult; +import com.ruoyi.oss.enumd.OssEnumd; import com.ruoyi.oss.properties.OssProperties; import com.ruoyi.oss.service.IOssStrategy; @@ -18,14 +19,17 @@ import java.io.InputStream; public abstract class AbstractOssStrategy implements IOssStrategy { protected OssProperties properties; + public boolean isInit = false; - public abstract void init(OssProperties properties); + public void init(OssProperties properties) { + this.properties = properties; + } @Override public abstract void createBucket(); @Override - public abstract String getServiceType(); + public abstract OssEnumd getServiceType(); public String getPath(String prefix, String suffix) { // 生成uuid diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunOssStrategy.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunOssStrategy.java index 99efb8dc..adfce098 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunOssStrategy.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunOssStrategy.java @@ -13,6 +13,7 @@ import com.ruoyi.oss.enumd.OssEnumd; import com.ruoyi.oss.exception.OssException; import com.ruoyi.oss.properties.OssProperties; import com.ruoyi.oss.service.abstractd.AbstractOssStrategy; +import org.springframework.stereotype.Component; import java.io.ByteArrayInputStream; import java.io.InputStream; @@ -22,13 +23,14 @@ import java.io.InputStream; * * @author Lion Li */ +@Component public class AliyunOssStrategy extends AbstractOssStrategy { private OSSClient client; @Override - public void init(OssProperties cloudStorageProperties) { - properties = cloudStorageProperties; + public void init(OssProperties ossProperties) { + super.init(ossProperties); try { ClientConfiguration configuration = new ClientConfiguration(); DefaultCredentialProvider credentialProvider = new DefaultCredentialProvider( @@ -38,6 +40,7 @@ public class AliyunOssStrategy extends AbstractOssStrategy { } catch (Exception e) { throw new OssException("阿里云存储配置错误! 请检查系统配置:[" + e.getMessage() + "]"); } + isInit = true; } @Override @@ -56,8 +59,8 @@ public class AliyunOssStrategy extends AbstractOssStrategy { } @Override - public String getServiceType() { - return OssEnumd.ALIYUN.getValue(); + public OssEnumd getServiceType() { + return OssEnumd.ALIYUN; } @Override @@ -74,12 +77,11 @@ public class AliyunOssStrategy extends AbstractOssStrategy { } catch (Exception e) { throw new OssException("上传文件失败,请检查阿里云配置信息:[" + e.getMessage() + "]"); } - return new UploadResult().setUrl(getEndpointLink() + "/" + path).setFilename(path); - } + return UploadResult.builder().url(getEndpointLink() + "/" + path).filename(path).build(); } @Override public void delete(String path) { - path = path.replace(getEndpointLink() + "/" , ""); + path = path.replace(getEndpointLink() + "/", ""); try { client.deleteObject(properties.getBucketName(), path); } catch (Exception e) { diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioOssStrategy.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioOssStrategy.java index 60ac0328..435606cc 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioOssStrategy.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioOssStrategy.java @@ -9,6 +9,7 @@ import com.ruoyi.oss.properties.OssProperties; import com.ruoyi.oss.service.abstractd.AbstractOssStrategy; import io.minio.*; import org.springframework.http.MediaType; +import org.springframework.stereotype.Component; import java.io.ByteArrayInputStream; import java.io.InputStream; @@ -18,13 +19,14 @@ import java.io.InputStream; * * @author Lion Li */ +@Component public class MinioOssStrategy extends AbstractOssStrategy { private MinioClient minioClient; @Override - public void init(OssProperties cloudStorageProperties) { - properties = cloudStorageProperties; + public void init(OssProperties ossProperties) { + super.init(ossProperties); try { minioClient = MinioClient.builder() .endpoint(properties.getEndpoint()) @@ -34,6 +36,7 @@ public class MinioOssStrategy extends AbstractOssStrategy { } catch (Exception e) { throw new OssException("Minio存储配置错误! 请检查系统配置:[" + e.getMessage() + "]"); } + isInit = true; } @Override @@ -56,8 +59,8 @@ public class MinioOssStrategy extends AbstractOssStrategy { } @Override - public String getServiceType() { - return OssEnumd.MINIO.getValue(); + public OssEnumd getServiceType() { + return OssEnumd.MINIO; } @Override @@ -77,7 +80,7 @@ public class MinioOssStrategy extends AbstractOssStrategy { } catch (Exception e) { throw new OssException("上传文件失败,请核对Minio配置信息:[" + e.getMessage() + "]"); } - return new UploadResult().setUrl(getEndpointLink() + "/" + path).setFilename(path); + return UploadResult.builder().url(getEndpointLink() + "/" + path).filename(path).build(); } @Override diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudOssStrategy.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudOssStrategy.java index 5f59db2c..21a2f95b 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudOssStrategy.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudOssStrategy.java @@ -13,6 +13,7 @@ import com.ruoyi.oss.enumd.OssEnumd; import com.ruoyi.oss.exception.OssException; import com.ruoyi.oss.properties.OssProperties; import com.ruoyi.oss.service.abstractd.AbstractOssStrategy; +import org.springframework.stereotype.Component; import java.io.ByteArrayInputStream; import java.io.InputStream; @@ -22,13 +23,14 @@ import java.io.InputStream; * * @author Lion Li */ +@Component public class QcloudOssStrategy extends AbstractOssStrategy { private COSClient client; @Override - public void init(OssProperties cloudStorageProperties) { - properties = cloudStorageProperties; + public void init(OssProperties ossProperties) { + super.init(ossProperties); try { COSCredentials credentials = new BasicCOSCredentials( properties.getAccessKey(), properties.getSecretKey()); @@ -46,6 +48,7 @@ public class QcloudOssStrategy extends AbstractOssStrategy { } catch (Exception e) { throw new OssException("腾讯云存储配置错误! 请检查系统配置:[" + e.getMessage() + "]"); } + isInit = true; } @Override @@ -64,8 +67,8 @@ public class QcloudOssStrategy extends AbstractOssStrategy { } @Override - public String getServiceType() { - return OssEnumd.QCLOUD.getValue(); + public OssEnumd getServiceType() { + return OssEnumd.QCLOUD; } @Override @@ -82,7 +85,7 @@ public class QcloudOssStrategy extends AbstractOssStrategy { } catch (Exception e) { throw new OssException("上传文件失败,请检查腾讯云配置信息:[" + e.getMessage() + "]"); } - return new UploadResult().setUrl(getEndpointLink() + "/" + path).setFilename(path); + return UploadResult.builder().url(getEndpointLink() + "/" + path).filename(path).build(); } @Override diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuOssStrategy.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuOssStrategy.java index 23c66485..a47bc68d 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuOssStrategy.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuOssStrategy.java @@ -12,6 +12,7 @@ import com.ruoyi.oss.enumd.OssEnumd; import com.ruoyi.oss.exception.OssException; import com.ruoyi.oss.properties.OssProperties; import com.ruoyi.oss.service.abstractd.AbstractOssStrategy; +import org.springframework.stereotype.Component; import java.io.InputStream; @@ -20,15 +21,17 @@ import java.io.InputStream; * * @author Lion Li */ +@Component public class QiniuOssStrategy extends AbstractOssStrategy { private UploadManager uploadManager; private BucketManager bucketManager; private Auth auth; + @Override - public void init(OssProperties cloudStorageProperties) { - properties = cloudStorageProperties; + public void init(OssProperties ossProperties) { + super.init(ossProperties); try { Configuration config = new Configuration(getRegion(properties.getRegion())); // https设置 @@ -36,15 +39,12 @@ public class QiniuOssStrategy extends AbstractOssStrategy { config.useHttpsDomains = "Y".equals(properties.getIsHttps()); uploadManager = new UploadManager(config); auth = Auth.create(properties.getAccessKey(), properties.getSecretKey()); - String bucketName = properties.getBucketName(); bucketManager = new BucketManager(auth, config); - - if (!ArrayUtil.contains(bucketManager.buckets(), bucketName)) { - bucketManager.createBucket(bucketName, properties.getRegion()); - } + createBucket(); } catch (Exception e) { throw new OssException("七牛云存储配置错误! 请检查系统配置:[" + e.getMessage() + "]"); } + isInit = true; } @Override @@ -61,8 +61,8 @@ public class QiniuOssStrategy extends AbstractOssStrategy { } @Override - public String getServiceType() { - return OssEnumd.QINIU.getValue(); + public OssEnumd getServiceType() { + return OssEnumd.QINIU; } @Override @@ -76,7 +76,7 @@ public class QiniuOssStrategy extends AbstractOssStrategy { } catch (Exception e) { throw new OssException("上传文件失败,请核对七牛配置信息:[" + e.getMessage() + "]"); } - return new UploadResult().setUrl(getEndpointLink() + "/" + path).setFilename(path); + return UploadResult.builder().url(getEndpointLink() + "/" + path).filename(path).build(); } @Override diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java index 19c7cd84..b1091b45 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java @@ -11,7 +11,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; @@ -24,7 +23,6 @@ import javax.validation.constraints.Size; @Data @EqualsAndHashCode(callSuper = true) -@Accessors(chain = true) @TableName("sys_config") @ExcelIgnoreUnannotated @ApiModel("参数配置业务对象") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLogininfor.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLogininfor.java index a1575378..de095ec3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLogininfor.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLogininfor.java @@ -10,7 +10,6 @@ import com.ruoyi.common.convert.ExcelDictConvert; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; @@ -24,7 +23,6 @@ import java.util.Map; */ @Data -@Accessors(chain = true) @TableName("sys_logininfor") @ExcelIgnoreUnannotated @ApiModel("系统访问记录业务对象") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java index aa855a32..2371bb7e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java @@ -7,7 +7,6 @@ import com.ruoyi.common.xss.Xss; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; @@ -20,7 +19,6 @@ import javax.validation.constraints.Size; */ @Data @EqualsAndHashCode(callSuper = true) -@Accessors(chain = true) @TableName("sys_notice") public class SysNotice extends BaseEntity { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLog.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLog.java index ff77cee9..f6f37377 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLog.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLog.java @@ -10,7 +10,6 @@ import com.ruoyi.common.convert.ExcelDictConvert; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; @@ -24,7 +23,6 @@ import java.util.Map; */ @Data -@Accessors(chain = true) @TableName("sys_oper_log") @ExcelIgnoreUnannotated @ApiModel("操作日志记录业务对象") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOss.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOss.java index d7d75e34..711dd836 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOss.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOss.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.ruoyi.common.core.domain.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; /** * OSS对象存储对象 @@ -15,7 +14,6 @@ import lombok.experimental.Accessors; */ @Data @EqualsAndHashCode(callSuper = true) -@Accessors(chain = true) @TableName("sys_oss") public class SysOss extends BaseEntity { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOssConfig.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOssConfig.java index 775da2ba..a8340df7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOssConfig.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOssConfig.java @@ -14,7 +14,6 @@ import lombok.experimental.Accessors; */ @Data @EqualsAndHashCode(callSuper = true) -@Accessors(chain = true) @TableName("sys_oss_config") public class SysOssConfig extends BaseEntity { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java index 6b99ceb4..80bf275c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java @@ -12,7 +12,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; @@ -25,7 +24,6 @@ import javax.validation.constraints.Size; @Data @EqualsAndHashCode(callSuper = true) -@Accessors(chain = true) @TableName("sys_post") @ExcelIgnoreUnannotated @ApiModel("岗位信息业务对象") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java index 1a3e1149..c3043c25 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import lombok.experimental.Accessors; /** * 角色和部门关联 sys_role_dept @@ -15,7 +14,6 @@ import lombok.experimental.Accessors; */ @Data -@Accessors(chain = true) @TableName("sys_role_dept") @ApiModel("角色和部门关联") public class SysRoleDept { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java index 5d90d0f3..f3e4dd7c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import lombok.experimental.Accessors; /** * 角色和菜单关联 sys_role_menu @@ -15,7 +14,6 @@ import lombok.experimental.Accessors; */ @Data -@Accessors(chain = true) @TableName("sys_role_menu") @ApiModel("角色和菜单关联") public class SysRoleMenu { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java index f81508c8..605d1645 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java @@ -3,7 +3,6 @@ package com.ruoyi.system.domain; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import lombok.experimental.Accessors; /** * 当前在线会话 @@ -12,7 +11,6 @@ import lombok.experimental.Accessors; */ @Data -@Accessors(chain = true) @ApiModel("当前在线会话业务对象") public class SysUserOnline { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java index ae48cba5..243e3c8a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import lombok.experimental.Accessors; /** * 用户和岗位关联 sys_user_post @@ -15,7 +14,6 @@ import lombok.experimental.Accessors; */ @Data -@Accessors(chain = true) @TableName("sys_user_post") @ApiModel("用户和岗位关联") public class SysUserPost { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java index 3db13dfd..5fa712a4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import lombok.experimental.Accessors; /** * 用户和角色关联 sys_user_role @@ -15,7 +14,6 @@ import lombok.experimental.Accessors; */ @Data -@Accessors(chain = true) @TableName("sys_user_role") @ApiModel("用户和角色关联") public class SysUserRole { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java index 6a3798ad..d3e1a353 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java @@ -4,7 +4,6 @@ import com.ruoyi.common.utils.StringUtils; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import lombok.experimental.Accessors; /** * 路由显示信息 @@ -13,7 +12,6 @@ import lombok.experimental.Accessors; */ @Data -@Accessors(chain = true) @ApiModel("路由显示信息") public class MetaVo { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RouterVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RouterVo.java index 05ba451d..a451bb95 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RouterVo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RouterVo.java @@ -4,7 +4,6 @@ import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import lombok.experimental.Accessors; import java.util.List; @@ -14,7 +13,6 @@ import java.util.List; * @author Lion Li */ @Data -@Accessors(chain = true) @JsonInclude(JsonInclude.Include.NON_EMPTY) @ApiModel("路由配置信息") public class RouterVo { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysUserExportVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysUserExportVo.java index c43c8a5c..683cb83f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysUserExportVo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysUserExportVo.java @@ -5,7 +5,6 @@ import com.ruoyi.common.annotation.ExcelDictFormat; import com.ruoyi.common.convert.ExcelDictConvert; import lombok.Data; import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; @@ -18,7 +17,6 @@ import java.util.Date; @Data @NoArgsConstructor -@Accessors(chain = true) public class SysUserExportVo implements Serializable { private static final long serialVersionUID = 1L; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java b/ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java index 9bd21d3b..20cb14d9 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java @@ -1,15 +1,15 @@ package com.ruoyi.system.listener; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.excel.ExcelListener; import com.ruoyi.common.excel.ExcelResult; import com.ruoyi.common.exception.ServiceException; -import com.ruoyi.common.utils.LoginUtils; +import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.ValidatorUtils; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.system.domain.vo.SysUserImportVo; @@ -45,7 +45,7 @@ public class SysUserImportListener extends AnalysisEventListener selectDictDataByType(String dictType) { return selectList( - new LambdaQueryWrapper() - .eq(SysDictData::getStatus, "0") - .eq(SysDictData::getDictType, dictType) - .orderByAsc(SysDictData::getDictSort)); + new LambdaQueryWrapper() + .eq(SysDictData::getStatus, UserConstants.DICT_NORMAL) + .eq(SysDictData::getDictType, dictType) + .orderByAsc(SysDictData::getDictSort)); } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/runner/SystemApplicationRunner.java b/ruoyi-system/src/main/java/com/ruoyi/system/runner/SystemApplicationRunner.java index 4080a1ac..e9ad6ee1 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/runner/SystemApplicationRunner.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/runner/SystemApplicationRunner.java @@ -6,7 +6,6 @@ import com.ruoyi.system.service.ISysDictTypeService; import com.ruoyi.system.service.ISysOssConfigService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; @@ -17,7 +16,7 @@ import org.springframework.stereotype.Component; * @author Lion Li */ @Slf4j -@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RequiredArgsConstructor @Component public class SystemApplicationRunner implements ApplicationRunner { @@ -30,7 +29,7 @@ public class SystemApplicationRunner implements ApplicationRunner { public void run(ApplicationArguments args) throws Exception { ossConfigService.init(); log.info("初始化OSS配置成功"); - if (ruoyiConfig.isCacheLazy()){ + if (ruoyiConfig.isCacheLazy()) { return; } configService.loadingConfigCache(); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDataScopeService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDataScopeService.java new file mode 100644 index 00000000..4ad4e45d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDataScopeService.java @@ -0,0 +1,26 @@ +package com.ruoyi.system.service; + +/** + * 通用 数据权限 服务 + * + * @author Lion Li + */ +public interface ISysDataScopeService { + + /** + * 获取角色自定义权限 + * + * @param roleId 角色id + * @return 部门id组 + */ + String getRoleCustom(Long roleId); + + /** + * 获取部门及以下权限 + * + * @param deptId 部门id + * @return 部门id组 + */ + String getDeptAndChild(Long deptId); + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java index 70fda9a2..8508d4f8 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java @@ -44,7 +44,7 @@ public interface ISysDeptService { SysDept selectDeptById(Long deptId); /** - * 根据ID查询所有子部门(正常状态) + * 根据ID查询所有子部门数(正常状态) * * @param deptId 部门ID * @return 子部门数 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java index 118c36ff..741ae4bc 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java @@ -3,7 +3,6 @@ package com.ruoyi.system.service; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.common.core.service.UserService; import java.util.List; @@ -12,7 +11,7 @@ import java.util.List; * * @author Lion Li */ -public interface ISysUserService extends UserService { +public interface ISysUserService { TableDataInfo selectPageUserList(SysUser user, PageQuery pageQuery); @@ -47,7 +46,6 @@ public interface ISysUserService extends UserService { * @param userName 用户名 * @return 用户对象信息 */ - @Override SysUser selectUserByUserName(String userName); /** @@ -56,7 +54,6 @@ public interface ISysUserService extends UserService { * @param userId 用户ID * @return 用户对象信息 */ - @Override SysUser selectUserById(Long userId); /** diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java index 0905ebc2..744e13f8 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java @@ -1,24 +1,30 @@ package com.ruoyi.system.service; import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.core.domain.dto.RoleDTO; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.service.LogininforService; import com.ruoyi.common.enums.DeviceType; import com.ruoyi.common.enums.UserStatus; -import com.ruoyi.common.enums.UserType; import com.ruoyi.common.exception.user.CaptchaException; import com.ruoyi.common.exception.user.CaptchaExpireException; import com.ruoyi.common.exception.user.UserException; -import com.ruoyi.common.utils.*; +import com.ruoyi.common.helper.LoginHelper; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.MessageUtils; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.redis.RedisUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; +import java.util.List; import java.util.concurrent.TimeUnit; /** @@ -60,17 +66,8 @@ public class SysLoginService { throw new UserException("user.password.retry.limit.exceed", Constants.LOGIN_ERROR_LIMIT_TIME); } - SysUser user = userService.selectUserByUserName(username); - if (StringUtils.isNull(user)) { - log.info("登录用户:{} 不存在.", username); - throw new UserException("user.not.exists", username); - } else if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) { - log.info("登录用户:{} 已被删除.", username); - throw new UserException("user.password.delete", username); - } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { - log.info("登录用户:{} 已被停用.", username); - throw new UserException("user.blocked", username); - } + SysUser user = loadUserByUsername(username); + if (!SecurityUtils.matchesPassword(password, user.getPassword())) { // 是否第一次 errorNumber = ObjectUtil.isNull(errorNumber) ? 1 : errorNumber + 1; @@ -92,15 +89,10 @@ public class SysLoginService { asyncService.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"), request); recordLoginInfo(user.getUserId(), username); - LoginUser loginUser = new LoginUser(); - loginUser.setUserId(user.getUserId()); - loginUser.setDeptId(user.getDeptId()); - loginUser.setUsername(user.getUserName()); - loginUser.setMenuPermission(permissionService.getMenuPermission(user)); - loginUser.setRolePermission(permissionService.getRolePermission(user)); + LoginUser loginUser = buildLoginUser(user); // 生成token - LoginUtils.loginByDevice(loginUser, UserType.SYS_USER, DeviceType.PC); + LoginHelper.loginByDevice(loginUser, DeviceType.PC); return StpUtil.getTokenValue(); } @@ -125,6 +117,39 @@ public class SysLoginService { } } + private SysUser loadUserByUsername(String username) { + SysUser user = userService.selectUserByUserName(username); + if (ObjectUtil.isNull(user)) { + log.info("登录用户:{} 不存在.", username); + throw new UserException("user.not.exists", username); + } else if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) { + log.info("登录用户:{} 已被删除.", username); + throw new UserException("user.password.delete", username); + } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { + log.info("登录用户:{} 已被停用.", username); + throw new UserException("user.blocked", username); + } + return user; + } + + /** + * 构建登录用户 + */ + private LoginUser buildLoginUser(SysUser user) { + LoginUser loginUser = new LoginUser(); + loginUser.setUserId(user.getUserId()); + loginUser.setDeptId(user.getDeptId()); + loginUser.setUsername(user.getUserName()); + loginUser.setNickName(user.getNickName()); + loginUser.setUserType(user.getUserType()); + loginUser.setMenuPermission(permissionService.getMenuPermission(user)); + loginUser.setRolePermission(permissionService.getRolePermission(user)); + loginUser.setDeptName(user.getDept().getDeptName()); + List roles = BeanUtil.copyToList(user.getRoles(), RoleDTO.class); + loginUser.setRoles(roles); + return loginUser; + } + /** * 记录登录信息 * diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java index 370d5c9d..5f44991e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java @@ -5,16 +5,19 @@ import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.RegisterBody; import com.ruoyi.common.core.service.LogininforService; +import com.ruoyi.common.enums.UserType; import com.ruoyi.common.exception.user.CaptchaException; import com.ruoyi.common.exception.user.CaptchaExpireException; +import com.ruoyi.common.exception.user.UserException; import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.ServletUtils; -import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.redis.RedisUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletRequest; + /** * 注册校验方法 * @@ -31,41 +34,32 @@ public class SysRegisterService { /** * 注册 */ - public String register(RegisterBody registerBody) { - String msg = "", username = registerBody.getUsername(), password = registerBody.getPassword(); + public void register(RegisterBody registerBody) { + HttpServletRequest request = ServletUtils.getRequest(); + String username = registerBody.getUsername(); + String password = registerBody.getPassword(); + // 校验用户类型是否存在 + String userType = UserType.getUserType(registerBody.getUserType()).getUserType(); boolean captchaOnOff = configService.selectCaptchaOnOff(); // 验证码开关 if (captchaOnOff) { - validateCaptcha(username, registerBody.getCode(), registerBody.getUuid()); + validateCaptcha(username, registerBody.getCode(), registerBody.getUuid(), request); } - if (StringUtils.isEmpty(username)) { - msg = "用户名不能为空"; - } else if (StringUtils.isEmpty(password)) { - msg = "用户密码不能为空"; - } else if (username.length() < UserConstants.USERNAME_MIN_LENGTH - || username.length() > UserConstants.USERNAME_MAX_LENGTH) { - msg = "账户长度必须在2到20个字符之间"; - } else if (password.length() < UserConstants.PASSWORD_MIN_LENGTH - || password.length() > UserConstants.PASSWORD_MAX_LENGTH) { - msg = "密码长度必须在5到20个字符之间"; - } else if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(username))) { - msg = "保存用户'" + username + "'失败,注册账号已存在"; - } else { - SysUser sysUser = new SysUser(); - sysUser.setUserName(username); - sysUser.setNickName(username); - sysUser.setPassword(SecurityUtils.encryptPassword(registerBody.getPassword())); - boolean regFlag = userService.registerUser(sysUser); - if (!regFlag) { - msg = "注册失败,请联系系统管理人员"; - } else { - asyncService.recordLogininfor(username, Constants.REGISTER, - MessageUtils.message("user.register.success"), ServletUtils.getRequest()); - } + if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(username))) { + throw new UserException("user.register.save.error", username); } - return msg; + SysUser sysUser = new SysUser(); + sysUser.setUserName(username); + sysUser.setNickName(username); + sysUser.setPassword(SecurityUtils.encryptPassword(password)); + sysUser.setUserType(userType); + boolean regFlag = userService.registerUser(sysUser); + if (!regFlag) { + throw new UserException("user.register.error"); + } + asyncService.recordLogininfor(username, Constants.REGISTER, MessageUtils.message("user.register.success"), request); } /** @@ -76,14 +70,16 @@ public class SysRegisterService { * @param uuid 唯一标识 * @return 结果 */ - public void validateCaptcha(String username, String code, String uuid) { + public void validateCaptcha(String username, String code, String uuid, HttpServletRequest request) { String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid; String captcha = RedisUtils.getCacheObject(verifyKey); RedisUtils.deleteObject(verifyKey); if (captcha == null) { + asyncService.recordLogininfor(username, Constants.REGISTER, MessageUtils.message("user.jcaptcha.expire"), request); throw new CaptchaExpireException(); } if (!code.equalsIgnoreCase(captcha)) { + asyncService.recordLogininfor(username, Constants.REGISTER, MessageUtils.message("user.jcaptcha.error"), request); throw new CaptchaException(); } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java index 62d57386..3170700b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java @@ -1,6 +1,7 @@ package com.ruoyi.system.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -73,7 +74,7 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { } SysConfig retConfig = baseMapper.selectOne(new LambdaQueryWrapper() .eq(SysConfig::getConfigKey, configKey)); - if (StringUtils.isNotNull(retConfig)) { + if (ObjectUtil.isNotNull(retConfig)) { RedisUtils.setCacheObject(getCacheKey(configKey), retConfig.getConfigValue()); return retConfig.getConfigValue(); } @@ -197,9 +198,9 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { */ @Override public String checkConfigKeyUnique(SysConfig config) { - Long configId = StringUtils.isNull(config.getConfigId()) ? -1L : config.getConfigId(); + Long configId = ObjectUtil.isNull(config.getConfigId()) ? -1L : config.getConfigId(); SysConfig info = baseMapper.selectOne(new LambdaQueryWrapper().eq(SysConfig::getConfigKey, config.getConfigKey())); - if (StringUtils.isNotNull(info) && info.getConfigId().longValue() != configId.longValue()) { + if (ObjectUtil.isNotNull(info) && info.getConfigId().longValue() != configId.longValue()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDataScopeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDataScopeServiceImpl.java index 68db9d34..2803a59e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDataScopeServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDataScopeServiceImpl.java @@ -7,7 +7,7 @@ import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.system.domain.SysRoleDept; import com.ruoyi.system.mapper.SysDeptMapper; import com.ruoyi.system.mapper.SysRoleDeptMapper; -import com.ruoyi.system.service.SysDataScopeService; +import com.ruoyi.system.service.ISysDataScopeService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -16,7 +16,7 @@ import java.util.stream.Collectors; @RequiredArgsConstructor @Service("sdss") -public class SysDataScopeServiceImpl implements SysDataScopeService { +public class SysDataScopeServiceImpl implements ISysDataScopeService { private final SysRoleDeptMapper roleDeptMapper; private final SysDeptMapper deptMapper; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java index 89a7212e..0dd441ba 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java @@ -3,6 +3,7 @@ package com.ruoyi.system.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.tree.Tree; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.ruoyi.common.constant.UserConstants; @@ -10,7 +11,7 @@ import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.exception.ServiceException; -import com.ruoyi.common.utils.LoginUtils; +import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.TreeBuildUtils; import com.ruoyi.common.utils.spring.SpringUtils; @@ -45,8 +46,6 @@ public class SysDeptServiceImpl implements ISysDeptService { */ @Override public List selectDeptList(SysDept dept) { -// return baseMapper.selectList(); -// return baseMapper.selectList(new LambdaQueryWrapper<>()); return baseMapper.selectDeptList(dept); } @@ -93,7 +92,7 @@ public class SysDeptServiceImpl implements ISysDeptService { } /** - * 根据ID查询所有子部门(正常状态) + * 根据ID查询所有子部门数(正常状态) * * @param deptId 部门ID * @return 子部门数 @@ -101,7 +100,7 @@ public class SysDeptServiceImpl implements ISysDeptService { @Override public long selectNormalChildrenDeptById(Long deptId) { return baseMapper.selectCount(new LambdaQueryWrapper() - .eq(SysDept::getStatus, 0) + .eq(SysDept::getStatus, UserConstants.DEPT_NORMAL) .apply("find_in_set({0}, ancestors)", deptId)); } @@ -137,12 +136,11 @@ public class SysDeptServiceImpl implements ISysDeptService { */ @Override public String checkDeptNameUnique(SysDept dept) { - Long deptId = StringUtils.isNull(dept.getDeptId()) ? -1L : dept.getDeptId(); - boolean count = baseMapper.exists(new LambdaQueryWrapper() + boolean exist = baseMapper.exists(new LambdaQueryWrapper() .eq(SysDept::getDeptName, dept.getDeptName()) .eq(SysDept::getParentId, dept.getParentId()) - .ne(SysDept::getDeptId, deptId)); - if (count) { + .ne(ObjectUtil.isNotNull(dept.getDeptId()), SysDept::getDeptId, dept.getDeptId())); + if (exist) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; @@ -155,11 +153,11 @@ public class SysDeptServiceImpl implements ISysDeptService { */ @Override public void checkDeptDataScope(Long deptId) { - if (!SysUser.isAdmin(LoginUtils.getUserId())) { + if (!SysUser.isAdmin(LoginHelper.getUserId())) { SysDept dept = new SysDept(); dept.setDeptId(deptId); List depts = SpringUtils.getAopProxy(this).selectDeptList(dept); - if (StringUtils.isEmpty(depts)) { + if (CollUtil.isEmpty(depts)) { throw new ServiceException("没有权限访问部门数据!"); } } @@ -192,7 +190,7 @@ public class SysDeptServiceImpl implements ISysDeptService { public int updateDept(SysDept dept) { SysDept newParentDept = baseMapper.selectById(dept.getParentId()); SysDept oldDept = baseMapper.selectById(dept.getDeptId()); - if (StringUtils.isNotNull(newParentDept) && StringUtils.isNotNull(oldDept)) { + if (ObjectUtil.isNotNull(newParentDept) && ObjectUtil.isNotNull(oldDept)) { String newAncestors = newParentDept.getAncestors() + "," + newParentDept.getDeptId(); String oldAncestors = oldDept.getAncestors(); dept.setAncestors(newAncestors); @@ -200,7 +198,7 @@ public class SysDeptServiceImpl implements ISysDeptService { } int result = baseMapper.updateById(dept); if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors()) - && !StringUtils.equals("0", dept.getAncestors())) { + && !StringUtils.equals(UserConstants.DEPT_NORMAL, dept.getAncestors())) { // 如果该部门是启用状态,则启用该部门的所有上级部门 updateParentDeptStatusNormal(dept); } @@ -216,7 +214,7 @@ public class SysDeptServiceImpl implements ISysDeptService { String ancestors = dept.getAncestors(); Long[] deptIds = Convert.toLongArray(ancestors); baseMapper.update(null, new LambdaUpdateWrapper() - .set(SysDept::getStatus, "0") + .set(SysDept::getStatus, UserConstants.DEPT_NORMAL) .in(SysDept::getDeptId, Arrays.asList(deptIds))); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java index 205a40fc..048bd10f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java @@ -29,10 +29,10 @@ public class SysDictDataServiceImpl implements ISysDictDataService { @Override public TableDataInfo selectPageDictDataList(SysDictData dictData, PageQuery pageQuery) { LambdaQueryWrapper lqw = new LambdaQueryWrapper() - .eq(StringUtils.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType()) - .like(StringUtils.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel()) - .eq(StringUtils.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus()) - .orderByAsc(SysDictData::getDictSort); + .eq(StringUtils.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType()) + .like(StringUtils.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel()) + .eq(StringUtils.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus()) + .orderByAsc(SysDictData::getDictSort); Page page = baseMapper.selectPage(pageQuery.build(), lqw); return TableDataInfo.build(page); } @@ -46,10 +46,10 @@ public class SysDictDataServiceImpl implements ISysDictDataService { @Override public List selectDictDataList(SysDictData dictData) { return baseMapper.selectList(new LambdaQueryWrapper() - .eq(StringUtils.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType()) - .like(StringUtils.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel()) - .eq(StringUtils.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus()) - .orderByAsc(SysDictData::getDictSort)); + .eq(StringUtils.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType()) + .like(StringUtils.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel()) + .eq(StringUtils.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus()) + .orderByAsc(SysDictData::getDictSort)); } /** @@ -65,7 +65,7 @@ public class SysDictDataServiceImpl implements ISysDictDataService { .select(SysDictData::getDictLabel) .eq(SysDictData::getDictType, dictType) .eq(SysDictData::getDictValue, dictValue)) - .getDictLabel(); + .getDictLabel(); } /** diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java index 5c941aa1..00a491c3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java @@ -1,6 +1,7 @@ package com.ruoyi.system.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -21,10 +22,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * 字典 业务层处理 @@ -87,7 +86,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService @Override public List selectDictDataByType(String dictType) { List dictDatas = RedisUtils.getCacheObject(getCacheKey(dictType)); - if (StringUtils.isNotEmpty(dictDatas)) { + if (CollUtil.isNotEmpty(dictDatas)) { return dictDatas; } dictDatas = dictDataMapper.selectDictDataByType(dictType); @@ -130,8 +129,8 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService public void deleteDictTypeByIds(Long[] dictIds) { for (Long dictId : dictIds) { SysDictType dictType = selectDictTypeById(dictId); - if (dictDataMapper.selectCount(new LambdaQueryWrapper() - .eq(SysDictData::getDictType, dictType.getDictType())) > 0) { + if (dictDataMapper.exists(new LambdaQueryWrapper() + .eq(SysDictData::getDictType, dictType.getDictType()))) { throw new ServiceException(String.format("%1$s已分配,不能删除", dictType.getDictName())); } RedisUtils.deleteObject(getCacheKey(dictType.getDictType())); @@ -144,11 +143,16 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService */ @Override public void loadingDictCache() { - List dictTypeList = baseMapper.selectList(); - for (SysDictType dictType : dictTypeList) { - List dictDatas = dictDataMapper.selectDictDataByType(dictType.getDictType()); - RedisUtils.setCacheObject(getCacheKey(dictType.getDictType()), dictDatas); - } + List dictDataList = dictDataMapper.selectList( + new LambdaQueryWrapper().eq(SysDictData::getStatus, UserConstants.DICT_NORMAL)); + Map> dictDataMap = dictDataList.stream().collect(Collectors.groupingBy(SysDictData::getDictType)); + dictDataMap.forEach((k,v) -> { + String dictKey = getCacheKey(k); + List dictList = v.stream() + .sorted(Comparator.comparing(SysDictData::getDictSort)) + .collect(Collectors.toList()); + RedisUtils.setCacheObject(dictKey, dictList); + }); } /** @@ -213,11 +217,10 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService */ @Override public String checkDictTypeUnique(SysDictType dict) { - Long dictId = StringUtils.isNull(dict.getDictId()) ? -1L : dict.getDictId(); - long count = baseMapper.selectCount(new LambdaQueryWrapper() + boolean exist = baseMapper.exists(new LambdaQueryWrapper() .eq(SysDictType::getDictType, dict.getDictType()) - .ne(SysDictType::getDictId, dictId)); - if (count > 0) { + .ne(ObjectUtil.isNotNull(dict.getDictId()), SysDictType::getDictId, dict.getDictId())); + if (exist) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java index d7d89985..7c5018bb 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java @@ -99,8 +99,9 @@ public class SysLogininforServiceImpl implements ISysLogininforService, Logininf .like(StringUtils.isNotBlank(logininfor.getUserName()), SysLogininfor::getUserName, logininfor.getUserName()) .between(params.get("beginTime") != null && params.get("endTime") != null, SysLogininfor::getLoginTime, params.get("beginTime"), params.get("endTime")); - if(StringUtils.isBlank(pageQuery.getOrderByColumn())) { - pageQuery.setOrderByColumn("info_id").setIsAsc("desc"); + if (StringUtils.isBlank(pageQuery.getOrderByColumn())) { + pageQuery.setOrderByColumn("info_id"); + pageQuery.setIsAsc("desc"); } Page page = baseMapper.selectPage(pageQuery.build(), lqw); return TableDataInfo.build(page); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java index 7c8ade2d..431ec95f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java @@ -2,6 +2,7 @@ package com.ruoyi.system.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.tree.Tree; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.UserConstants; @@ -262,12 +263,11 @@ public class SysMenuServiceImpl implements ISysMenuService { */ @Override public String checkMenuNameUnique(SysMenu menu) { - Long menuId = StringUtils.isNull(menu.getMenuId()) ? -1L : menu.getMenuId(); - boolean count = baseMapper.exists(new LambdaQueryWrapper() + boolean exist = baseMapper.exists(new LambdaQueryWrapper() .eq(SysMenu::getMenuName, menu.getMenuName()) .eq(SysMenu::getParentId, menu.getParentId()) - .ne(SysMenu::getMenuId, menuId)); - if (count) { + .ne(ObjectUtil.isNotNull(menu.getMenuId()), SysMenu::getMenuId, menu.getMenuId())); + if (exist) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java index f07b1b59..73a67366 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java @@ -28,9 +28,9 @@ public class SysNoticeServiceImpl implements ISysNoticeService { @Override public TableDataInfo selectPageNoticeList(SysNotice notice, PageQuery pageQuery) { LambdaQueryWrapper lqw = new LambdaQueryWrapper() - .like(StringUtils.isNotBlank(notice.getNoticeTitle()), SysNotice::getNoticeTitle, notice.getNoticeTitle()) - .eq(StringUtils.isNotBlank(notice.getNoticeType()), SysNotice::getNoticeType, notice.getNoticeType()) - .like(StringUtils.isNotBlank(notice.getCreateBy()), SysNotice::getCreateBy, notice.getCreateBy()); + .like(StringUtils.isNotBlank(notice.getNoticeTitle()), SysNotice::getNoticeTitle, notice.getNoticeTitle()) + .eq(StringUtils.isNotBlank(notice.getNoticeType()), SysNotice::getNoticeType, notice.getNoticeType()) + .like(StringUtils.isNotBlank(notice.getCreateBy()), SysNotice::getCreateBy, notice.getCreateBy()); Page page = baseMapper.selectPage(pageQuery.build(), lqw); return TableDataInfo.build(page); } @@ -55,9 +55,9 @@ public class SysNoticeServiceImpl implements ISysNoticeService { @Override public List selectNoticeList(SysNotice notice) { return baseMapper.selectList(new LambdaQueryWrapper() - .like(StringUtils.isNotBlank(notice.getNoticeTitle()), SysNotice::getNoticeTitle, notice.getNoticeTitle()) - .eq(StringUtils.isNotBlank(notice.getNoticeType()), SysNotice::getNoticeType, notice.getNoticeType()) - .like(StringUtils.isNotBlank(notice.getCreateBy()), SysNotice::getCreateBy, notice.getCreateBy())); + .like(StringUtils.isNotBlank(notice.getNoticeTitle()), SysNotice::getNoticeTitle, notice.getNoticeTitle()) + .eq(StringUtils.isNotBlank(notice.getNoticeType()), SysNotice::getNoticeType, notice.getNoticeType()) + .like(StringUtils.isNotBlank(notice.getCreateBy()), SysNotice::getCreateBy, notice.getCreateBy())); } /** diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java index 63378d35..8610d974 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java @@ -64,8 +64,9 @@ public class SysOperLogServiceImpl implements ISysOperLogService, OperLogService .like(StringUtils.isNotBlank(operLog.getOperName()), SysOperLog::getOperName, operLog.getOperName()) .between(params.get("beginTime") != null && params.get("endTime") != null, SysOperLog::getOperTime, params.get("beginTime"), params.get("endTime")); - if(StringUtils.isBlank(pageQuery.getOrderByColumn())) { - pageQuery.setOrderByColumn("oper_id").setIsAsc("desc"); + if (StringUtils.isBlank(pageQuery.getOrderByColumn())) { + pageQuery.setOrderByColumn("oper_id"); + pageQuery.setIsAsc("desc"); } Page page = baseMapper.selectPage(pageQuery.build(), lqw); return TableDataInfo.build(page); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java index 12779cd9..86ba97d1 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java @@ -2,6 +2,7 @@ package com.ruoyi.system.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -106,7 +107,7 @@ public class SysOssConfigServiceImpl implements ISysOssConfigService { */ private void validEntityBeforeSave(SysOssConfig entity) { if (StringUtils.isNotEmpty(entity.getConfigKey()) - && UserConstants.NOT_UNIQUE.equals(checkConfigKeyUnique(entity))) { + && UserConstants.NOT_UNIQUE.equals(checkConfigKeyUnique(entity))) { throw new ServiceException("操作配置'" + entity.getConfigKey() + "'失败, 配置key已存在!"); } } @@ -136,11 +137,11 @@ public class SysOssConfigServiceImpl implements ISysOssConfigService { * 判断configKey是否唯一 */ private String checkConfigKeyUnique(SysOssConfig sysOssConfig) { - long ossConfigId = StringUtils.isNull(sysOssConfig.getOssConfigId()) ? -1L : sysOssConfig.getOssConfigId(); + long ossConfigId = ObjectUtil.isNull(sysOssConfig.getOssConfigId()) ? -1L : sysOssConfig.getOssConfigId(); SysOssConfig info = baseMapper.selectOne(new LambdaQueryWrapper() - .select(SysOssConfig::getOssConfigId, SysOssConfig::getConfigKey) - .eq(SysOssConfig::getConfigKey, sysOssConfig.getConfigKey())); - if (StringUtils.isNotNull(info) && info.getOssConfigId() != ossConfigId) { + .select(SysOssConfig::getOssConfigId, SysOssConfig::getConfigKey) + .eq(SysOssConfig::getConfigKey, sysOssConfig.getConfigKey())); + if (ObjectUtil.isNotNull(info) && info.getOssConfigId() != ossConfigId) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; @@ -154,7 +155,7 @@ public class SysOssConfigServiceImpl implements ISysOssConfigService { public int updateOssConfigStatus(SysOssConfigBo bo) { SysOssConfig sysOssConfig = BeanUtil.toBean(bo, SysOssConfig.class); int row = baseMapper.update(null, new LambdaUpdateWrapper() - .set(SysOssConfig::getStatus, "1")); + .set(SysOssConfig::getStatus, "1")); row += baseMapper.updateById(sysOssConfig); if (row > 0) { RedisUtils.setCacheObject(OssConstant.CACHE_CONFIG_KEY, sysOssConfig.getConfigKey()); @@ -182,8 +183,8 @@ public class SysOssConfigServiceImpl implements ISysOssConfigService { private boolean setConfigCache(boolean flag, SysOssConfig config) { if (flag) { RedisUtils.setCacheObject( - getCacheKey(config.getConfigKey()), - JsonUtils.toJsonString(config)); + getCacheKey(config.getConfigKey()), + JsonUtils.toJsonString(config)); RedisUtils.publish(OssConstant.CACHE_CONFIG_KEY, config.getConfigKey(), msg -> { log.info("发布刷新OSS配置 => " + msg); }); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java index 801d2a41..19423f40 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java @@ -50,7 +50,7 @@ public class SysOssServiceImpl implements ISysOssService { lqw.eq(StringUtils.isNotBlank(bo.getFileSuffix()), SysOss::getFileSuffix, bo.getFileSuffix()); lqw.eq(StringUtils.isNotBlank(bo.getUrl()), SysOss::getUrl, bo.getUrl()); lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null, - SysOss::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime")); + SysOss::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime")); lqw.eq(StringUtils.isNotBlank(bo.getCreateBy()), SysOss::getCreateBy, bo.getCreateBy()); lqw.eq(StringUtils.isNotBlank(bo.getService()), SysOss::getService, bo.getService()); return lqw; @@ -73,12 +73,12 @@ public class SysOssServiceImpl implements ISysOssService { throw new ServiceException(e.getMessage()); } // 保存文件信息 - SysOss oss = new SysOss() - .setUrl(uploadResult.getUrl()) - .setFileSuffix(suffix) - .setFileName(uploadResult.getFilename()) - .setOriginalName(originalfileName) - .setService(storage.getServiceType()); + SysOss oss = new SysOss(); + oss.setUrl(uploadResult.getUrl()); + oss.setFileSuffix(suffix); + oss.setFileName(uploadResult.getFilename()); + oss.setOriginalName(originalfileName); + oss.setService(storage.getServiceType().getValue()); baseMapper.insert(oss); return oss; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java index 640eed69..31071d16 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.system.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.constant.UserConstants; @@ -33,9 +34,9 @@ public class SysPostServiceImpl implements ISysPostService { @Override public TableDataInfo selectPagePostList(SysPost post, PageQuery pageQuery) { LambdaQueryWrapper lqw = new LambdaQueryWrapper() - .like(StringUtils.isNotBlank(post.getPostCode()), SysPost::getPostCode, post.getPostCode()) - .eq(StringUtils.isNotBlank(post.getStatus()), SysPost::getStatus, post.getStatus()) - .like(StringUtils.isNotBlank(post.getPostName()), SysPost::getPostName, post.getPostName()); + .like(StringUtils.isNotBlank(post.getPostCode()), SysPost::getPostCode, post.getPostCode()) + .eq(StringUtils.isNotBlank(post.getStatus()), SysPost::getStatus, post.getStatus()) + .like(StringUtils.isNotBlank(post.getPostName()), SysPost::getPostName, post.getPostName()); Page page = baseMapper.selectPage(pageQuery.build(), lqw); return TableDataInfo.build(page); } @@ -49,9 +50,9 @@ public class SysPostServiceImpl implements ISysPostService { @Override public List selectPostList(SysPost post) { return baseMapper.selectList(new LambdaQueryWrapper() - .like(StringUtils.isNotBlank(post.getPostCode()), SysPost::getPostCode, post.getPostCode()) - .eq(StringUtils.isNotBlank(post.getStatus()), SysPost::getStatus, post.getStatus()) - .like(StringUtils.isNotBlank(post.getPostName()), SysPost::getPostName, post.getPostName())); + .like(StringUtils.isNotBlank(post.getPostCode()), SysPost::getPostCode, post.getPostCode()) + .eq(StringUtils.isNotBlank(post.getStatus()), SysPost::getStatus, post.getStatus()) + .like(StringUtils.isNotBlank(post.getPostName()), SysPost::getPostName, post.getPostName())); } /** @@ -94,11 +95,10 @@ public class SysPostServiceImpl implements ISysPostService { */ @Override public String checkPostNameUnique(SysPost post) { - Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId(); - boolean count = baseMapper.exists(new LambdaQueryWrapper() - .eq(SysPost::getPostName, post.getPostName()) - .ne(SysPost::getPostId, postId)); - if (count) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(SysPost::getPostName, post.getPostName()) + .ne(ObjectUtil.isNotNull(post.getPostId()), SysPost::getPostId, post.getPostId())); + if (exist) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; @@ -112,11 +112,10 @@ public class SysPostServiceImpl implements ISysPostService { */ @Override public String checkPostCodeUnique(SysPost post) { - Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId(); - boolean count = baseMapper.exists(new LambdaQueryWrapper() - .eq(SysPost::getPostCode, post.getPostCode()) - .ne(SysPost::getPostId, postId)); - if (count) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(SysPost::getPostCode, post.getPostCode()) + .ne(ObjectUtil.isNotNull(post.getPostId()), SysPost::getPostId, post.getPostId())); + if (exist) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java index 2f727678..ff78f199 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java @@ -1,5 +1,7 @@ package com.ruoyi.system.service.impl; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.constant.UserConstants; @@ -8,8 +10,7 @@ import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.exception.ServiceException; -import com.ruoyi.common.utils.LoginUtils; -import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.system.domain.SysRoleDept; import com.ruoyi.system.domain.SysRoleMenu; @@ -88,7 +89,7 @@ public class SysRoleServiceImpl implements ISysRoleService { List perms = baseMapper.selectRolePermissionByUserId(userId); Set permsSet = new HashSet<>(); for (SysRole perm : perms) { - if (StringUtils.isNotNull(perm)) { + if (ObjectUtil.isNotNull(perm)) { permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(","))); } } @@ -135,11 +136,10 @@ public class SysRoleServiceImpl implements ISysRoleService { */ @Override public String checkRoleNameUnique(SysRole role) { - Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId(); - boolean count = baseMapper.exists(new LambdaQueryWrapper() - .eq(SysRole::getRoleName, role.getRoleName()) - .ne(SysRole::getRoleId, roleId)); - if (count) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(SysRole::getRoleName, role.getRoleName()) + .ne(ObjectUtil.isNotNull(role.getRoleId()), SysRole::getRoleId, role.getRoleId())); + if (exist) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; @@ -153,11 +153,10 @@ public class SysRoleServiceImpl implements ISysRoleService { */ @Override public String checkRoleKeyUnique(SysRole role) { - Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId(); - boolean count = baseMapper.exists(new LambdaQueryWrapper() - .eq(SysRole::getRoleKey, role.getRoleKey()) - .ne(SysRole::getRoleId, roleId)); - if (count) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(SysRole::getRoleKey, role.getRoleKey()) + .ne(ObjectUtil.isNotNull(role.getRoleId()), SysRole::getRoleId, role.getRoleId())); + if (exist) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; @@ -170,7 +169,7 @@ public class SysRoleServiceImpl implements ISysRoleService { */ @Override public void checkRoleAllowed(SysRole role) { - if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin()) { + if (ObjectUtil.isNotNull(role.getRoleId()) && role.isAdmin()) { throw new ServiceException("不允许操作超级管理员角色"); } } @@ -182,11 +181,11 @@ public class SysRoleServiceImpl implements ISysRoleService { */ @Override public void checkRoleDataScope(Long roleId) { - if (!SysUser.isAdmin(LoginUtils.getUserId())) { + if (!SysUser.isAdmin(LoginHelper.getUserId())) { SysRole role = new SysRole(); role.setRoleId(roleId); List roles = SpringUtils.getAopProxy(this).selectRoleList(role); - if (StringUtils.isEmpty(roles)) { + if (CollUtil.isEmpty(roles)) { throw new ServiceException("没有权限访问角色数据!"); } } @@ -330,6 +329,7 @@ public class SysRoleServiceImpl implements ISysRoleService { public int deleteRoleByIds(Long[] roleIds) { for (Long roleId : roleIds) { checkRoleAllowed(new SysRole(roleId)); + checkRoleDataScope(roleId); SysRole role = selectRoleById(roleId); if (countUserRoleByRoleId(roleId) > 0) { throw new ServiceException(String.format("%1$s已分配,不能删除", role.getRoleName())); @@ -352,8 +352,8 @@ public class SysRoleServiceImpl implements ISysRoleService { @Override public int deleteAuthUser(SysUserRole userRole) { return userRoleMapper.delete(new LambdaQueryWrapper() - .eq(SysUserRole::getRoleId, userRole.getRoleId()) - .eq(SysUserRole::getUserId, userRole.getUserId())); + .eq(SysUserRole::getRoleId, userRole.getRoleId()) + .eq(SysUserRole::getUserId, userRole.getUserId())); } /** @@ -366,8 +366,8 @@ public class SysRoleServiceImpl implements ISysRoleService { @Override public int deleteAuthUsers(Long roleId, Long[] userIds) { return userRoleMapper.delete(new LambdaQueryWrapper() - .eq(SysUserRole::getRoleId, roleId) - .in(SysUserRole::getUserId, Arrays.asList(userIds))); + .eq(SysUserRole::getRoleId, roleId) + .in(SysUserRole::getUserId, Arrays.asList(userIds))); } /** diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysSensitiveServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysSensitiveServiceImpl.java index 7062d965..40cae236 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysSensitiveServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysSensitiveServiceImpl.java @@ -1,7 +1,7 @@ package com.ruoyi.system.service.impl; import com.ruoyi.common.core.service.SensitiveService; -import com.ruoyi.common.utils.LoginUtils; +import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.SecurityUtils; import org.springframework.stereotype.Service; @@ -21,7 +21,7 @@ public class SysSensitiveServiceImpl implements SensitiveService { */ @Override public boolean isSensitive() { - return SecurityUtils.isAdmin(LoginUtils.getUserId()); + return SecurityUtils.isAdmin(LoginHelper.getUserId()); } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index 9dd77a02..00e99913 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -1,6 +1,7 @@ package com.ruoyi.system.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -9,10 +10,8 @@ import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.common.core.service.UserService; import com.ruoyi.common.exception.ServiceException; -import com.ruoyi.common.utils.LoginUtils; -import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.system.domain.SysPost; @@ -38,7 +37,7 @@ import java.util.stream.Collectors; @Slf4j @RequiredArgsConstructor @Service -public class SysUserServiceImpl implements ISysUserService, UserService { +public class SysUserServiceImpl implements ISysUserService { private final SysUserMapper baseMapper; private final SysRoleMapper roleMapper; @@ -147,8 +146,8 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ @Override public String checkUserNameUnique(String userName) { - long count = baseMapper.selectCount(new LambdaQueryWrapper().eq(SysUser::getUserName, userName)); - if (count > 0) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper().eq(SysUser::getUserName, userName)); + if (exist) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; @@ -162,11 +161,10 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ @Override public String checkPhoneUnique(SysUser user) { - Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); - boolean count = baseMapper.exists(new LambdaQueryWrapper() - .eq(SysUser::getPhonenumber, user.getPhonenumber()) - .ne(SysUser::getUserId, userId)); - if (count) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(SysUser::getPhonenumber, user.getPhonenumber()) + .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId())); + if (exist) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; @@ -180,11 +178,10 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ @Override public String checkEmailUnique(SysUser user) { - Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); - boolean count = baseMapper.exists(new LambdaQueryWrapper() - .eq(SysUser::getEmail, user.getEmail()) - .ne(SysUser::getUserId, userId)); - if (count) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(SysUser::getEmail, user.getEmail()) + .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId())); + if (exist) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; @@ -197,7 +194,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ @Override public void checkUserAllowed(SysUser user) { - if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) { + if (ObjectUtil.isNotNull(user.getUserId()) && user.isAdmin()) { throw new ServiceException("不允许操作超级管理员用户"); } } @@ -209,11 +206,11 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ @Override public void checkUserDataScope(Long userId) { - if (!SysUser.isAdmin(LoginUtils.getUserId())) { + if (!SysUser.isAdmin(LoginHelper.getUserId())) { SysUser user = new SysUser(); user.setUserId(userId); List users = SpringUtils.getAopProxy(this).selectUserList(user); - if (StringUtils.isEmpty(users)) { + if (CollUtil.isEmpty(users)) { throw new ServiceException("没有权限访问用户数据!"); } } @@ -245,6 +242,8 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ @Override public boolean registerUser(SysUser user) { + user.setCreateBy(user.getUserName()); + user.setUpdateBy(user.getUserName()); return baseMapper.insert(user) > 0; } @@ -279,7 +278,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { @Transactional(rollbackFor = Exception.class) public void insertUserAuth(Long userId, Long[] roleIds) { userRoleMapper.delete(new LambdaQueryWrapper() - .eq(SysUserRole::getUserId, userId)); + .eq(SysUserRole::getUserId, userId)); insertUserRole(userId, roleIds); } @@ -315,9 +314,9 @@ public class SysUserServiceImpl implements ISysUserService, UserService { @Override public boolean updateUserAvatar(String userName, String avatar) { return baseMapper.update(null, - new LambdaUpdateWrapper() - .set(SysUser::getAvatar, avatar) - .eq(SysUser::getUserName, userName)) > 0; + new LambdaUpdateWrapper() + .set(SysUser::getAvatar, avatar) + .eq(SysUser::getUserName, userName)) > 0; } /** @@ -341,9 +340,9 @@ public class SysUserServiceImpl implements ISysUserService, UserService { @Override public int resetUserPwd(String userName, String password) { return baseMapper.update(null, - new LambdaUpdateWrapper() - .set(SysUser::getPassword, password) - .eq(SysUser::getUserName, userName)); + new LambdaUpdateWrapper() + .set(SysUser::getPassword, password) + .eq(SysUser::getUserName, userName)); } /** @@ -353,7 +352,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ public void insertUserRole(SysUser user) { Long[] roles = user.getRoleIds(); - if (StringUtils.isNotNull(roles)) { + if (ObjectUtil.isNotNull(roles)) { // 新增用户与角色管理 List list = new ArrayList(); for (Long roleId : roles) { @@ -375,7 +374,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ public void insertUserPost(SysUser user) { Long[] posts = user.getPostIds(); - if (StringUtils.isNotNull(posts)) { + if (ObjectUtil.isNotNull(posts)) { // 新增用户与岗位管理 List list = new ArrayList(); for (Long postId : posts) { @@ -397,7 +396,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { * @param roleIds 角色组 */ public void insertUserRole(Long userId, Long[] roleIds) { - if (StringUtils.isNotNull(roleIds)) { + if (ObjectUtil.isNotNull(roleIds)) { // 新增用户与角色管理 List list = new ArrayList(); for (Long roleId : roleIds) { @@ -439,6 +438,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { public int deleteUserByIds(Long[] userIds) { for (Long userId : userIds) { checkUserAllowed(new SysUser(userId)); + checkUserDataScope(userId); } List ids = Arrays.asList(userIds); // 删除用户与角色关联 diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IFlowInstanceService.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IFlowInstanceService.java index 37b9e5e0..0b0b5a0e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IFlowInstanceService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IFlowInstanceService.java @@ -1,6 +1,6 @@ package com.ruoyi.workflow.service; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.workflow.domain.vo.FlowTaskVo; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.task.api.Task; @@ -54,5 +54,5 @@ public interface IFlowInstanceService { * @param variables 流程变量 * @return */ - AjaxResult startProcessInstanceById(String procDefId, Map variables); + R startProcessInstanceById(String procDefId, Map variables); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IFlowTaskService.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IFlowTaskService.java index 1cc14d2a..1bc1ecf1 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IFlowTaskService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IFlowTaskService.java @@ -1,6 +1,6 @@ package com.ruoyi.workflow.service; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.workflow.domain.vo.FlowTaskVo; import org.flowable.task.api.Task; @@ -17,7 +17,7 @@ public interface IFlowTaskService { * * @param task 请求实体参数 */ - AjaxResult complete(FlowTaskVo task); + R complete(FlowTaskVo task); /** * 驳回任务 @@ -40,7 +40,7 @@ public interface IFlowTaskService { * @param flowTaskVo * @return */ - AjaxResult findReturnTaskList(FlowTaskVo flowTaskVo); + R findReturnTaskList(FlowTaskVo flowTaskVo); /** * 删除任务 @@ -84,21 +84,21 @@ public interface IFlowTaskService { * @param pageSize * @return */ - AjaxResult myProcess(Integer pageNum, Integer pageSize); + R myProcess(Integer pageNum, Integer pageSize); /** * 取消申请 * @param flowTaskVo * @return */ - AjaxResult stopProcess(FlowTaskVo flowTaskVo); + R stopProcess(FlowTaskVo flowTaskVo); /** * 撤回流程 * @param flowTaskVo * @return */ - AjaxResult revokeProcess(FlowTaskVo flowTaskVo); + R revokeProcess(FlowTaskVo flowTaskVo); /** @@ -108,7 +108,7 @@ public interface IFlowTaskService { * @param pageSize 每页条数 * @return */ - AjaxResult todoList(Integer pageNum, Integer pageSize); + R todoList(Integer pageNum, Integer pageSize); /** @@ -118,7 +118,7 @@ public interface IFlowTaskService { * @param pageSize 每页条数 * @return */ - AjaxResult finishedList(Integer pageNum, Integer pageSize); + R finishedList(Integer pageNum, Integer pageSize); /** * 流程历史流转记录 @@ -126,7 +126,7 @@ public interface IFlowTaskService { * @param procInsId 流程实例Id * @return */ - AjaxResult flowRecord(String procInsId, String deployId); + R flowRecord(String procInsId, String deployId); /** * 根据任务ID查询挂载的表单信息 @@ -148,19 +148,19 @@ public interface IFlowTaskService { * @param procInsId * @return */ - AjaxResult getFlowViewer(String procInsId); + R getFlowViewer(String procInsId); /** * 获取流程变量 * @param taskId * @return */ - AjaxResult processVariables(String taskId); + R processVariables(String taskId); /** * 获取下一节点 * @param flowTaskVo 任务 * @return */ - AjaxResult getNextFlowNode(FlowTaskVo flowTaskVo); + R getNextFlowNode(FlowTaskVo flowTaskVo); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/FlowDefinitionServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/FlowDefinitionServiceImpl.java index 7a9e2cff..a37995af 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/FlowDefinitionServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/FlowDefinitionServiceImpl.java @@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.exception.ServiceException; -import com.ruoyi.common.utils.LoginUtils; +import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.flowable.common.constant.ProcessConstants; import com.ruoyi.flowable.common.enums.FlowComment; import com.ruoyi.flowable.factory.FlowServiceFactory; @@ -213,7 +213,7 @@ public class FlowDefinitionServiceImpl extends FlowServiceFactory implements IFl // variables.put("skip", true); // variables.put(ProcessConstants.FLOWABLE_SKIP_EXPRESSION_ENABLED, true); // 设置流程发起人Id到流程中 - String UserIdStr = LoginUtils.getUserId().toString(); + String UserIdStr = LoginHelper.getUserId().toString(); identityService.setAuthenticatedUserId(UserIdStr); variables.put(ProcessConstants.PROCESS_INITIATOR, UserIdStr); ProcessInstance processInstance = runtimeService.startProcessInstanceById(procDefId, variables); @@ -223,7 +223,7 @@ public class FlowDefinitionServiceImpl extends FlowServiceFactory implements IFl if (!StrUtil.equalsAny(task.getAssignee(), UserIdStr)) { throw new ServiceException("数据验证失败,该工作流第一个用户任务的指派人并非当前用户,不能执行该操作!"); } - taskService.addComment(task.getId(), processInstance.getProcessInstanceId(), FlowComment.NORMAL.getType(), LoginUtils.getNickName() + "发起流程申请"); + taskService.addComment(task.getId(), processInstance.getProcessInstanceId(), FlowComment.NORMAL.getType(), LoginHelper.getNickName() + "发起流程申请"); // taskService.setAssignee(task.getId(), UserIdStr); taskService.complete(task.getId(), variables); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/FlowInstanceServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/FlowInstanceServiceImpl.java index 8020ee07..08f56d4e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/FlowInstanceServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/FlowInstanceServiceImpl.java @@ -1,10 +1,10 @@ package com.ruoyi.workflow.service.impl; -import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.common.utils.LoginUtils; -import com.ruoyi.workflow.domain.vo.FlowTaskVo; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.flowable.factory.FlowServiceFactory; +import com.ruoyi.workflow.domain.vo.FlowTaskVo; import com.ruoyi.workflow.service.IFlowInstanceService; import lombok.extern.slf4j.Slf4j; import org.flowable.common.engine.api.FlowableObjectNotFoundException; @@ -109,19 +109,19 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow * @return */ @Override - public AjaxResult startProcessInstanceById(String procDefId, Map variables) { + public R startProcessInstanceById(String procDefId, Map variables) { try { // 设置流程发起人Id到流程中 - Long userId = LoginUtils.getUserId(); + Long userId = LoginHelper.getUserId(); // identityService.setAuthenticatedUserId(userId.toString()); variables.put("initiator", userId); variables.put("_FLOWABLE_SKIP_EXPRESSION_ENABLED", true); runtimeService.startProcessInstanceById(procDefId, variables); - return AjaxResult.success("流程启动成功"); + return R.ok("流程启动成功"); } catch (Exception e) { e.printStackTrace(); - return AjaxResult.error("流程启动错误"); + return R.fail("流程启动错误"); } } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/FlowTaskServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/FlowTaskServiceImpl.java index c96eb572..f085ab9a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/FlowTaskServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/FlowTaskServiceImpl.java @@ -4,11 +4,11 @@ package com.ruoyi.workflow.service.impl; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.collect.Lists; -import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.JsonUtils; -import com.ruoyi.common.utils.LoginUtils; import com.ruoyi.flowable.common.constant.ProcessConstants; import com.ruoyi.flowable.common.enums.FlowComment; import com.ruoyi.flowable.factory.FlowServiceFactory; @@ -86,17 +86,17 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask */ @Transactional(rollbackFor = Exception.class) @Override - public AjaxResult complete(FlowTaskVo taskVo) { + public R complete(FlowTaskVo taskVo) { Task task = taskService.createTaskQuery().taskId(taskVo.getTaskId()).singleResult(); if (Objects.isNull(task)) { - return AjaxResult.error("任务不存在"); + return R.fail("任务不存在"); } if (DelegationState.PENDING.equals(task.getDelegationState())) { taskService.addComment(taskVo.getTaskId(), taskVo.getInstanceId(), FlowComment.DELEGATE.getType(), taskVo.getComment()); taskService.resolveTask(taskVo.getTaskId(), taskVo.getValues()); } else { taskService.addComment(taskVo.getTaskId(), taskVo.getInstanceId(), FlowComment.NORMAL.getType(), taskVo.getComment()); - Long userId = LoginUtils.getUserId(); + Long userId = LoginHelper.getUserId(); taskService.setAssignee(taskVo.getTaskId(), userId.toString()); if (ObjectUtil.isNotEmpty(taskVo.getValues())) { taskService.complete(taskVo.getTaskId(), taskVo.getValues()); @@ -104,7 +104,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask taskService.complete(taskVo.getTaskId()); } } - return AjaxResult.success(); + return R.ok(); } /** @@ -318,7 +318,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask * @return */ @Override - public AjaxResult findReturnTaskList(FlowTaskVo flowTaskVo) { + public R findReturnTaskList(FlowTaskVo flowTaskVo) { // 当前任务 task Task task = taskService.createTaskQuery().taskId(flowTaskVo.getTaskId()).singleResult(); // 获取流程定义信息 @@ -349,7 +349,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask userTaskList.retainAll(road); } } - return AjaxResult.success(userTaskList); + return R.ok(userTaskList); } /** @@ -416,9 +416,9 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask * @return */ @Override - public AjaxResult myProcess(Integer pageNum, Integer pageSize) { + public R myProcess(Integer pageNum, Integer pageSize) { Page page = new Page<>(); - Long userId = LoginUtils.getUserId(); + Long userId = LoginHelper.getUserId(); HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery() .startedBy(userId.toString()) .orderByProcessInstanceStartTime() @@ -460,7 +460,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask flowList.add(flowTask); } page.setRecords(flowList); - return AjaxResult.success(page); + return R.ok(page); } /** @@ -470,7 +470,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask * @return */ @Override - public AjaxResult stopProcess(FlowTaskVo flowTaskVo) { + public R stopProcess(FlowTaskVo flowTaskVo) { List task = taskService.createTaskQuery().processInstanceId(flowTaskVo.getInstanceId()).list(); if (CollectionUtils.isEmpty(task)) { throw new RuntimeException("流程未启动或已执行完成,取消申请失败"); @@ -483,7 +483,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask Process process = bpmnModel.getMainProcess(); List endNodes = process.findFlowElementsOfType(EndEvent.class, false); if (CollectionUtils.isNotEmpty(endNodes)) { - Authentication.setAuthenticatedUserId(LoginUtils.getUserId().toString()); + Authentication.setAuthenticatedUserId(LoginHelper.getUserId().toString()); // taskService.addComment(task.getId(), processInstance.getProcessInstanceId(), FlowComment.STOP.getType(), // StringUtils.isBlank(flowTaskVo.getComment()) ? "取消申请" : flowTaskVo.getComment()); String endId = endNodes.get(0).getId(); @@ -496,7 +496,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask } } - return AjaxResult.success(); + return R.ok(); } /** @@ -506,7 +506,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask * @return */ @Override - public AjaxResult revokeProcess(FlowTaskVo flowTaskVo) { + public R revokeProcess(FlowTaskVo flowTaskVo) { Task task = taskService.createTaskQuery().processInstanceId(flowTaskVo.getInstanceId()).singleResult(); if (task == null) { throw new RuntimeException("流程未启动或已执行完成,无法撤回"); @@ -520,7 +520,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask String myTaskId = null; HistoricTaskInstance myTask = null; for (HistoricTaskInstance hti : htiList) { - if (LoginUtils.getUserId().toString().equals(hti.getAssignee())) { + if (LoginHelper.getUserId().toString().equals(hti.getAssignee())) { myTaskId = hti.getId(); myTask = hti; break; @@ -554,7 +554,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask List oriSequenceFlows = new ArrayList<>(flowNode.getOutgoingFlows()); - return AjaxResult.success(); + return R.ok(); } /** @@ -565,9 +565,9 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask * @return */ @Override - public AjaxResult todoList(Integer pageNum, Integer pageSize) { + public R todoList(Integer pageNum, Integer pageSize) { Page page = new Page<>(); - Long userId = LoginUtils.getUserId(); + Long userId = LoginHelper.getUserId(); TaskQuery taskQuery = taskService.createTaskQuery() .active() .includeProcessVariables() @@ -606,7 +606,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask } page.setRecords(flowList); - return AjaxResult.success(page); + return R.ok(page); } @@ -618,9 +618,9 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask * @return */ @Override - public AjaxResult finishedList(Integer pageNum, Integer pageSize) { + public R finishedList(Integer pageNum, Integer pageSize) { Page page = new Page<>(); - Long userId = LoginUtils.getUserId(); + Long userId = LoginHelper.getUserId(); HistoricTaskInstanceQuery taskInstanceQuery = historyService.createHistoricTaskInstanceQuery() .includeProcessVariables() .finished() @@ -666,7 +666,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask // Map result = new HashMap<>(); // result.put("result",page); // result.put("finished",true); - return AjaxResult.success(page); + return R.ok(page); } private static Predicate distinctByKey(Function keyExtractor) { @@ -681,7 +681,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask * @return */ @Override - public AjaxResult flowRecord(String procInsId, String deployId) { + public R flowRecord(String procInsId, String deployId) { Map map = new HashMap<>(); if (StringUtils.isNotBlank(procInsId)) { List list = historyService @@ -746,11 +746,11 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask if (StringUtils.isNotBlank(deployId)) { SysForm sysForm = sysInstanceFormService.selectSysDeployFormByDeployId(deployId); if (Objects.isNull(sysForm)) { - return AjaxResult.error("请先配置流程表单"); + return R.fail("请先配置流程表单"); } map.put("formData", JsonUtils.parseObject(sysForm.getFormContent(), Map.class)); } - return AjaxResult.success(map); + return R.ok(map); } /** @@ -820,7 +820,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask * @return */ @Override - public AjaxResult getFlowViewer(String procInsId) { + public R getFlowViewer(String procInsId) { // 构建查询条件 HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery() .processInstanceId(procInsId); @@ -833,7 +833,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask .stream().distinct().map(HistoricActivityInstance::getActivityId) .collect(Collectors.toList()); // 构建视图类 - return AjaxResult.success(new FlowViewerVo(finishedTaskList, unfinishedTaskList)); + return R.ok(new FlowViewerVo(finishedTaskList, unfinishedTaskList)); } /** @@ -843,14 +843,14 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask * @return */ @Override - public AjaxResult processVariables(String taskId) { + public R processVariables(String taskId) { // 流程变量 HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().includeProcessVariables().finished().taskId(taskId).singleResult(); if (Objects.nonNull(historicTaskInstance)) { - return AjaxResult.success(historicTaskInstance.getProcessVariables()); + return R.ok(historicTaskInstance.getProcessVariables()); } else { Map variables = taskService.getVariables(taskId); - return AjaxResult.success(variables); + return R.ok(variables); } } @@ -861,7 +861,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask * @return */ @Override - public AjaxResult getNextFlowNode(FlowTaskVo flowTaskVo) { + public R getNextFlowNode(FlowTaskVo flowTaskVo) { Task task = taskService.createTaskQuery().taskId(flowTaskVo.getTaskId()).singleResult(); FlowNextDto flowNextDto = new FlowNextDto(); if (Objects.nonNull(task)) { @@ -911,10 +911,10 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask } } } else { - return AjaxResult.success("流程已完结", null); + return R.ok("流程已完结", null); } } - return AjaxResult.success(flowNextDto); + return R.ok(flowNextDto); } /** diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index 8c2437e9..7f12db7f 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -9,6 +9,7 @@ + @@ -50,6 +51,7 @@ u.dept_id, u.user_name, u.nick_name, + u.user_type, u.email, u.avatar, u.phonenumber, diff --git a/ruoyi-ui/src/assets/styles/ruoyi.scss b/ruoyi-ui/src/assets/styles/ruoyi.scss index e9b54599..e9608771 100644 --- a/ruoyi-ui/src/assets/styles/ruoyi.scss +++ b/ruoyi-ui/src/assets/styles/ruoyi.scss @@ -47,9 +47,8 @@ .mb10 { margin-bottom: 10px; } - -.ml0 { - margin-left: 10px; +.ml10 { + margin-left: 10px; } .mt20 { @@ -63,9 +62,8 @@ .mb20 { margin-bottom: 20px; } - -.m20 { - margin-left: 20px; +.ml20 { + margin-left: 20px; } .h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 { diff --git a/ruoyi-ui/src/plugins/tab.js b/ruoyi-ui/src/plugins/tab.js index 95a3848b..f5d7a3e0 100644 --- a/ruoyi-ui/src/plugins/tab.js +++ b/ruoyi-ui/src/plugins/tab.js @@ -1,66 +1,67 @@ -import store from '@/store' -import router from '@/router'; - -export default { - // 刷新当前tab页签 - refreshPage(obj) { - const { path, matched } = router.currentRoute; - if (obj === undefined) { - matched.forEach((m) => { - if (m.components && m.components.default && m.components.default.name) { - if (!['Layout', 'ParentView'].includes(m.components.default.name)) { - obj = { name: m.components.default.name, path: path }; - } - } - }); - } - return store.dispatch('tagsView/delCachedView', obj).then(() => { - const { path } = obj - router.replace({ - path: '/redirect' + path - }) - }) - }, - // 关闭当前tab页签,打开新页签 - closeOpenPage(obj) { - store.dispatch("tagsView/delView", router.currentRoute); - if (obj !== undefined) { - return router.push(obj); - } - }, - // 关闭指定tab页签 - closePage(obj) { - if (obj === undefined) { - return store.dispatch('tagsView/delView', router.currentRoute).then(({ lastPath }) => { - return router.push(lastPath || '/'); - }); - } - return store.dispatch('tagsView/delView', obj); - }, - // 关闭所有tab页签 - closeAllPage() { - return store.dispatch('tagsView/delAllViews'); - }, - // 关闭左侧tab页签 - closeLeftPage(obj) { - return store.dispatch('tagsView/delLeftTags', obj || router.currentRoute); - }, - // 关闭右侧tab页签 - closeRightPage(obj) { - return store.dispatch('tagsView/delRightTags', obj || router.currentRoute); - }, - // 关闭其他tab页签 - closeOtherPage(obj) { - return store.dispatch('tagsView/delOthersViews', obj || router.currentRoute); - }, - // 添加tab页签 - openPage(title, url) { - var obj = { path: url, meta: { title: title } } - store.dispatch('tagsView/addView', obj); - return router.push(url); - }, - // 修改tab页签 - updatePage(obj) { - return store.dispatch('tagsView/updateVisitedView', obj); - } -} +import store from '@/store' +import router from '@/router'; + +export default { + // 刷新当前tab页签 + refreshPage(obj) { + const { path, query, matched } = router.currentRoute; + if (obj === undefined) { + matched.forEach((m) => { + if (m.components && m.components.default && m.components.default.name) { + if (!['Layout', 'ParentView'].includes(m.components.default.name)) { + obj = { name: m.components.default.name, path: path, query: query }; + } + } + }); + } + return store.dispatch('tagsView/delCachedView', obj).then(() => { + const { path, query } = obj + router.replace({ + path: '/redirect' + path, + query: query + }) + }) + }, + // 关闭当前tab页签,打开新页签 + closeOpenPage(obj) { + store.dispatch("tagsView/delView", router.currentRoute); + if (obj !== undefined) { + return router.push(obj); + } + }, + // 关闭指定tab页签 + closePage(obj) { + if (obj === undefined) { + return store.dispatch('tagsView/delView', router.currentRoute).then(({ lastPath }) => { + return router.push(lastPath || '/'); + }); + } + return store.dispatch('tagsView/delView', obj); + }, + // 关闭所有tab页签 + closeAllPage() { + return store.dispatch('tagsView/delAllViews'); + }, + // 关闭左侧tab页签 + closeLeftPage(obj) { + return store.dispatch('tagsView/delLeftTags', obj || router.currentRoute); + }, + // 关闭右侧tab页签 + closeRightPage(obj) { + return store.dispatch('tagsView/delRightTags', obj || router.currentRoute); + }, + // 关闭其他tab页签 + closeOtherPage(obj) { + return store.dispatch('tagsView/delOthersViews', obj || router.currentRoute); + }, + // 添加tab页签 + openPage(title, url) { + var obj = { path: url, meta: { title: title } } + store.dispatch('tagsView/addView', obj); + return router.push(url); + }, + // 修改tab页签 + updatePage(obj) { + return store.dispatch('tagsView/updateVisitedView', obj); + } +} diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js index 12dc7315..3fb685d0 100644 --- a/ruoyi-ui/src/router/index.js +++ b/ruoyi-ui/src/router/index.js @@ -74,45 +74,6 @@ export const constantRoutes = [ } ] }, - { - path: '/definition', - component: Layout, - hidden: true, - children: [ - { - path: 'designer/index', - component: () => import('@/views/workflow/definition/designer'), - name: 'WorkflowDesigner', - meta: { title: '流程设计', icon: '' } - } - ] - }, - { - path: '/task', - component: Layout, - hidden: true, - children: [ - { - path: 'record/index', - component: () => import('@/views/workflow/task/record/index'), - name: 'Record', - meta: { title: '流程处理', icon: '' } - } - ] - }, - { - path: '/tool', - component: Layout, - hidden: true, - children: [ - { - path: 'build/index', - component: () => import('@/views/tool/build/index'), - name: 'FormBuild', - meta: { title: '表单配置', icon: '' } - } - ] - }, { path: '/user', component: Layout, diff --git a/ruoyi-ui/src/views/register.vue b/ruoyi-ui/src/views/register.vue index 75993149..c9f1efbb 100644 --- a/ruoyi-ui/src/views/register.vue +++ b/ruoyi-ui/src/views/register.vue @@ -61,7 +61,7 @@

@@ -124,7 +124,9 @@ export default { this.$refs.registerForm.validate(valid => { if (valid) { this.loading = true; - register(this.registerForm).then(res => { + let registerForm = this.registerForm; + registerForm.userType = "sys_user" + register(registerForm).then(res => { const username = this.registerForm.username; this.$alert("恭喜你,您的账号 " + username + " 注册成功!", '系统提示', { dangerouslyUseHTMLString: true, diff --git a/ruoyi-ui/src/views/tool/build/CodeTypeDialog.vue b/ruoyi-ui/src/views/tool/build/CodeTypeDialog.vue index 6f0c0d19..97055bc7 100644 --- a/ruoyi-ui/src/views/tool/build/CodeTypeDialog.vue +++ b/ruoyi-ui/src/views/tool/build/CodeTypeDialog.vue @@ -31,7 +31,7 @@ - + @@ -79,10 +79,10 @@ export default { }] } }, - computed: { - }, + computed: {}, watch: {}, - mounted() {}, + mounted() { + }, methods: { onOpen() { if (this.showFileName) { diff --git a/ruoyi-ui/src/views/tool/gen/index.vue b/ruoyi-ui/src/views/tool/gen/index.vue index 00ad66b4..957ac39f 100644 --- a/ruoyi-ui/src/views/tool/gen/index.vue +++ b/ruoyi-ui/src/views/tool/gen/index.vue @@ -181,8 +181,10 @@