From 0f8fd77e9b323cd3712d6ab18723c8716def5311 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期五, 16 八月 2024 17:22:04 +0800 Subject: [PATCH] 1 --- ruoyi-modules/se-file/src/main/resources/banner.txt | 0 se-visual/se-monitor/src/main/resources/bootstrap.yml | 0 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysPostServiceImpl.java | 179 se-gateway/src/main/java/com/se/gateway/filter/CacheRequestFilter.java | 87 ruoyi-modules/se-job/src/main/java/com/se/job/domain/SysJob.java | 171 se-auth/src/main/java/com/se/auth/service/SysRecordLogService.java | 48 ruoyi-modules/se-file/src/main/java/com/se/file/config/MinioConfig.java | 82 ruoyi-modules/se-gen/src/main/resources/vm/xml/mapper.xml.vm | 0 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysUserOnlineService.java | 48 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDictTypeMapper.java | 83 se-auth/src/main/resources/bootstrap.yml | 0 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysRoleController.java | 240 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysConfigController.java | 134 ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysPost.java | 124 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysPostController.java | 131 se-gateway/src/main/java/com/se/gateway/filter/BlackListUrlFilter.java | 65 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysProfileController.java | 154 ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserPost.java | 46 ruoyi-modules/se-file/src/main/resources/logback.xml | 0 ruoyi-modules/se-job/src/main/java/com/se/job/util/CronUtils.java | 63 se-gateway/src/main/java/com/se/gateway/filter/AuthFilter.java | 135 ruoyi-modules/se-system/src/main/resources/mapper/system/SysUserRoleMapper.xml | 0 ruoyi-modules/se-system/src/main/resources/mapper/system/SysUserMapper.xml | 0 ruoyi-modules/se-job/src/main/java/com/se/job/util/QuartzJobExecution.java | 19 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysOperLogMapper.java | 48 se-auth/src/main/java/com/se/auth/SeAuthApplication.java | 22 ruoyi-modules/se-gen/src/main/java/com/se/gen/service/IGenTableColumnService.java | 44 ruoyi-modules/se-file/src/main/java/com/se/file/controller/SysFileController.java | 48 ruoyi-modules/se-gen/pom.xml | 0 ruoyi-modules/se-gen/src/main/java/com/se/gen/mapper/GenTableMapper.java | 83 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysNoticeServiceImpl.java | 93 se-gateway/src/main/java/com/se/gateway/handler/SwaggerHandler.java | 56 ruoyi-modules/se-file/src/main/java/com/se/file/service/FastDfsSysFileServiceImpl.java | 46 ruoyi-modules/se-system/src/main/resources/banner.txt | 0 ruoyi-modules/se-gen/src/main/resources/vm/java/domain.java.vm | 0 ruoyi-modules/se-job/src/main/java/com/se/job/mapper/SysJobLogMapper.java | 64 ruoyi-modules/se-file/src/main/java/com/se/file/SeFileApplication.java | 22 ruoyi-modules/se-job/src/main/java/com/se/job/util/JobInvokeUtil.java | 182 ruoyi-modules/se-system/src/main/resources/mapper/system/SysDictDataMapper.xml | 0 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDeptServiceImpl.java | 338 + se-gateway/src/main/java/com/se/gateway/config/properties/IgnoreWhiteProperties.java | 33 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDictDataController.java | 122 ruoyi-modules/se-gen/src/main/java/com/se/gen/util/GenUtils.java | 258 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysConfigMapper.java | 76 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysOperLogServiceImpl.java | 77 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysUserServiceImpl.java | 552 ++ ruoyi-modules/se-file/src/main/java/com/se/file/utils/FileUploadUtils.java | 185 ruoyi-modules/se-gen/src/main/java/com/se/gen/controller/GenController.java | 212 ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/RouterVo.java | 148 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserMapper.java | 127 ruoyi-modules/se-gen/src/main/java/com/se/gen/config/GenConfig.java | 66 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDeptService.java | 124 ruoyi-modules/se-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml | 0 se-gateway/src/main/java/com/se/gateway/service/ValidateCodeService.java | 23 ruoyi-modules/se-job/src/main/java/com/se/job/service/ISysJobService.java | 102 se-gateway/src/main/java/com/se/gateway/config/CaptchaConfig.java | 83 ruoyi-modules/se-gen/src/main/resources/vm/java/mapper.java.vm | 0 se-gateway/src/main/resources/banner.txt | 3 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysMenuServiceImpl.java | 544 ++ ruoyi-modules/se-system/src/main/resources/bootstrap.yml | 0 se-auth/src/main/java/com/se/auth/service/SysPasswordService.java | 85 ruoyi-modules/se-job/src/main/java/com/se/job/util/ScheduleUtils.java | 141 ruoyi-modules/se-gen/src/main/java/com/se/gen/util/VelocityUtils.java | 409 + se-gateway/src/main/java/com/se/gateway/service/impl/ValidateCodeServiceImpl.java | 119 ruoyi-modules/se-job/src/main/resources/bootstrap.yml | 0 se-visual/se-monitor/src/main/resources/banner.txt | 3 ruoyi-modules/se-gen/src/main/java/com/se/gen/service/GenTableServiceImpl.java | 522 + ruoyi-modules/se-job/src/main/resources/logback.xml | 0 se-auth/src/main/resources/logback.xml | 0 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysOperLogService.java | 49 ruoyi-modules/se-job/src/main/java/com/se/job/service/SysJobLogServiceImpl.java | 86 ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysNotice.java | 102 se-gateway/src/main/java/com/se/gateway/config/properties/CaptchaProperties.java | 46 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysPostMapper.java | 99 se-gateway/src/main/java/com/se/gateway/handler/GatewayExceptionHandler.java | 56 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDeptController.java | 133 se-visual/se-monitor/src/main/java/com/se/modules/monitor/SeMonitorApplication.java | 30 ruoyi-modules/se-system/src/main/resources/mapper/system/SysUserPostMapper.xml | 0 se-gateway/src/main/java/com/se/gateway/config/properties/XssProperties.java | 48 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDictDataServiceImpl.java | 111 se-auth/src/main/java/com/se/auth/form/RegisterBody.java | 11 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDictTypeServiceImpl.java | 223 ruoyi-modules/se-system/src/main/resources/mapper/system/SysPostMapper.xml | 0 ruoyi-modules/se-job/src/main/java/com/se/job/util/QuartzDisallowConcurrentExecution.java | 21 se-visual/se-monitor/pom.xml | 0 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysNoticeController.java | 93 se-gateway/src/main/java/com/se/gateway/config/KaptchaTextCreator.java | 75 ruoyi-modules/se-job/src/main/java/com/se/job/SeJobApplication.java | 34 ruoyi-modules/se-job/src/main/resources/banner.txt | 0 ruoyi-modules/se-system/src/main/resources/logback.xml | 0 ruoyi-modules/se-job/src/main/java/com/se/job/controller/SysJobController.java | 187 ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysRoleDept.java | 46 se-gateway/src/main/java/com/se/gateway/handler/ValidateCodeHandler.java | 42 se-gateway/src/main/java/com/se/gateway/SeGatewayApplication.java | 20 ruoyi-modules/se-system/pom.xml | 0 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysRoleServiceImpl.java | 428 + ruoyi-modules/se-job/src/main/java/com/se/job/task/RyTask.java | 28 ruoyi-modules/se-system/src/main/resources/mapper/system/SysMenuMapper.xml | 0 ruoyi-modules/se-job/src/main/resources/mapper/job/SysJobMapper.xml | 0 ruoyi-modules/se-gen/src/main/resources/banner.txt | 0 ruoyi-modules/se-gen/src/main/resources/vm/java/service.java.vm | 0 ruoyi-modules/se-job/src/main/java/com/se/job/service/SysJobServiceImpl.java | 260 se-gateway/src/main/java/com/se/gateway/config/RouterFunctionConfiguration.java | 31 ruoyi-modules/se-gen/src/main/resources/logback.xml | 0 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysOperlogController.java | 78 se-gateway/src/main/java/com/se/gateway/filter/XssFilter.java | 129 ruoyi-modules/se-gen/src/main/java/com/se/gen/util/VelocityInitializer.java | 34 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserPostMapper.java | 44 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysUserController.java | 341 + ruoyi-modules/se-job/src/main/java/com/se/job/util/AbstractQuartzJob.java | 107 ruoyi-modules/se-gen/src/main/resources/vm/sql/sql.vm | 0 ruoyi-modules/se-job/pom.xml | 0 ruoyi-modules/se-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml | 127 ruoyi-modules/se-job/src/main/java/com/se/job/service/ISysJobLogService.java | 56 ruoyi-modules/se-job/src/main/java/com/se/job/domain/SysJobLog.java | 155 ruoyi-modules/se-gen/src/main/resources/vm/vue/index.vue.vm | 0 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysNoticeMapper.java | 60 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysRoleService.java | 173 ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserRole.java | 46 ruoyi-modules/se-gen/src/main/resources/bootstrap.yml | 0 ruoyi-modules/se-gen/src/main/resources/vm/vue/v3/index.vue.vm | 0 se-gateway/pom.xml | 0 se-auth/src/main/resources/banner.txt | 3 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysUserService.java | 206 se-auth/pom.xml | 0 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserRoleMapper.java | 63 ruoyi-modules/se-system/src/main/resources/mapper/system/SysLogininforMapper.xml | 0 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDictDataMapper.java | 95 se-gateway/src/main/resources/bootstrap.yml | 0 ruoyi-modules/se-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml | 0 ruoyi-modules/se-file/src/main/java/com/se/file/service/ISysFileService.java | 20 ruoyi-modules/se-system/src/main/resources/mapper/system/SysConfigMapper.xml | 0 ruoyi-modules/se-job/src/main/resources/mapper/job/SysJobLogMapper.xml | 0 ruoyi-modules/se-gen/src/main/resources/vm/java/sub-domain.java.vm | 0 se-gateway/src/main/java/com/se/gateway/filter/ValidateCodeFilter.java | 80 ruoyi-modules/se-file/pom.xml | 0 ruoyi-modules/se-file/src/main/java/com/se/file/config/ResourcesConfig.java | 50 ruoyi-modules/se-job/src/main/java/com/se/job/config/ScheduleConfig.java | 0 se-auth/src/main/java/com/se/auth/form/LoginBody.java | 39 ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysMenu.java | 274 + se-gateway/src/main/java/com/se/gateway/handler/SentinelFallbackHandler.java | 41 ruoyi-modules/se-gen/src/main/java/com/se/gen/mapper/GenTableColumnMapper.java | 60 ruoyi-modules/se-system/src/main/resources/mapper/system/SysNoticeMapper.xml | 0 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysLogininforService.java | 40 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysPermissionService.java | 29 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysUserOnlineServiceImpl.java | 89 ruoyi-modules/se-file/src/main/java/com/se/file/service/MinioSysFileServiceImpl.java | 50 ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/TreeSelect.java | 77 ruoyi-modules/se-gen/src/main/java/com/se/gen/service/IGenTableService.java | 121 ruoyi-modules/se-gen/src/main/resources/vm/vue/index-tree.vue.vm | 0 ruoyi-modules/se-job/src/main/java/com/se/job/mapper/SysJobMapper.java | 67 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysPermissionServiceImpl.java | 86 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleMapper.java | 107 ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysRoleMenu.java | 46 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDictTypeService.java | 98 se-gateway/src/main/java/com/se/gateway/config/GatewayConfig.java | 23 ruoyi-modules/se-file/src/main/java/com/se/file/service/LocalSysFileServiceImpl.java | 50 ruoyi-modules/se-job/src/main/java/com/se/job/controller/SysJobLogController.java | 92 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysMenuController.java | 160 se-auth/src/main/java/com/se/auth/service/SysLoginService.java | 161 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysNoticeService.java | 60 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysUserOnlineController.java | 84 se-gateway/src/main/resources/logback.xml | 0 ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysConfig.java | 111 ruoyi-modules/se-gen/src/main/java/com/se/gen/service/GenTableColumnServiceImpl.java | 69 se-visual/se-monitor/src/main/java/com/se/modules/monitor/config/WebSecurityConfigurer.java | 51 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysLogininforServiceImpl.java | 65 ruoyi-modules/se-gen/src/main/resources/vm/js/api.js.vm | 0 se-gateway/src/main/java/com/se/gateway/config/SwaggerProvider.java | 79 ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/MetaVo.java | 106 ruoyi-modules/se-gen/src/main/resources/vm/java/serviceImpl.java.vm | 0 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysLogininforMapper.java | 42 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysLogininforController.java | 92 ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserOnline.java | 100 ruoyi-modules/se-system/src/main/resources/mapper/system/SysOperLogMapper.xml | 0 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysMenuMapper.java | 126 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDictDataService.java | 60 ruoyi-modules/se-system/src/main/resources/mapper/system/SysDeptMapper.xml | 0 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysMenuService.java | 144 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDictTypeController.java | 132 ruoyi-modules/se-system/src/main/java/com/se/system/RuoYiSystemApplication.java | 25 se-auth/src/main/java/com/se/auth/controller/TokenController.java | 79 ruoyi-modules/se-gen/src/main/resources/vm/java/controller.java.vm | 0 ruoyi-modules/se-gen/src/main/resources/mapper/generator/GenTableMapper.xml | 206 se-visual/se-monitor/src/main/resources/logback.xml | 0 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysPostService.java | 99 ruoyi-modules/se-system/src/main/resources/mapper/system/SysRoleMapper.xml | 0 ruoyi-modules/se-system/src/main/resources/mapper/system/SysDictTypeMapper.xml | 0 /dev/null | 10 ruoyi-modules/se-gen/src/main/java/com/se/gen/domain/GenTable.java | 383 + ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysConfigService.java | 82 ruoyi-modules/se-gen/src/main/java/com/se/gen/SeGenApplication.java | 34 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleMenuMapper.java | 44 ruoyi-modules/se-gen/src/main/java/com/se/gen/domain/GenTableColumn.java | 374 + ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDeptMapper.java | 118 ruoyi-modules/se-file/src/main/resources/bootstrap.yml | 0 ruoyi-modules/se-gen/src/main/resources/vm/vue/v3/index-tree.vue.vm | 0 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleDeptMapper.java | 44 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysConfigServiceImpl.java | 214 199 files changed, 15,728 insertions(+), 10 deletions(-) diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/RuoYiAuthApplication.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/RuoYiAuthApplication.java deleted file mode 100644 index a765fe9..0000000 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/RuoYiAuthApplication.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ruoyi.auth; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import com.se.common.security.annotation.EnableRyFeignClients; - -/** - * 璁よ瘉鎺堟潈涓績 - * - * @author admin - */ -@EnableRyFeignClients -@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class }) -public class RuoYiAuthApplication -{ - public static void main(String[] args) - { - SpringApplication.run(RuoYiAuthApplication.class, args); - System.out.println("(鈾モ棤鈥库棤)锞夛緸 璁よ瘉鎺堟潈涓績鍚姩鎴愬姛 醿�(麓凇`醿�)锞� \n" + - " .-------. ____ __ \n" + - " | _ _ \\ \\ \\ / / \n" + - " | ( ' ) | \\ _. / ' \n" + - " |(_ o _) / _( )_ .' \n" + - " | (_,_).' __ ___(_ o _)' \n" + - " | |\\ \\ | || |(_,_)' \n" + - " | | \\ `' /| `-' / \n" + - " | | \\ / \\ / \n" + - " ''-' `'-' `-..-' "); - } -} diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java deleted file mode 100644 index 2b8fae6..0000000 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.ruoyi.auth.controller; - -import javax.servlet.http.HttpServletRequest; -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.RequestBody; -import org.springframework.web.bind.annotation.RestController; -import com.ruoyi.auth.form.LoginBody; -import com.ruoyi.auth.form.RegisterBody; -import com.ruoyi.auth.service.SysLoginService; -import com.se.common.core.domain.R; -import com.se.common.core.utils.JwtUtils; -import com.se.common.core.utils.StringUtils; -import com.se.common.security.auth.AuthUtil; -import com.se.common.security.service.TokenService; -import com.se.common.security.utils.SecurityUtils; -import com.se.system.api.model.LoginUser; - -/** - * token 鎺у埗 - * - * @author admin - */ -@RestController -public class TokenController -{ - @Autowired - private TokenService tokenService; - - @Autowired - private SysLoginService sysLoginService; - - @PostMapping("login") - public R<?> login(@RequestBody LoginBody form) - { - // 鐢ㄦ埛鐧诲綍 - LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword()); - // 鑾峰彇鐧诲綍token - return R.ok(tokenService.createToken(userInfo)); - } - - @DeleteMapping("logout") - public R<?> logout(HttpServletRequest request) - { - String token = SecurityUtils.getToken(request); - if (StringUtils.isNotEmpty(token)) - { - String username = JwtUtils.getUserName(token); - // 鍒犻櫎鐢ㄦ埛缂撳瓨璁板綍 - AuthUtil.logoutByToken(token); - // 璁板綍鐢ㄦ埛閫�鍑烘棩蹇� - sysLoginService.logout(username); - } - return R.ok(); - } - - @PostMapping("refresh") - public R<?> refresh(HttpServletRequest request) - { - LoginUser loginUser = tokenService.getLoginUser(request); - if (StringUtils.isNotNull(loginUser)) - { - // 鍒锋柊浠ょ墝鏈夋晥鏈� - tokenService.refreshToken(loginUser); - return R.ok(); - } - return R.ok(); - } - - @PostMapping("register") - public R<?> register(@RequestBody RegisterBody registerBody) - { - // 鐢ㄦ埛娉ㄥ唽 - sysLoginService.register(registerBody.getUsername(), registerBody.getPassword()); - return R.ok(); - } -} diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/form/LoginBody.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/form/LoginBody.java deleted file mode 100644 index 83b9b07..0000000 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/form/LoginBody.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.ruoyi.auth.form; - -/** - * 鐢ㄦ埛鐧诲綍瀵硅薄 - * - * @author admin - */ -public class LoginBody -{ - /** - * 鐢ㄦ埛鍚� - */ - private String username; - - /** - * 鐢ㄦ埛瀵嗙爜 - */ - private String password; - - public String getUsername() - { - return username; - } - - public void setUsername(String username) - { - this.username = username; - } - - public String getPassword() - { - return password; - } - - public void setPassword(String password) - { - this.password = password; - } -} diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/form/RegisterBody.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/form/RegisterBody.java deleted file mode 100644 index b69aaa4..0000000 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/form/RegisterBody.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.ruoyi.auth.form; - -/** - * 鐢ㄦ埛娉ㄥ唽瀵硅薄 - * - * @author admin - */ -public class RegisterBody extends LoginBody -{ - -} diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java deleted file mode 100644 index 89f23be..0000000 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java +++ /dev/null @@ -1,161 +0,0 @@ -package com.ruoyi.auth.service; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import com.se.common.core.constant.CacheConstants; -import com.se.common.core.constant.Constants; -import com.se.common.core.constant.SecurityConstants; -import com.se.common.core.constant.UserConstants; -import com.se.common.core.domain.R; -import com.se.common.core.enums.UserStatus; -import com.se.common.core.exception.ServiceException; -import com.se.common.core.text.Convert; -import com.se.common.core.utils.DateUtils; -import com.se.common.core.utils.StringUtils; -import com.se.common.core.utils.ip.IpUtils; -import com.se.common.redis.service.RedisService; -import com.se.common.security.utils.SecurityUtils; -import com.se.system.api.RemoteUserService; -import com.se.system.api.domain.SysUser; -import com.se.system.api.model.LoginUser; - -/** - * 鐧诲綍鏍¢獙鏂规硶 - * - * @author admin - */ -@Component -public class SysLoginService -{ - @Autowired - private RemoteUserService remoteUserService; - - @Autowired - private SysPasswordService passwordService; - - @Autowired - private SysRecordLogService recordLogService; - - @Autowired - private RedisService redisService; - - /** - * 鐧诲綍 - */ - public LoginUser login(String username, String password) - { - // 鐢ㄦ埛鍚嶆垨瀵嗙爜涓虹┖ 閿欒 - if (StringUtils.isAnyBlank(username, password)) - { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐢ㄦ埛/瀵嗙爜蹇呴』濉啓"); - throw new ServiceException("鐢ㄦ埛/瀵嗙爜蹇呴』濉啓"); - } - // 瀵嗙爜濡傛灉涓嶅湪鎸囧畾鑼冨洿鍐� 閿欒 - if (password.length() < UserConstants.PASSWORD_MIN_LENGTH - || password.length() > UserConstants.PASSWORD_MAX_LENGTH) - { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐢ㄦ埛瀵嗙爜涓嶅湪鎸囧畾鑼冨洿"); - throw new ServiceException("鐢ㄦ埛瀵嗙爜涓嶅湪鎸囧畾鑼冨洿"); - } - // 鐢ㄦ埛鍚嶄笉鍦ㄦ寚瀹氳寖鍥村唴 閿欒 - if (username.length() < UserConstants.USERNAME_MIN_LENGTH - || username.length() > UserConstants.USERNAME_MAX_LENGTH) - { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐢ㄦ埛鍚嶄笉鍦ㄦ寚瀹氳寖鍥�"); - throw new ServiceException("鐢ㄦ埛鍚嶄笉鍦ㄦ寚瀹氳寖鍥�"); - } - // IP榛戝悕鍗曟牎楠� - String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST)); - if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) - { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "寰堥仐鎲撅紝璁块棶IP宸茶鍒楀叆绯荤粺榛戝悕鍗�"); - throw new ServiceException("寰堥仐鎲撅紝璁块棶IP宸茶鍒楀叆绯荤粺榛戝悕鍗�"); - } - // 鏌ヨ鐢ㄦ埛淇℃伅 - R<LoginUser> userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER); - - if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) - { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐧诲綍鐢ㄦ埛涓嶅瓨鍦�"); - throw new ServiceException("鐧诲綍鐢ㄦ埛锛�" + username + " 涓嶅瓨鍦�"); - } - - if (R.FAIL == userResult.getCode()) - { - throw new ServiceException(userResult.getMsg()); - } - - LoginUser userInfo = userResult.getData(); - SysUser user = userResult.getData().getSysUser(); - if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) - { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "瀵逛笉璧凤紝鎮ㄧ殑璐﹀彿宸茶鍒犻櫎"); - throw new ServiceException("瀵逛笉璧凤紝鎮ㄧ殑璐﹀彿锛�" + username + " 宸茶鍒犻櫎"); - } - if (UserStatus.DISABLE.getCode().equals(user.getStatus())) - { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐢ㄦ埛宸插仠鐢紝璇疯仈绯荤鐞嗗憳"); - throw new ServiceException("瀵逛笉璧凤紝鎮ㄧ殑璐﹀彿锛�" + username + " 宸插仠鐢�"); - } - passwordService.validate(user, password); - recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "鐧诲綍鎴愬姛"); - recordLoginInfo(user.getUserId()); - return userInfo; - } - - /** - * 璁板綍鐧诲綍淇℃伅 - * - * @param userId 鐢ㄦ埛ID - */ - public void recordLoginInfo(Long userId) - { - SysUser sysUser = new SysUser(); - sysUser.setUserId(userId); - // 鏇存柊鐢ㄦ埛鐧诲綍IP - sysUser.setLoginIp(IpUtils.getIpAddr()); - // 鏇存柊鐢ㄦ埛鐧诲綍鏃堕棿 - sysUser.setLoginDate(DateUtils.getNowDate()); - remoteUserService.recordUserLogin(sysUser, SecurityConstants.INNER); - } - - public void logout(String loginName) - { - recordLogService.recordLogininfor(loginName, Constants.LOGOUT, "閫�鍑烘垚鍔�"); - } - - /** - * 娉ㄥ唽 - */ - public void register(String username, String password) - { - // 鐢ㄦ埛鍚嶆垨瀵嗙爜涓虹┖ 閿欒 - if (StringUtils.isAnyBlank(username, password)) - { - throw new ServiceException("鐢ㄦ埛/瀵嗙爜蹇呴』濉啓"); - } - if (username.length() < UserConstants.USERNAME_MIN_LENGTH - || username.length() > UserConstants.USERNAME_MAX_LENGTH) - { - throw new ServiceException("璐︽埛闀垮害蹇呴』鍦�2鍒�20涓瓧绗︿箣闂�"); - } - if (password.length() < UserConstants.PASSWORD_MIN_LENGTH - || password.length() > UserConstants.PASSWORD_MAX_LENGTH) - { - throw new ServiceException("瀵嗙爜闀垮害蹇呴』鍦�5鍒�20涓瓧绗︿箣闂�"); - } - - // 娉ㄥ唽鐢ㄦ埛淇℃伅 - SysUser sysUser = new SysUser(); - sysUser.setUserName(username); - sysUser.setNickName(username); - sysUser.setPassword(SecurityUtils.encryptPassword(password)); - R<?> registerResult = remoteUserService.registerUserInfo(sysUser, SecurityConstants.INNER); - - if (R.FAIL == registerResult.getCode()) - { - throw new ServiceException(registerResult.getMsg()); - } - recordLogService.recordLogininfor(username, Constants.REGISTER, "娉ㄥ唽鎴愬姛"); - } -} diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysPasswordService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysPasswordService.java deleted file mode 100644 index f9260c9..0000000 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysPasswordService.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.ruoyi.auth.service; - -import java.util.concurrent.TimeUnit; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import com.se.common.core.constant.CacheConstants; -import com.se.common.core.constant.Constants; -import com.se.common.core.exception.ServiceException; -import com.se.common.redis.service.RedisService; -import com.se.common.security.utils.SecurityUtils; -import com.se.system.api.domain.SysUser; - -/** - * 鐧诲綍瀵嗙爜鏂规硶 - * - * @author admin - */ -@Component -public class SysPasswordService -{ - @Autowired - private RedisService redisService; - - private int maxRetryCount = CacheConstants.PASSWORD_MAX_RETRY_COUNT; - - private Long lockTime = CacheConstants.PASSWORD_LOCK_TIME; - - @Autowired - private SysRecordLogService recordLogService; - - /** - * 鐧诲綍璐︽埛瀵嗙爜閿欒娆℃暟缂撳瓨閿悕 - * - * @param username 鐢ㄦ埛鍚� - * @return 缂撳瓨閿甼ey - */ - private String getCacheKey(String username) - { - return CacheConstants.PWD_ERR_CNT_KEY + username; - } - - public void validate(SysUser user, String password) - { - String username = user.getUserName(); - - Integer retryCount = redisService.getCacheObject(getCacheKey(username)); - - if (retryCount == null) - { - retryCount = 0; - } - - if (retryCount >= Integer.valueOf(maxRetryCount).intValue()) - { - String errMsg = String.format("瀵嗙爜杈撳叆閿欒%s娆★紝甯愭埛閿佸畾%s鍒嗛挓", maxRetryCount, lockTime); - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL,errMsg); - throw new ServiceException(errMsg); - } - - if (!matches(user, password)) - { - retryCount = retryCount + 1; - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, String.format("瀵嗙爜杈撳叆閿欒%s娆�", retryCount)); - redisService.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES); - throw new ServiceException("鐢ㄦ埛涓嶅瓨鍦�/瀵嗙爜閿欒"); - } - else - { - clearLoginRecordCache(username); - } - } - - public boolean matches(SysUser user, String rawPassword) - { - return SecurityUtils.matchesPassword(rawPassword, user.getPassword()); - } - - public void clearLoginRecordCache(String loginName) - { - if (redisService.hasKey(getCacheKey(loginName))) - { - redisService.deleteObject(getCacheKey(loginName)); - } - } -} diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysRecordLogService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysRecordLogService.java deleted file mode 100644 index 03fd29e..0000000 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysRecordLogService.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.ruoyi.auth.service; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import com.se.common.core.constant.Constants; -import com.se.common.core.constant.SecurityConstants; -import com.se.common.core.utils.StringUtils; -import com.se.common.core.utils.ip.IpUtils; -import com.se.system.api.RemoteLogService; -import com.se.system.api.domain.SysLogininfor; - -/** - * 璁板綍鏃ュ織鏂规硶 - * - * @author admin - */ -@Component -public class SysRecordLogService -{ - @Autowired - private RemoteLogService remoteLogService; - - /** - * 璁板綍鐧诲綍淇℃伅 - * - * @param username 鐢ㄦ埛鍚� - * @param status 鐘舵�� - * @param message 娑堟伅鍐呭 - * @return - */ - public void recordLogininfor(String username, String status, String message) - { - SysLogininfor logininfor = new SysLogininfor(); - logininfor.setUserName(username); - logininfor.setIpaddr(IpUtils.getIpAddr()); - logininfor.setMsg(message); - // 鏃ュ織鐘舵�� - if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) - { - logininfor.setStatus(Constants.LOGIN_SUCCESS_STATUS); - } - else if (Constants.LOGIN_FAIL.equals(status)) - { - logininfor.setStatus(Constants.LOGIN_FAIL_STATUS); - } - remoteLogService.saveLogininfor(logininfor, SecurityConstants.INNER); - } -} diff --git a/ruoyi-auth/src/main/resources/banner.txt b/ruoyi-auth/src/main/resources/banner.txt deleted file mode 100644 index 97c5c27..0000000 --- a/ruoyi-auth/src/main/resources/banner.txt +++ /dev/null @@ -1,10 +0,0 @@ -Spring Boot Version: ${spring-boot.version} -Spring Application Name: ${spring.application.name} - _ _ _ - (_) | | | | - _ __ _ _ ___ _ _ _ ______ __ _ _ _ | |_ | |__ -| '__|| | | | / _ \ | | | || ||______| / _` || | | || __|| '_ \ -| | | |_| || (_) || |_| || | | (_| || |_| || |_ | | | | -|_| \__,_| \___/ \__, ||_| \__,_| \__,_| \__||_| |_| - __/ | - |___/ \ No newline at end of file diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/RuoYiGatewayApplication.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/RuoYiGatewayApplication.java deleted file mode 100644 index 9b7fa5f..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/RuoYiGatewayApplication.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.ruoyi.gateway; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; - -/** - * 缃戝叧鍚姩绋嬪簭 - * - * @author admin - */ -@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class }) -public class RuoYiGatewayApplication -{ - public static void main(String[] args) - { - SpringApplication.run(RuoYiGatewayApplication.class, args); - System.out.println("(鈾モ棤鈥库棤)锞夛緸 鑻ヤ緷缃戝叧鍚姩鎴愬姛 醿�(麓凇`醿�)锞� \n" + - " .-------. ____ __ \n" + - " | _ _ \\ \\ \\ / / \n" + - " | ( ' ) | \\ _. / ' \n" + - " |(_ o _) / _( )_ .' \n" + - " | (_,_).' __ ___(_ o _)' \n" + - " | |\\ \\ | || |(_,_)' \n" + - " | | \\ `' /| `-' / \n" + - " | | \\ / \\ / \n" + - " ''-' `'-' `-..-' "); - } -} diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/CaptchaConfig.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/CaptchaConfig.java deleted file mode 100644 index 5e23e35..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/CaptchaConfig.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.ruoyi.gateway.config; - -import java.util.Properties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import com.google.code.kaptcha.impl.DefaultKaptcha; -import com.google.code.kaptcha.util.Config; -import static com.google.code.kaptcha.Constants.*; - -/** - * 楠岃瘉鐮侀厤缃� - * - * @author admin - */ -@Configuration -public class CaptchaConfig -{ - @Bean(name = "captchaProducer") - public DefaultKaptcha getKaptchaBean() - { - DefaultKaptcha defaultKaptcha = new DefaultKaptcha(); - Properties properties = new Properties(); - // 鏄惁鏈夎竟妗� 榛樿涓簍rue 鎴戜滑鍙互鑷繁璁剧疆yes锛宯o - properties.setProperty(KAPTCHA_BORDER, "yes"); - // 楠岃瘉鐮佹枃鏈瓧绗﹂鑹� 榛樿涓篊olor.BLACK - properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "black"); - // 楠岃瘉鐮佸浘鐗囧搴� 榛樿涓�200 - properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160"); - // 楠岃瘉鐮佸浘鐗囬珮搴� 榛樿涓�50 - properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60"); - // 楠岃瘉鐮佹枃鏈瓧绗﹀ぇ灏� 榛樿涓�40 - properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "38"); - // KAPTCHA_SESSION_KEY - properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCode"); - // 楠岃瘉鐮佹枃鏈瓧绗﹂暱搴� 榛樿涓�5 - properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4"); - // 楠岃瘉鐮佹枃鏈瓧浣撴牱寮� 榛樿涓簄ew Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) - properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier"); - // 鍥剧墖鏍峰紡 姘寸汗com.google.code.kaptcha.impl.WaterRipple 楸肩溂com.google.code.kaptcha.impl.FishEyeGimpy 闃村奖com.google.code.kaptcha.impl.ShadowGimpy - properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy"); - Config config = new Config(properties); - defaultKaptcha.setConfig(config); - return defaultKaptcha; - } - - @Bean(name = "captchaProducerMath") - public DefaultKaptcha getKaptchaBeanMath() - { - DefaultKaptcha defaultKaptcha = new DefaultKaptcha(); - Properties properties = new Properties(); - // 鏄惁鏈夎竟妗� 榛樿涓簍rue 鎴戜滑鍙互鑷繁璁剧疆yes锛宯o - properties.setProperty(KAPTCHA_BORDER, "yes"); - // 杈规棰滆壊 榛樿涓篊olor.BLACK - properties.setProperty(KAPTCHA_BORDER_COLOR, "105,179,90"); - // 楠岃瘉鐮佹枃鏈瓧绗﹂鑹� 榛樿涓篊olor.BLACK - properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue"); - // 楠岃瘉鐮佸浘鐗囧搴� 榛樿涓�200 - properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160"); - // 楠岃瘉鐮佸浘鐗囬珮搴� 榛樿涓�50 - properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60"); - // 楠岃瘉鐮佹枃鏈瓧绗﹀ぇ灏� 榛樿涓�40 - properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "35"); - // KAPTCHA_SESSION_KEY - properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCodeMath"); - // 楠岃瘉鐮佹枃鏈敓鎴愬櫒 - properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "com.ruoyi.gateway.config.KaptchaTextCreator"); - // 楠岃瘉鐮佹枃鏈瓧绗﹂棿璺� 榛樿涓�2 - properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "3"); - // 楠岃瘉鐮佹枃鏈瓧绗﹂暱搴� 榛樿涓�5 - properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "6"); - // 楠岃瘉鐮佹枃鏈瓧浣撴牱寮� 榛樿涓簄ew Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) - properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier"); - // 楠岃瘉鐮佸櫔鐐归鑹� 榛樿涓篊olor.BLACK - properties.setProperty(KAPTCHA_NOISE_COLOR, "white"); - // 骞叉壈瀹炵幇绫� - properties.setProperty(KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise"); - // 鍥剧墖鏍峰紡 姘寸汗com.google.code.kaptcha.impl.WaterRipple 楸肩溂com.google.code.kaptcha.impl.FishEyeGimpy 闃村奖com.google.code.kaptcha.impl.ShadowGimpy - properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy"); - Config config = new Config(properties); - defaultKaptcha.setConfig(config); - return defaultKaptcha; - } -} \ No newline at end of file diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/GatewayConfig.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/GatewayConfig.java deleted file mode 100644 index 4abfb1f..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/GatewayConfig.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.ruoyi.gateway.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.Ordered; -import org.springframework.core.annotation.Order; -import com.ruoyi.gateway.handler.SentinelFallbackHandler; - -/** - * 缃戝叧闄愭祦閰嶇疆 - * - * @author admin - */ -@Configuration -public class GatewayConfig -{ - @Bean - @Order(Ordered.HIGHEST_PRECEDENCE) - public SentinelFallbackHandler sentinelGatewayExceptionHandler() - { - return new SentinelFallbackHandler(); - } -} \ No newline at end of file diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/KaptchaTextCreator.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/KaptchaTextCreator.java deleted file mode 100644 index 7583f4e..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/KaptchaTextCreator.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.ruoyi.gateway.config; - -import java.util.Random; -import com.google.code.kaptcha.text.impl.DefaultTextCreator; - -/** - * 楠岃瘉鐮佹枃鏈敓鎴愬櫒 - * - * @author admin - */ -public class KaptchaTextCreator extends DefaultTextCreator -{ - private static final String[] CNUMBERS = "0,1,2,3,4,5,6,7,8,9,10".split(","); - - @Override - public String getText() - { - Integer result = 0; - Random random = new Random(); - int x = random.nextInt(10); - int y = random.nextInt(10); - StringBuilder suChinese = new StringBuilder(); - int randomoperands = random.nextInt(3); - if (randomoperands == 0) - { - result = x * y; - suChinese.append(CNUMBERS[x]); - suChinese.append("*"); - suChinese.append(CNUMBERS[y]); - } - else if (randomoperands == 1) - { - if ((x != 0) && y % x == 0) - { - result = y / x; - suChinese.append(CNUMBERS[y]); - suChinese.append("/"); - suChinese.append(CNUMBERS[x]); - } - else - { - result = x + y; - suChinese.append(CNUMBERS[x]); - suChinese.append("+"); - suChinese.append(CNUMBERS[y]); - } - } - else if (randomoperands == 2) - { - if (x >= y) - { - result = x - y; - suChinese.append(CNUMBERS[x]); - suChinese.append("-"); - suChinese.append(CNUMBERS[y]); - } - else - { - result = y - x; - suChinese.append(CNUMBERS[y]); - suChinese.append("-"); - suChinese.append(CNUMBERS[x]); - } - } - else - { - result = x + y; - suChinese.append(CNUMBERS[x]); - suChinese.append("+"); - suChinese.append(CNUMBERS[y]); - } - suChinese.append("=?@" + result); - return suChinese.toString(); - } -} \ No newline at end of file diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/RouterFunctionConfiguration.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/RouterFunctionConfiguration.java deleted file mode 100644 index 4320db1..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/RouterFunctionConfiguration.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ruoyi.gateway.config; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.http.MediaType; -import org.springframework.web.reactive.function.server.RequestPredicates; -import org.springframework.web.reactive.function.server.RouterFunction; -import org.springframework.web.reactive.function.server.RouterFunctions; -import com.ruoyi.gateway.handler.ValidateCodeHandler; - -/** - * 璺敱閰嶇疆淇℃伅 - * - * @author admin - */ -@Configuration -public class RouterFunctionConfiguration -{ - @Autowired - private ValidateCodeHandler validateCodeHandler; - - @SuppressWarnings("rawtypes") - @Bean - public RouterFunction routerFunction() - { - return RouterFunctions.route( - RequestPredicates.GET("/code").and(RequestPredicates.accept(MediaType.TEXT_PLAIN)), - validateCodeHandler); - } -} diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SwaggerProvider.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SwaggerProvider.java deleted file mode 100644 index 5c06161..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SwaggerProvider.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.ruoyi.gateway.config; - -import java.util.ArrayList; -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cloud.gateway.config.GatewayProperties; -import org.springframework.cloud.gateway.route.RouteLocator; -import org.springframework.cloud.gateway.support.NameUtils; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Component; -import org.springframework.web.reactive.config.ResourceHandlerRegistry; -import org.springframework.web.reactive.config.WebFluxConfigurer; -import springfox.documentation.swagger.web.SwaggerResource; -import springfox.documentation.swagger.web.SwaggerResourcesProvider; - -/** - * 鑱氬悎绯荤粺鎺ュ彛 - * - * @author admin - */ -@Component -public class SwaggerProvider implements SwaggerResourcesProvider, WebFluxConfigurer -{ - /** - * Swagger2榛樿鐨剈rl鍚庣紑 - */ - public static final String SWAGGER2URL = "/v2/api-docs"; - - /** - * 缃戝叧璺敱 - */ - @Lazy - @Autowired - private RouteLocator routeLocator; - - @Autowired - private GatewayProperties gatewayProperties; - - /** - * 鑱氬悎鍏朵粬鏈嶅姟鎺ュ彛 - * - * @return - */ - @Override - public List<SwaggerResource> get() - { - List<SwaggerResource> resourceList = new ArrayList<>(); - List<String> routes = new ArrayList<>(); - // 鑾峰彇缃戝叧涓厤缃殑route - routeLocator.getRoutes().subscribe(route -> routes.add(route.getId())); - gatewayProperties.getRoutes().stream() - .filter(routeDefinition -> routes - .contains(routeDefinition.getId())) - .forEach(routeDefinition -> routeDefinition.getPredicates().stream() - .filter(predicateDefinition -> "Path".equalsIgnoreCase(predicateDefinition.getName())) - .filter(predicateDefinition -> !"ruoyi-auth".equalsIgnoreCase(routeDefinition.getId())) - .forEach(predicateDefinition -> resourceList - .add(swaggerResource(routeDefinition.getId(), predicateDefinition.getArgs() - .get(NameUtils.GENERATED_NAME_PREFIX + "0").replace("/**", SWAGGER2URL))))); - return resourceList; - } - - private SwaggerResource swaggerResource(String name, String location) - { - SwaggerResource swaggerResource = new SwaggerResource(); - swaggerResource.setName(name); - swaggerResource.setLocation(location); - swaggerResource.setSwaggerVersion("2.0"); - return swaggerResource; - } - - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) - { - /** swagger-ui 鍦板潃 */ - registry.addResourceHandler("/swagger-ui/**") - .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/"); - } -} diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/properties/CaptchaProperties.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/properties/CaptchaProperties.java deleted file mode 100644 index ba5ee47..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/properties/CaptchaProperties.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.ruoyi.gateway.config.properties; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.cloud.context.config.annotation.RefreshScope; -import org.springframework.context.annotation.Configuration; - -/** - * 楠岃瘉鐮侀厤缃� - * - * @author admin - */ -@Configuration -@RefreshScope -@ConfigurationProperties(prefix = "security.captcha") -public class CaptchaProperties -{ - /** - * 楠岃瘉鐮佸紑鍏� - */ - private Boolean enabled; - - /** - * 楠岃瘉鐮佺被鍨嬶紙math 鏁扮粍璁$畻 char 瀛楃锛� - */ - private String type; - - public Boolean getEnabled() - { - return enabled; - } - - public void setEnabled(Boolean enabled) - { - this.enabled = enabled; - } - - public String getType() - { - return type; - } - - public void setType(String type) - { - this.type = type; - } -} diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/properties/IgnoreWhiteProperties.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/properties/IgnoreWhiteProperties.java deleted file mode 100644 index 41475c2..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/properties/IgnoreWhiteProperties.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.ruoyi.gateway.config.properties; - -import java.util.ArrayList; -import java.util.List; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.cloud.context.config.annotation.RefreshScope; -import org.springframework.context.annotation.Configuration; - -/** - * 鏀捐鐧藉悕鍗曢厤缃� - * - * @author admin - */ -@Configuration -@RefreshScope -@ConfigurationProperties(prefix = "security.ignore") -public class IgnoreWhiteProperties -{ - /** - * 鏀捐鐧藉悕鍗曢厤缃紝缃戝叧涓嶆牎楠屾澶勭殑鐧藉悕鍗� - */ - private List<String> whites = new ArrayList<>(); - - public List<String> getWhites() - { - return whites; - } - - public void setWhites(List<String> whites) - { - this.whites = whites; - } -} diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/properties/XssProperties.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/properties/XssProperties.java deleted file mode 100644 index 13cef90..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/properties/XssProperties.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.ruoyi.gateway.config.properties; - -import java.util.ArrayList; -import java.util.List; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.cloud.context.config.annotation.RefreshScope; -import org.springframework.context.annotation.Configuration; - -/** - * XSS璺ㄧ珯鑴氭湰閰嶇疆 - * - * @author admin - */ -@Configuration -@RefreshScope -@ConfigurationProperties(prefix = "security.xss") -public class XssProperties -{ - /** - * Xss寮�鍏� - */ - private Boolean enabled; - - /** - * 鎺掗櫎璺緞 - */ - private List<String> excludeUrls = new ArrayList<>(); - - public Boolean getEnabled() - { - return enabled; - } - - public void setEnabled(Boolean enabled) - { - this.enabled = enabled; - } - - public List<String> getExcludeUrls() - { - return excludeUrls; - } - - public void setExcludeUrls(List<String> excludeUrls) - { - this.excludeUrls = excludeUrls; - } -} diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java deleted file mode 100644 index 5a01482..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.ruoyi.gateway.filter; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cloud.gateway.filter.GatewayFilterChain; -import org.springframework.cloud.gateway.filter.GlobalFilter; -import org.springframework.core.Ordered; -import org.springframework.http.server.reactive.ServerHttpRequest; -import org.springframework.stereotype.Component; -import org.springframework.web.server.ServerWebExchange; -import com.se.common.core.constant.CacheConstants; -import com.se.common.core.constant.HttpStatus; -import com.se.common.core.constant.SecurityConstants; -import com.se.common.core.constant.TokenConstants; -import com.se.common.core.utils.JwtUtils; -import com.se.common.core.utils.ServletUtils; -import com.se.common.core.utils.StringUtils; -import com.se.common.redis.service.RedisService; -import com.ruoyi.gateway.config.properties.IgnoreWhiteProperties; -import io.jsonwebtoken.Claims; -import reactor.core.publisher.Mono; - -/** - * 缃戝叧閴存潈 - * - * @author admin - */ -@Component -public class AuthFilter implements GlobalFilter, Ordered -{ - private static final Logger log = LoggerFactory.getLogger(AuthFilter.class); - - // 鎺掗櫎杩囨护鐨� uri 鍦板潃锛宯acos鑷娣诲姞 - @Autowired - private IgnoreWhiteProperties ignoreWhite; - - @Autowired - private RedisService redisService; - - - @Override - public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) - { - ServerHttpRequest request = exchange.getRequest(); - ServerHttpRequest.Builder mutate = request.mutate(); - - String url = request.getURI().getPath(); - // 璺宠繃涓嶉渶瑕侀獙璇佺殑璺緞 - if (StringUtils.matches(url, ignoreWhite.getWhites())) - { - return chain.filter(exchange); - } - String token = getToken(request); - if (StringUtils.isEmpty(token)) - { - return unauthorizedResponse(exchange, "浠ょ墝涓嶈兘涓虹┖"); - } - Claims claims = JwtUtils.parseToken(token); - if (claims == null) - { - return unauthorizedResponse(exchange, "浠ょ墝宸茶繃鏈熸垨楠岃瘉涓嶆纭紒"); - } - String userkey = JwtUtils.getUserKey(claims); - boolean islogin = redisService.hasKey(getTokenKey(userkey)); - if (!islogin) - { - return unauthorizedResponse(exchange, "鐧诲綍鐘舵�佸凡杩囨湡"); - } - String userid = JwtUtils.getUserId(claims); - String username = JwtUtils.getUserName(claims); - if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username)) - { - return unauthorizedResponse(exchange, "浠ょ墝楠岃瘉澶辫触"); - } - - // 璁剧疆鐢ㄦ埛淇℃伅鍒拌姹� - addHeader(mutate, SecurityConstants.USER_KEY, userkey); - addHeader(mutate, SecurityConstants.DETAILS_USER_ID, userid); - addHeader(mutate, SecurityConstants.DETAILS_USERNAME, username); - // 鍐呴儴璇锋眰鏉ユ簮鍙傛暟娓呴櫎 - removeHeader(mutate, SecurityConstants.FROM_SOURCE); - return chain.filter(exchange.mutate().request(mutate.build()).build()); - } - - private void addHeader(ServerHttpRequest.Builder mutate, String name, Object value) - { - if (value == null) - { - return; - } - String valueStr = value.toString(); - String valueEncode = ServletUtils.urlEncode(valueStr); - mutate.header(name, valueEncode); - } - - private void removeHeader(ServerHttpRequest.Builder mutate, String name) - { - mutate.headers(httpHeaders -> httpHeaders.remove(name)).build(); - } - - private Mono<Void> unauthorizedResponse(ServerWebExchange exchange, String msg) - { - log.error("[閴存潈寮傚父澶勭悊]璇锋眰璺緞:{}", exchange.getRequest().getPath()); - return ServletUtils.webFluxResponseWriter(exchange.getResponse(), msg, HttpStatus.UNAUTHORIZED); - } - - /** - * 鑾峰彇缂撳瓨key - */ - private String getTokenKey(String token) - { - return CacheConstants.LOGIN_TOKEN_KEY + token; - } - - /** - * 鑾峰彇璇锋眰token - */ - private String getToken(ServerHttpRequest request) - { - String token = request.getHeaders().getFirst(TokenConstants.AUTHENTICATION); - // 濡傛灉鍓嶇璁剧疆浜嗕护鐗屽墠缂�锛屽垯瑁佸壀鎺夊墠缂� - if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) - { - token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY); - } - return token; - } - - @Override - public int getOrder() - { - return -200; - } -} \ No newline at end of file diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/BlackListUrlFilter.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/BlackListUrlFilter.java deleted file mode 100644 index ddea86b..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/BlackListUrlFilter.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.ruoyi.gateway.filter; - -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Pattern; -import org.springframework.cloud.gateway.filter.GatewayFilter; -import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; -import org.springframework.stereotype.Component; -import com.se.common.core.utils.ServletUtils; - -/** - * 榛戝悕鍗曡繃婊ゅ櫒 - * - * @author admin - */ -@Component -public class BlackListUrlFilter extends AbstractGatewayFilterFactory<BlackListUrlFilter.Config> -{ - @Override - public GatewayFilter apply(Config config) - { - return (exchange, chain) -> { - - String url = exchange.getRequest().getURI().getPath(); - if (config.matchBlacklist(url)) - { - return ServletUtils.webFluxResponseWriter(exchange.getResponse(), "璇锋眰鍦板潃涓嶅厑璁歌闂�"); - } - - return chain.filter(exchange); - }; - } - - public BlackListUrlFilter() - { - super(Config.class); - } - - public static class Config - { - private List<String> blacklistUrl; - - private List<Pattern> blacklistUrlPattern = new ArrayList<>(); - - public boolean matchBlacklist(String url) - { - return !blacklistUrlPattern.isEmpty() && blacklistUrlPattern.stream().anyMatch(p -> p.matcher(url).find()); - } - - public List<String> getBlacklistUrl() - { - return blacklistUrl; - } - - public void setBlacklistUrl(List<String> blacklistUrl) - { - this.blacklistUrl = blacklistUrl; - this.blacklistUrlPattern.clear(); - this.blacklistUrl.forEach(url -> { - this.blacklistUrlPattern.add(Pattern.compile(url.replaceAll("\\*\\*", "(.*?)"), Pattern.CASE_INSENSITIVE)); - }); - } - } - -} diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/CacheRequestFilter.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/CacheRequestFilter.java deleted file mode 100644 index 0954768..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/CacheRequestFilter.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.ruoyi.gateway.filter; - -import java.util.Collections; -import java.util.List; -import org.springframework.cloud.gateway.filter.GatewayFilter; -import org.springframework.cloud.gateway.filter.GatewayFilterChain; -import org.springframework.cloud.gateway.filter.OrderedGatewayFilter; -import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; -import org.springframework.cloud.gateway.support.ServerWebExchangeUtils; -import org.springframework.http.HttpMethod; -import org.springframework.stereotype.Component; -import org.springframework.web.server.ServerWebExchange; -import reactor.core.publisher.Mono; - -/** - * 鑾峰彇body璇锋眰鏁版嵁锛堣В鍐虫祦涓嶈兘閲嶅璇诲彇闂锛� - * - * @author admin - */ -@Component -public class CacheRequestFilter extends AbstractGatewayFilterFactory<CacheRequestFilter.Config> -{ - public CacheRequestFilter() - { - super(Config.class); - } - - @Override - public String name() - { - return "CacheRequestFilter"; - } - - @Override - public GatewayFilter apply(Config config) - { - CacheRequestGatewayFilter cacheRequestGatewayFilter = new CacheRequestGatewayFilter(); - Integer order = config.getOrder(); - if (order == null) - { - return cacheRequestGatewayFilter; - } - return new OrderedGatewayFilter(cacheRequestGatewayFilter, order); - } - - public static class CacheRequestGatewayFilter implements GatewayFilter - { - @Override - public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) - { - // GET DELETE 涓嶈繃婊� - HttpMethod method = exchange.getRequest().getMethod(); - if (method == null || method == HttpMethod.GET || method == HttpMethod.DELETE) - { - return chain.filter(exchange); - } - return ServerWebExchangeUtils.cacheRequestBodyAndRequest(exchange, (serverHttpRequest) -> { - if (serverHttpRequest == exchange.getRequest()) - { - return chain.filter(exchange); - } - return chain.filter(exchange.mutate().request(serverHttpRequest).build()); - }); - } - } - - @Override - public List<String> shortcutFieldOrder() - { - return Collections.singletonList("order"); - } - - static class Config - { - private Integer order; - - public Integer getOrder() - { - return order; - } - - public void setOrder(Integer order) - { - this.order = order; - } - } -} \ No newline at end of file diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/ValidateCodeFilter.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/ValidateCodeFilter.java deleted file mode 100644 index 176c6e0..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/ValidateCodeFilter.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.ruoyi.gateway.filter; - -import java.nio.CharBuffer; -import java.nio.charset.StandardCharsets; -import java.util.concurrent.atomic.AtomicReference; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cloud.gateway.filter.GatewayFilter; -import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; -import org.springframework.core.io.buffer.DataBuffer; -import org.springframework.core.io.buffer.DataBufferUtils; -import org.springframework.http.server.reactive.ServerHttpRequest; -import org.springframework.stereotype.Component; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; -import com.se.common.core.utils.ServletUtils; -import com.se.common.core.utils.StringUtils; -import com.ruoyi.gateway.config.properties.CaptchaProperties; -import com.ruoyi.gateway.service.ValidateCodeService; -import reactor.core.publisher.Flux; - -/** - * 楠岃瘉鐮佽繃婊ゅ櫒 - * - * @author admin - */ -@Component -public class ValidateCodeFilter extends AbstractGatewayFilterFactory<Object> -{ - private final static String[] VALIDATE_URL = new String[] { "/auth/login", "/auth/register" }; - - @Autowired - private ValidateCodeService validateCodeService; - - @Autowired - private CaptchaProperties captchaProperties; - - private static final String CODE = "code"; - - private static final String UUID = "uuid"; - - @Override - public GatewayFilter apply(Object config) - { - return (exchange, chain) -> { - ServerHttpRequest request = exchange.getRequest(); - - // 闈炵櫥褰�/娉ㄥ唽璇锋眰鎴栭獙璇佺爜鍏抽棴锛屼笉澶勭悊 - if (!StringUtils.equalsAnyIgnoreCase(request.getURI().getPath(), VALIDATE_URL) || !captchaProperties.getEnabled()) - { - return chain.filter(exchange); - } - - try - { - String rspStr = resolveBodyFromRequest(request); - JSONObject obj = JSON.parseObject(rspStr); - validateCodeService.checkCaptcha(obj.getString(CODE), obj.getString(UUID)); - } - catch (Exception e) - { - return ServletUtils.webFluxResponseWriter(exchange.getResponse(), e.getMessage()); - } - return chain.filter(exchange); - }; - } - - private String resolveBodyFromRequest(ServerHttpRequest serverHttpRequest) - { - // 鑾峰彇璇锋眰浣� - Flux<DataBuffer> body = serverHttpRequest.getBody(); - AtomicReference<String> bodyRef = new AtomicReference<>(); - body.subscribe(buffer -> { - CharBuffer charBuffer = StandardCharsets.UTF_8.decode(buffer.asByteBuffer()); - DataBufferUtils.release(buffer); - bodyRef.set(charBuffer.toString()); - }); - return bodyRef.get(); - } -} diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/XssFilter.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/XssFilter.java deleted file mode 100644 index 9dd7999..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/XssFilter.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.ruoyi.gateway.filter; - -import java.nio.charset.StandardCharsets; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.cloud.gateway.filter.GatewayFilterChain; -import org.springframework.cloud.gateway.filter.GlobalFilter; -import org.springframework.core.Ordered; -import org.springframework.core.io.buffer.DataBuffer; -import org.springframework.core.io.buffer.DataBufferFactory; -import org.springframework.core.io.buffer.DataBufferUtils; -import org.springframework.core.io.buffer.DefaultDataBufferFactory; -import org.springframework.core.io.buffer.NettyDataBufferFactory; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpMethod; -import org.springframework.http.MediaType; -import org.springframework.http.server.reactive.ServerHttpRequest; -import org.springframework.http.server.reactive.ServerHttpRequestDecorator; -import org.springframework.stereotype.Component; -import org.springframework.web.server.ServerWebExchange; -import com.se.common.core.utils.StringUtils; -import com.se.common.core.utils.html.EscapeUtil; -import com.ruoyi.gateway.config.properties.XssProperties; -import io.netty.buffer.ByteBufAllocator; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; - -/** - * 璺ㄧ珯鑴氭湰杩囨护鍣� - * - * @author admin - */ -@Component -@ConditionalOnProperty(value = "security.xss.enabled", havingValue = "true") -public class XssFilter implements GlobalFilter, Ordered -{ - // 璺ㄧ珯鑴氭湰鐨� xss 閰嶇疆锛宯acos鑷娣诲姞 - @Autowired - private XssProperties xss; - - @Override - public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) - { - ServerHttpRequest request = exchange.getRequest(); - // xss寮�鍏虫湭寮�鍚� 鎴� 閫氳繃nacos鍏抽棴锛屼笉杩囨护 - if (!xss.getEnabled()) - { - return chain.filter(exchange); - } - // GET DELETE 涓嶈繃婊� - HttpMethod method = request.getMethod(); - if (method == null || method == HttpMethod.GET || method == HttpMethod.DELETE) - { - return chain.filter(exchange); - } - // 闈瀓son绫诲瀷锛屼笉杩囨护 - if (!isJsonRequest(exchange)) - { - return chain.filter(exchange); - } - // excludeUrls 涓嶈繃婊� - String url = request.getURI().getPath(); - if (StringUtils.matches(url, xss.getExcludeUrls())) - { - return chain.filter(exchange); - } - ServerHttpRequestDecorator httpRequestDecorator = requestDecorator(exchange); - return chain.filter(exchange.mutate().request(httpRequestDecorator).build()); - - } - - private ServerHttpRequestDecorator requestDecorator(ServerWebExchange exchange) - { - ServerHttpRequestDecorator serverHttpRequestDecorator = new ServerHttpRequestDecorator(exchange.getRequest()) - { - @Override - public Flux<DataBuffer> getBody() - { - Flux<DataBuffer> body = super.getBody(); - return body.buffer().map(dataBuffers -> { - DataBufferFactory dataBufferFactory = new DefaultDataBufferFactory(); - DataBuffer join = dataBufferFactory.join(dataBuffers); - byte[] content = new byte[join.readableByteCount()]; - join.read(content); - DataBufferUtils.release(join); - String bodyStr = new String(content, StandardCharsets.UTF_8); - // 闃瞲ss鏀诲嚮杩囨护 - bodyStr = EscapeUtil.clean(bodyStr); - // 杞垚瀛楄妭 - byte[] bytes = bodyStr.getBytes(StandardCharsets.UTF_8); - NettyDataBufferFactory nettyDataBufferFactory = new NettyDataBufferFactory(ByteBufAllocator.DEFAULT); - DataBuffer buffer = nettyDataBufferFactory.allocateBuffer(bytes.length); - buffer.write(bytes); - return buffer; - }); - } - - @Override - public HttpHeaders getHeaders() - { - HttpHeaders httpHeaders = new HttpHeaders(); - httpHeaders.putAll(super.getHeaders()); - // 鐢变簬淇敼浜嗚姹備綋鐨刡ody锛屽鑷碿ontent-length闀垮害涓嶇‘瀹氾紝鍥犳闇�瑕佸垹闄ゅ師鍏堢殑content-length - httpHeaders.remove(HttpHeaders.CONTENT_LENGTH); - httpHeaders.set(HttpHeaders.TRANSFER_ENCODING, "chunked"); - return httpHeaders; - } - - }; - return serverHttpRequestDecorator; - } - - /** - * 鏄惁鏄疛son璇锋眰 - * - * @param exchange HTTP璇锋眰 - */ - public boolean isJsonRequest(ServerWebExchange exchange) - { - String header = exchange.getRequest().getHeaders().getFirst(HttpHeaders.CONTENT_TYPE); - return StringUtils.startsWithIgnoreCase(header, MediaType.APPLICATION_JSON_VALUE); - } - - @Override - public int getOrder() - { - return -100; - } -} diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/GatewayExceptionHandler.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/GatewayExceptionHandler.java deleted file mode 100644 index 2b7d97f..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/GatewayExceptionHandler.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.ruoyi.gateway.handler; - -import org.springframework.cloud.gateway.support.NotFoundException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.web.reactive.error.ErrorWebExceptionHandler; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.annotation.Order; -import org.springframework.http.server.reactive.ServerHttpResponse; -import org.springframework.web.server.ResponseStatusException; -import org.springframework.web.server.ServerWebExchange; -import com.se.common.core.utils.ServletUtils; -import reactor.core.publisher.Mono; - -/** - * 缃戝叧缁熶竴寮傚父澶勭悊 - * - * @author admin - */ -@Order(-1) -@Configuration -public class GatewayExceptionHandler implements ErrorWebExceptionHandler -{ - private static final Logger log = LoggerFactory.getLogger(GatewayExceptionHandler.class); - - @Override - public Mono<Void> handle(ServerWebExchange exchange, Throwable ex) - { - ServerHttpResponse response = exchange.getResponse(); - - if (exchange.getResponse().isCommitted()) - { - return Mono.error(ex); - } - - String msg; - - if (ex instanceof NotFoundException) - { - msg = "鏈嶅姟鏈壘鍒�"; - } - else if (ex instanceof ResponseStatusException) - { - ResponseStatusException responseStatusException = (ResponseStatusException) ex; - msg = responseStatusException.getMessage(); - } - else - { - msg = "鍐呴儴鏈嶅姟鍣ㄩ敊璇�"; - } - - log.error("[缃戝叧寮傚父澶勭悊]璇锋眰璺緞:{},寮傚父淇℃伅:{}", exchange.getRequest().getPath(), ex.getMessage()); - - return ServletUtils.webFluxResponseWriter(response, msg); - } -} \ No newline at end of file diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SentinelFallbackHandler.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SentinelFallbackHandler.java deleted file mode 100644 index d995686..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SentinelFallbackHandler.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.ruoyi.gateway.handler; - -import com.alibaba.csp.sentinel.adapter.gateway.sc.callback.GatewayCallbackManager; -import com.alibaba.csp.sentinel.slots.block.BlockException; -import com.se.common.core.utils.ServletUtils; -import org.springframework.web.reactive.function.server.ServerResponse; -import org.springframework.web.server.ServerWebExchange; -import org.springframework.web.server.WebExceptionHandler; -import reactor.core.publisher.Mono; - -/** - * 鑷畾涔夐檺娴佸紓甯稿鐞� - * - * @author admin - */ -public class SentinelFallbackHandler implements WebExceptionHandler -{ - private Mono<Void> writeResponse(ServerResponse response, ServerWebExchange exchange) - { - return ServletUtils.webFluxResponseWriter(exchange.getResponse(), "璇锋眰瓒呰繃鏈�澶ф暟锛岃绋嶅�欏啀璇�"); - } - - @Override - public Mono<Void> handle(ServerWebExchange exchange, Throwable ex) - { - if (exchange.getResponse().isCommitted()) - { - return Mono.error(ex); - } - if (!BlockException.isBlockException(ex)) - { - return Mono.error(ex); - } - return handleBlockedRequest(exchange, ex).flatMap(response -> writeResponse(response, exchange)); - } - - private Mono<ServerResponse> handleBlockedRequest(ServerWebExchange exchange, Throwable throwable) - { - return GatewayCallbackManager.getBlockHandler().handleRequest(exchange, throwable); - } -} diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SwaggerHandler.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SwaggerHandler.java deleted file mode 100644 index daa21af..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SwaggerHandler.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.ruoyi.gateway.handler; - -import java.util.Optional; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import reactor.core.publisher.Mono; -import springfox.documentation.swagger.web.SecurityConfiguration; -import springfox.documentation.swagger.web.SecurityConfigurationBuilder; -import springfox.documentation.swagger.web.SwaggerResourcesProvider; -import springfox.documentation.swagger.web.UiConfiguration; -import springfox.documentation.swagger.web.UiConfigurationBuilder; - -@RestController -@RequestMapping("/swagger-resources") -public class SwaggerHandler -{ - @Autowired(required = false) - private SecurityConfiguration securityConfiguration; - - @Autowired(required = false) - private UiConfiguration uiConfiguration; - - private final SwaggerResourcesProvider swaggerResources; - - @Autowired - public SwaggerHandler(SwaggerResourcesProvider swaggerResources) - { - this.swaggerResources = swaggerResources; - } - - @GetMapping("/configuration/security") - public Mono<ResponseEntity<SecurityConfiguration>> securityConfiguration() - { - return Mono.just(new ResponseEntity<>( - Optional.ofNullable(securityConfiguration).orElse(SecurityConfigurationBuilder.builder().build()), - HttpStatus.OK)); - } - - @GetMapping("/configuration/ui") - public Mono<ResponseEntity<UiConfiguration>> uiConfiguration() - { - return Mono.just(new ResponseEntity<>( - Optional.ofNullable(uiConfiguration).orElse(UiConfigurationBuilder.builder().build()), HttpStatus.OK)); - } - - @SuppressWarnings("rawtypes") - @GetMapping("") - public Mono<ResponseEntity> swaggerResources() - { - return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK))); - } -} diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/ValidateCodeHandler.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/ValidateCodeHandler.java deleted file mode 100644 index 1b87ae3..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/ValidateCodeHandler.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.ruoyi.gateway.handler; - -import java.io.IOException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.stereotype.Component; -import org.springframework.web.reactive.function.BodyInserters; -import org.springframework.web.reactive.function.server.HandlerFunction; -import org.springframework.web.reactive.function.server.ServerRequest; -import org.springframework.web.reactive.function.server.ServerResponse; -import com.se.common.core.exception.CaptchaException; -import com.se.common.core.web.domain.AjaxResult; -import com.ruoyi.gateway.service.ValidateCodeService; -import reactor.core.publisher.Mono; - -/** - * 楠岃瘉鐮佽幏鍙� - * - * @author admin - */ -@Component -public class ValidateCodeHandler implements HandlerFunction<ServerResponse> -{ - @Autowired - private ValidateCodeService validateCodeService; - - @Override - public Mono<ServerResponse> handle(ServerRequest serverRequest) - { - AjaxResult ajax; - try - { - ajax = validateCodeService.createCaptcha(); - } - catch (CaptchaException | IOException e) - { - return Mono.error(e); - } - return ServerResponse.status(HttpStatus.OK).body(BodyInserters.fromValue(ajax)); - } -} diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/ValidateCodeService.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/ValidateCodeService.java deleted file mode 100644 index 9bbfa00..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/ValidateCodeService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.ruoyi.gateway.service; - -import java.io.IOException; -import com.se.common.core.exception.CaptchaException; -import com.se.common.core.web.domain.AjaxResult; - -/** - * 楠岃瘉鐮佸鐞� - * - * @author admin - */ -public interface ValidateCodeService -{ - /** - * 鐢熸垚楠岃瘉鐮� - */ - public AjaxResult createCaptcha() throws IOException, CaptchaException; - - /** - * 鏍¢獙楠岃瘉鐮� - */ - public void checkCaptcha(String key, String value) throws CaptchaException; -} diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java deleted file mode 100644 index 6961b68..0000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.ruoyi.gateway.service.impl; - -import java.awt.image.BufferedImage; -import java.io.IOException; -import java.util.concurrent.TimeUnit; -import javax.annotation.Resource; -import javax.imageio.ImageIO; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.util.FastByteArrayOutputStream; -import com.google.code.kaptcha.Producer; -import com.se.common.core.constant.CacheConstants; -import com.se.common.core.constant.Constants; -import com.se.common.core.exception.CaptchaException; -import com.se.common.core.utils.StringUtils; -import com.se.common.core.utils.sign.Base64; -import com.se.common.core.utils.uuid.IdUtils; -import com.se.common.core.web.domain.AjaxResult; -import com.se.common.redis.service.RedisService; -import com.ruoyi.gateway.config.properties.CaptchaProperties; -import com.ruoyi.gateway.service.ValidateCodeService; - -/** - * 楠岃瘉鐮佸疄鐜板鐞� - * - * @author admin - */ -@Service -public class ValidateCodeServiceImpl implements ValidateCodeService -{ - @Resource(name = "captchaProducer") - private Producer captchaProducer; - - @Resource(name = "captchaProducerMath") - private Producer captchaProducerMath; - - @Autowired - private RedisService redisService; - - @Autowired - private CaptchaProperties captchaProperties; - - /** - * 鐢熸垚楠岃瘉鐮� - */ - @Override - public AjaxResult createCaptcha() throws IOException, CaptchaException - { - AjaxResult ajax = AjaxResult.success(); - boolean captchaEnabled = captchaProperties.getEnabled(); - ajax.put("captchaEnabled", captchaEnabled); - if (!captchaEnabled) - { - return ajax; - } - - // 淇濆瓨楠岃瘉鐮佷俊鎭� - String uuid = IdUtils.simpleUUID(); - String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid; - - String capStr = null, code = null; - BufferedImage image = null; - - String captchaType = captchaProperties.getType(); - // 鐢熸垚楠岃瘉鐮� - if ("math".equals(captchaType)) - { - String capText = captchaProducerMath.createText(); - capStr = capText.substring(0, capText.lastIndexOf("@")); - code = capText.substring(capText.lastIndexOf("@") + 1); - image = captchaProducerMath.createImage(capStr); - } - else if ("char".equals(captchaType)) - { - capStr = code = captchaProducer.createText(); - image = captchaProducer.createImage(capStr); - } - - redisService.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); - // 杞崲娴佷俊鎭啓鍑� - FastByteArrayOutputStream os = new FastByteArrayOutputStream(); - try - { - ImageIO.write(image, "jpg", os); - } - catch (IOException e) - { - return AjaxResult.error(e.getMessage()); - } - - ajax.put("uuid", uuid); - ajax.put("img", Base64.encode(os.toByteArray())); - return ajax; - } - - /** - * 鏍¢獙楠岃瘉鐮� - */ - @Override - public void checkCaptcha(String code, String uuid) throws CaptchaException - { - if (StringUtils.isEmpty(code)) - { - throw new CaptchaException("楠岃瘉鐮佷笉鑳戒负绌�"); - } - String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, ""); - String captcha = redisService.getCacheObject(verifyKey); - if (captcha == null) - { - throw new CaptchaException("楠岃瘉鐮佸凡澶辨晥"); - } - redisService.deleteObject(verifyKey); - if (!code.equalsIgnoreCase(captcha)) - { - throw new CaptchaException("楠岃瘉鐮侀敊璇�"); - } - } -} diff --git a/ruoyi-gateway/src/main/resources/banner.txt b/ruoyi-gateway/src/main/resources/banner.txt deleted file mode 100644 index ceced29..0000000 --- a/ruoyi-gateway/src/main/resources/banner.txt +++ /dev/null @@ -1,10 +0,0 @@ -Spring Boot Version: ${spring-boot.version} -Spring Application Name: ${spring.application.name} - _ _ - (_) | | - _ __ _ _ ___ _ _ _ ______ __ _ __ _ | |_ ___ __ __ __ _ _ _ -| '__|| | | | / _ \ | | | || ||______| / _` | / _` || __| / _ \\ \ /\ / / / _` || | | | -| | | |_| || (_) || |_| || | | (_| || (_| || |_ | __/ \ V V / | (_| || |_| | -|_| \__,_| \___/ \__, ||_| \__, | \__,_| \__| \___| \_/\_/ \__,_| \__, | - __/ | __/ | __/ | - |___/ |___/ |___/ \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/RuoYiFileApplication.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/RuoYiFileApplication.java deleted file mode 100644 index 5427a06..0000000 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/RuoYiFileApplication.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ruoyi.file; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import com.se.common.swagger.annotation.EnableCustomSwagger2; - -/** - * 鏂囦欢鏈嶅姟 - * - * @author admin - */ -@EnableCustomSwagger2 -@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class }) -public class RuoYiFileApplication -{ - public static void main(String[] args) - { - SpringApplication.run(RuoYiFileApplication.class, args); - System.out.println("(鈾モ棤鈥库棤)锞夛緸 鏂囦欢鏈嶅姟妯″潡鍚姩鎴愬姛 醿�(麓凇`醿�)锞� \n" + - " .-------. ____ __ \n" + - " | _ _ \\ \\ \\ / / \n" + - " | ( ' ) | \\ _. / ' \n" + - " |(_ o _) / _( )_ .' \n" + - " | (_,_).' __ ___(_ o _)' \n" + - " | |\\ \\ | || |(_,_)' \n" + - " | | \\ `' /| `-' / \n" + - " | | \\ / \\ / \n" + - " ''-' `'-' `-..-' "); - } -} diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/MinioConfig.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/MinioConfig.java deleted file mode 100644 index 28701a5..0000000 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/MinioConfig.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.ruoyi.file.config; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import io.minio.MinioClient; - -/** - * Minio 閰嶇疆淇℃伅 - * - * @author admin - */ -@Configuration -@ConfigurationProperties(prefix = "minio") -public class MinioConfig -{ - /** - * 鏈嶅姟鍦板潃 - */ - private String url; - - /** - * 鐢ㄦ埛鍚� - */ - private String accessKey; - - /** - * 瀵嗙爜 - */ - private String secretKey; - - /** - * 瀛樺偍妗跺悕绉� - */ - private String bucketName; - - public String getUrl() - { - return url; - } - - public void setUrl(String url) - { - this.url = url; - } - - public String getAccessKey() - { - return accessKey; - } - - public void setAccessKey(String accessKey) - { - this.accessKey = accessKey; - } - - public String getSecretKey() - { - return secretKey; - } - - public void setSecretKey(String secretKey) - { - this.secretKey = secretKey; - } - - public String getBucketName() - { - return bucketName; - } - - public void setBucketName(String bucketName) - { - this.bucketName = bucketName; - } - - @Bean - public MinioClient getMinioClient() - { - return MinioClient.builder().endpoint(url).credentials(accessKey, secretKey).build(); - } -} diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/ResourcesConfig.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/ResourcesConfig.java deleted file mode 100644 index 425b3cc..0000000 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/ResourcesConfig.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.ruoyi.file.config; - -import java.io.File; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.CorsRegistry; -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -/** - * 閫氱敤鏄犲皠閰嶇疆 - * - * @author admin - */ -@Configuration -public class ResourcesConfig implements WebMvcConfigurer -{ - /** - * 涓婁紶鏂囦欢瀛樺偍鍦ㄦ湰鍦扮殑鏍硅矾寰� - */ - @Value("${file.path}") - private String localFilePath; - - /** - * 璧勬簮鏄犲皠璺緞 鍓嶇紑 - */ - @Value("${file.prefix}") - public String localFilePrefix; - - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) - { - /** 鏈湴鏂囦欢涓婁紶璺緞 */ - registry.addResourceHandler(localFilePrefix + "/**") - .addResourceLocations("file:" + localFilePath + File.separator); - } - - /** - * 寮�鍚法鍩� - */ - @Override - public void addCorsMappings(CorsRegistry registry) { - // 璁剧疆鍏佽璺ㄥ煙鐨勮矾鐢� - registry.addMapping(localFilePrefix + "/**") - // 璁剧疆鍏佽璺ㄥ煙璇锋眰鐨勫煙鍚� - .allowedOrigins("*") - // 璁剧疆鍏佽鐨勬柟娉� - .allowedMethods("GET"); - } -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java deleted file mode 100644 index 620c19f..0000000 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.ruoyi.file.controller; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; -import com.se.common.core.domain.R; -import com.se.common.core.utils.file.FileUtils; -import com.ruoyi.file.service.ISysFileService; -import com.se.system.api.domain.SysFile; - -/** - * 鏂囦欢璇锋眰澶勭悊 - * - * @author admin - */ -@RestController -public class SysFileController -{ - private static final Logger log = LoggerFactory.getLogger(SysFileController.class); - - @Autowired - private ISysFileService sysFileService; - - /** - * 鏂囦欢涓婁紶璇锋眰 - */ - @PostMapping("upload") - public R<SysFile> upload(MultipartFile file) - { - try - { - // 涓婁紶骞惰繑鍥炶闂湴鍧� - String url = sysFileService.uploadFile(file); - SysFile sysFile = new SysFile(); - sysFile.setName(FileUtils.getName(url)); - sysFile.setUrl(url); - return R.ok(sysFile); - } - catch (Exception e) - { - log.error("涓婁紶鏂囦欢澶辫触", e); - return R.fail(e.getMessage()); - } - } -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FastDfsSysFileServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FastDfsSysFileServiceImpl.java deleted file mode 100644 index d555d66..0000000 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FastDfsSysFileServiceImpl.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.ruoyi.file.service; - -import java.io.InputStream; -import com.alibaba.nacos.common.utils.IoUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; -import com.github.tobato.fastdfs.domain.fdfs.StorePath; -import com.github.tobato.fastdfs.service.FastFileStorageClient; -import com.se.common.core.utils.file.FileTypeUtils; - -/** - * FastDFS 鏂囦欢瀛樺偍 - * - * @author admin - */ -@Service -public class FastDfsSysFileServiceImpl implements ISysFileService -{ - /** - * 鍩熷悕鎴栨湰鏈鸿闂湴鍧� - */ - @Value("${fdfs.domain}") - public String domain; - - @Autowired - private FastFileStorageClient storageClient; - - /** - * FastDfs鏂囦欢涓婁紶鎺ュ彛 - * - * @param file 涓婁紶鐨勬枃浠� - * @return 璁块棶鍦板潃 - * @throws Exception - */ - @Override - public String uploadFile(MultipartFile file) throws Exception - { - InputStream inputStream = file.getInputStream(); - StorePath storePath = storageClient.uploadFile(inputStream, file.getSize(), - FileTypeUtils.getExtension(file), null); - IoUtils.closeQuietly(inputStream); - return domain + "/" + storePath.getFullPath(); - } -} diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ISysFileService.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ISysFileService.java deleted file mode 100644 index 9bdad05..0000000 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ISysFileService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.ruoyi.file.service; - -import org.springframework.web.multipart.MultipartFile; - -/** - * 鏂囦欢涓婁紶鎺ュ彛 - * - * @author admin - */ -public interface ISysFileService -{ - /** - * 鏂囦欢涓婁紶鎺ュ彛 - * - * @param file 涓婁紶鐨勬枃浠� - * @return 璁块棶鍦板潃 - * @throws Exception - */ - public String uploadFile(MultipartFile file) throws Exception; -} diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java deleted file mode 100644 index 240bbfb..0000000 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.ruoyi.file.service; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Primary; -import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; -import com.ruoyi.file.utils.FileUploadUtils; - -/** - * 鏈湴鏂囦欢瀛樺偍 - * - * @author admin - */ -@Primary -@Service -public class LocalSysFileServiceImpl implements ISysFileService -{ - /** - * 璧勬簮鏄犲皠璺緞 鍓嶇紑 - */ - @Value("${file.prefix}") - public String localFilePrefix; - - /** - * 鍩熷悕鎴栨湰鏈鸿闂湴鍧� - */ - @Value("${file.domain}") - public String domain; - - /** - * 涓婁紶鏂囦欢瀛樺偍鍦ㄦ湰鍦扮殑鏍硅矾寰� - */ - @Value("${file.path}") - private String localFilePath; - - /** - * 鏈湴鏂囦欢涓婁紶鎺ュ彛 - * - * @param file 涓婁紶鐨勬枃浠� - * @return 璁块棶鍦板潃 - * @throws Exception - */ - @Override - public String uploadFile(MultipartFile file) throws Exception - { - String name = FileUploadUtils.upload(localFilePath, file); - String url = domain + localFilePrefix + name; - return url; - } -} diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java deleted file mode 100644 index 2b46662..0000000 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.ruoyi.file.service; - -import java.io.InputStream; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; -import com.alibaba.nacos.common.utils.IoUtils; -import com.ruoyi.file.config.MinioConfig; -import com.ruoyi.file.utils.FileUploadUtils; -import io.minio.MinioClient; -import io.minio.PutObjectArgs; - -/** - * Minio 鏂囦欢瀛樺偍 - * - * @author admin - */ -@Service -public class MinioSysFileServiceImpl implements ISysFileService -{ - @Autowired - private MinioConfig minioConfig; - - @Autowired - private MinioClient client; - - /** - * Minio鏂囦欢涓婁紶鎺ュ彛 - * - * @param file 涓婁紶鐨勬枃浠� - * @return 璁块棶鍦板潃 - * @throws Exception - */ - @Override - public String uploadFile(MultipartFile file) throws Exception - { - String fileName = FileUploadUtils.extractFilename(file); - InputStream inputStream = file.getInputStream(); - PutObjectArgs args = PutObjectArgs.builder() - .bucket(minioConfig.getBucketName()) - .object(fileName) - .stream(inputStream, file.getSize(), -1) - .contentType(file.getContentType()) - .build(); - client.putObject(args); - IoUtils.closeQuietly(inputStream); - return minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + fileName; - } -} diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/FileUploadUtils.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/FileUploadUtils.java deleted file mode 100644 index 21317bf..0000000 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/FileUploadUtils.java +++ /dev/null @@ -1,185 +0,0 @@ -package com.ruoyi.file.utils; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Paths; -import java.util.Objects; -import org.apache.commons.io.FilenameUtils; -import org.springframework.web.multipart.MultipartFile; -import com.se.common.core.exception.file.FileException; -import com.se.common.core.exception.file.FileNameLengthLimitExceededException; -import com.se.common.core.exception.file.FileSizeLimitExceededException; -import com.se.common.core.exception.file.InvalidExtensionException; -import com.se.common.core.utils.DateUtils; -import com.se.common.core.utils.StringUtils; -import com.se.common.core.utils.file.FileTypeUtils; -import com.se.common.core.utils.file.MimeTypeUtils; -import com.se.common.core.utils.uuid.Seq; - -/** - * 鏂囦欢涓婁紶宸ュ叿绫� - * - * @author admin - */ -public class FileUploadUtils -{ - /** - * 榛樿澶у皬 50M - */ - public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024L; - - /** - * 榛樿鐨勬枃浠跺悕鏈�澶ч暱搴� 100 - */ - public static final int DEFAULT_FILE_NAME_LENGTH = 100; - - /** - * 鏍规嵁鏂囦欢璺緞涓婁紶 - * - * @param baseDir 鐩稿搴旂敤鐨勫熀鐩綍 - * @param file 涓婁紶鐨勬枃浠� - * @return 鏂囦欢鍚嶇О - * @throws IOException - */ - public static final String upload(String baseDir, MultipartFile file) throws IOException - { - try - { - return upload(baseDir, file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION); - } - catch (FileException fe) - { - throw new IOException(fe.getDefaultMessage(), fe); - } - catch (Exception e) - { - throw new IOException(e.getMessage(), e); - } - } - - /** - * 鏂囦欢涓婁紶 - * - * @param baseDir 鐩稿搴旂敤鐨勫熀鐩綍 - * @param file 涓婁紶鐨勬枃浠� - * @param allowedExtension 涓婁紶鏂囦欢绫诲瀷 - * @return 杩斿洖涓婁紶鎴愬姛鐨勬枃浠跺悕 - * @throws FileSizeLimitExceededException 濡傛灉瓒呭嚭鏈�澶уぇ灏� - * @throws FileNameLengthLimitExceededException 鏂囦欢鍚嶅お闀� - * @throws IOException 姣斿璇诲啓鏂囦欢鍑洪敊鏃� - * @throws InvalidExtensionException 鏂囦欢鏍¢獙寮傚父 - */ - public static final String upload(String baseDir, MultipartFile file, String[] allowedExtension) - throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException, - InvalidExtensionException - { - int fileNamelength = Objects.requireNonNull(file.getOriginalFilename()).length(); - if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH) - { - throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH); - } - - assertAllowed(file, allowedExtension); - - String fileName = extractFilename(file); - - String absPath = getAbsoluteFile(baseDir, fileName).getAbsolutePath(); - file.transferTo(Paths.get(absPath)); - return getPathFileName(fileName); - } - - /** - * 缂栫爜鏂囦欢鍚� - */ - public static final String extractFilename(MultipartFile file) - { - return StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(), - FilenameUtils.getBaseName(file.getOriginalFilename()), Seq.getId(Seq.uploadSeqType), FileTypeUtils.getExtension(file)); - } - - private static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException - { - File desc = new File(uploadDir + File.separator + fileName); - - if (!desc.exists()) - { - if (!desc.getParentFile().exists()) - { - desc.getParentFile().mkdirs(); - } - } - return desc.isAbsolute() ? desc : desc.getAbsoluteFile(); - } - - private static final String getPathFileName(String fileName) throws IOException - { - String pathFileName = "/" + fileName; - return pathFileName; - } - - /** - * 鏂囦欢澶у皬鏍¢獙 - * - * @param file 涓婁紶鐨勬枃浠� - * @throws FileSizeLimitExceededException 濡傛灉瓒呭嚭鏈�澶уぇ灏� - * @throws InvalidExtensionException 鏂囦欢鏍¢獙寮傚父 - */ - public static final void assertAllowed(MultipartFile file, String[] allowedExtension) - throws FileSizeLimitExceededException, InvalidExtensionException - { - long size = file.getSize(); - if (size > DEFAULT_MAX_SIZE) - { - throw new FileSizeLimitExceededException(DEFAULT_MAX_SIZE / 1024 / 1024); - } - - String fileName = file.getOriginalFilename(); - String extension = FileTypeUtils.getExtension(file); - if (allowedExtension != null && !isAllowedExtension(extension, allowedExtension)) - { - if (allowedExtension == MimeTypeUtils.IMAGE_EXTENSION) - { - throw new InvalidExtensionException.InvalidImageExtensionException(allowedExtension, extension, - fileName); - } - else if (allowedExtension == MimeTypeUtils.FLASH_EXTENSION) - { - throw new InvalidExtensionException.InvalidFlashExtensionException(allowedExtension, extension, - fileName); - } - else if (allowedExtension == MimeTypeUtils.MEDIA_EXTENSION) - { - throw new InvalidExtensionException.InvalidMediaExtensionException(allowedExtension, extension, - fileName); - } - else if (allowedExtension == MimeTypeUtils.VIDEO_EXTENSION) - { - throw new InvalidExtensionException.InvalidVideoExtensionException(allowedExtension, extension, - fileName); - } - else - { - throw new InvalidExtensionException(allowedExtension, extension, fileName); - } - } - } - - /** - * 鍒ゆ柇MIME绫诲瀷鏄惁鏄厑璁哥殑MIME绫诲瀷 - * - * @param extension 涓婁紶鏂囦欢绫诲瀷 - * @param allowedExtension 鍏佽涓婁紶鏂囦欢绫诲瀷 - * @return true/false - */ - public static final boolean isAllowedExtension(String extension, String[] allowedExtension) - { - for (String str : allowedExtension) - { - if (str.equalsIgnoreCase(extension)) - { - return true; - } - } - return false; - } -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/RuoYiGenApplication.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/RuoYiGenApplication.java deleted file mode 100644 index d88ddbe..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/RuoYiGenApplication.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.ruoyi.gen; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import com.se.common.security.annotation.EnableCustomConfig; -import com.se.common.security.annotation.EnableRyFeignClients; -import com.se.common.swagger.annotation.EnableCustomSwagger2; - -/** - * 浠g爜鐢熸垚 - * - * @author admin - */ -@EnableCustomConfig -@EnableCustomSwagger2 -@EnableRyFeignClients -@SpringBootApplication -public class RuoYiGenApplication -{ - public static void main(String[] args) - { - SpringApplication.run(RuoYiGenApplication.class, args); - System.out.println("(鈾モ棤鈥库棤)锞夛緸 浠g爜鐢熸垚妯″潡鍚姩鎴愬姛 醿�(麓凇`醿�)锞� \n" + - " .-------. ____ __ \n" + - " | _ _ \\ \\ \\ / / \n" + - " | ( ' ) | \\ _. / ' \n" + - " |(_ o _) / _( )_ .' \n" + - " | (_,_).' __ ___(_ o _)' \n" + - " | |\\ \\ | || |(_,_)' \n" + - " | | \\ `' /| `-' / \n" + - " | | \\ / \\ / \n" + - " ''-' `'-' `-..-' "); - } -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/config/GenConfig.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/config/GenConfig.java deleted file mode 100644 index f542350..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/config/GenConfig.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.ruoyi.gen.config; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -/** - * 浠g爜鐢熸垚鐩稿叧閰嶇疆 - * - * @author admin - */ -@Component -@ConfigurationProperties(prefix = "gen") -public class GenConfig -{ - /** 浣滆�� */ - public static String author; - - /** 鐢熸垚鍖呰矾寰� */ - public static String packageName; - - /** 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸false */ - public static boolean autoRemovePre; - - /** 琛ㄥ墠缂�(绫诲悕涓嶄細鍖呭惈琛ㄥ墠缂�) */ - public static String tablePrefix; - - public static String getAuthor() - { - return author; - } - - public void setAuthor(String author) - { - GenConfig.author = author; - } - - public static String getPackageName() - { - return packageName; - } - - public void setPackageName(String packageName) - { - GenConfig.packageName = packageName; - } - - public static boolean getAutoRemovePre() - { - return autoRemovePre; - } - - public void setAutoRemovePre(boolean autoRemovePre) - { - GenConfig.autoRemovePre = autoRemovePre; - } - - public static String getTablePrefix() - { - return tablePrefix; - } - - public void setTablePrefix(String tablePrefix) - { - GenConfig.tablePrefix = tablePrefix; - } -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/controller/GenController.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/controller/GenController.java deleted file mode 100644 index 96ea440..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/controller/GenController.java +++ /dev/null @@ -1,211 +0,0 @@ -package com.ruoyi.gen.controller; - -import java.io.IOException; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import javax.servlet.http.HttpServletResponse; -import org.apache.commons.io.IOUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.se.common.core.text.Convert; -import com.se.common.core.web.controller.BaseController; -import com.se.common.core.web.domain.AjaxResult; -import com.se.common.core.web.page.TableDataInfo; -import com.se.common.log.annotation.Log; -import com.se.common.log.enums.BusinessType; -import com.se.common.security.annotation.RequiresPermissions; -import com.ruoyi.gen.domain.GenTable; -import com.ruoyi.gen.domain.GenTableColumn; -import com.ruoyi.gen.service.IGenTableColumnService; -import com.ruoyi.gen.service.IGenTableService; - -/** - * 浠g爜鐢熸垚 鎿嶄綔澶勭悊 - * - * @author admin - */ -@RequestMapping("/gen") -@RestController -public class GenController extends BaseController -{ - @Autowired - private IGenTableService genTableService; - - @Autowired - private IGenTableColumnService genTableColumnService; - - /** - * 鏌ヨ浠g爜鐢熸垚鍒楄〃 - */ - @RequiresPermissions("tool:gen:list") - @GetMapping("/list") - public TableDataInfo genList(GenTable genTable) - { - startPage(); - List<GenTable> list = genTableService.selectGenTableList(genTable); - return getDataTable(list); - } - - /** - * 淇敼浠g爜鐢熸垚涓氬姟 - */ - @RequiresPermissions("tool:gen:query") - @GetMapping(value = "/{tableId}") - public AjaxResult getInfo(@PathVariable Long tableId) - { - GenTable table = genTableService.selectGenTableById(tableId); - List<GenTable> tables = genTableService.selectGenTableAll(); - List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(tableId); - Map<String, Object> map = new HashMap<String, Object>(); - map.put("info", table); - map.put("rows", list); - map.put("tables", tables); - return success(map); - } - - /** - * 鏌ヨ鏁版嵁搴撳垪琛� - */ - @RequiresPermissions("tool:gen:list") - @GetMapping("/db/list") - public TableDataInfo dataList(GenTable genTable) - { - startPage(); - List<GenTable> list = genTableService.selectDbTableList(genTable); - return getDataTable(list); - } - - /** - * 鏌ヨ鏁版嵁琛ㄥ瓧娈靛垪琛� - */ - @GetMapping(value = "/column/{tableId}") - public TableDataInfo columnList(Long tableId) - { - TableDataInfo dataInfo = new TableDataInfo(); - List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(tableId); - dataInfo.setRows(list); - dataInfo.setTotal(list.size()); - return dataInfo; - } - - /** - * 瀵煎叆琛ㄧ粨鏋勶紙淇濆瓨锛� - */ - @RequiresPermissions("tool:gen:import") - @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.IMPORT) - @PostMapping("/importTable") - public AjaxResult importTableSave(String tables) - { - String[] tableNames = Convert.toStrArray(tables); - // 鏌ヨ琛ㄤ俊鎭� - List<GenTable> tableList = genTableService.selectDbTableListByNames(tableNames); - genTableService.importGenTable(tableList); - return success(); - } - - /** - * 淇敼淇濆瓨浠g爜鐢熸垚涓氬姟 - */ - @RequiresPermissions("tool:gen:edit") - @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult editSave(@Validated @RequestBody GenTable genTable) - { - genTableService.validateEdit(genTable); - genTableService.updateGenTable(genTable); - return success(); - } - - /** - * 鍒犻櫎浠g爜鐢熸垚 - */ - @RequiresPermissions("tool:gen:remove") - @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.DELETE) - @DeleteMapping("/{tableIds}") - public AjaxResult remove(@PathVariable Long[] tableIds) - { - genTableService.deleteGenTableByIds(tableIds); - return success(); - } - - /** - * 棰勮浠g爜 - */ - @RequiresPermissions("tool:gen:preview") - @GetMapping("/preview/{tableId}") - public AjaxResult preview(@PathVariable("tableId") Long tableId) throws IOException - { - Map<String, String> dataMap = genTableService.previewCode(tableId); - return success(dataMap); - } - - /** - * 鐢熸垚浠g爜锛堜笅杞芥柟寮忥級 - */ - @RequiresPermissions("tool:gen:code") - @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.GENCODE) - @GetMapping("/download/{tableName}") - public void download(HttpServletResponse response, @PathVariable("tableName") String tableName) throws IOException - { - byte[] data = genTableService.downloadCode(tableName); - genCode(response, data); - } - - /** - * 鐢熸垚浠g爜锛堣嚜瀹氫箟璺緞锛� - */ - @RequiresPermissions("tool:gen:code") - @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.GENCODE) - @GetMapping("/genCode/{tableName}") - public AjaxResult genCode(@PathVariable("tableName") String tableName) - { - genTableService.generatorCode(tableName); - return success(); - } - - /** - * 鍚屾鏁版嵁搴� - */ - @RequiresPermissions("tool:gen:edit") - @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.UPDATE) - @GetMapping("/synchDb/{tableName}") - public AjaxResult synchDb(@PathVariable("tableName") String tableName) - { - genTableService.synchDb(tableName); - return success(); - } - - /** - * 鎵归噺鐢熸垚浠g爜 - */ - @RequiresPermissions("tool:gen:code") - @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.GENCODE) - @GetMapping("/batchGenCode") - public void batchGenCode(HttpServletResponse response, String tables) throws IOException - { - String[] tableNames = Convert.toStrArray(tables); - byte[] data = genTableService.downloadCode(tableNames); - genCode(response, data); - } - - /** - * 鐢熸垚zip鏂囦欢 - */ - private void genCode(HttpServletResponse response, byte[] data) throws IOException - { - response.reset(); - response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\""); - response.addHeader("Content-Length", "" + data.length); - response.setContentType("application/octet-stream; charset=UTF-8"); - IOUtils.write(data, response.getOutputStream()); - } -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTable.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTable.java deleted file mode 100644 index 8f7c54f..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTable.java +++ /dev/null @@ -1,383 +0,0 @@ -package com.ruoyi.gen.domain; - -import java.util.List; -import javax.validation.Valid; -import javax.validation.constraints.NotBlank; -import org.apache.commons.lang3.ArrayUtils; -import com.se.common.core.constant.GenConstants; -import com.se.common.core.utils.StringUtils; -import com.se.common.core.web.domain.BaseEntity; - -/** - * 涓氬姟琛� gen_table - * - * @author admin - */ -public class GenTable extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 缂栧彿 */ - private Long tableId; - - /** 琛ㄥ悕绉� */ - @NotBlank(message = "琛ㄥ悕绉颁笉鑳戒负绌�") - private String tableName; - - /** 琛ㄦ弿杩� */ - @NotBlank(message = "琛ㄦ弿杩颁笉鑳戒负绌�") - private String tableComment; - - /** 鍏宠仈鐖惰〃鐨勮〃鍚� */ - private String subTableName; - - /** 鏈〃鍏宠仈鐖惰〃鐨勫閿悕 */ - private String subTableFkName; - - /** 瀹炰綋绫诲悕绉�(棣栧瓧姣嶅ぇ鍐�) */ - @NotBlank(message = "瀹炰綋绫诲悕绉颁笉鑳戒负绌�") - private String className; - - /** 浣跨敤鐨勬ā鏉匡紙crud鍗曡〃鎿嶄綔 tree鏍戣〃鎿嶄綔 sub涓诲瓙琛ㄦ搷浣滐級 */ - private String tplCategory; - - /** 鍓嶇绫诲瀷锛坋lement-ui妯$増 element-plus妯$増锛� */ - private String tplWebType; - - /** 鐢熸垚鍖呰矾寰� */ - @NotBlank(message = "鐢熸垚鍖呰矾寰勪笉鑳戒负绌�") - private String packageName; - - /** 鐢熸垚妯″潡鍚� */ - @NotBlank(message = "鐢熸垚妯″潡鍚嶄笉鑳戒负绌�") - private String moduleName; - - /** 鐢熸垚涓氬姟鍚� */ - @NotBlank(message = "鐢熸垚涓氬姟鍚嶄笉鑳戒负绌�") - private String businessName; - - /** 鐢熸垚鍔熻兘鍚� */ - @NotBlank(message = "鐢熸垚鍔熻兘鍚嶄笉鑳戒负绌�") - private String functionName; - - /** 鐢熸垚浣滆�� */ - @NotBlank(message = "浣滆�呬笉鑳戒负绌�") - private String functionAuthor; - - /** 鐢熸垚浠g爜鏂瑰紡锛�0zip鍘嬬缉鍖� 1鑷畾涔夎矾寰勶級 */ - private String genType; - - /** 鐢熸垚璺緞锛堜笉濉粯璁ら」鐩矾寰勶級 */ - private String genPath; - - /** 涓婚敭淇℃伅 */ - private GenTableColumn pkColumn; - - /** 瀛愯〃淇℃伅 */ - private GenTable subTable; - - /** 琛ㄥ垪淇℃伅 */ - @Valid - private List<GenTableColumn> columns; - - /** 鍏跺畠鐢熸垚閫夐」 */ - private String options; - - /** 鏍戠紪鐮佸瓧娈� */ - private String treeCode; - - /** 鏍戠埗缂栫爜瀛楁 */ - private String treeParentCode; - - /** 鏍戝悕绉板瓧娈� */ - private String treeName; - - /** 涓婄骇鑿滃崟ID瀛楁 */ - private String parentMenuId; - - /** 涓婄骇鑿滃崟鍚嶇О瀛楁 */ - private String parentMenuName; - - public Long getTableId() - { - return tableId; - } - - public void setTableId(Long tableId) - { - this.tableId = tableId; - } - - public String getTableName() - { - return tableName; - } - - public void setTableName(String tableName) - { - this.tableName = tableName; - } - - public String getTableComment() - { - return tableComment; - } - - public void setTableComment(String tableComment) - { - this.tableComment = tableComment; - } - - public String getSubTableName() - { - return subTableName; - } - - public void setSubTableName(String subTableName) - { - this.subTableName = subTableName; - } - - public String getSubTableFkName() - { - return subTableFkName; - } - - public void setSubTableFkName(String subTableFkName) - { - this.subTableFkName = subTableFkName; - } - - public String getClassName() - { - return className; - } - - public void setClassName(String className) - { - this.className = className; - } - - public String getTplCategory() - { - return tplCategory; - } - - public void setTplCategory(String tplCategory) - { - this.tplCategory = tplCategory; - } - - public String getTplWebType() - { - return tplWebType; - } - - public void setTplWebType(String tplWebType) - { - this.tplWebType = tplWebType; - } - - public String getPackageName() - { - return packageName; - } - - public void setPackageName(String packageName) - { - this.packageName = packageName; - } - - public String getModuleName() - { - return moduleName; - } - - public void setModuleName(String moduleName) - { - this.moduleName = moduleName; - } - - public String getBusinessName() - { - return businessName; - } - - public void setBusinessName(String businessName) - { - this.businessName = businessName; - } - - public String getFunctionName() - { - return functionName; - } - - public void setFunctionName(String functionName) - { - this.functionName = functionName; - } - - public String getFunctionAuthor() - { - return functionAuthor; - } - - public void setFunctionAuthor(String functionAuthor) - { - this.functionAuthor = functionAuthor; - } - - public String getGenType() - { - return genType; - } - - public void setGenType(String genType) - { - this.genType = genType; - } - - public String getGenPath() - { - return genPath; - } - - public void setGenPath(String genPath) - { - this.genPath = genPath; - } - - public GenTableColumn getPkColumn() - { - return pkColumn; - } - - public void setPkColumn(GenTableColumn pkColumn) - { - this.pkColumn = pkColumn; - } - - public GenTable getSubTable() - { - return subTable; - } - - public void setSubTable(GenTable subTable) - { - this.subTable = subTable; - } - public List<GenTableColumn> getColumns() - { - return columns; - } - - public void setColumns(List<GenTableColumn> columns) - { - this.columns = columns; - } - - public String getOptions() - { - return options; - } - - public void setOptions(String options) - { - this.options = options; - } - - public String getTreeCode() - { - return treeCode; - } - - public void setTreeCode(String treeCode) - { - this.treeCode = treeCode; - } - - public String getTreeParentCode() - { - return treeParentCode; - } - - public void setTreeParentCode(String treeParentCode) - { - this.treeParentCode = treeParentCode; - } - - public String getTreeName() - { - return treeName; - } - - public void setTreeName(String treeName) - { - this.treeName = treeName; - } - - public String getParentMenuId() - { - return parentMenuId; - } - - public void setParentMenuId(String parentMenuId) - { - this.parentMenuId = parentMenuId; - } - - public String getParentMenuName() - { - return parentMenuName; - } - - public void setParentMenuName(String parentMenuName) - { - this.parentMenuName = parentMenuName; - } - - public boolean isSub() - { - return isSub(this.tplCategory); - } - - public static boolean isSub(String tplCategory) - { - return tplCategory != null && StringUtils.equals(GenConstants.TPL_SUB, tplCategory); - } - public boolean isTree() - { - return isTree(this.tplCategory); - } - - public static boolean isTree(String tplCategory) - { - return tplCategory != null && StringUtils.equals(GenConstants.TPL_TREE, tplCategory); - } - - public boolean isCrud() - { - return isCrud(this.tplCategory); - } - - public static boolean isCrud(String tplCategory) - { - return tplCategory != null && StringUtils.equals(GenConstants.TPL_CRUD, tplCategory); - } - - public boolean isSuperColumn(String javaField) - { - return isSuperColumn(this.tplCategory, javaField); - } - - public static boolean isSuperColumn(String tplCategory, String javaField) - { - if (isTree(tplCategory)) - { - return StringUtils.equalsAnyIgnoreCase(javaField, - ArrayUtils.addAll(GenConstants.TREE_ENTITY, GenConstants.BASE_ENTITY)); - } - return StringUtils.equalsAnyIgnoreCase(javaField, GenConstants.BASE_ENTITY); - } -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTableColumn.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTableColumn.java deleted file mode 100644 index a6e7a9c..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTableColumn.java +++ /dev/null @@ -1,374 +0,0 @@ -package com.ruoyi.gen.domain; - -import javax.validation.constraints.NotBlank; - -import com.se.common.core.utils.StringUtils; -import com.se.common.core.web.domain.BaseEntity; - -/** - * 浠g爜鐢熸垚涓氬姟瀛楁琛� gen_table_column - * - * @author admin - */ -public class GenTableColumn extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 缂栧彿 */ - private Long columnId; - - /** 褰掑睘琛ㄧ紪鍙� */ - private Long tableId; - - /** 鍒楀悕绉� */ - private String columnName; - - /** 鍒楁弿杩� */ - private String columnComment; - - /** 鍒楃被鍨� */ - private String columnType; - - /** JAVA绫诲瀷 */ - private String javaType; - - /** JAVA瀛楁鍚� */ - @NotBlank(message = "Java灞炴�т笉鑳戒负绌�") - private String javaField; - - /** 鏄惁涓婚敭锛�1鏄級 */ - private String isPk; - - /** 鏄惁鑷锛�1鏄級 */ - private String isIncrement; - - /** 鏄惁蹇呭~锛�1鏄級 */ - private String isRequired; - - /** 鏄惁涓烘彃鍏ュ瓧娈碉紙1鏄級 */ - private String isInsert; - - /** 鏄惁缂栬緫瀛楁锛�1鏄級 */ - private String isEdit; - - /** 鏄惁鍒楄〃瀛楁锛�1鏄級 */ - private String isList; - - /** 鏄惁鏌ヨ瀛楁锛�1鏄級 */ - private String isQuery; - - /** 鏌ヨ鏂瑰紡锛圗Q绛変簬銆丯E涓嶇瓑浜庛�丟T澶т簬銆丩T灏忎簬銆丩IKE妯$硦銆丅ETWEEN鑼冨洿锛� */ - private String queryType; - - /** 鏄剧ず绫诲瀷锛坕nput鏂囨湰妗嗐�乼extarea鏂囨湰鍩熴�乻elect涓嬫媺妗嗐�乧heckbox澶嶉�夋銆乺adio鍗曢�夋銆乨atetime鏃ユ湡鎺т欢銆乮mage鍥剧墖涓婁紶鎺т欢銆乽pload鏂囦欢涓婁紶鎺т欢銆乪ditor瀵屾枃鏈帶浠讹級 */ - private String htmlType; - - /** 瀛楀吀绫诲瀷 */ - private String dictType; - - /** 鎺掑簭 */ - private Integer sort; - - public void setColumnId(Long columnId) - { - this.columnId = columnId; - } - - public Long getColumnId() - { - return columnId; - } - - public void setTableId(Long tableId) - { - this.tableId = tableId; - } - - public Long getTableId() - { - return tableId; - } - - public void setColumnName(String columnName) - { - this.columnName = columnName; - } - - public String getColumnName() - { - return columnName; - } - - public void setColumnComment(String columnComment) - { - this.columnComment = columnComment; - } - - public String getColumnComment() - { - return columnComment; - } - - public void setColumnType(String columnType) - { - this.columnType = columnType; - } - - public String getColumnType() - { - return columnType; - } - - public void setJavaType(String javaType) - { - this.javaType = javaType; - } - - public String getJavaType() - { - return javaType; - } - - public void setJavaField(String javaField) - { - this.javaField = javaField; - } - - public String getJavaField() - { - return javaField; - } - - public String getCapJavaField() - { - return StringUtils.capitalize(javaField); - } - - public void setIsPk(String isPk) - { - this.isPk = isPk; - } - - public String getIsPk() - { - return isPk; - } - - public boolean isPk() - { - return isPk(this.isPk); - } - - public boolean isPk(String isPk) - { - return isPk != null && StringUtils.equals("1", isPk); - } - - public String getIsIncrement() - { - return isIncrement; - } - - public void setIsIncrement(String isIncrement) - { - this.isIncrement = isIncrement; - } - - public boolean isIncrement() - { - return isIncrement(this.isIncrement); - } - - public boolean isIncrement(String isIncrement) - { - return isIncrement != null && StringUtils.equals("1", isIncrement); - } - - public void setIsRequired(String isRequired) - { - this.isRequired = isRequired; - } - - public String getIsRequired() - { - return isRequired; - } - - public boolean isRequired() - { - return isRequired(this.isRequired); - } - - public boolean isRequired(String isRequired) - { - return isRequired != null && StringUtils.equals("1", isRequired); - } - - public void setIsInsert(String isInsert) - { - this.isInsert = isInsert; - } - - public String getIsInsert() - { - return isInsert; - } - - public boolean isInsert() - { - return isInsert(this.isInsert); - } - - public boolean isInsert(String isInsert) - { - return isInsert != null && StringUtils.equals("1", isInsert); - } - - public void setIsEdit(String isEdit) - { - this.isEdit = isEdit; - } - - public String getIsEdit() - { - return isEdit; - } - - public boolean isEdit() - { - return isInsert(this.isEdit); - } - - public boolean isEdit(String isEdit) - { - return isEdit != null && StringUtils.equals("1", isEdit); - } - - public void setIsList(String isList) - { - this.isList = isList; - } - - public String getIsList() - { - return isList; - } - - public boolean isList() - { - return isList(this.isList); - } - - public boolean isList(String isList) - { - return isList != null && StringUtils.equals("1", isList); - } - - public void setIsQuery(String isQuery) - { - this.isQuery = isQuery; - } - - public String getIsQuery() - { - return isQuery; - } - - public boolean isQuery() - { - return isQuery(this.isQuery); - } - - public boolean isQuery(String isQuery) - { - return isQuery != null && StringUtils.equals("1", isQuery); - } - - public void setQueryType(String queryType) - { - this.queryType = queryType; - } - - public String getQueryType() - { - return queryType; - } - - public String getHtmlType() - { - return htmlType; - } - - public void setHtmlType(String htmlType) - { - this.htmlType = htmlType; - } - - public void setDictType(String dictType) - { - this.dictType = dictType; - } - - public String getDictType() - { - return dictType; - } - - public void setSort(Integer sort) - { - this.sort = sort; - } - - public Integer getSort() - { - return sort; - } - - public boolean isSuperColumn() - { - return isSuperColumn(this.javaField); - } - - public static boolean isSuperColumn(String javaField) - { - return StringUtils.equalsAnyIgnoreCase(javaField, - // BaseEntity - "createBy", "createTime", "updateBy", "updateTime", "remark", - // TreeEntity - "parentName", "parentId", "orderNum", "ancestors"); - } - - public boolean isUsableColumn() - { - return isUsableColumn(javaField); - } - - public static boolean isUsableColumn(String javaField) - { - // isSuperColumn()涓殑鍚嶅崟鐢ㄤ簬閬垮厤鐢熸垚澶氫綑Domain灞炴�э紝鑻ユ煇浜涘睘鎬у湪鐢熸垚椤甸潰鏃堕渶瑕佺敤鍒颁笉鑳藉拷鐣ワ紝鍒欐斁鍦ㄦ澶勭櫧鍚嶅崟 - return StringUtils.equalsAnyIgnoreCase(javaField, "parentId", "orderNum", "remark"); - } - - public String readConverterExp() - { - String remarks = StringUtils.substringBetween(this.columnComment, "锛�", "锛�"); - StringBuffer sb = new StringBuffer(); - if (StringUtils.isNotEmpty(remarks)) - { - for (String value : remarks.split(" ")) - { - if (StringUtils.isNotEmpty(value)) - { - Object startStr = value.subSequence(0, 1); - String endStr = value.substring(1); - sb.append("").append(startStr).append("=").append(endStr).append(","); - } - } - return sb.deleteCharAt(sb.length() - 1).toString(); - } - else - { - return this.columnComment; - } - } -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableColumnMapper.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableColumnMapper.java deleted file mode 100644 index 508484d..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableColumnMapper.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.ruoyi.gen.mapper; - -import java.util.List; -import com.ruoyi.gen.domain.GenTableColumn; - -/** - * 涓氬姟瀛楁 鏁版嵁灞� - * - * @author admin - */ -public interface GenTableColumnMapper -{ - /** - * 鏍规嵁琛ㄥ悕绉版煡璇㈠垪淇℃伅 - * - * @param tableName 琛ㄥ悕绉� - * @return 鍒椾俊鎭� - */ - public List<GenTableColumn> selectDbTableColumnsByName(String tableName); - - /** - * 鏌ヨ涓氬姟瀛楁鍒楄〃 - * - * @param tableId 涓氬姟瀛楁缂栧彿 - * @return 涓氬姟瀛楁闆嗗悎 - */ - public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId); - - /** - * 鏂板涓氬姟瀛楁 - * - * @param genTableColumn 涓氬姟瀛楁淇℃伅 - * @return 缁撴灉 - */ - public int insertGenTableColumn(GenTableColumn genTableColumn); - - /** - * 淇敼涓氬姟瀛楁 - * - * @param genTableColumn 涓氬姟瀛楁淇℃伅 - * @return 缁撴灉 - */ - public int updateGenTableColumn(GenTableColumn genTableColumn); - - /** - * 鍒犻櫎涓氬姟瀛楁 - * - * @param genTableColumns 鍒楁暟鎹� - * @return 缁撴灉 - */ - public int deleteGenTableColumns(List<GenTableColumn> genTableColumns); - - /** - * 鎵归噺鍒犻櫎涓氬姟瀛楁 - * - * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID - * @return 缁撴灉 - */ - public int deleteGenTableColumnByIds(Long[] ids); -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableMapper.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableMapper.java deleted file mode 100644 index 3c9b97c..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableMapper.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.ruoyi.gen.mapper; - -import java.util.List; -import com.ruoyi.gen.domain.GenTable; - -/** - * 涓氬姟 鏁版嵁灞� - * - * @author admin - */ -public interface GenTableMapper -{ - /** - * 鏌ヨ涓氬姟鍒楄〃 - * - * @param genTable 涓氬姟淇℃伅 - * @return 涓氬姟闆嗗悎 - */ - public List<GenTable> selectGenTableList(GenTable genTable); - - /** - * 鏌ヨ鎹簱鍒楄〃 - * - * @param genTable 涓氬姟淇℃伅 - * @return 鏁版嵁搴撹〃闆嗗悎 - */ - public List<GenTable> selectDbTableList(GenTable genTable); - - /** - * 鏌ヨ鎹簱鍒楄〃 - * - * @param tableNames 琛ㄥ悕绉扮粍 - * @return 鏁版嵁搴撹〃闆嗗悎 - */ - public List<GenTable> selectDbTableListByNames(String[] tableNames); - - /** - * 鏌ヨ鎵�鏈夎〃淇℃伅 - * - * @return 琛ㄤ俊鎭泦鍚� - */ - public List<GenTable> selectGenTableAll(); - - /** - * 鏌ヨ琛↖D涓氬姟淇℃伅 - * - * @param id 涓氬姟ID - * @return 涓氬姟淇℃伅 - */ - public GenTable selectGenTableById(Long id); - - /** - * 鏌ヨ琛ㄥ悕绉颁笟鍔′俊鎭� - * - * @param tableName 琛ㄥ悕绉� - * @return 涓氬姟淇℃伅 - */ - public GenTable selectGenTableByName(String tableName); - - /** - * 鏂板涓氬姟 - * - * @param genTable 涓氬姟淇℃伅 - * @return 缁撴灉 - */ - public int insertGenTable(GenTable genTable); - - /** - * 淇敼涓氬姟 - * - * @param genTable 涓氬姟淇℃伅 - * @return 缁撴灉 - */ - public int updateGenTable(GenTable genTable); - - /** - * 鎵归噺鍒犻櫎涓氬姟 - * - * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID - * @return 缁撴灉 - */ - public int deleteGenTableByIds(Long[] ids); -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableColumnServiceImpl.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableColumnServiceImpl.java deleted file mode 100644 index 649a3cc..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableColumnServiceImpl.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.ruoyi.gen.service; - -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.se.common.core.text.Convert; -import com.ruoyi.gen.domain.GenTableColumn; -import com.ruoyi.gen.mapper.GenTableColumnMapper; - -/** - * 涓氬姟瀛楁 鏈嶅姟灞傚疄鐜� - * - * @author admin - */ -@Service -public class GenTableColumnServiceImpl implements IGenTableColumnService -{ - @Autowired - private GenTableColumnMapper genTableColumnMapper; - - /** - * 鏌ヨ涓氬姟瀛楁鍒楄〃 - * - * @param tableId 涓氬姟瀛楁缂栧彿 - * @return 涓氬姟瀛楁闆嗗悎 - */ - @Override - public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId) - { - return genTableColumnMapper.selectGenTableColumnListByTableId(tableId); - } - - /** - * 鏂板涓氬姟瀛楁 - * - * @param genTableColumn 涓氬姟瀛楁淇℃伅 - * @return 缁撴灉 - */ - @Override - public int insertGenTableColumn(GenTableColumn genTableColumn) - { - return genTableColumnMapper.insertGenTableColumn(genTableColumn); - } - - /** - * 淇敼涓氬姟瀛楁 - * - * @param genTableColumn 涓氬姟瀛楁淇℃伅 - * @return 缁撴灉 - */ - @Override - public int updateGenTableColumn(GenTableColumn genTableColumn) - { - return genTableColumnMapper.updateGenTableColumn(genTableColumn); - } - - /** - * 鍒犻櫎涓氬姟瀛楁瀵硅薄 - * - * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID - * @return 缁撴灉 - */ - @Override - public int deleteGenTableColumnByIds(String ids) - { - return genTableColumnMapper.deleteGenTableColumnByIds(Convert.toLongArray(ids)); - } -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableServiceImpl.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableServiceImpl.java deleted file mode 100644 index 0587c4e..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableServiceImpl.java +++ /dev/null @@ -1,521 +0,0 @@ -package com.ruoyi.gen.service; - -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.StringWriter; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; -import java.util.zip.ZipEntry; -import java.util.zip.ZipOutputStream; -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.IOUtils; -import org.apache.velocity.Template; -import org.apache.velocity.VelocityContext; -import org.apache.velocity.app.Velocity; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; -import com.se.common.core.constant.Constants; -import com.se.common.core.constant.GenConstants; -import com.se.common.core.exception.ServiceException; -import com.se.common.core.text.CharsetKit; -import com.se.common.core.utils.StringUtils; -import com.se.common.security.utils.SecurityUtils; -import com.ruoyi.gen.domain.GenTable; -import com.ruoyi.gen.domain.GenTableColumn; -import com.ruoyi.gen.mapper.GenTableColumnMapper; -import com.ruoyi.gen.mapper.GenTableMapper; -import com.ruoyi.gen.util.GenUtils; -import com.ruoyi.gen.util.VelocityInitializer; -import com.ruoyi.gen.util.VelocityUtils; - -/** - * 涓氬姟 鏈嶅姟灞傚疄鐜� - * - * @author admin - */ -@Service -public class GenTableServiceImpl implements IGenTableService -{ - private static final Logger log = LoggerFactory.getLogger(GenTableServiceImpl.class); - - @Autowired - private GenTableMapper genTableMapper; - - @Autowired - private GenTableColumnMapper genTableColumnMapper; - - /** - * 鏌ヨ涓氬姟淇℃伅 - * - * @param id 涓氬姟ID - * @return 涓氬姟淇℃伅 - */ - @Override - public GenTable selectGenTableById(Long id) - { - GenTable genTable = genTableMapper.selectGenTableById(id); - setTableFromOptions(genTable); - return genTable; - } - - /** - * 鏌ヨ涓氬姟鍒楄〃 - * - * @param genTable 涓氬姟淇℃伅 - * @return 涓氬姟闆嗗悎 - */ - @Override - public List<GenTable> selectGenTableList(GenTable genTable) - { - return genTableMapper.selectGenTableList(genTable); - } - - /** - * 鏌ヨ鎹簱鍒楄〃 - * - * @param genTable 涓氬姟淇℃伅 - * @return 鏁版嵁搴撹〃闆嗗悎 - */ - @Override - public List<GenTable> selectDbTableList(GenTable genTable) - { - return genTableMapper.selectDbTableList(genTable); - } - - /** - * 鏌ヨ鎹簱鍒楄〃 - * - * @param tableNames 琛ㄥ悕绉扮粍 - * @return 鏁版嵁搴撹〃闆嗗悎 - */ - @Override - public List<GenTable> selectDbTableListByNames(String[] tableNames) - { - return genTableMapper.selectDbTableListByNames(tableNames); - } - - /** - * 鏌ヨ鎵�鏈夎〃淇℃伅 - * - * @return 琛ㄤ俊鎭泦鍚� - */ - @Override - public List<GenTable> selectGenTableAll() - { - return genTableMapper.selectGenTableAll(); - } - - /** - * 淇敼涓氬姟 - * - * @param genTable 涓氬姟淇℃伅 - * @return 缁撴灉 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public void updateGenTable(GenTable genTable) - { - String options = JSON.toJSONString(genTable.getParams()); - genTable.setOptions(options); - int row = genTableMapper.updateGenTable(genTable); - if (row > 0) - { - for (GenTableColumn cenTableColumn : genTable.getColumns()) - { - genTableColumnMapper.updateGenTableColumn(cenTableColumn); - } - } - } - - /** - * 鍒犻櫎涓氬姟瀵硅薄 - * - * @param tableIds 闇�瑕佸垹闄ょ殑鏁版嵁ID - * @return 缁撴灉 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteGenTableByIds(Long[] tableIds) - { - genTableMapper.deleteGenTableByIds(tableIds); - genTableColumnMapper.deleteGenTableColumnByIds(tableIds); - } - - /** - * 瀵煎叆琛ㄧ粨鏋� - * - * @param tableList 瀵煎叆琛ㄥ垪琛� - */ - @Override - @Transactional(rollbackFor = Exception.class) - public void importGenTable(List<GenTable> tableList) - { - String operName = SecurityUtils.getUsername(); - try - { - for (GenTable table : tableList) - { - String tableName = table.getTableName(); - GenUtils.initTable(table, operName); - int row = genTableMapper.insertGenTable(table); - if (row > 0) - { - // 淇濆瓨鍒椾俊鎭� - List<GenTableColumn> genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); - for (GenTableColumn column : genTableColumns) - { - GenUtils.initColumnField(column, table); - genTableColumnMapper.insertGenTableColumn(column); - } - } - } - } - catch (Exception e) - { - throw new ServiceException("瀵煎叆澶辫触锛�" + e.getMessage()); - } - } - - /** - * 棰勮浠g爜 - * - * @param tableId 琛ㄧ紪鍙� - * @return 棰勮鏁版嵁鍒楄〃 - */ - @Override - public Map<String, String> previewCode(Long tableId) - { - Map<String, String> dataMap = new LinkedHashMap<>(); - // 鏌ヨ琛ㄤ俊鎭� - GenTable table = genTableMapper.selectGenTableById(tableId); - // 璁剧疆涓诲瓙琛ㄤ俊鎭� - setSubTable(table); - // 璁剧疆涓婚敭鍒椾俊鎭� - setPkColumn(table); - VelocityInitializer.initVelocity(); - - VelocityContext context = VelocityUtils.prepareContext(table); - - // 鑾峰彇妯℃澘鍒楄〃 - List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType()); - for (String template : templates) - { - // 娓叉煋妯℃澘 - StringWriter sw = new StringWriter(); - Template tpl = Velocity.getTemplate(template, Constants.UTF8); - tpl.merge(context, sw); - dataMap.put(template, sw.toString()); - } - return dataMap; - } - - /** - * 鐢熸垚浠g爜锛堜笅杞芥柟寮忥級 - * - * @param tableName 琛ㄥ悕绉� - * @return 鏁版嵁 - */ - @Override - public byte[] downloadCode(String tableName) - { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - ZipOutputStream zip = new ZipOutputStream(outputStream); - generatorCode(tableName, zip); - IOUtils.closeQuietly(zip); - return outputStream.toByteArray(); - } - - /** - * 鐢熸垚浠g爜锛堣嚜瀹氫箟璺緞锛� - * - * @param tableName 琛ㄥ悕绉� - */ - @Override - public void generatorCode(String tableName) - { - // 鏌ヨ琛ㄤ俊鎭� - GenTable table = genTableMapper.selectGenTableByName(tableName); - // 璁剧疆涓诲瓙琛ㄤ俊鎭� - setSubTable(table); - // 璁剧疆涓婚敭鍒椾俊鎭� - setPkColumn(table); - - VelocityInitializer.initVelocity(); - - VelocityContext context = VelocityUtils.prepareContext(table); - - // 鑾峰彇妯℃澘鍒楄〃 - List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType()); - for (String template : templates) - { - if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm")) - { - // 娓叉煋妯℃澘 - StringWriter sw = new StringWriter(); - Template tpl = Velocity.getTemplate(template, Constants.UTF8); - tpl.merge(context, sw); - try - { - String path = getGenPath(table, template); - FileUtils.writeStringToFile(new File(path), sw.toString(), CharsetKit.UTF_8); - } - catch (IOException e) - { - throw new ServiceException("娓叉煋妯℃澘澶辫触锛岃〃鍚嶏細" + table.getTableName()); - } - } - } - } - - /** - * 鍚屾鏁版嵁搴� - * - * @param tableName 琛ㄥ悕绉� - */ - @Override - @Transactional(rollbackFor = Exception.class) - public void synchDb(String tableName) - { - GenTable table = genTableMapper.selectGenTableByName(tableName); - List<GenTableColumn> tableColumns = table.getColumns(); - Map<String, GenTableColumn> tableColumnMap = tableColumns.stream().collect(Collectors.toMap(GenTableColumn::getColumnName, Function.identity())); - - List<GenTableColumn> dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); - if (StringUtils.isEmpty(dbTableColumns)) - { - throw new ServiceException("鍚屾鏁版嵁澶辫触锛屽師琛ㄧ粨鏋勪笉瀛樺湪"); - } - List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); - - dbTableColumns.forEach(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()); - column.setQueryType(prevColumn.getQueryType()); - } - if (StringUtils.isNotEmpty(prevColumn.getIsRequired()) && !column.isPk() - && (column.isInsert() || column.isEdit()) - && ((column.isUsableColumn()) || (!column.isSuperColumn()))) - { - // 濡傛灉鏄�(鏂板/淇敼&闈炰富閿�/闈炲拷鐣ュ強鐖跺睘鎬�)锛岀户缁繚鐣欏繀濉�/鏄剧ず绫诲瀷閫夐」 - column.setIsRequired(prevColumn.getIsRequired()); - column.setHtmlType(prevColumn.getHtmlType()); - } - genTableColumnMapper.updateGenTableColumn(column); - } - else - { - genTableColumnMapper.insertGenTableColumn(column); - } - }); - - List<GenTableColumn> delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList()); - if (StringUtils.isNotEmpty(delColumns)) - { - genTableColumnMapper.deleteGenTableColumns(delColumns); - } - } - - /** - * 鎵归噺鐢熸垚浠g爜锛堜笅杞芥柟寮忥級 - * - * @param tableNames 琛ㄦ暟缁� - * @return 鏁版嵁 - */ - @Override - public byte[] downloadCode(String[] tableNames) - { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - ZipOutputStream zip = new ZipOutputStream(outputStream); - for (String tableName : tableNames) - { - generatorCode(tableName, zip); - } - IOUtils.closeQuietly(zip); - return outputStream.toByteArray(); - } - - /** - * 鏌ヨ琛ㄤ俊鎭苟鐢熸垚浠g爜 - */ - private void generatorCode(String tableName, ZipOutputStream zip) - { - // 鏌ヨ琛ㄤ俊鎭� - GenTable table = genTableMapper.selectGenTableByName(tableName); - // 璁剧疆涓诲瓙琛ㄤ俊鎭� - setSubTable(table); - // 璁剧疆涓婚敭鍒椾俊鎭� - setPkColumn(table); - - VelocityInitializer.initVelocity(); - - VelocityContext context = VelocityUtils.prepareContext(table); - - // 鑾峰彇妯℃澘鍒楄〃 - List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType()); - for (String template : templates) - { - // 娓叉煋妯℃澘 - StringWriter sw = new StringWriter(); - Template tpl = Velocity.getTemplate(template, Constants.UTF8); - tpl.merge(context, sw); - try - { - // 娣诲姞鍒皕ip - zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table))); - IOUtils.write(sw.toString(), zip, Constants.UTF8); - IOUtils.closeQuietly(sw); - zip.flush(); - zip.closeEntry(); - } - catch (IOException e) - { - log.error("娓叉煋妯℃澘澶辫触锛岃〃鍚嶏細" + table.getTableName(), e); - } - } - } - - /** - * 淇敼淇濆瓨鍙傛暟鏍¢獙 - * - * @param genTable 涓氬姟淇℃伅 - */ - @Override - public void validateEdit(GenTable genTable) - { - if (GenConstants.TPL_TREE.equals(genTable.getTplCategory())) - { - String options = JSON.toJSONString(genTable.getParams()); - JSONObject paramsObj = JSON.parseObject(options); - if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_CODE))) - { - throw new ServiceException("鏍戠紪鐮佸瓧娈典笉鑳戒负绌�"); - } - else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE))) - { - throw new ServiceException("鏍戠埗缂栫爜瀛楁涓嶈兘涓虹┖"); - } - else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_NAME))) - { - throw new ServiceException("鏍戝悕绉板瓧娈典笉鑳戒负绌�"); - } - else if (GenConstants.TPL_SUB.equals(genTable.getTplCategory())) - { - if (StringUtils.isEmpty(genTable.getSubTableName())) - { - throw new ServiceException("鍏宠仈瀛愯〃鐨勮〃鍚嶄笉鑳戒负绌�"); - } - else if (StringUtils.isEmpty(genTable.getSubTableFkName())) - { - throw new ServiceException("瀛愯〃鍏宠仈鐨勫閿悕涓嶈兘涓虹┖"); - } - } - } - } - - /** - * 璁剧疆涓婚敭鍒椾俊鎭� - * - * @param table 涓氬姟琛ㄤ俊鎭� - */ - public void setPkColumn(GenTable table) - { - for (GenTableColumn column : table.getColumns()) - { - if (column.isPk()) - { - table.setPkColumn(column); - break; - } - } - if (StringUtils.isNull(table.getPkColumn())) - { - table.setPkColumn(table.getColumns().get(0)); - } - if (GenConstants.TPL_SUB.equals(table.getTplCategory())) - { - for (GenTableColumn column : table.getSubTable().getColumns()) - { - if (column.isPk()) - { - table.getSubTable().setPkColumn(column); - break; - } - } - if (StringUtils.isNull(table.getSubTable().getPkColumn())) - { - table.getSubTable().setPkColumn(table.getSubTable().getColumns().get(0)); - } - } - } - - /** - * 璁剧疆涓诲瓙琛ㄤ俊鎭� - * - * @param table 涓氬姟琛ㄤ俊鎭� - */ - public void setSubTable(GenTable table) - { - String subTableName = table.getSubTableName(); - if (StringUtils.isNotEmpty(subTableName)) - { - table.setSubTable(genTableMapper.selectGenTableByName(subTableName)); - } - } - - /** - * 璁剧疆浠g爜鐢熸垚鍏朵粬閫夐」鍊� - * - * @param genTable 璁剧疆鍚庣殑鐢熸垚瀵硅薄 - */ - public void setTableFromOptions(GenTable genTable) - { - JSONObject paramsObj = JSON.parseObject(genTable.getOptions()); - if (StringUtils.isNotNull(paramsObj)) - { - String treeCode = paramsObj.getString(GenConstants.TREE_CODE); - String treeParentCode = paramsObj.getString(GenConstants.TREE_PARENT_CODE); - String treeName = paramsObj.getString(GenConstants.TREE_NAME); - String parentMenuId = paramsObj.getString(GenConstants.PARENT_MENU_ID); - String parentMenuName = paramsObj.getString(GenConstants.PARENT_MENU_NAME); - - genTable.setTreeCode(treeCode); - genTable.setTreeParentCode(treeParentCode); - genTable.setTreeName(treeName); - genTable.setParentMenuId(parentMenuId); - genTable.setParentMenuName(parentMenuName); - } - } - - /** - * 鑾峰彇浠g爜鐢熸垚鍦板潃 - * - * @param table 涓氬姟琛ㄤ俊鎭� - * @param template 妯℃澘鏂囦欢璺緞 - * @return 鐢熸垚鍦板潃 - */ - public static String getGenPath(GenTable table, String template) - { - String genPath = table.getGenPath(); - if (StringUtils.equals(genPath, "/")) - { - return System.getProperty("user.dir") + File.separator + "src" + File.separator + VelocityUtils.getFileName(template, table); - } - return genPath + File.separator + VelocityUtils.getFileName(template, table); - } -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableColumnService.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableColumnService.java deleted file mode 100644 index bf35e63..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableColumnService.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.ruoyi.gen.service; - -import java.util.List; -import com.ruoyi.gen.domain.GenTableColumn; - -/** - * 涓氬姟瀛楁 鏈嶅姟灞� - * - * @author admin - */ -public interface IGenTableColumnService -{ - /** - * 鏌ヨ涓氬姟瀛楁鍒楄〃 - * - * @param tableId 涓氬姟瀛楁缂栧彿 - * @return 涓氬姟瀛楁闆嗗悎 - */ - public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId); - - /** - * 鏂板涓氬姟瀛楁 - * - * @param genTableColumn 涓氬姟瀛楁淇℃伅 - * @return 缁撴灉 - */ - public int insertGenTableColumn(GenTableColumn genTableColumn); - - /** - * 淇敼涓氬姟瀛楁 - * - * @param genTableColumn 涓氬姟瀛楁淇℃伅 - * @return 缁撴灉 - */ - public int updateGenTableColumn(GenTableColumn genTableColumn); - - /** - * 鍒犻櫎涓氬姟瀛楁淇℃伅 - * - * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID - * @return 缁撴灉 - */ - public int deleteGenTableColumnByIds(String ids); -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableService.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableService.java deleted file mode 100644 index ad90cc9..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableService.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.ruoyi.gen.service; - -import java.util.List; -import java.util.Map; -import com.ruoyi.gen.domain.GenTable; - -/** - * 涓氬姟 鏈嶅姟灞� - * - * @author admin - */ -public interface IGenTableService -{ - /** - * 鏌ヨ涓氬姟鍒楄〃 - * - * @param genTable 涓氬姟淇℃伅 - * @return 涓氬姟闆嗗悎 - */ - public List<GenTable> selectGenTableList(GenTable genTable); - - /** - * 鏌ヨ鎹簱鍒楄〃 - * - * @param genTable 涓氬姟淇℃伅 - * @return 鏁版嵁搴撹〃闆嗗悎 - */ - public List<GenTable> selectDbTableList(GenTable genTable); - - /** - * 鏌ヨ鎹簱鍒楄〃 - * - * @param tableNames 琛ㄥ悕绉扮粍 - * @return 鏁版嵁搴撹〃闆嗗悎 - */ - public List<GenTable> selectDbTableListByNames(String[] tableNames); - - /** - * 鏌ヨ鎵�鏈夎〃淇℃伅 - * - * @return 琛ㄤ俊鎭泦鍚� - */ - public List<GenTable> selectGenTableAll(); - - /** - * 鏌ヨ涓氬姟淇℃伅 - * - * @param id 涓氬姟ID - * @return 涓氬姟淇℃伅 - */ - public GenTable selectGenTableById(Long id); - - /** - * 淇敼涓氬姟 - * - * @param genTable 涓氬姟淇℃伅 - * @return 缁撴灉 - */ - public void updateGenTable(GenTable genTable); - - /** - * 鍒犻櫎涓氬姟淇℃伅 - * - * @param tableIds 闇�瑕佸垹闄ょ殑琛ㄦ暟鎹甀D - * @return 缁撴灉 - */ - public void deleteGenTableByIds(Long[] tableIds); - - /** - * 瀵煎叆琛ㄧ粨鏋� - * - * @param tableList 瀵煎叆琛ㄥ垪琛� - */ - public void importGenTable(List<GenTable> tableList); - - /** - * 棰勮浠g爜 - * - * @param tableId 琛ㄧ紪鍙� - * @return 棰勮鏁版嵁鍒楄〃 - */ - public Map<String, String> previewCode(Long tableId); - - /** - * 鐢熸垚浠g爜锛堜笅杞芥柟寮忥級 - * - * @param tableName 琛ㄥ悕绉� - * @return 鏁版嵁 - */ - public byte[] downloadCode(String tableName); - - /** - * 鐢熸垚浠g爜锛堣嚜瀹氫箟璺緞锛� - * - * @param tableName 琛ㄥ悕绉� - * @return 鏁版嵁 - */ - public void generatorCode(String tableName); - - /** - * 鍚屾鏁版嵁搴� - * - * @param tableName 琛ㄥ悕绉� - */ - public void synchDb(String tableName); - - /** - * 鎵归噺鐢熸垚浠g爜锛堜笅杞芥柟寮忥級 - * - * @param tableNames 琛ㄦ暟缁� - * @return 鏁版嵁 - */ - public byte[] downloadCode(String[] tableNames); - - /** - * 淇敼淇濆瓨鍙傛暟鏍¢獙 - * - * @param genTable 涓氬姟淇℃伅 - */ - public void validateEdit(GenTable genTable); -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/GenUtils.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/GenUtils.java deleted file mode 100644 index 08da737..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/GenUtils.java +++ /dev/null @@ -1,257 +0,0 @@ -package com.ruoyi.gen.util; - -import java.util.Arrays; -import org.apache.commons.lang3.RegExUtils; -import com.se.common.core.constant.GenConstants; -import com.se.common.core.utils.StringUtils; -import com.ruoyi.gen.config.GenConfig; -import com.ruoyi.gen.domain.GenTable; -import com.ruoyi.gen.domain.GenTableColumn; - -/** - * 浠g爜鐢熸垚鍣� 宸ュ叿绫� - * - * @author admin - */ -public class GenUtils -{ - /** - * 鍒濆鍖栬〃淇℃伅 - */ - public static void initTable(GenTable genTable, String operName) - { - genTable.setClassName(convertClassName(genTable.getTableName())); - genTable.setPackageName(GenConfig.getPackageName()); - genTable.setModuleName(getModuleName(GenConfig.getPackageName())); - genTable.setBusinessName(getBusinessName(genTable.getTableName())); - genTable.setFunctionName(replaceText(genTable.getTableComment())); - genTable.setFunctionAuthor(GenConfig.getAuthor()); - genTable.setCreateBy(operName); - } - - /** - * 鍒濆鍖栧垪灞炴�у瓧娈� - */ - public static void initColumnField(GenTableColumn column, GenTable table) - { - String dataType = getDbType(column.getColumnType()); - String columnName = column.getColumnName(); - column.setTableId(table.getTableId()); - column.setCreateBy(table.getCreateBy()); - // 璁剧疆java瀛楁鍚� - column.setJavaField(StringUtils.toCamelCase(columnName)); - // 璁剧疆榛樿绫诲瀷 - column.setJavaType(GenConstants.TYPE_STRING); - column.setQueryType(GenConstants.QUERY_EQ); - - if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType)) - { - // 瀛楃涓查暱搴﹁秴杩�500璁剧疆涓烘枃鏈煙 - Integer columnLength = getColumnLength(column.getColumnType()); - String htmlType = columnLength >= 500 || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType) ? GenConstants.HTML_TEXTAREA : GenConstants.HTML_INPUT; - column.setHtmlType(htmlType); - } - else if (arraysContains(GenConstants.COLUMNTYPE_TIME, dataType)) - { - column.setJavaType(GenConstants.TYPE_DATE); - column.setHtmlType(GenConstants.HTML_DATETIME); - } - else if (arraysContains(GenConstants.COLUMNTYPE_NUMBER, dataType)) - { - column.setHtmlType(GenConstants.HTML_INPUT); - - // 濡傛灉鏄诞鐐瑰瀷 缁熶竴鐢˙igDecimal - String[] str = StringUtils.split(StringUtils.substringBetween(column.getColumnType(), "(", ")"), ","); - if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0) - { - column.setJavaType(GenConstants.TYPE_BIGDECIMAL); - } - // 濡傛灉鏄暣褰� - else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10) - { - column.setJavaType(GenConstants.TYPE_INTEGER); - } - // 闀挎暣褰� - else - { - column.setJavaType(GenConstants.TYPE_LONG); - } - } - - // 鎻掑叆瀛楁锛堥粯璁ゆ墍鏈夊瓧娈甸兘闇�瑕佹彃鍏ワ級 - column.setIsInsert(GenConstants.REQUIRE); - - // 缂栬緫瀛楁 - if (!arraysContains(GenConstants.COLUMNNAME_NOT_EDIT, columnName) && !column.isPk()) - { - column.setIsEdit(GenConstants.REQUIRE); - } - // 鍒楄〃瀛楁 - if (!arraysContains(GenConstants.COLUMNNAME_NOT_LIST, columnName) && !column.isPk()) - { - column.setIsList(GenConstants.REQUIRE); - } - // 鏌ヨ瀛楁 - if (!arraysContains(GenConstants.COLUMNNAME_NOT_QUERY, columnName) && !column.isPk()) - { - column.setIsQuery(GenConstants.REQUIRE); - } - - // 鏌ヨ瀛楁绫诲瀷 - if (StringUtils.endsWithIgnoreCase(columnName, "name")) - { - column.setQueryType(GenConstants.QUERY_LIKE); - } - // 鐘舵�佸瓧娈佃缃崟閫夋 - if (StringUtils.endsWithIgnoreCase(columnName, "status")) - { - column.setHtmlType(GenConstants.HTML_RADIO); - } - // 绫诲瀷&鎬у埆瀛楁璁剧疆涓嬫媺妗� - else if (StringUtils.endsWithIgnoreCase(columnName, "type") - || StringUtils.endsWithIgnoreCase(columnName, "sex")) - { - column.setHtmlType(GenConstants.HTML_SELECT); - } - // 鍥剧墖瀛楁璁剧疆鍥剧墖涓婁紶鎺т欢 - else if (StringUtils.endsWithIgnoreCase(columnName, "image")) - { - column.setHtmlType(GenConstants.HTML_IMAGE_UPLOAD); - } - // 鏂囦欢瀛楁璁剧疆鏂囦欢涓婁紶鎺т欢 - else if (StringUtils.endsWithIgnoreCase(columnName, "file")) - { - column.setHtmlType(GenConstants.HTML_FILE_UPLOAD); - } - // 鍐呭瀛楁璁剧疆瀵屾枃鏈帶浠� - else if (StringUtils.endsWithIgnoreCase(columnName, "content")) - { - column.setHtmlType(GenConstants.HTML_EDITOR); - } - } - - /** - * 鏍¢獙鏁扮粍鏄惁鍖呭惈鎸囧畾鍊� - * - * @param arr 鏁扮粍 - * @param targetValue 鍊� - * @return 鏄惁鍖呭惈 - */ - public static boolean arraysContains(String[] arr, String targetValue) - { - return Arrays.asList(arr).contains(targetValue); - } - - /** - * 鑾峰彇妯″潡鍚� - * - * @param packageName 鍖呭悕 - * @return 妯″潡鍚� - */ - public static String getModuleName(String packageName) - { - int lastIndex = packageName.lastIndexOf("."); - int nameLength = packageName.length(); - return StringUtils.substring(packageName, lastIndex + 1, nameLength); - } - - /** - * 鑾峰彇涓氬姟鍚� - * - * @param tableName 琛ㄥ悕 - * @return 涓氬姟鍚� - */ - public static String getBusinessName(String tableName) - { - int lastIndex = tableName.lastIndexOf("_"); - int nameLength = tableName.length(); - return StringUtils.substring(tableName, lastIndex + 1, nameLength); - } - - /** - * 琛ㄥ悕杞崲鎴怞ava绫诲悕 - * - * @param tableName 琛ㄥ悕绉� - * @return 绫诲悕 - */ - public static String convertClassName(String tableName) - { - boolean autoRemovePre = GenConfig.getAutoRemovePre(); - String tablePrefix = GenConfig.getTablePrefix(); - if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix)) - { - String[] searchList = StringUtils.split(tablePrefix, ","); - tableName = replaceFirst(tableName, searchList); - } - return StringUtils.convertToCamelCase(tableName); - } - - /** - * 鎵归噺鏇挎崲鍓嶇紑 - * - * @param replacementm 鏇挎崲鍊� - * @param searchList 鏇挎崲鍒楄〃 - * @return - */ - public static String replaceFirst(String replacementm, String[] searchList) - { - String text = replacementm; - for (String searchString : searchList) - { - if (replacementm.startsWith(searchString)) - { - text = replacementm.replaceFirst(searchString, ""); - break; - } - } - return text; - } - - /** - * 鍏抽敭瀛楁浛鎹� - * - * @param text 闇�瑕佽鏇挎崲鐨勫悕瀛� - * @return 鏇挎崲鍚庣殑鍚嶅瓧 - */ - public static String replaceText(String text) - { - return RegExUtils.replaceAll(text, "(?:琛▅鑻ヤ緷)", ""); - } - - /** - * 鑾峰彇鏁版嵁搴撶被鍨嬪瓧娈� - * - * @param columnType 鍒楃被鍨� - * @return 鎴彇鍚庣殑鍒楃被鍨� - */ - public static String getDbType(String columnType) - { - if (StringUtils.indexOf(columnType, "(") > 0) - { - return StringUtils.substringBefore(columnType, "("); - } - else - { - return columnType; - } - } - - /** - * 鑾峰彇瀛楁闀垮害 - * - * @param columnType 鍒楃被鍨� - * @return 鎴彇鍚庣殑鍒楃被鍨� - */ - public static Integer getColumnLength(String columnType) - { - if (StringUtils.indexOf(columnType, "(") > 0) - { - String length = StringUtils.substringBetween(columnType, "(", ")"); - return Integer.valueOf(length); - } - else - { - return 0; - } - } -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityInitializer.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityInitializer.java deleted file mode 100644 index 277ee9a..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityInitializer.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.ruoyi.gen.util; - -import java.util.Properties; -import org.apache.velocity.app.Velocity; -import com.se.common.core.constant.Constants; - -/** - * VelocityEngine宸ュ巶 - * - * @author admin - */ -public class VelocityInitializer -{ - /** - * 鍒濆鍖杤m鏂规硶 - */ - public static void initVelocity() - { - Properties p = new Properties(); - try - { - // 鍔犺浇classpath鐩綍涓嬬殑vm鏂囦欢 - p.setProperty("resource.loader.file.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); - // 瀹氫箟瀛楃闆� - p.setProperty(Velocity.INPUT_ENCODING, Constants.UTF8); - // 鍒濆鍖朧elocity寮曟搸锛屾寚瀹氶厤缃甈roperties - Velocity.init(p); - } - catch (Exception e) - { - throw new RuntimeException(e); - } - } -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityUtils.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityUtils.java deleted file mode 100644 index 5fc5383..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityUtils.java +++ /dev/null @@ -1,408 +0,0 @@ -package com.ruoyi.gen.util; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import org.apache.velocity.VelocityContext; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; -import com.se.common.core.constant.GenConstants; -import com.se.common.core.utils.DateUtils; -import com.se.common.core.utils.StringUtils; -import com.ruoyi.gen.domain.GenTable; -import com.ruoyi.gen.domain.GenTableColumn; - -/** - * 妯℃澘宸ュ叿绫� - * - * @author admin - */ -public class VelocityUtils -{ - /** 椤圭洰绌洪棿璺緞 */ - private static final String PROJECT_PATH = "main/java"; - - /** mybatis绌洪棿璺緞 */ - private static final String MYBATIS_PATH = "main/resources/mapper"; - - /** 榛樿涓婄骇鑿滃崟锛岀郴缁熷伐鍏� */ - private static final String DEFAULT_PARENT_MENU_ID = "3"; - - /** - * 璁剧疆妯℃澘鍙橀噺淇℃伅 - * - * @return 妯℃澘鍒楄〃 - */ - public static VelocityContext prepareContext(GenTable genTable) - { - String moduleName = genTable.getModuleName(); - String businessName = genTable.getBusinessName(); - String packageName = genTable.getPackageName(); - String tplCategory = genTable.getTplCategory(); - String functionName = genTable.getFunctionName(); - - VelocityContext velocityContext = new VelocityContext(); - velocityContext.put("tplCategory", genTable.getTplCategory()); - velocityContext.put("tableName", genTable.getTableName()); - velocityContext.put("functionName", StringUtils.isNotEmpty(functionName) ? functionName : "銆愯濉啓鍔熻兘鍚嶇О銆�"); - velocityContext.put("ClassName", genTable.getClassName()); - velocityContext.put("className", StringUtils.uncapitalize(genTable.getClassName())); - velocityContext.put("moduleName", genTable.getModuleName()); - velocityContext.put("BusinessName", StringUtils.capitalize(genTable.getBusinessName())); - velocityContext.put("businessName", genTable.getBusinessName()); - velocityContext.put("basePackage", getPackagePrefix(packageName)); - velocityContext.put("packageName", packageName); - velocityContext.put("author", genTable.getFunctionAuthor()); - velocityContext.put("datetime", DateUtils.getDate()); - velocityContext.put("pkColumn", genTable.getPkColumn()); - velocityContext.put("importList", getImportList(genTable)); - velocityContext.put("permissionPrefix", getPermissionPrefix(moduleName, businessName)); - velocityContext.put("columns", genTable.getColumns()); - velocityContext.put("table", genTable); - velocityContext.put("dicts", getDicts(genTable)); - setMenuVelocityContext(velocityContext, genTable); - if (GenConstants.TPL_TREE.equals(tplCategory)) - { - setTreeVelocityContext(velocityContext, genTable); - } - if (GenConstants.TPL_SUB.equals(tplCategory)) - { - setSubVelocityContext(velocityContext, genTable); - } - return velocityContext; - } - - public static void setMenuVelocityContext(VelocityContext context, GenTable genTable) - { - String options = genTable.getOptions(); - JSONObject paramsObj = JSON.parseObject(options); - String parentMenuId = getParentMenuId(paramsObj); - context.put("parentMenuId", parentMenuId); - } - - public static void setTreeVelocityContext(VelocityContext context, GenTable genTable) - { - String options = genTable.getOptions(); - JSONObject paramsObj = JSON.parseObject(options); - String treeCode = getTreecode(paramsObj); - String treeParentCode = getTreeParentCode(paramsObj); - String treeName = getTreeName(paramsObj); - - context.put("treeCode", treeCode); - context.put("treeParentCode", treeParentCode); - context.put("treeName", treeName); - context.put("expandColumn", getExpandColumn(genTable)); - if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) - { - context.put("tree_parent_code", paramsObj.getString(GenConstants.TREE_PARENT_CODE)); - } - if (paramsObj.containsKey(GenConstants.TREE_NAME)) - { - context.put("tree_name", paramsObj.getString(GenConstants.TREE_NAME)); - } - } - - public static void setSubVelocityContext(VelocityContext context, GenTable genTable) - { - GenTable subTable = genTable.getSubTable(); - String subTableName = genTable.getSubTableName(); - String subTableFkName = genTable.getSubTableFkName(); - String subClassName = genTable.getSubTable().getClassName(); - String subTableFkClassName = StringUtils.convertToCamelCase(subTableFkName); - - context.put("subTable", subTable); - context.put("subTableName", subTableName); - context.put("subTableFkName", subTableFkName); - context.put("subTableFkClassName", subTableFkClassName); - context.put("subTableFkclassName", StringUtils.uncapitalize(subTableFkClassName)); - context.put("subClassName", subClassName); - context.put("subclassName", StringUtils.uncapitalize(subClassName)); - context.put("subImportList", getImportList(genTable.getSubTable())); - } - - /** - * 鑾峰彇妯℃澘淇℃伅 - * @param tplCategory 鐢熸垚鐨勬ā鏉� - * @param tplWebType 鍓嶇绫诲瀷 - * @return 妯℃澘鍒楄〃 - */ - public static List<String> getTemplateList(String tplCategory, String tplWebType) - { - String useWebType = "vm/vue"; - if ("element-plus".equals(tplWebType)) - { - useWebType = "vm/vue/v3"; - } - List<String> templates = new ArrayList<String>(); - templates.add("vm/java/domain.java.vm"); - templates.add("vm/java/mapper.java.vm"); - templates.add("vm/java/service.java.vm"); - templates.add("vm/java/serviceImpl.java.vm"); - templates.add("vm/java/controller.java.vm"); - templates.add("vm/xml/mapper.xml.vm"); - templates.add("vm/sql/sql.vm"); - templates.add("vm/js/api.js.vm"); - if (GenConstants.TPL_CRUD.equals(tplCategory)) - { - templates.add(useWebType + "/index.vue.vm"); - } - else if (GenConstants.TPL_TREE.equals(tplCategory)) - { - templates.add(useWebType + "/index-tree.vue.vm"); - } - else if (GenConstants.TPL_SUB.equals(tplCategory)) - { - templates.add(useWebType + "/index.vue.vm"); - templates.add("vm/java/sub-domain.java.vm"); - } - return templates; - } - - /** - * 鑾峰彇鏂囦欢鍚� - */ - public static String getFileName(String template, GenTable genTable) - { - // 鏂囦欢鍚嶇О - String fileName = ""; - // 鍖呰矾寰� - String packageName = genTable.getPackageName(); - // 妯″潡鍚� - String moduleName = genTable.getModuleName(); - // 澶у啓绫诲悕 - String className = genTable.getClassName(); - // 涓氬姟鍚嶇О - String businessName = genTable.getBusinessName(); - - String javaPath = PROJECT_PATH + "/" + StringUtils.replace(packageName, ".", "/"); - String mybatisPath = MYBATIS_PATH + "/" + moduleName; - String vuePath = "vue"; - - if (template.contains("domain.java.vm")) - { - fileName = StringUtils.format("{}/domain/{}.java", javaPath, className); - } - if (template.contains("sub-domain.java.vm") && StringUtils.equals(GenConstants.TPL_SUB, genTable.getTplCategory())) - { - fileName = StringUtils.format("{}/domain/{}.java", javaPath, genTable.getSubTable().getClassName()); - } - else if (template.contains("mapper.java.vm")) - { - fileName = StringUtils.format("{}/mapper/{}Mapper.java", javaPath, className); - } - else if (template.contains("service.java.vm")) - { - fileName = StringUtils.format("{}/service/I{}Service.java", javaPath, className); - } - else if (template.contains("serviceImpl.java.vm")) - { - fileName = StringUtils.format("{}/service/impl/{}ServiceImpl.java", javaPath, className); - } - else if (template.contains("controller.java.vm")) - { - fileName = StringUtils.format("{}/controller/{}Controller.java", javaPath, className); - } - else if (template.contains("mapper.xml.vm")) - { - fileName = StringUtils.format("{}/{}Mapper.xml", mybatisPath, className); - } - else if (template.contains("sql.vm")) - { - fileName = businessName + "Menu.sql"; - } - else if (template.contains("api.js.vm")) - { - fileName = StringUtils.format("{}/api/{}/{}.js", vuePath, moduleName, businessName); - } - else if (template.contains("index.vue.vm")) - { - fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); - } - else if (template.contains("index-tree.vue.vm")) - { - fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); - } - return fileName; - } - - /** - * 鑾峰彇鍖呭墠缂� - * - * @param packageName 鍖呭悕绉� - * @return 鍖呭墠缂�鍚嶇О - */ - public static String getPackagePrefix(String packageName) - { - int lastIndex = packageName.lastIndexOf("."); - return StringUtils.substring(packageName, 0, lastIndex); - } - - /** - * 鏍规嵁鍒楃被鍨嬭幏鍙栧鍏ュ寘 - * - * @param genTable 涓氬姟琛ㄥ璞� - * @return 杩斿洖闇�瑕佸鍏ョ殑鍖呭垪琛� - */ - public static HashSet<String> getImportList(GenTable genTable) - { - List<GenTableColumn> columns = genTable.getColumns(); - GenTable subGenTable = genTable.getSubTable(); - HashSet<String> importList = new HashSet<String>(); - if (StringUtils.isNotNull(subGenTable)) - { - importList.add("java.util.List"); - } - for (GenTableColumn column : columns) - { - if (!column.isSuperColumn() && GenConstants.TYPE_DATE.equals(column.getJavaType())) - { - importList.add("java.util.Date"); - importList.add("com.fasterxml.jackson.annotation.JsonFormat"); - } - else if (!column.isSuperColumn() && GenConstants.TYPE_BIGDECIMAL.equals(column.getJavaType())) - { - importList.add("java.math.BigDecimal"); - } - } - return importList; - } - - /** - * 鏍规嵁鍒楃被鍨嬭幏鍙栧瓧鍏哥粍 - * - * @param genTable 涓氬姟琛ㄥ璞� - * @return 杩斿洖瀛楀吀缁� - */ - public static String getDicts(GenTable genTable) - { - List<GenTableColumn> columns = genTable.getColumns(); - Set<String> dicts = new HashSet<String>(); - addDicts(dicts, columns); - if (StringUtils.isNotNull(genTable.getSubTable())) - { - List<GenTableColumn> subColumns = genTable.getSubTable().getColumns(); - addDicts(dicts, subColumns); - } - return StringUtils.join(dicts, ", "); - } - - /** - * 娣诲姞瀛楀吀鍒楄〃 - * - * @param dicts 瀛楀吀鍒楄〃 - * @param columns 鍒楅泦鍚� - */ - public static void addDicts(Set<String> dicts, List<GenTableColumn> columns) - { - 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 })) - { - dicts.add("'" + column.getDictType() + "'"); - } - } - } - - /** - * 鑾峰彇鏉冮檺鍓嶇紑 - * - * @param moduleName 妯″潡鍚嶇О - * @param businessName 涓氬姟鍚嶇О - * @return 杩斿洖鏉冮檺鍓嶇紑 - */ - public static String getPermissionPrefix(String moduleName, String businessName) - { - return StringUtils.format("{}:{}", moduleName, businessName); - } - - /** - * 鑾峰彇涓婄骇鑿滃崟ID瀛楁 - * - * @param paramsObj 鐢熸垚鍏朵粬閫夐」 - * @return 涓婄骇鑿滃崟ID瀛楁 - */ - public static String getParentMenuId(JSONObject paramsObj) - { - if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.PARENT_MENU_ID) - && StringUtils.isNotEmpty(paramsObj.getString(GenConstants.PARENT_MENU_ID))) - { - return paramsObj.getString(GenConstants.PARENT_MENU_ID); - } - return DEFAULT_PARENT_MENU_ID; - } - - /** - * 鑾峰彇鏍戠紪鐮� - * - * @param paramsObj 鐢熸垚鍏朵粬閫夐」 - * @return 鏍戠紪鐮� - */ - public static String getTreecode(JSONObject paramsObj) - { - if (paramsObj.containsKey(GenConstants.TREE_CODE)) - { - return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_CODE)); - } - return StringUtils.EMPTY; - } - - /** - * 鑾峰彇鏍戠埗缂栫爜 - * - * @param paramsObj 鐢熸垚鍏朵粬閫夐」 - * @return 鏍戠埗缂栫爜 - */ - public static String getTreeParentCode(JSONObject paramsObj) - { - if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) - { - return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_PARENT_CODE)); - } - return StringUtils.EMPTY; - } - - /** - * 鑾峰彇鏍戝悕绉� - * - * @param paramsObj 鐢熸垚鍏朵粬閫夐」 - * @return 鏍戝悕绉� - */ - public static String getTreeName(JSONObject paramsObj) - { - if (paramsObj.containsKey(GenConstants.TREE_NAME)) - { - return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_NAME)); - } - return StringUtils.EMPTY; - } - - /** - * 鑾峰彇闇�瑕佸湪鍝竴鍒椾笂闈㈡樉绀哄睍寮�鎸夐挳 - * - * @param genTable 涓氬姟琛ㄥ璞� - * @return 灞曞紑鎸夐挳鍒楀簭鍙� - */ - public static int getExpandColumn(GenTable genTable) - { - String options = genTable.getOptions(); - JSONObject paramsObj = JSON.parseObject(options); - String treeName = paramsObj.getString(GenConstants.TREE_NAME); - int num = 0; - for (GenTableColumn column : genTable.getColumns()) - { - if (column.isList()) - { - num++; - String columnName = column.getColumnName(); - if (columnName.equals(treeName)) - { - break; - } - } - } - return num; - } -} diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml b/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml deleted file mode 100644 index 9723938..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml +++ /dev/null @@ -1,127 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE mapper -PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" -"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="com.ruoyi.gen.mapper.GenTableColumnMapper"> - - <resultMap type="GenTableColumn" id="GenTableColumnResult"> - <id property="columnId" column="column_id" /> - <result property="tableId" column="table_id" /> - <result property="columnName" column="column_name" /> - <result property="columnComment" column="column_comment" /> - <result property="columnType" column="column_type" /> - <result property="javaType" column="java_type" /> - <result property="javaField" column="java_field" /> - <result property="isPk" column="is_pk" /> - <result property="isIncrement" column="is_increment" /> - <result property="isRequired" column="is_required" /> - <result property="isInsert" column="is_insert" /> - <result property="isEdit" column="is_edit" /> - <result property="isList" column="is_list" /> - <result property="isQuery" column="is_query" /> - <result property="queryType" column="query_type" /> - <result property="htmlType" column="html_type" /> - <result property="dictType" column="dict_type" /> - <result property="sort" column="sort" /> - <result property="createBy" column="create_by" /> - <result property="createTime" column="create_time" /> - <result property="updateBy" column="update_by" /> - <result property="updateTime" column="update_time" /> - </resultMap> - - <sql id="selectGenTableColumnVo"> - select column_id, table_id, column_name, column_comment, column_type, java_type, java_field, is_pk, is_increment, is_required, is_insert, is_edit, is_list, is_query, query_type, html_type, dict_type, sort, create_by, create_time, update_by, update_time from gen_table_column - </sql> - - <select id="selectGenTableColumnListByTableId" parameterType="GenTableColumn" resultMap="GenTableColumnResult"> - <include refid="selectGenTableColumnVo"/> - where table_id = #{tableId} - order by sort - </select> - - <select id="selectDbTableColumnsByName" parameterType="String" resultMap="GenTableColumnResult"> - select column_name, (case when (is_nullable = 'no' <![CDATA[ && ]]> column_key != 'PRI') then '1' else null end) as is_required, (case when column_key = 'PRI' then '1' else '0' end) as is_pk, ordinal_position as sort, column_comment, (case when extra = 'auto_increment' then '1' else '0' end) as is_increment, column_type - from information_schema.columns where table_schema = (select database()) and table_name = (#{tableName}) - order by ordinal_position - </select> - - <insert id="insertGenTableColumn" parameterType="GenTableColumn" useGeneratedKeys="true" keyProperty="columnId"> - insert into gen_table_column ( - <if test="tableId != null and tableId != ''">table_id,</if> - <if test="columnName != null and columnName != ''">column_name,</if> - <if test="columnComment != null and columnComment != ''">column_comment,</if> - <if test="columnType != null and columnType != ''">column_type,</if> - <if test="javaType != null and javaType != ''">java_type,</if> - <if test="javaField != null and javaField != ''">java_field,</if> - <if test="isPk != null and isPk != ''">is_pk,</if> - <if test="isIncrement != null and isIncrement != ''">is_increment,</if> - <if test="isRequired != null and isRequired != ''">is_required,</if> - <if test="isInsert != null and isInsert != ''">is_insert,</if> - <if test="isEdit != null and isEdit != ''">is_edit,</if> - <if test="isList != null and isList != ''">is_list,</if> - <if test="isQuery != null and isQuery != ''">is_query,</if> - <if test="queryType != null and queryType != ''">query_type,</if> - <if test="htmlType != null and htmlType != ''">html_type,</if> - <if test="dictType != null and dictType != ''">dict_type,</if> - <if test="sort != null">sort,</if> - <if test="createBy != null and createBy != ''">create_by,</if> - create_time - )values( - <if test="tableId != null and tableId != ''">#{tableId},</if> - <if test="columnName != null and columnName != ''">#{columnName},</if> - <if test="columnComment != null and columnComment != ''">#{columnComment},</if> - <if test="columnType != null and columnType != ''">#{columnType},</if> - <if test="javaType != null and javaType != ''">#{javaType},</if> - <if test="javaField != null and javaField != ''">#{javaField},</if> - <if test="isPk != null and isPk != ''">#{isPk},</if> - <if test="isIncrement != null and isIncrement != ''">#{isIncrement},</if> - <if test="isRequired != null and isRequired != ''">#{isRequired},</if> - <if test="isInsert != null and isInsert != ''">#{isInsert},</if> - <if test="isEdit != null and isEdit != ''">#{isEdit},</if> - <if test="isList != null and isList != ''">#{isList},</if> - <if test="isQuery != null and isQuery != ''">#{isQuery},</if> - <if test="queryType != null and queryType != ''">#{queryType},</if> - <if test="htmlType != null and htmlType != ''">#{htmlType},</if> - <if test="dictType != null and dictType != ''">#{dictType},</if> - <if test="sort != null">#{sort},</if> - <if test="createBy != null and createBy != ''">#{createBy},</if> - sysdate() - ) - </insert> - - <update id="updateGenTableColumn" parameterType="GenTableColumn"> - update gen_table_column - <set> - <if test="columnComment != null">column_comment = #{columnComment},</if> - <if test="javaType != null">java_type = #{javaType},</if> - <if test="javaField != null">java_field = #{javaField},</if> - <if test="isInsert != null">is_insert = #{isInsert},</if> - <if test="isEdit != null">is_edit = #{isEdit},</if> - <if test="isList != null">is_list = #{isList},</if> - <if test="isQuery != null">is_query = #{isQuery},</if> - <if test="isRequired != null">is_required = #{isRequired},</if> - <if test="queryType != null">query_type = #{queryType},</if> - <if test="htmlType != null">html_type = #{htmlType},</if> - <if test="dictType != null">dict_type = #{dictType},</if> - <if test="sort != null">sort = #{sort},</if> - <if test="updateBy != null">update_by = #{updateBy},</if> - update_time = sysdate() - </set> - where column_id = #{columnId} - </update> - - <delete id="deleteGenTableColumnByIds" parameterType="Long"> - delete from gen_table_column where table_id in - <foreach collection="array" item="tableId" open="(" separator="," close=")"> - #{tableId} - </foreach> - </delete> - - <delete id="deleteGenTableColumns"> - delete from gen_table_column where column_id in - <foreach collection="list" item="item" open="(" separator="," close=")"> - #{item.columnId} - </foreach> - </delete> - -</mapper> \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableMapper.xml b/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableMapper.xml deleted file mode 100644 index 3daf21e..0000000 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableMapper.xml +++ /dev/null @@ -1,206 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE mapper -PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" -"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="com.ruoyi.gen.mapper.GenTableMapper"> - - <resultMap type="GenTable" id="GenTableResult"> - <id property="tableId" column="table_id" /> - <result property="tableName" column="table_name" /> - <result property="tableComment" column="table_comment" /> - <result property="subTableName" column="sub_table_name" /> - <result property="subTableFkName" column="sub_table_fk_name" /> - <result property="className" column="class_name" /> - <result property="tplCategory" column="tpl_category" /> - <result property="tplWebType" column="tpl_web_type" /> - <result property="packageName" column="package_name" /> - <result property="moduleName" column="module_name" /> - <result property="businessName" column="business_name" /> - <result property="functionName" column="function_name" /> - <result property="functionAuthor" column="function_author" /> - <result property="genType" column="gen_type" /> - <result property="genPath" column="gen_path" /> - <result property="options" column="options" /> - <result property="createBy" column="create_by" /> - <result property="createTime" column="create_time" /> - <result property="updateBy" column="update_by" /> - <result property="updateTime" column="update_time" /> - <result property="remark" column="remark" /> - <collection property="columns" javaType="java.util.List" resultMap="GenTableColumnResult" /> - </resultMap> - - <resultMap type="GenTableColumn" id="GenTableColumnResult"> - <id property="columnId" column="column_id" /> - <result property="tableId" column="table_id" /> - <result property="columnName" column="column_name" /> - <result property="columnComment" column="column_comment" /> - <result property="columnType" column="column_type" /> - <result property="javaType" column="java_type" /> - <result property="javaField" column="java_field" /> - <result property="isPk" column="is_pk" /> - <result property="isIncrement" column="is_increment" /> - <result property="isRequired" column="is_required" /> - <result property="isInsert" column="is_insert" /> - <result property="isEdit" column="is_edit" /> - <result property="isList" column="is_list" /> - <result property="isQuery" column="is_query" /> - <result property="queryType" column="query_type" /> - <result property="htmlType" column="html_type" /> - <result property="dictType" column="dict_type" /> - <result property="sort" column="sort" /> - <result property="createBy" column="create_by" /> - <result property="createTime" column="create_time" /> - <result property="updateBy" column="update_by" /> - <result property="updateTime" column="update_time" /> - </resultMap> - - <sql id="selectGenTableVo"> - select table_id, table_name, table_comment, sub_table_name, sub_table_fk_name, class_name, tpl_category, tpl_web_type, package_name, module_name, business_name, function_name, function_author, gen_type, gen_path, options, create_by, create_time, update_by, update_time, remark from gen_table - </sql> - - <select id="selectGenTableList" parameterType="GenTable" resultMap="GenTableResult"> - <include refid="selectGenTableVo"/> - <where> - <if test="tableName != null and tableName != ''"> - AND lower(table_name) like lower(concat('%', #{tableName}, '%')) - </if> - <if test="tableComment != null and tableComment != ''"> - AND lower(table_comment) like lower(concat('%', #{tableComment}, '%')) - </if> - <if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� --> - AND date_format(create_time,'%Y%m%d') >= date_format(#{params.beginTime},'%Y%m%d') - </if> - <if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� --> - AND date_format(create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d') - </if> - </where> - </select> - - <select id="selectDbTableList" parameterType="GenTable" resultMap="GenTableResult"> - select table_name, table_comment, create_time, update_time from information_schema.tables - where table_schema = (select database()) - AND table_name NOT LIKE 'qrtz\_%' AND table_name NOT LIKE 'gen\_%' - AND table_name NOT IN (select table_name from gen_table) - <if test="tableName != null and tableName != ''"> - AND lower(table_name) like lower(concat('%', #{tableName}, '%')) - </if> - <if test="tableComment != null and tableComment != ''"> - AND lower(table_comment) like lower(concat('%', #{tableComment}, '%')) - </if> - <if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� --> - AND date_format(create_time,'%Y%m%d') >= date_format(#{params.beginTime},'%Y%m%d') - </if> - <if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� --> - AND date_format(create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d') - </if> - order by create_time desc - </select> - - <select id="selectDbTableListByNames" resultMap="GenTableResult"> - select table_name, table_comment, create_time, update_time from information_schema.tables - where table_name NOT LIKE 'qrtz\_%' and table_name NOT LIKE 'gen\_%' and table_schema = (select database()) - and table_name in - <foreach collection="array" item="name" open="(" separator="," close=")"> - #{name} - </foreach> - </select> - - <select id="selectTableByName" parameterType="String" resultMap="GenTableResult"> - select table_name, table_comment, create_time, update_time from information_schema.tables - where table_comment <![CDATA[ <> ]]> '' and table_schema = (select database()) - and table_name = #{tableName} - </select> - - <select id="selectGenTableById" parameterType="Long" resultMap="GenTableResult"> - SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.tpl_web_type, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark, - c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort - FROM gen_table t - LEFT JOIN gen_table_column c ON t.table_id = c.table_id - where t.table_id = #{tableId} order by c.sort - </select> - - <select id="selectGenTableByName" parameterType="String" resultMap="GenTableResult"> - SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.tpl_web_type, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark, - c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort - FROM gen_table t - LEFT JOIN gen_table_column c ON t.table_id = c.table_id - where t.table_name = #{tableName} order by c.sort - </select> - - <select id="selectGenTableAll" parameterType="String" resultMap="GenTableResult"> - SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.tpl_web_type, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.options, t.remark, - c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort - FROM gen_table t - LEFT JOIN gen_table_column c ON t.table_id = c.table_id - order by c.sort - </select> - - <insert id="insertGenTable" parameterType="GenTable" useGeneratedKeys="true" keyProperty="tableId"> - insert into gen_table ( - <if test="tableName != null">table_name,</if> - <if test="tableComment != null and tableComment != ''">table_comment,</if> - <if test="className != null and className != ''">class_name,</if> - <if test="tplCategory != null and tplCategory != ''">tpl_category,</if> - <if test="tplWebType != null and tplWebType != ''">tpl_web_type,</if> - <if test="packageName != null and packageName != ''">package_name,</if> - <if test="moduleName != null and moduleName != ''">module_name,</if> - <if test="businessName != null and businessName != ''">business_name,</if> - <if test="functionName != null and functionName != ''">function_name,</if> - <if test="functionAuthor != null and functionAuthor != ''">function_author,</if> - <if test="genType != null and genType != ''">gen_type,</if> - <if test="genPath != null and genPath != ''">gen_path,</if> - <if test="remark != null and remark != ''">remark,</if> - <if test="createBy != null and createBy != ''">create_by,</if> - create_time - )values( - <if test="tableName != null">#{tableName},</if> - <if test="tableComment != null and tableComment != ''">#{tableComment},</if> - <if test="className != null and className != ''">#{className},</if> - <if test="tplCategory != null and tplCategory != ''">#{tplCategory},</if> - <if test="tplWebType != null and tplWebType != ''">#{tplWebType},</if> - <if test="packageName != null and packageName != ''">#{packageName},</if> - <if test="moduleName != null and moduleName != ''">#{moduleName},</if> - <if test="businessName != null and businessName != ''">#{businessName},</if> - <if test="functionName != null and functionName != ''">#{functionName},</if> - <if test="functionAuthor != null and functionAuthor != ''">#{functionAuthor},</if> - <if test="genType != null and genType != ''">#{genType},</if> - <if test="genPath != null and genPath != ''">#{genPath},</if> - <if test="remark != null and remark != ''">#{remark},</if> - <if test="createBy != null and createBy != ''">#{createBy},</if> - sysdate() - ) - </insert> - - <update id="updateGenTable" parameterType="GenTable"> - update gen_table - <set> - <if test="tableName != null">table_name = #{tableName},</if> - <if test="tableComment != null and tableComment != ''">table_comment = #{tableComment},</if> - <if test="subTableName != null">sub_table_name = #{subTableName},</if> - <if test="subTableFkName != null">sub_table_fk_name = #{subTableFkName},</if> - <if test="className != null and className != ''">class_name = #{className},</if> - <if test="functionAuthor != null and functionAuthor != ''">function_author = #{functionAuthor},</if> - <if test="genType != null and genType != ''">gen_type = #{genType},</if> - <if test="genPath != null and genPath != ''">gen_path = #{genPath},</if> - <if test="tplCategory != null and tplCategory != ''">tpl_category = #{tplCategory},</if> - <if test="tplWebType != null and tplWebType != ''">tpl_web_type = #{tplWebType},</if> - <if test="packageName != null and packageName != ''">package_name = #{packageName},</if> - <if test="moduleName != null and moduleName != ''">module_name = #{moduleName},</if> - <if test="businessName != null and businessName != ''">business_name = #{businessName},</if> - <if test="functionName != null and functionName != ''">function_name = #{functionName},</if> - <if test="options != null and options != ''">options = #{options},</if> - <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> - <if test="remark != null">remark = #{remark},</if> - update_time = sysdate() - </set> - where table_id = #{tableId} - </update> - - <delete id="deleteGenTableByIds" parameterType="Long"> - delete from gen_table where table_id in - <foreach collection="array" item="tableId" open="(" separator="," close=")"> - #{tableId} - </foreach> - </delete> - -</mapper> \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/RuoYiJobApplication.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/RuoYiJobApplication.java deleted file mode 100644 index 1e316f6..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/RuoYiJobApplication.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.ruoyi.job; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import com.se.common.security.annotation.EnableCustomConfig; -import com.se.common.security.annotation.EnableRyFeignClients; -import com.se.common.swagger.annotation.EnableCustomSwagger2; - -/** - * 瀹氭椂浠诲姟 - * - * @author admin - */ -@EnableCustomConfig -@EnableCustomSwagger2 -@EnableRyFeignClients -@SpringBootApplication -public class RuoYiJobApplication -{ - public static void main(String[] args) - { - SpringApplication.run(RuoYiJobApplication.class, args); - System.out.println("(鈾モ棤鈥库棤)锞夛緸 瀹氭椂浠诲姟妯″潡鍚姩鎴愬姛 醿�(麓凇`醿�)锞� \n" + - " .-------. ____ __ \n" + - " | _ _ \\ \\ \\ / / \n" + - " | ( ' ) | \\ _. / ' \n" + - " |(_ o _) / _( )_ .' \n" + - " | (_,_).' __ ___(_ o _)' \n" + - " | |\\ \\ | || |(_,_)' \n" + - " | | \\ `' /| `-' / \n" + - " | | \\ / \\ / \n" + - " ''-' `'-' `-..-' "); - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/controller/SysJobController.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/controller/SysJobController.java deleted file mode 100644 index 0959adc..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/controller/SysJobController.java +++ /dev/null @@ -1,186 +0,0 @@ -package com.ruoyi.job.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.quartz.SchedulerException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.se.common.core.constant.Constants; -import com.se.common.core.exception.job.TaskException; -import com.se.common.core.utils.StringUtils; -import com.se.common.core.utils.poi.ExcelUtil; -import com.se.common.core.web.controller.BaseController; -import com.se.common.core.web.domain.AjaxResult; -import com.se.common.core.web.page.TableDataInfo; -import com.se.common.log.annotation.Log; -import com.se.common.log.enums.BusinessType; -import com.se.common.security.annotation.RequiresPermissions; -import com.se.common.security.utils.SecurityUtils; -import com.ruoyi.job.domain.SysJob; -import com.ruoyi.job.service.ISysJobService; -import com.ruoyi.job.util.CronUtils; -import com.ruoyi.job.util.ScheduleUtils; - -/** - * 璋冨害浠诲姟淇℃伅鎿嶄綔澶勭悊 - * - * @author admin - */ -@RestController -@RequestMapping("/job") -public class SysJobController extends BaseController -{ - @Autowired - private ISysJobService jobService; - - /** - * 鏌ヨ瀹氭椂浠诲姟鍒楄〃 - */ - @RequiresPermissions("monitor:job:list") - @GetMapping("/list") - public TableDataInfo list(SysJob sysJob) - { - startPage(); - List<SysJob> list = jobService.selectJobList(sysJob); - return getDataTable(list); - } - - /** - * 瀵煎嚭瀹氭椂浠诲姟鍒楄〃 - */ - @RequiresPermissions("monitor:job:export") - @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, SysJob sysJob) - { - List<SysJob> list = jobService.selectJobList(sysJob); - ExcelUtil<SysJob> util = new ExcelUtil<SysJob>(SysJob.class); - util.exportExcel(response, list, "瀹氭椂浠诲姟"); - } - - /** - * 鑾峰彇瀹氭椂浠诲姟璇︾粏淇℃伅 - */ - @RequiresPermissions("monitor:job:query") - @GetMapping(value = "/{jobId}") - public AjaxResult getInfo(@PathVariable("jobId") Long jobId) - { - return success(jobService.selectJobById(jobId)); - } - - /** - * 鏂板瀹氭椂浠诲姟 - */ - @RequiresPermissions("monitor:job:add") - @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody SysJob job) throws SchedulerException, TaskException - { - if (!CronUtils.isValid(job.getCronExpression())) - { - return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛孋ron琛ㄨ揪寮忎笉姝g‘"); - } - else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI)) - { - return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'rmi'璋冪敤"); - } - else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS })) - { - return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'ldap(s)'璋冪敤"); - } - else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.HTTP, Constants.HTTPS })) - { - return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'http(s)'璋冪敤"); - } - else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR)) - { - return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆瀛樺湪杩濊"); - } - else if (!ScheduleUtils.whiteList(job.getInvokeTarget())) - { - return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅湪鐧藉悕鍗曞唴"); - } - job.setCreateBy(SecurityUtils.getUsername()); - return toAjax(jobService.insertJob(job)); - } - - /** - * 淇敼瀹氭椂浠诲姟 - */ - @RequiresPermissions("monitor:job:edit") - @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody SysJob job) throws SchedulerException, TaskException - { - if (!CronUtils.isValid(job.getCronExpression())) - { - return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛孋ron琛ㄨ揪寮忎笉姝g‘"); - } - else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI)) - { - return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'rmi'璋冪敤"); - } - else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS })) - { - return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'ldap(s)'璋冪敤"); - } - else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.HTTP, Constants.HTTPS })) - { - return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'http(s)'璋冪敤"); - } - else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR)) - { - return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆瀛樺湪杩濊"); - } - else if (!ScheduleUtils.whiteList(job.getInvokeTarget())) - { - return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅湪鐧藉悕鍗曞唴"); - } - job.setUpdateBy(SecurityUtils.getUsername()); - return toAjax(jobService.updateJob(job)); - } - - /** - * 瀹氭椂浠诲姟鐘舵�佷慨鏀� - */ - @RequiresPermissions("monitor:job:changeStatus") - @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.UPDATE) - @PutMapping("/changeStatus") - public AjaxResult changeStatus(@RequestBody SysJob job) throws SchedulerException - { - SysJob newJob = jobService.selectJobById(job.getJobId()); - newJob.setStatus(job.getStatus()); - return toAjax(jobService.changeStatus(newJob)); - } - - /** - * 瀹氭椂浠诲姟绔嬪嵆鎵ц涓�娆� - */ - @RequiresPermissions("monitor:job:changeStatus") - @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.UPDATE) - @PutMapping("/run") - public AjaxResult run(@RequestBody SysJob job) throws SchedulerException - { - boolean result = jobService.run(job); - return result ? success() : error("浠诲姟涓嶅瓨鍦ㄦ垨宸茶繃鏈燂紒"); - } - - /** - * 鍒犻櫎瀹氭椂浠诲姟 - */ - @RequiresPermissions("monitor:job:remove") - @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.DELETE) - @DeleteMapping("/{jobIds}") - public AjaxResult remove(@PathVariable Long[] jobIds) throws SchedulerException, TaskException - { - jobService.deleteJobByIds(jobIds); - return success(); - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/controller/SysJobLogController.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/controller/SysJobLogController.java deleted file mode 100644 index 5e0cae6..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/controller/SysJobLogController.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.ruoyi.job.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.se.common.core.utils.poi.ExcelUtil; -import com.se.common.core.web.controller.BaseController; -import com.se.common.core.web.domain.AjaxResult; -import com.se.common.core.web.page.TableDataInfo; -import com.se.common.log.annotation.Log; -import com.se.common.log.enums.BusinessType; -import com.se.common.security.annotation.RequiresPermissions; -import com.ruoyi.job.domain.SysJobLog; -import com.ruoyi.job.service.ISysJobLogService; - -/** - * 璋冨害鏃ュ織鎿嶄綔澶勭悊 - * - * @author admin - */ -@RestController -@RequestMapping("/job/log") -public class SysJobLogController extends BaseController -{ - @Autowired - private ISysJobLogService jobLogService; - - /** - * 鏌ヨ瀹氭椂浠诲姟璋冨害鏃ュ織鍒楄〃 - */ - @RequiresPermissions("monitor:job:list") - @GetMapping("/list") - public TableDataInfo list(SysJobLog sysJobLog) - { - startPage(); - List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog); - return getDataTable(list); - } - - /** - * 瀵煎嚭瀹氭椂浠诲姟璋冨害鏃ュ織鍒楄〃 - */ - @RequiresPermissions("monitor:job:export") - @Log(title = "浠诲姟璋冨害鏃ュ織", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, SysJobLog sysJobLog) - { - List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog); - ExcelUtil<SysJobLog> util = new ExcelUtil<SysJobLog>(SysJobLog.class); - util.exportExcel(response, list, "璋冨害鏃ュ織"); - } - - /** - * 鏍规嵁璋冨害缂栧彿鑾峰彇璇︾粏淇℃伅 - */ - @RequiresPermissions("monitor:job:query") - @GetMapping(value = "/{jobLogId}") - public AjaxResult getInfo(@PathVariable Long jobLogId) - { - return success(jobLogService.selectJobLogById(jobLogId)); - } - - /** - * 鍒犻櫎瀹氭椂浠诲姟璋冨害鏃ュ織 - */ - @RequiresPermissions("monitor:job:remove") - @Log(title = "瀹氭椂浠诲姟璋冨害鏃ュ織", businessType = BusinessType.DELETE) - @DeleteMapping("/{jobLogIds}") - public AjaxResult remove(@PathVariable Long[] jobLogIds) - { - return toAjax(jobLogService.deleteJobLogByIds(jobLogIds)); - } - - /** - * 娓呯┖瀹氭椂浠诲姟璋冨害鏃ュ織 - */ - @RequiresPermissions("monitor:job:remove") - @Log(title = "璋冨害鏃ュ織", businessType = BusinessType.CLEAN) - @DeleteMapping("/clean") - public AjaxResult clean() - { - jobLogService.cleanJobLog(); - return success(); - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJob.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJob.java deleted file mode 100644 index 51e0c3a..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJob.java +++ /dev/null @@ -1,171 +0,0 @@ -package com.ruoyi.job.domain; - -import java.util.Date; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Size; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.se.common.core.annotation.Excel; -import com.se.common.core.annotation.Excel.ColumnType; -import com.se.common.core.constant.ScheduleConstants; -import com.se.common.core.utils.StringUtils; -import com.se.common.core.web.domain.BaseEntity; -import com.ruoyi.job.util.CronUtils; - -/** - * 瀹氭椂浠诲姟璋冨害琛� sys_job - * - * @author admin - */ -public class SysJob extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 浠诲姟ID */ - @Excel(name = "浠诲姟搴忓彿", cellType = ColumnType.NUMERIC) - private Long jobId; - - /** 浠诲姟鍚嶇О */ - @Excel(name = "浠诲姟鍚嶇О") - private String jobName; - - /** 浠诲姟缁勫悕 */ - @Excel(name = "浠诲姟缁勫悕") - private String jobGroup; - - /** 璋冪敤鐩爣瀛楃涓� */ - @Excel(name = "璋冪敤鐩爣瀛楃涓�") - private String invokeTarget; - - /** cron鎵ц琛ㄨ揪寮� */ - @Excel(name = "鎵ц琛ㄨ揪寮� ") - private String cronExpression; - - /** cron璁″垝绛栫暐 */ - @Excel(name = "璁″垝绛栫暐 ", readConverterExp = "0=榛樿,1=绔嬪嵆瑙﹀彂鎵ц,2=瑙﹀彂涓�娆℃墽琛�,3=涓嶈Е鍙戠珛鍗虫墽琛�") - private String misfirePolicy = ScheduleConstants.MISFIRE_DEFAULT; - - /** 鏄惁骞跺彂鎵ц锛�0鍏佽 1绂佹锛� */ - @Excel(name = "骞跺彂鎵ц", readConverterExp = "0=鍏佽,1=绂佹") - private String concurrent; - - /** 浠诲姟鐘舵�侊紙0姝e父 1鏆傚仠锛� */ - @Excel(name = "浠诲姟鐘舵��", readConverterExp = "0=姝e父,1=鏆傚仠") - private String status; - - public Long getJobId() - { - return jobId; - } - - public void setJobId(Long jobId) - { - this.jobId = jobId; - } - - @NotBlank(message = "浠诲姟鍚嶇О涓嶈兘涓虹┖") - @Size(min = 0, max = 64, message = "浠诲姟鍚嶇О涓嶈兘瓒呰繃64涓瓧绗�") - public String getJobName() - { - return jobName; - } - - public void setJobName(String jobName) - { - this.jobName = jobName; - } - - public String getJobGroup() - { - return jobGroup; - } - - public void setJobGroup(String jobGroup) - { - this.jobGroup = jobGroup; - } - - @NotBlank(message = "璋冪敤鐩爣瀛楃涓蹭笉鑳戒负绌�") - @Size(min = 0, max = 500, message = "璋冪敤鐩爣瀛楃涓查暱搴︿笉鑳借秴杩�500涓瓧绗�") - public String getInvokeTarget() - { - return invokeTarget; - } - - public void setInvokeTarget(String invokeTarget) - { - this.invokeTarget = invokeTarget; - } - - @NotBlank(message = "Cron鎵ц琛ㄨ揪寮忎笉鑳戒负绌�") - @Size(min = 0, max = 255, message = "Cron鎵ц琛ㄨ揪寮忎笉鑳借秴杩�255涓瓧绗�") - public String getCronExpression() - { - return cronExpression; - } - - public void setCronExpression(String cronExpression) - { - this.cronExpression = cronExpression; - } - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - public Date getNextValidTime() - { - if (StringUtils.isNotEmpty(cronExpression)) - { - return CronUtils.getNextExecution(cronExpression); - } - return null; - } - - public String getMisfirePolicy() - { - return misfirePolicy; - } - - public void setMisfirePolicy(String misfirePolicy) - { - this.misfirePolicy = misfirePolicy; - } - - public String getConcurrent() - { - return concurrent; - } - - public void setConcurrent(String concurrent) - { - this.concurrent = concurrent; - } - - public String getStatus() - { - return status; - } - - public void setStatus(String status) - { - this.status = status; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("jobId", getJobId()) - .append("jobName", getJobName()) - .append("jobGroup", getJobGroup()) - .append("cronExpression", getCronExpression()) - .append("nextValidTime", getNextValidTime()) - .append("misfirePolicy", getMisfirePolicy()) - .append("concurrent", getConcurrent()) - .append("status", getStatus()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("remark", getRemark()) - .toString(); - } -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJobLog.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJobLog.java deleted file mode 100644 index a74443d..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJobLog.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.ruoyi.job.domain; - -import java.util.Date; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; -import com.se.common.core.annotation.Excel; -import com.se.common.core.web.domain.BaseEntity; - -/** - * 瀹氭椂浠诲姟璋冨害鏃ュ織琛� sys_job_log - * - * @author admin - */ -public class SysJobLog extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** ID */ - @Excel(name = "鏃ュ織搴忓彿") - private Long jobLogId; - - /** 浠诲姟鍚嶇О */ - @Excel(name = "浠诲姟鍚嶇О") - private String jobName; - - /** 浠诲姟缁勫悕 */ - @Excel(name = "浠诲姟缁勫悕") - private String jobGroup; - - /** 璋冪敤鐩爣瀛楃涓� */ - @Excel(name = "璋冪敤鐩爣瀛楃涓�") - private String invokeTarget; - - /** 鏃ュ織淇℃伅 */ - @Excel(name = "鏃ュ織淇℃伅") - private String jobMessage; - - /** 鎵ц鐘舵�侊紙0姝e父 1澶辫触锛� */ - @Excel(name = "鎵ц鐘舵��", readConverterExp = "0=姝e父,1=澶辫触") - private String status; - - /** 寮傚父淇℃伅 */ - @Excel(name = "寮傚父淇℃伅") - private String exceptionInfo; - - /** 寮�濮嬫椂闂� */ - private Date startTime; - - /** 鍋滄鏃堕棿 */ - private Date stopTime; - - public Long getJobLogId() - { - return jobLogId; - } - - public void setJobLogId(Long jobLogId) - { - this.jobLogId = jobLogId; - } - - public String getJobName() - { - return jobName; - } - - public void setJobName(String jobName) - { - this.jobName = jobName; - } - - public String getJobGroup() - { - return jobGroup; - } - - public void setJobGroup(String jobGroup) - { - this.jobGroup = jobGroup; - } - - public String getInvokeTarget() - { - return invokeTarget; - } - - public void setInvokeTarget(String invokeTarget) - { - this.invokeTarget = invokeTarget; - } - - public String getJobMessage() - { - return jobMessage; - } - - public void setJobMessage(String jobMessage) - { - this.jobMessage = jobMessage; - } - - public String getStatus() - { - return status; - } - - public void setStatus(String status) - { - this.status = status; - } - - public String getExceptionInfo() - { - return exceptionInfo; - } - - public void setExceptionInfo(String exceptionInfo) - { - this.exceptionInfo = exceptionInfo; - } - - public Date getStartTime() - { - return startTime; - } - - public void setStartTime(Date startTime) - { - this.startTime = startTime; - } - - public Date getStopTime() - { - return stopTime; - } - - public void setStopTime(Date stopTime) - { - this.stopTime = stopTime; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("jobLogId", getJobLogId()) - .append("jobName", getJobName()) - .append("jobGroup", getJobGroup()) - .append("jobMessage", getJobMessage()) - .append("status", getStatus()) - .append("exceptionInfo", getExceptionInfo()) - .append("startTime", getStartTime()) - .append("stopTime", getStopTime()) - .toString(); - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/mapper/SysJobLogMapper.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/mapper/SysJobLogMapper.java deleted file mode 100644 index 5a5ca67..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/mapper/SysJobLogMapper.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.ruoyi.job.mapper; - -import java.util.List; -import com.ruoyi.job.domain.SysJobLog; - -/** - * 璋冨害浠诲姟鏃ュ織淇℃伅 鏁版嵁灞� - * - * @author admin - */ -public interface SysJobLogMapper -{ - /** - * 鑾峰彇quartz璋冨害鍣ㄦ棩蹇楃殑璁″垝浠诲姟 - * - * @param jobLog 璋冨害鏃ュ織淇℃伅 - * @return 璋冨害浠诲姟鏃ュ織闆嗗悎 - */ - public List<SysJobLog> selectJobLogList(SysJobLog jobLog); - - /** - * 鏌ヨ鎵�鏈夎皟搴︿换鍔℃棩蹇� - * - * @return 璋冨害浠诲姟鏃ュ織鍒楄〃 - */ - public List<SysJobLog> selectJobLogAll(); - - /** - * 閫氳繃璋冨害浠诲姟鏃ュ織ID鏌ヨ璋冨害淇℃伅 - * - * @param jobLogId 璋冨害浠诲姟鏃ュ織ID - * @return 璋冨害浠诲姟鏃ュ織瀵硅薄淇℃伅 - */ - public SysJobLog selectJobLogById(Long jobLogId); - - /** - * 鏂板浠诲姟鏃ュ織 - * - * @param jobLog 璋冨害鏃ュ織淇℃伅 - * @return 缁撴灉 - */ - public int insertJobLog(SysJobLog jobLog); - - /** - * 鎵归噺鍒犻櫎璋冨害鏃ュ織淇℃伅 - * - * @param logIds 闇�瑕佸垹闄ょ殑鏁版嵁ID - * @return 缁撴灉 - */ - public int deleteJobLogByIds(Long[] logIds); - - /** - * 鍒犻櫎浠诲姟鏃ュ織 - * - * @param jobId 璋冨害鏃ュ織ID - * @return 缁撴灉 - */ - public int deleteJobLogById(Long jobId); - - /** - * 娓呯┖浠诲姟鏃ュ織 - */ - public void cleanJobLog(); -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/mapper/SysJobMapper.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/mapper/SysJobMapper.java deleted file mode 100644 index dae7a8e..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/mapper/SysJobMapper.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.ruoyi.job.mapper; - -import java.util.List; -import com.ruoyi.job.domain.SysJob; - -/** - * 璋冨害浠诲姟淇℃伅 鏁版嵁灞� - * - * @author admin - */ -public interface SysJobMapper -{ - /** - * 鏌ヨ璋冨害浠诲姟鏃ュ織闆嗗悎 - * - * @param job 璋冨害淇℃伅 - * @return 鎿嶄綔鏃ュ織闆嗗悎 - */ - public List<SysJob> selectJobList(SysJob job); - - /** - * 鏌ヨ鎵�鏈夎皟搴︿换鍔� - * - * @return 璋冨害浠诲姟鍒楄〃 - */ - public List<SysJob> selectJobAll(); - - /** - * 閫氳繃璋冨害ID鏌ヨ璋冨害浠诲姟淇℃伅 - * - * @param jobId 璋冨害ID - * @return 瑙掕壊瀵硅薄淇℃伅 - */ - public SysJob selectJobById(Long jobId); - - /** - * 閫氳繃璋冨害ID鍒犻櫎璋冨害浠诲姟淇℃伅 - * - * @param jobId 璋冨害ID - * @return 缁撴灉 - */ - public int deleteJobById(Long jobId); - - /** - * 鎵归噺鍒犻櫎璋冨害浠诲姟淇℃伅 - * - * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID - * @return 缁撴灉 - */ - public int deleteJobByIds(Long[] ids); - - /** - * 淇敼璋冨害浠诲姟淇℃伅 - * - * @param job 璋冨害浠诲姟淇℃伅 - * @return 缁撴灉 - */ - public int updateJob(SysJob job); - - /** - * 鏂板璋冨害浠诲姟淇℃伅 - * - * @param job 璋冨害浠诲姟淇℃伅 - * @return 缁撴灉 - */ - public int insertJob(SysJob job); -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/ISysJobLogService.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/ISysJobLogService.java deleted file mode 100644 index 588a423..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/ISysJobLogService.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.ruoyi.job.service; - -import java.util.List; -import com.ruoyi.job.domain.SysJobLog; - -/** - * 瀹氭椂浠诲姟璋冨害鏃ュ織淇℃伅淇℃伅 鏈嶅姟灞� - * - * @author admin - */ -public interface ISysJobLogService -{ - /** - * 鑾峰彇quartz璋冨害鍣ㄦ棩蹇楃殑璁″垝浠诲姟 - * - * @param jobLog 璋冨害鏃ュ織淇℃伅 - * @return 璋冨害浠诲姟鏃ュ織闆嗗悎 - */ - public List<SysJobLog> selectJobLogList(SysJobLog jobLog); - - /** - * 閫氳繃璋冨害浠诲姟鏃ュ織ID鏌ヨ璋冨害淇℃伅 - * - * @param jobLogId 璋冨害浠诲姟鏃ュ織ID - * @return 璋冨害浠诲姟鏃ュ織瀵硅薄淇℃伅 - */ - public SysJobLog selectJobLogById(Long jobLogId); - - /** - * 鏂板浠诲姟鏃ュ織 - * - * @param jobLog 璋冨害鏃ュ織淇℃伅 - */ - public void addJobLog(SysJobLog jobLog); - - /** - * 鎵归噺鍒犻櫎璋冨害鏃ュ織淇℃伅 - * - * @param logIds 闇�瑕佸垹闄ょ殑鏃ュ織ID - * @return 缁撴灉 - */ - public int deleteJobLogByIds(Long[] logIds); - - /** - * 鍒犻櫎浠诲姟鏃ュ織 - * - * @param jobId 璋冨害鏃ュ織ID - * @return 缁撴灉 - */ - public int deleteJobLogById(Long jobId); - - /** - * 娓呯┖浠诲姟鏃ュ織 - */ - public void cleanJobLog(); -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/ISysJobService.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/ISysJobService.java deleted file mode 100644 index dd79879..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/ISysJobService.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.ruoyi.job.service; - -import java.util.List; -import org.quartz.SchedulerException; -import com.se.common.core.exception.job.TaskException; -import com.ruoyi.job.domain.SysJob; - -/** - * 瀹氭椂浠诲姟璋冨害淇℃伅淇℃伅 鏈嶅姟灞� - * - * @author admin - */ -public interface ISysJobService -{ - /** - * 鑾峰彇quartz璋冨害鍣ㄧ殑璁″垝浠诲姟 - * - * @param job 璋冨害淇℃伅 - * @return 璋冨害浠诲姟闆嗗悎 - */ - public List<SysJob> selectJobList(SysJob job); - - /** - * 閫氳繃璋冨害浠诲姟ID鏌ヨ璋冨害淇℃伅 - * - * @param jobId 璋冨害浠诲姟ID - * @return 璋冨害浠诲姟瀵硅薄淇℃伅 - */ - public SysJob selectJobById(Long jobId); - - /** - * 鏆傚仠浠诲姟 - * - * @param job 璋冨害淇℃伅 - * @return 缁撴灉 - */ - public int pauseJob(SysJob job) throws SchedulerException; - - /** - * 鎭㈠浠诲姟 - * - * @param job 璋冨害淇℃伅 - * @return 缁撴灉 - */ - public int resumeJob(SysJob job) throws SchedulerException; - - /** - * 鍒犻櫎浠诲姟鍚庯紝鎵�瀵瑰簲鐨則rigger涔熷皢琚垹闄� - * - * @param job 璋冨害淇℃伅 - * @return 缁撴灉 - */ - public int deleteJob(SysJob job) throws SchedulerException; - - /** - * 鎵归噺鍒犻櫎璋冨害淇℃伅 - * - * @param jobIds 闇�瑕佸垹闄ょ殑浠诲姟ID - * @return 缁撴灉 - */ - public void deleteJobByIds(Long[] jobIds) throws SchedulerException; - - /** - * 浠诲姟璋冨害鐘舵�佷慨鏀� - * - * @param job 璋冨害淇℃伅 - * @return 缁撴灉 - */ - public int changeStatus(SysJob job) throws SchedulerException; - - /** - * 绔嬪嵆杩愯浠诲姟 - * - * @param job 璋冨害淇℃伅 - * @return 缁撴灉 - */ - public boolean run(SysJob job) throws SchedulerException; - - /** - * 鏂板浠诲姟 - * - * @param job 璋冨害淇℃伅 - * @return 缁撴灉 - */ - public int insertJob(SysJob job) throws SchedulerException, TaskException; - - /** - * 鏇存柊浠诲姟 - * - * @param job 璋冨害淇℃伅 - * @return 缁撴灉 - */ - public int updateJob(SysJob job) throws SchedulerException, TaskException; - - /** - * 鏍¢獙cron琛ㄨ揪寮忔槸鍚︽湁鏁� - * - * @param cronExpression 琛ㄨ揪寮� - * @return 缁撴灉 - */ - public boolean checkCronExpressionIsValid(String cronExpression); -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/SysJobLogServiceImpl.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/SysJobLogServiceImpl.java deleted file mode 100644 index d415341..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/SysJobLogServiceImpl.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.ruoyi.job.service; - -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ruoyi.job.domain.SysJobLog; -import com.ruoyi.job.mapper.SysJobLogMapper; - -/** - * 瀹氭椂浠诲姟璋冨害鏃ュ織淇℃伅 鏈嶅姟灞� - * - * @author admin - */ -@Service -public class SysJobLogServiceImpl implements ISysJobLogService -{ - @Autowired - private SysJobLogMapper jobLogMapper; - - /** - * 鑾峰彇quartz璋冨害鍣ㄦ棩蹇楃殑璁″垝浠诲姟 - * - * @param jobLog 璋冨害鏃ュ織淇℃伅 - * @return 璋冨害浠诲姟鏃ュ織闆嗗悎 - */ - @Override - public List<SysJobLog> selectJobLogList(SysJobLog jobLog) - { - return jobLogMapper.selectJobLogList(jobLog); - } - - /** - * 閫氳繃璋冨害浠诲姟鏃ュ織ID鏌ヨ璋冨害淇℃伅 - * - * @param jobLogId 璋冨害浠诲姟鏃ュ織ID - * @return 璋冨害浠诲姟鏃ュ織瀵硅薄淇℃伅 - */ - @Override - public SysJobLog selectJobLogById(Long jobLogId) - { - return jobLogMapper.selectJobLogById(jobLogId); - } - - /** - * 鏂板浠诲姟鏃ュ織 - * - * @param jobLog 璋冨害鏃ュ織淇℃伅 - */ - @Override - public void addJobLog(SysJobLog jobLog) - { - jobLogMapper.insertJobLog(jobLog); - } - - /** - * 鎵归噺鍒犻櫎璋冨害鏃ュ織淇℃伅 - * - * @param logIds 闇�瑕佸垹闄ょ殑鏁版嵁ID - * @return 缁撴灉 - */ - @Override - public int deleteJobLogByIds(Long[] logIds) - { - return jobLogMapper.deleteJobLogByIds(logIds); - } - - /** - * 鍒犻櫎浠诲姟鏃ュ織 - * - * @param jobId 璋冨害鏃ュ織ID - */ - @Override - public int deleteJobLogById(Long jobId) - { - return jobLogMapper.deleteJobLogById(jobId); - } - - /** - * 娓呯┖浠诲姟鏃ュ織 - */ - @Override - public void cleanJobLog() - { - jobLogMapper.cleanJobLog(); - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/SysJobServiceImpl.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/SysJobServiceImpl.java deleted file mode 100644 index 75110d1..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/SysJobServiceImpl.java +++ /dev/null @@ -1,260 +0,0 @@ -package com.ruoyi.job.service; - -import java.util.List; -import javax.annotation.PostConstruct; -import org.quartz.JobDataMap; -import org.quartz.JobKey; -import org.quartz.Scheduler; -import org.quartz.SchedulerException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import com.se.common.core.constant.ScheduleConstants; -import com.se.common.core.exception.job.TaskException; -import com.ruoyi.job.domain.SysJob; -import com.ruoyi.job.mapper.SysJobMapper; -import com.ruoyi.job.util.CronUtils; -import com.ruoyi.job.util.ScheduleUtils; - -/** - * 瀹氭椂浠诲姟璋冨害淇℃伅 鏈嶅姟灞� - * - * @author admin - */ -@Service -public class SysJobServiceImpl implements ISysJobService -{ - @Autowired - private Scheduler scheduler; - - @Autowired - private SysJobMapper jobMapper; - - /** - * 椤圭洰鍚姩鏃讹紝鍒濆鍖栧畾鏃跺櫒 涓昏鏄槻姝㈡墜鍔ㄤ慨鏀规暟鎹簱瀵艰嚧鏈悓姝ュ埌瀹氭椂浠诲姟澶勭悊锛堟敞锛氫笉鑳芥墜鍔ㄤ慨鏀规暟鎹簱ID鍜屼换鍔$粍鍚嶏紝鍚﹀垯浼氬鑷磋剰鏁版嵁锛� - */ - @PostConstruct - public void init() throws SchedulerException, TaskException - { - scheduler.clear(); - List<SysJob> jobList = jobMapper.selectJobAll(); - for (SysJob job : jobList) - { - ScheduleUtils.createScheduleJob(scheduler, job); - } - } - - /** - * 鑾峰彇quartz璋冨害鍣ㄧ殑璁″垝浠诲姟鍒楄〃 - * - * @param job 璋冨害淇℃伅 - * @return - */ - @Override - public List<SysJob> selectJobList(SysJob job) - { - return jobMapper.selectJobList(job); - } - - /** - * 閫氳繃璋冨害浠诲姟ID鏌ヨ璋冨害淇℃伅 - * - * @param jobId 璋冨害浠诲姟ID - * @return 璋冨害浠诲姟瀵硅薄淇℃伅 - */ - @Override - public SysJob selectJobById(Long jobId) - { - return jobMapper.selectJobById(jobId); - } - - /** - * 鏆傚仠浠诲姟 - * - * @param job 璋冨害淇℃伅 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int pauseJob(SysJob job) throws SchedulerException - { - Long jobId = job.getJobId(); - String jobGroup = job.getJobGroup(); - job.setStatus(ScheduleConstants.Status.PAUSE.getValue()); - int rows = jobMapper.updateJob(job); - if (rows > 0) - { - scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup)); - } - return rows; - } - - /** - * 鎭㈠浠诲姟 - * - * @param job 璋冨害淇℃伅 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int resumeJob(SysJob job) throws SchedulerException - { - Long jobId = job.getJobId(); - String jobGroup = job.getJobGroup(); - job.setStatus(ScheduleConstants.Status.NORMAL.getValue()); - int rows = jobMapper.updateJob(job); - if (rows > 0) - { - scheduler.resumeJob(ScheduleUtils.getJobKey(jobId, jobGroup)); - } - return rows; - } - - /** - * 鍒犻櫎浠诲姟鍚庯紝鎵�瀵瑰簲鐨則rigger涔熷皢琚垹闄� - * - * @param job 璋冨害淇℃伅 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int deleteJob(SysJob job) throws SchedulerException - { - Long jobId = job.getJobId(); - String jobGroup = job.getJobGroup(); - int rows = jobMapper.deleteJobById(jobId); - if (rows > 0) - { - scheduler.deleteJob(ScheduleUtils.getJobKey(jobId, jobGroup)); - } - return rows; - } - - /** - * 鎵归噺鍒犻櫎璋冨害淇℃伅 - * - * @param jobIds 闇�瑕佸垹闄ょ殑浠诲姟ID - * @return 缁撴灉 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteJobByIds(Long[] jobIds) throws SchedulerException - { - for (Long jobId : jobIds) - { - SysJob job = jobMapper.selectJobById(jobId); - deleteJob(job); - } - } - - /** - * 浠诲姟璋冨害鐘舵�佷慨鏀� - * - * @param job 璋冨害淇℃伅 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int changeStatus(SysJob job) throws SchedulerException - { - int rows = 0; - String status = job.getStatus(); - if (ScheduleConstants.Status.NORMAL.getValue().equals(status)) - { - rows = resumeJob(job); - } - else if (ScheduleConstants.Status.PAUSE.getValue().equals(status)) - { - rows = pauseJob(job); - } - return rows; - } - - /** - * 绔嬪嵆杩愯浠诲姟 - * - * @param job 璋冨害淇℃伅 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public boolean run(SysJob job) throws SchedulerException - { - boolean result = false; - Long jobId = job.getJobId(); - String jobGroup = job.getJobGroup(); - SysJob properties = selectJobById(job.getJobId()); - // 鍙傛暟 - JobDataMap dataMap = new JobDataMap(); - dataMap.put(ScheduleConstants.TASK_PROPERTIES, properties); - JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup); - if (scheduler.checkExists(jobKey)) - { - result = true; - scheduler.triggerJob(jobKey, dataMap); - } - return result; - } - - /** - * 鏂板浠诲姟 - * - * @param job 璋冨害淇℃伅 璋冨害淇℃伅 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int insertJob(SysJob job) throws SchedulerException, TaskException - { - job.setStatus(ScheduleConstants.Status.PAUSE.getValue()); - int rows = jobMapper.insertJob(job); - if (rows > 0) - { - ScheduleUtils.createScheduleJob(scheduler, job); - } - return rows; - } - - /** - * 鏇存柊浠诲姟鐨勬椂闂磋〃杈惧紡 - * - * @param job 璋冨害淇℃伅 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int updateJob(SysJob job) throws SchedulerException, TaskException - { - SysJob properties = selectJobById(job.getJobId()); - int rows = jobMapper.updateJob(job); - if (rows > 0) - { - updateSchedulerJob(job, properties.getJobGroup()); - } - return rows; - } - - /** - * 鏇存柊浠诲姟 - * - * @param job 浠诲姟瀵硅薄 - * @param jobGroup 浠诲姟缁勫悕 - */ - public void updateSchedulerJob(SysJob job, String jobGroup) throws SchedulerException, TaskException - { - Long jobId = job.getJobId(); - // 鍒ゆ柇鏄惁瀛樺湪 - JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup); - if (scheduler.checkExists(jobKey)) - { - // 闃叉鍒涘缓鏃跺瓨鍦ㄦ暟鎹棶棰� 鍏堢Щ闄わ紝鐒跺悗鍦ㄦ墽琛屽垱寤烘搷浣� - scheduler.deleteJob(jobKey); - } - ScheduleUtils.createScheduleJob(scheduler, job); - } - - /** - * 鏍¢獙cron琛ㄨ揪寮忔槸鍚︽湁鏁� - * - * @param cronExpression 琛ㄨ揪寮� - * @return 缁撴灉 - */ - @Override - public boolean checkCronExpressionIsValid(String cronExpression) - { - return CronUtils.isValid(cronExpression); - } -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/RyTask.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/RyTask.java deleted file mode 100644 index 873c7c0..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/RyTask.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.ruoyi.job.task; - -import org.springframework.stereotype.Component; -import com.se.common.core.utils.StringUtils; - -/** - * 瀹氭椂浠诲姟璋冨害娴嬭瘯 - * - * @author admin - */ -@Component("ryTask") -public class RyTask -{ - public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) - { - System.out.println(StringUtils.format("鎵ц澶氬弬鏂规硶锛� 瀛楃涓茬被鍨媨}锛屽竷灏旂被鍨媨}锛岄暱鏁村瀷{}锛屾诞鐐瑰瀷{}锛屾暣褰}", s, b, l, d, i)); - } - - public void ryParams(String params) - { - System.out.println("鎵ц鏈夊弬鏂规硶锛�" + params); - } - - public void ryNoParams() - { - System.out.println("鎵ц鏃犲弬鏂规硶"); - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/AbstractQuartzJob.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/AbstractQuartzJob.java deleted file mode 100644 index 1e01071..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/AbstractQuartzJob.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.ruoyi.job.util; - -import java.util.Date; -import org.quartz.Job; -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import com.se.common.core.constant.ScheduleConstants; -import com.se.common.core.utils.ExceptionUtil; -import com.se.common.core.utils.SpringUtils; -import com.se.common.core.utils.StringUtils; -import com.se.common.core.utils.bean.BeanUtils; -import com.ruoyi.job.domain.SysJob; -import com.ruoyi.job.domain.SysJobLog; -import com.ruoyi.job.service.ISysJobLogService; - -/** - * 鎶借薄quartz璋冪敤 - * - * @author admin - */ -public abstract class AbstractQuartzJob implements Job -{ - private static final Logger log = LoggerFactory.getLogger(AbstractQuartzJob.class); - - /** - * 绾跨▼鏈湴鍙橀噺 - */ - private static ThreadLocal<Date> threadLocal = new ThreadLocal<>(); - - @Override - public void execute(JobExecutionContext context) throws JobExecutionException - { - SysJob sysJob = new SysJob(); - BeanUtils.copyBeanProp(sysJob, context.getMergedJobDataMap().get(ScheduleConstants.TASK_PROPERTIES)); - try - { - before(context, sysJob); - if (sysJob != null) - { - doExecute(context, sysJob); - } - after(context, sysJob, null); - } - catch (Exception e) - { - log.error("浠诲姟鎵ц寮傚父 - 锛�", e); - after(context, sysJob, e); - } - } - - /** - * 鎵ц鍓� - * - * @param context 宸ヤ綔鎵ц涓婁笅鏂囧璞� - * @param sysJob 绯荤粺璁″垝浠诲姟 - */ - protected void before(JobExecutionContext context, SysJob sysJob) - { - threadLocal.set(new Date()); - } - - /** - * 鎵ц鍚� - * - * @param context 宸ヤ綔鎵ц涓婁笅鏂囧璞� - * @param sysJob 绯荤粺璁″垝浠诲姟 - */ - protected void after(JobExecutionContext context, SysJob sysJob, Exception e) - { - Date startTime = threadLocal.get(); - threadLocal.remove(); - - final SysJobLog sysJobLog = new SysJobLog(); - sysJobLog.setJobName(sysJob.getJobName()); - sysJobLog.setJobGroup(sysJob.getJobGroup()); - sysJobLog.setInvokeTarget(sysJob.getInvokeTarget()); - sysJobLog.setStartTime(startTime); - sysJobLog.setStopTime(new Date()); - long runMs = sysJobLog.getStopTime().getTime() - sysJobLog.getStartTime().getTime(); - sysJobLog.setJobMessage(sysJobLog.getJobName() + " 鎬诲叡鑰楁椂锛�" + runMs + "姣"); - if (e != null) - { - sysJobLog.setStatus("1"); - String errorMsg = StringUtils.substring(ExceptionUtil.getExceptionMessage(e), 0, 2000); - sysJobLog.setExceptionInfo(errorMsg); - } - else - { - sysJobLog.setStatus("0"); - } - - // 鍐欏叆鏁版嵁搴撳綋涓� - SpringUtils.getBean(ISysJobLogService.class).addJobLog(sysJobLog); - } - - /** - * 鎵ц鏂规硶锛岀敱瀛愮被閲嶈浇 - * - * @param context 宸ヤ綔鎵ц涓婁笅鏂囧璞� - * @param sysJob 绯荤粺璁″垝浠诲姟 - * @throws Exception 鎵ц杩囩▼涓殑寮傚父 - */ - protected abstract void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception; -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/CronUtils.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/CronUtils.java deleted file mode 100644 index 99c3f61..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/CronUtils.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.ruoyi.job.util; - -import java.text.ParseException; -import java.util.Date; -import org.quartz.CronExpression; - -/** - * cron琛ㄨ揪寮忓伐鍏风被 - * - * @author admin - * - */ -public class CronUtils -{ - /** - * 杩斿洖涓�涓竷灏斿�间唬琛ㄤ竴涓粰瀹氱殑Cron琛ㄨ揪寮忕殑鏈夋晥鎬� - * - * @param cronExpression Cron琛ㄨ揪寮� - * @return boolean 琛ㄨ揪寮忔槸鍚︽湁鏁� - */ - public static boolean isValid(String cronExpression) - { - return CronExpression.isValidExpression(cronExpression); - } - - /** - * 杩斿洖涓�涓瓧绗︿覆鍊�,琛ㄧず璇ユ秷鎭棤鏁圕ron琛ㄨ揪寮忕粰鍑烘湁鏁堟�� - * - * @param cronExpression Cron琛ㄨ揪寮� - * @return String 鏃犳晥鏃惰繑鍥炶〃杈惧紡閿欒鎻忚堪,濡傛灉鏈夋晥杩斿洖null - */ - public static String getInvalidMessage(String cronExpression) - { - try - { - new CronExpression(cronExpression); - return null; - } - catch (ParseException pe) - { - return pe.getMessage(); - } - } - - /** - * 杩斿洖涓嬩竴涓墽琛屾椂闂存牴鎹粰瀹氱殑Cron琛ㄨ揪寮� - * - * @param cronExpression Cron琛ㄨ揪寮� - * @return Date 涓嬫Cron琛ㄨ揪寮忔墽琛屾椂闂� - */ - public static Date getNextExecution(String cronExpression) - { - try - { - CronExpression cron = new CronExpression(cronExpression); - return cron.getNextValidTimeAfter(new Date(System.currentTimeMillis())); - } - catch (ParseException e) - { - throw new IllegalArgumentException(e.getMessage()); - } - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/JobInvokeUtil.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/JobInvokeUtil.java deleted file mode 100644 index 13001aa..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/JobInvokeUtil.java +++ /dev/null @@ -1,182 +0,0 @@ -package com.ruoyi.job.util; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.LinkedList; -import java.util.List; -import com.se.common.core.utils.SpringUtils; -import com.se.common.core.utils.StringUtils; -import com.ruoyi.job.domain.SysJob; - -/** - * 浠诲姟鎵ц宸ュ叿 - * - * @author admin - */ -public class JobInvokeUtil -{ - /** - * 鎵ц鏂规硶 - * - * @param sysJob 绯荤粺浠诲姟 - */ - public static void invokeMethod(SysJob sysJob) throws Exception - { - String invokeTarget = sysJob.getInvokeTarget(); - String beanName = getBeanName(invokeTarget); - String methodName = getMethodName(invokeTarget); - List<Object[]> methodParams = getMethodParams(invokeTarget); - - if (!isValidClassName(beanName)) - { - Object bean = SpringUtils.getBean(beanName); - invokeMethod(bean, methodName, methodParams); - } - else - { - Object bean = Class.forName(beanName).getDeclaredConstructor().newInstance(); - invokeMethod(bean, methodName, methodParams); - } - } - - /** - * 璋冪敤浠诲姟鏂规硶 - * - * @param bean 鐩爣瀵硅薄 - * @param methodName 鏂规硶鍚嶇О - * @param methodParams 鏂规硶鍙傛暟 - */ - private static void invokeMethod(Object bean, String methodName, List<Object[]> methodParams) - throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, - InvocationTargetException - { - if (StringUtils.isNotNull(methodParams) && methodParams.size() > 0) - { - Method method = bean.getClass().getMethod(methodName, getMethodParamsType(methodParams)); - method.invoke(bean, getMethodParamsValue(methodParams)); - } - else - { - Method method = bean.getClass().getMethod(methodName); - method.invoke(bean); - } - } - - /** - * 鏍¢獙鏄惁涓轰负class鍖呭悕 - * - * @param invokeTarget 鍚嶇О - * @return true鏄� false鍚� - */ - public static boolean isValidClassName(String invokeTarget) - { - return StringUtils.countMatches(invokeTarget, ".") > 1; - } - - /** - * 鑾峰彇bean鍚嶇О - * - * @param invokeTarget 鐩爣瀛楃涓� - * @return bean鍚嶇О - */ - public static String getBeanName(String invokeTarget) - { - String beanName = StringUtils.substringBefore(invokeTarget, "("); - return StringUtils.substringBeforeLast(beanName, "."); - } - - /** - * 鑾峰彇bean鏂规硶 - * - * @param invokeTarget 鐩爣瀛楃涓� - * @return method鏂规硶 - */ - public static String getMethodName(String invokeTarget) - { - String methodName = StringUtils.substringBefore(invokeTarget, "("); - return StringUtils.substringAfterLast(methodName, "."); - } - - /** - * 鑾峰彇method鏂规硶鍙傛暟鐩稿叧鍒楄〃 - * - * @param invokeTarget 鐩爣瀛楃涓� - * @return method鏂规硶鐩稿叧鍙傛暟鍒楄〃 - */ - public static List<Object[]> getMethodParams(String invokeTarget) - { - String methodStr = StringUtils.substringBetween(invokeTarget, "(", ")"); - if (StringUtils.isEmpty(methodStr)) - { - return null; - } - String[] methodParams = methodStr.split(",(?=([^\"']*[\"'][^\"']*[\"'])*[^\"']*$)"); - List<Object[]> classs = new LinkedList<>(); - for (int i = 0; i < methodParams.length; i++) - { - String str = StringUtils.trimToEmpty(methodParams[i]); - // String瀛楃涓茬被鍨嬶紝浠�'鎴�"寮�澶� - if (StringUtils.startsWithAny(str, "'", "\"")) - { - classs.add(new Object[] { StringUtils.substring(str, 1, str.length() - 1), String.class }); - } - // boolean甯冨皵绫诲瀷锛岀瓑浜巘rue鎴栬�協alse - else if ("true".equalsIgnoreCase(str) || "false".equalsIgnoreCase(str)) - { - classs.add(new Object[] { Boolean.valueOf(str), Boolean.class }); - } - // long闀挎暣褰紝浠缁撳熬 - else if (StringUtils.endsWith(str, "L")) - { - classs.add(new Object[] { Long.valueOf(StringUtils.substring(str, 0, str.length() - 1)), Long.class }); - } - // double娴偣绫诲瀷锛屼互D缁撳熬 - else if (StringUtils.endsWith(str, "D")) - { - classs.add(new Object[] { Double.valueOf(StringUtils.substring(str, 0, str.length() - 1)), Double.class }); - } - // 鍏朵粬绫诲瀷褰掔被涓烘暣褰� - else - { - classs.add(new Object[] { Integer.valueOf(str), Integer.class }); - } - } - return classs; - } - - /** - * 鑾峰彇鍙傛暟绫诲瀷 - * - * @param methodParams 鍙傛暟鐩稿叧鍒楄〃 - * @return 鍙傛暟绫诲瀷鍒楄〃 - */ - public static Class<?>[] getMethodParamsType(List<Object[]> methodParams) - { - Class<?>[] classs = new Class<?>[methodParams.size()]; - int index = 0; - for (Object[] os : methodParams) - { - classs[index] = (Class<?>) os[1]; - index++; - } - return classs; - } - - /** - * 鑾峰彇鍙傛暟鍊� - * - * @param methodParams 鍙傛暟鐩稿叧鍒楄〃 - * @return 鍙傛暟鍊煎垪琛� - */ - public static Object[] getMethodParamsValue(List<Object[]> methodParams) - { - Object[] classs = new Object[methodParams.size()]; - int index = 0; - for (Object[] os : methodParams) - { - classs[index] = (Object) os[0]; - index++; - } - return classs; - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/QuartzDisallowConcurrentExecution.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/QuartzDisallowConcurrentExecution.java deleted file mode 100644 index 58aa3f0..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/QuartzDisallowConcurrentExecution.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.ruoyi.job.util; - -import org.quartz.DisallowConcurrentExecution; -import org.quartz.JobExecutionContext; - -import com.ruoyi.job.domain.SysJob; - -/** - * 瀹氭椂浠诲姟澶勭悊锛堢姝㈠苟鍙戞墽琛岋級 - * - * @author admin - * - */ -@DisallowConcurrentExecution -public class QuartzDisallowConcurrentExecution extends AbstractQuartzJob -{ - @Override - protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception - { - JobInvokeUtil.invokeMethod(sysJob); - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/QuartzJobExecution.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/QuartzJobExecution.java deleted file mode 100644 index a34648b..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/QuartzJobExecution.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.ruoyi.job.util; - -import org.quartz.JobExecutionContext; - -import com.ruoyi.job.domain.SysJob; - -/** - * 瀹氭椂浠诲姟澶勭悊锛堝厑璁稿苟鍙戞墽琛岋級 - * - * @author admin - * - */ -public class QuartzJobExecution extends AbstractQuartzJob -{ - @Override - protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception - { - JobInvokeUtil.invokeMethod(sysJob); - } -} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/ScheduleUtils.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/ScheduleUtils.java deleted file mode 100644 index e76c6d5..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/ScheduleUtils.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.ruoyi.job.util; - -import org.quartz.CronScheduleBuilder; -import org.quartz.CronTrigger; -import org.quartz.Job; -import org.quartz.JobBuilder; -import org.quartz.JobDetail; -import org.quartz.JobKey; -import org.quartz.Scheduler; -import org.quartz.SchedulerException; -import org.quartz.TriggerBuilder; -import org.quartz.TriggerKey; -import com.se.common.core.constant.Constants; -import com.se.common.core.constant.ScheduleConstants; -import com.se.common.core.exception.job.TaskException; -import com.se.common.core.exception.job.TaskException.Code; -import com.se.common.core.utils.SpringUtils; -import com.se.common.core.utils.StringUtils; -import com.ruoyi.job.domain.SysJob; - -/** - * 瀹氭椂浠诲姟宸ュ叿绫� - * - * @author admin - * - */ -public class ScheduleUtils -{ - /** - * 寰楀埌quartz浠诲姟绫� - * - * @param sysJob 鎵ц璁″垝 - * @return 鍏蜂綋鎵ц浠诲姟绫� - */ - private static Class<? extends Job> getQuartzJobClass(SysJob sysJob) - { - boolean isConcurrent = "0".equals(sysJob.getConcurrent()); - return isConcurrent ? QuartzJobExecution.class : QuartzDisallowConcurrentExecution.class; - } - - /** - * 鏋勫缓浠诲姟瑙﹀彂瀵硅薄 - */ - public static TriggerKey getTriggerKey(Long jobId, String jobGroup) - { - return TriggerKey.triggerKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup); - } - - /** - * 鏋勫缓浠诲姟閿璞� - */ - public static JobKey getJobKey(Long jobId, String jobGroup) - { - return JobKey.jobKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup); - } - - /** - * 鍒涘缓瀹氭椂浠诲姟 - */ - public static void createScheduleJob(Scheduler scheduler, SysJob job) throws SchedulerException, TaskException - { - Class<? extends Job> jobClass = getQuartzJobClass(job); - // 鏋勫缓job淇℃伅 - Long jobId = job.getJobId(); - String jobGroup = job.getJobGroup(); - JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(getJobKey(jobId, jobGroup)).build(); - - // 琛ㄨ揪寮忚皟搴︽瀯寤哄櫒 - CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression()); - cronScheduleBuilder = handleCronScheduleMisfirePolicy(job, cronScheduleBuilder); - - // 鎸夋柊鐨刢ronExpression琛ㄨ揪寮忔瀯寤轰竴涓柊鐨則rigger - CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(jobId, jobGroup)) - .withSchedule(cronScheduleBuilder).build(); - - // 鏀惧叆鍙傛暟锛岃繍琛屾椂鐨勬柟娉曞彲浠ヨ幏鍙� - jobDetail.getJobDataMap().put(ScheduleConstants.TASK_PROPERTIES, job); - - // 鍒ゆ柇鏄惁瀛樺湪 - if (scheduler.checkExists(getJobKey(jobId, jobGroup))) - { - // 闃叉鍒涘缓鏃跺瓨鍦ㄦ暟鎹棶棰� 鍏堢Щ闄わ紝鐒跺悗鍦ㄦ墽琛屽垱寤烘搷浣� - scheduler.deleteJob(getJobKey(jobId, jobGroup)); - } - - // 鍒ゆ柇浠诲姟鏄惁杩囨湡 - if (StringUtils.isNotNull(CronUtils.getNextExecution(job.getCronExpression()))) - { - // 鎵ц璋冨害浠诲姟 - scheduler.scheduleJob(jobDetail, trigger); - } - - // 鏆傚仠浠诲姟 - if (job.getStatus().equals(ScheduleConstants.Status.PAUSE.getValue())) - { - scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup)); - } - } - - /** - * 璁剧疆瀹氭椂浠诲姟绛栫暐 - */ - public static CronScheduleBuilder handleCronScheduleMisfirePolicy(SysJob job, CronScheduleBuilder cb) - throws TaskException - { - switch (job.getMisfirePolicy()) - { - case ScheduleConstants.MISFIRE_DEFAULT: - return cb; - case ScheduleConstants.MISFIRE_IGNORE_MISFIRES: - return cb.withMisfireHandlingInstructionIgnoreMisfires(); - case ScheduleConstants.MISFIRE_FIRE_AND_PROCEED: - return cb.withMisfireHandlingInstructionFireAndProceed(); - case ScheduleConstants.MISFIRE_DO_NOTHING: - return cb.withMisfireHandlingInstructionDoNothing(); - default: - throw new TaskException("The task misfire policy '" + job.getMisfirePolicy() - + "' cannot be used in cron schedule tasks", Code.CONFIG_ERROR); - } - } - - /** - * 妫�鏌ュ寘鍚嶆槸鍚︿负鐧藉悕鍗曢厤缃� - * - * @param invokeTarget 鐩爣瀛楃涓� - * @return 缁撴灉 - */ - public static boolean whiteList(String invokeTarget) - { - String packageName = StringUtils.substringBefore(invokeTarget, "("); - int count = StringUtils.countMatches(packageName, "."); - if (count > 1) - { - return StringUtils.containsAnyIgnoreCase(invokeTarget, Constants.JOB_WHITELIST_STR); - } - Object obj = SpringUtils.getBean(StringUtils.split(invokeTarget, ".")[0]); - String beanPackageName = obj.getClass().getPackage().getName(); - return StringUtils.containsAnyIgnoreCase(beanPackageName, Constants.JOB_WHITELIST_STR) - && !StringUtils.containsAnyIgnoreCase(beanPackageName, Constants.JOB_ERROR_STR); - } -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java deleted file mode 100644 index 7823d25..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.ruoyi.system; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import com.se.common.security.annotation.EnableCustomConfig; -import com.se.common.security.annotation.EnableRyFeignClients; -import com.se.common.swagger.annotation.EnableCustomSwagger2; - -/** - * 绯荤粺妯″潡 - * - * @author admin - */ -@EnableCustomConfig -@EnableCustomSwagger2 -@EnableRyFeignClients -@SpringBootApplication -public class RuoYiSystemApplication -{ - public static void main(String[] args) - { - SpringApplication.run(RuoYiSystemApplication.class, args); - System.out.println("(鈾モ棤鈥库棤)锞夛緸 绯荤粺妯″潡鍚姩鎴愬姛 醿�(麓凇`醿�)锞� \n" + - " .-------. ____ __ \n" + - " | _ _ \\ \\ \\ / / \n" + - " | ( ' ) | \\ _. / ' \n" + - " |(_ o _) / _( )_ .' \n" + - " | (_,_).' __ ___(_ o _)' \n" + - " | |\\ \\ | || |(_,_)' \n" + - " | | \\ `' /| `-' / \n" + - " | | \\ / \\ / \n" + - " ''-' `'-' `-..-' "); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysConfigController.java deleted file mode 100644 index f8cb2a8..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysConfigController.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.ruoyi.system.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.se.common.core.utils.poi.ExcelUtil; -import com.se.common.core.web.controller.BaseController; -import com.se.common.core.web.domain.AjaxResult; -import com.se.common.core.web.page.TableDataInfo; -import com.se.common.log.annotation.Log; -import com.se.common.log.enums.BusinessType; -import com.se.common.security.annotation.RequiresPermissions; -import com.se.common.security.utils.SecurityUtils; -import com.ruoyi.system.domain.SysConfig; -import com.ruoyi.system.service.ISysConfigService; - -/** - * 鍙傛暟閰嶇疆 淇℃伅鎿嶄綔澶勭悊 - * - * @author admin - */ -@RestController -@RequestMapping("/config") -public class SysConfigController extends BaseController -{ - @Autowired - private ISysConfigService configService; - - /** - * 鑾峰彇鍙傛暟閰嶇疆鍒楄〃 - */ - @RequiresPermissions("system:config:list") - @GetMapping("/list") - public TableDataInfo list(SysConfig config) - { - startPage(); - List<SysConfig> list = configService.selectConfigList(config); - return getDataTable(list); - } - - @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.EXPORT) - @RequiresPermissions("system:config:export") - @PostMapping("/export") - public void export(HttpServletResponse response, SysConfig config) - { - List<SysConfig> list = configService.selectConfigList(config); - ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class); - util.exportExcel(response, list, "鍙傛暟鏁版嵁"); - } - - /** - * 鏍规嵁鍙傛暟缂栧彿鑾峰彇璇︾粏淇℃伅 - */ - @GetMapping(value = "/{configId}") - public AjaxResult getInfo(@PathVariable Long configId) - { - return success(configService.selectConfigById(configId)); - } - - /** - * 鏍规嵁鍙傛暟閿悕鏌ヨ鍙傛暟鍊� - */ - @GetMapping(value = "/configKey/{configKey}") - public AjaxResult getConfigKey(@PathVariable String configKey) - { - return success(configService.selectConfigByKey(configKey)); - } - - /** - * 鏂板鍙傛暟閰嶇疆 - */ - @RequiresPermissions("system:config:add") - @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@Validated @RequestBody SysConfig config) - { - if (!configService.checkConfigKeyUnique(config)) - { - return error("鏂板鍙傛暟'" + config.getConfigName() + "'澶辫触锛屽弬鏁伴敭鍚嶅凡瀛樺湪"); - } - config.setCreateBy(SecurityUtils.getUsername()); - return toAjax(configService.insertConfig(config)); - } - - /** - * 淇敼鍙傛暟閰嶇疆 - */ - @RequiresPermissions("system:config:edit") - @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@Validated @RequestBody SysConfig config) - { - if (!configService.checkConfigKeyUnique(config)) - { - return error("淇敼鍙傛暟'" + config.getConfigName() + "'澶辫触锛屽弬鏁伴敭鍚嶅凡瀛樺湪"); - } - config.setUpdateBy(SecurityUtils.getUsername()); - return toAjax(configService.updateConfig(config)); - } - - /** - * 鍒犻櫎鍙傛暟閰嶇疆 - */ - @RequiresPermissions("system:config:remove") - @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.DELETE) - @DeleteMapping("/{configIds}") - public AjaxResult remove(@PathVariable Long[] configIds) - { - configService.deleteConfigByIds(configIds); - return success(); - } - - /** - * 鍒锋柊鍙傛暟缂撳瓨 - */ - @RequiresPermissions("system:config:remove") - @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.CLEAN) - @DeleteMapping("/refreshCache") - public AjaxResult refreshCache() - { - configService.resetConfigCache(); - return success(); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDeptController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDeptController.java deleted file mode 100644 index 12cddef..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDeptController.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.ruoyi.system.controller; - -import java.util.List; -import org.apache.commons.lang3.ArrayUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.se.common.core.constant.UserConstants; -import com.se.common.core.utils.StringUtils; -import com.se.common.core.web.controller.BaseController; -import com.se.common.core.web.domain.AjaxResult; -import com.se.common.log.annotation.Log; -import com.se.common.log.enums.BusinessType; -import com.se.common.security.annotation.RequiresPermissions; -import com.se.common.security.utils.SecurityUtils; -import com.se.system.api.domain.SysDept; -import com.ruoyi.system.service.ISysDeptService; - -/** - * 閮ㄩ棬淇℃伅 - * - * @author admin - */ -@RestController -@RequestMapping("/dept") -public class SysDeptController extends BaseController -{ - @Autowired - private ISysDeptService deptService; - - /** - * 鑾峰彇閮ㄩ棬鍒楄〃 - */ - @RequiresPermissions("system:dept:list") - @GetMapping("/list") - public AjaxResult list(SysDept dept) - { - List<SysDept> depts = deptService.selectDeptList(dept); - return success(depts); - } - - /** - * 鏌ヨ閮ㄩ棬鍒楄〃锛堟帓闄よ妭鐐癸級 - */ - @RequiresPermissions("system:dept:list") - @GetMapping("/list/exclude/{deptId}") - public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) - { - List<SysDept> depts = deptService.selectDeptList(new SysDept()); - depts.removeIf(d -> d.getDeptId().intValue() == deptId || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + "")); - return success(depts); - } - - /** - * 鏍规嵁閮ㄩ棬缂栧彿鑾峰彇璇︾粏淇℃伅 - */ - @RequiresPermissions("system:dept:query") - @GetMapping(value = "/{deptId}") - public AjaxResult getInfo(@PathVariable Long deptId) - { - deptService.checkDeptDataScope(deptId); - return success(deptService.selectDeptById(deptId)); - } - - /** - * 鏂板閮ㄩ棬 - */ - @RequiresPermissions("system:dept:add") - @Log(title = "閮ㄩ棬绠$悊", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@Validated @RequestBody SysDept dept) - { - if (!deptService.checkDeptNameUnique(dept)) - { - return error("鏂板閮ㄩ棬'" + dept.getDeptName() + "'澶辫触锛岄儴闂ㄥ悕绉板凡瀛樺湪"); - } - dept.setCreateBy(SecurityUtils.getUsername()); - return toAjax(deptService.insertDept(dept)); - } - - /** - * 淇敼閮ㄩ棬 - */ - @RequiresPermissions("system:dept:edit") - @Log(title = "閮ㄩ棬绠$悊", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@Validated @RequestBody SysDept dept) - { - Long deptId = dept.getDeptId(); - deptService.checkDeptDataScope(deptId); - if (!deptService.checkDeptNameUnique(dept)) - { - return error("淇敼閮ㄩ棬'" + dept.getDeptName() + "'澶辫触锛岄儴闂ㄥ悕绉板凡瀛樺湪"); - } - else if (dept.getParentId().equals(deptId)) - { - return error("淇敼閮ㄩ棬'" + dept.getDeptName() + "'澶辫触锛屼笂绾ч儴闂ㄤ笉鑳芥槸鑷繁"); - } - else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) && deptService.selectNormalChildrenDeptById(deptId) > 0) - { - return error("璇ラ儴闂ㄥ寘鍚湭鍋滅敤鐨勫瓙閮ㄩ棬锛�"); - } - dept.setUpdateBy(SecurityUtils.getUsername()); - return toAjax(deptService.updateDept(dept)); - } - - /** - * 鍒犻櫎閮ㄩ棬 - */ - @RequiresPermissions("system:dept:remove") - @Log(title = "閮ㄩ棬绠$悊", businessType = BusinessType.DELETE) - @DeleteMapping("/{deptId}") - public AjaxResult remove(@PathVariable Long deptId) - { - if (deptService.hasChildByDeptId(deptId)) - { - return warn("瀛樺湪涓嬬骇閮ㄩ棬,涓嶅厑璁稿垹闄�"); - } - if (deptService.checkDeptExistUser(deptId)) - { - return warn("閮ㄩ棬瀛樺湪鐢ㄦ埛,涓嶅厑璁稿垹闄�"); - } - deptService.checkDeptDataScope(deptId); - return toAjax(deptService.deleteDeptById(deptId)); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictDataController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictDataController.java deleted file mode 100644 index 53e8953..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictDataController.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.ruoyi.system.controller; - -import java.util.ArrayList; -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.se.common.core.utils.StringUtils; -import com.se.common.core.utils.poi.ExcelUtil; -import com.se.common.core.web.controller.BaseController; -import com.se.common.core.web.domain.AjaxResult; -import com.se.common.core.web.page.TableDataInfo; -import com.se.common.log.annotation.Log; -import com.se.common.log.enums.BusinessType; -import com.se.common.security.annotation.RequiresPermissions; -import com.se.common.security.utils.SecurityUtils; -import com.se.system.api.domain.SysDictData; -import com.ruoyi.system.service.ISysDictDataService; -import com.ruoyi.system.service.ISysDictTypeService; - -/** - * 鏁版嵁瀛楀吀淇℃伅 - * - * @author admin - */ -@RestController -@RequestMapping("/dict/data") -public class SysDictDataController extends BaseController -{ - @Autowired - private ISysDictDataService dictDataService; - - @Autowired - private ISysDictTypeService dictTypeService; - - @RequiresPermissions("system:dict:list") - @GetMapping("/list") - public TableDataInfo list(SysDictData dictData) - { - startPage(); - List<SysDictData> list = dictDataService.selectDictDataList(dictData); - return getDataTable(list); - } - - @Log(title = "瀛楀吀鏁版嵁", businessType = BusinessType.EXPORT) - @RequiresPermissions("system:dict:export") - @PostMapping("/export") - public void export(HttpServletResponse response, SysDictData dictData) - { - List<SysDictData> list = dictDataService.selectDictDataList(dictData); - ExcelUtil<SysDictData> util = new ExcelUtil<SysDictData>(SysDictData.class); - util.exportExcel(response, list, "瀛楀吀鏁版嵁"); - } - - /** - * 鏌ヨ瀛楀吀鏁版嵁璇︾粏 - */ - @RequiresPermissions("system:dict:query") - @GetMapping(value = "/{dictCode}") - public AjaxResult getInfo(@PathVariable Long dictCode) - { - return success(dictDataService.selectDictDataById(dictCode)); - } - - /** - * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁淇℃伅 - */ - @GetMapping(value = "/type/{dictType}") - public AjaxResult dictType(@PathVariable String dictType) - { - List<SysDictData> data = dictTypeService.selectDictDataByType(dictType); - if (StringUtils.isNull(data)) - { - data = new ArrayList<SysDictData>(); - } - return success(data); - } - - /** - * 鏂板瀛楀吀绫诲瀷 - */ - @RequiresPermissions("system:dict:add") - @Log(title = "瀛楀吀鏁版嵁", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@Validated @RequestBody SysDictData dict) - { - dict.setCreateBy(SecurityUtils.getUsername()); - return toAjax(dictDataService.insertDictData(dict)); - } - - /** - * 淇敼淇濆瓨瀛楀吀绫诲瀷 - */ - @RequiresPermissions("system:dict:edit") - @Log(title = "瀛楀吀鏁版嵁", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@Validated @RequestBody SysDictData dict) - { - dict.setUpdateBy(SecurityUtils.getUsername()); - return toAjax(dictDataService.updateDictData(dict)); - } - - /** - * 鍒犻櫎瀛楀吀绫诲瀷 - */ - @RequiresPermissions("system:dict:remove") - @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.DELETE) - @DeleteMapping("/{dictCodes}") - public AjaxResult remove(@PathVariable Long[] dictCodes) - { - dictDataService.deleteDictDataByIds(dictCodes); - return success(); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictTypeController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictTypeController.java deleted file mode 100644 index fe225a6..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictTypeController.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.ruoyi.system.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.se.common.core.utils.poi.ExcelUtil; -import com.se.common.core.web.controller.BaseController; -import com.se.common.core.web.domain.AjaxResult; -import com.se.common.core.web.page.TableDataInfo; -import com.se.common.log.annotation.Log; -import com.se.common.log.enums.BusinessType; -import com.se.common.security.annotation.RequiresPermissions; -import com.se.common.security.utils.SecurityUtils; -import com.se.system.api.domain.SysDictType; -import com.ruoyi.system.service.ISysDictTypeService; - -/** - * 鏁版嵁瀛楀吀淇℃伅 - * - * @author admin - */ -@RestController -@RequestMapping("/dict/type") -public class SysDictTypeController extends BaseController -{ - @Autowired - private ISysDictTypeService dictTypeService; - - @RequiresPermissions("system:dict:list") - @GetMapping("/list") - public TableDataInfo list(SysDictType dictType) - { - startPage(); - List<SysDictType> list = dictTypeService.selectDictTypeList(dictType); - return getDataTable(list); - } - - @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.EXPORT) - @RequiresPermissions("system:dict:export") - @PostMapping("/export") - public void export(HttpServletResponse response, SysDictType dictType) - { - List<SysDictType> list = dictTypeService.selectDictTypeList(dictType); - ExcelUtil<SysDictType> util = new ExcelUtil<SysDictType>(SysDictType.class); - util.exportExcel(response, list, "瀛楀吀绫诲瀷"); - } - - /** - * 鏌ヨ瀛楀吀绫诲瀷璇︾粏 - */ - @RequiresPermissions("system:dict:query") - @GetMapping(value = "/{dictId}") - public AjaxResult getInfo(@PathVariable Long dictId) - { - return success(dictTypeService.selectDictTypeById(dictId)); - } - - /** - * 鏂板瀛楀吀绫诲瀷 - */ - @RequiresPermissions("system:dict:add") - @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@Validated @RequestBody SysDictType dict) - { - if (!dictTypeService.checkDictTypeUnique(dict)) - { - return error("鏂板瀛楀吀'" + dict.getDictName() + "'澶辫触锛屽瓧鍏哥被鍨嬪凡瀛樺湪"); - } - dict.setCreateBy(SecurityUtils.getUsername()); - return toAjax(dictTypeService.insertDictType(dict)); - } - - /** - * 淇敼瀛楀吀绫诲瀷 - */ - @RequiresPermissions("system:dict:edit") - @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@Validated @RequestBody SysDictType dict) - { - if (!dictTypeService.checkDictTypeUnique(dict)) - { - return error("淇敼瀛楀吀'" + dict.getDictName() + "'澶辫触锛屽瓧鍏哥被鍨嬪凡瀛樺湪"); - } - dict.setUpdateBy(SecurityUtils.getUsername()); - return toAjax(dictTypeService.updateDictType(dict)); - } - - /** - * 鍒犻櫎瀛楀吀绫诲瀷 - */ - @RequiresPermissions("system:dict:remove") - @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.DELETE) - @DeleteMapping("/{dictIds}") - public AjaxResult remove(@PathVariable Long[] dictIds) - { - dictTypeService.deleteDictTypeByIds(dictIds); - return success(); - } - - /** - * 鍒锋柊瀛楀吀缂撳瓨 - */ - @RequiresPermissions("system:dict:remove") - @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.CLEAN) - @DeleteMapping("/refreshCache") - public AjaxResult refreshCache() - { - dictTypeService.resetDictCache(); - return success(); - } - - /** - * 鑾峰彇瀛楀吀閫夋嫨妗嗗垪琛� - */ - @GetMapping("/optionselect") - public AjaxResult optionselect() - { - List<SysDictType> dictTypes = dictTypeService.selectDictTypeAll(); - return success(dictTypes); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLogininforController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLogininforController.java deleted file mode 100644 index ce44741..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLogininforController.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.ruoyi.system.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.se.common.core.constant.CacheConstants; -import com.se.common.core.utils.poi.ExcelUtil; -import com.se.common.core.web.controller.BaseController; -import com.se.common.core.web.domain.AjaxResult; -import com.se.common.core.web.page.TableDataInfo; -import com.se.common.log.annotation.Log; -import com.se.common.log.enums.BusinessType; -import com.se.common.redis.service.RedisService; -import com.se.common.security.annotation.InnerAuth; -import com.se.common.security.annotation.RequiresPermissions; -import com.se.system.api.domain.SysLogininfor; -import com.ruoyi.system.service.ISysLogininforService; - -/** - * 绯荤粺璁块棶璁板綍 - * - * @author admin - */ -@RestController -@RequestMapping("/logininfor") -public class SysLogininforController extends BaseController -{ - @Autowired - private ISysLogininforService logininforService; - - @Autowired - private RedisService redisService; - - @RequiresPermissions("system:logininfor:list") - @GetMapping("/list") - public TableDataInfo list(SysLogininfor logininfor) - { - startPage(); - List<SysLogininfor> list = logininforService.selectLogininforList(logininfor); - return getDataTable(list); - } - - @Log(title = "鐧诲綍鏃ュ織", businessType = BusinessType.EXPORT) - @RequiresPermissions("system:logininfor:export") - @PostMapping("/export") - public void export(HttpServletResponse response, SysLogininfor logininfor) - { - List<SysLogininfor> list = logininforService.selectLogininforList(logininfor); - ExcelUtil<SysLogininfor> util = new ExcelUtil<SysLogininfor>(SysLogininfor.class); - util.exportExcel(response, list, "鐧诲綍鏃ュ織"); - } - - @RequiresPermissions("system:logininfor:remove") - @Log(title = "鐧诲綍鏃ュ織", businessType = BusinessType.DELETE) - @DeleteMapping("/{infoIds}") - public AjaxResult remove(@PathVariable Long[] infoIds) - { - return toAjax(logininforService.deleteLogininforByIds(infoIds)); - } - - @RequiresPermissions("system:logininfor:remove") - @Log(title = "鐧诲綍鏃ュ織", businessType = BusinessType.DELETE) - @DeleteMapping("/clean") - public AjaxResult clean() - { - logininforService.cleanLogininfor(); - return success(); - } - - @RequiresPermissions("system:logininfor:unlock") - @Log(title = "璐︽埛瑙i攣", businessType = BusinessType.OTHER) - @GetMapping("/unlock/{userName}") - public AjaxResult unlock(@PathVariable("userName") String userName) - { - redisService.deleteObject(CacheConstants.PWD_ERR_CNT_KEY + userName); - return success(); - } - - @InnerAuth - @PostMapping - public AjaxResult add(@RequestBody SysLogininfor logininfor) - { - return toAjax(logininforService.insertLogininfor(logininfor)); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysMenuController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysMenuController.java deleted file mode 100644 index d8f8b72..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysMenuController.java +++ /dev/null @@ -1,159 +0,0 @@ -package com.ruoyi.system.controller; - -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.se.common.core.constant.UserConstants; -import com.se.common.core.utils.StringUtils; -import com.se.common.core.web.controller.BaseController; -import com.se.common.core.web.domain.AjaxResult; -import com.se.common.log.annotation.Log; -import com.se.common.log.enums.BusinessType; -import com.se.common.security.annotation.RequiresPermissions; -import com.se.common.security.utils.SecurityUtils; -import com.ruoyi.system.domain.SysMenu; -import com.ruoyi.system.service.ISysMenuService; - -/** - * 鑿滃崟淇℃伅 - * - * @author admin - */ -@RestController -@RequestMapping("/menu") -public class SysMenuController extends BaseController -{ - @Autowired - private ISysMenuService menuService; - - /** - * 鑾峰彇鑿滃崟鍒楄〃 - */ - @RequiresPermissions("system:menu:list") - @GetMapping("/list") - public AjaxResult list(SysMenu menu) - { - Long userId = SecurityUtils.getUserId(); - List<SysMenu> menus = menuService.selectMenuList(menu, userId); - return success(menus); - } - - /** - * 鏍规嵁鑿滃崟缂栧彿鑾峰彇璇︾粏淇℃伅 - */ - @RequiresPermissions("system:menu:query") - @GetMapping(value = "/{menuId}") - public AjaxResult getInfo(@PathVariable Long menuId) - { - return success(menuService.selectMenuById(menuId)); - } - - /** - * 鑾峰彇鑿滃崟涓嬫媺鏍戝垪琛� - */ - @GetMapping("/treeselect") - public AjaxResult treeselect(SysMenu menu) - { - Long userId = SecurityUtils.getUserId(); - List<SysMenu> menus = menuService.selectMenuList(menu, userId); - return success(menuService.buildMenuTreeSelect(menus)); - } - - /** - * 鍔犺浇瀵瑰簲瑙掕壊鑿滃崟鍒楄〃鏍� - */ - @GetMapping(value = "/roleMenuTreeselect/{roleId}") - public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId) - { - Long userId = SecurityUtils.getUserId(); - List<SysMenu> menus = menuService.selectMenuList(userId); - AjaxResult ajax = AjaxResult.success(); - ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId)); - ajax.put("menus", menuService.buildMenuTreeSelect(menus)); - return ajax; - } - - /** - * 鏂板鑿滃崟 - */ - @RequiresPermissions("system:menu:add") - @Log(title = "鑿滃崟绠$悊", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@Validated @RequestBody SysMenu menu) - { - if (!menuService.checkMenuNameUnique(menu)) - { - return error("鏂板鑿滃崟'" + menu.getMenuName() + "'澶辫触锛岃彍鍗曞悕绉板凡瀛樺湪"); - } - else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) - { - return error("鏂板鑿滃崟'" + menu.getMenuName() + "'澶辫触锛屽湴鍧�蹇呴』浠ttp(s)://寮�澶�"); - } - menu.setCreateBy(SecurityUtils.getUsername()); - return toAjax(menuService.insertMenu(menu)); - } - - /** - * 淇敼鑿滃崟 - */ - @RequiresPermissions("system:menu:edit") - @Log(title = "鑿滃崟绠$悊", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@Validated @RequestBody SysMenu menu) - { - if (!menuService.checkMenuNameUnique(menu)) - { - return error("淇敼鑿滃崟'" + menu.getMenuName() + "'澶辫触锛岃彍鍗曞悕绉板凡瀛樺湪"); - } - else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) - { - return error("淇敼鑿滃崟'" + menu.getMenuName() + "'澶辫触锛屽湴鍧�蹇呴』浠ttp(s)://寮�澶�"); - } - else if (menu.getMenuId().equals(menu.getParentId())) - { - return error("淇敼鑿滃崟'" + menu.getMenuName() + "'澶辫触锛屼笂绾ц彍鍗曚笉鑳介�夋嫨鑷繁"); - } - menu.setUpdateBy(SecurityUtils.getUsername()); - return toAjax(menuService.updateMenu(menu)); - } - - /** - * 鍒犻櫎鑿滃崟 - */ - @RequiresPermissions("system:menu:remove") - @Log(title = "鑿滃崟绠$悊", businessType = BusinessType.DELETE) - @DeleteMapping("/{menuId}") - public AjaxResult remove(@PathVariable("menuId") Long menuId) - { - if (menuService.hasChildByMenuId(menuId)) - { - return warn("瀛樺湪瀛愯彍鍗�,涓嶅厑璁稿垹闄�"); - } - if (menuService.checkMenuExistRole(menuId)) - { - return warn("鑿滃崟宸插垎閰�,涓嶅厑璁稿垹闄�"); - } - return toAjax(menuService.deleteMenuById(menuId)); - } - - /** - * 鑾峰彇璺敱淇℃伅 - * - * @return 璺敱淇℃伅 - */ - @GetMapping("getRouters") - public AjaxResult getRouters() - { - Long userId = SecurityUtils.getUserId(); - List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId); - return success(menuService.buildMenus(menus)); - } -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysNoticeController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysNoticeController.java deleted file mode 100644 index 0e0c3a3..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysNoticeController.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.ruoyi.system.controller; - -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.se.common.core.web.controller.BaseController; -import com.se.common.core.web.domain.AjaxResult; -import com.se.common.core.web.page.TableDataInfo; -import com.se.common.log.annotation.Log; -import com.se.common.log.enums.BusinessType; -import com.se.common.security.annotation.RequiresPermissions; -import com.se.common.security.utils.SecurityUtils; -import com.ruoyi.system.domain.SysNotice; -import com.ruoyi.system.service.ISysNoticeService; - -/** - * 鍏憡 淇℃伅鎿嶄綔澶勭悊 - * - * @author admin - */ -@RestController -@RequestMapping("/notice") -public class SysNoticeController extends BaseController -{ - @Autowired - private ISysNoticeService noticeService; - - /** - * 鑾峰彇閫氱煡鍏憡鍒楄〃 - */ - @RequiresPermissions("system:notice:list") - @GetMapping("/list") - public TableDataInfo list(SysNotice notice) - { - startPage(); - List<SysNotice> list = noticeService.selectNoticeList(notice); - return getDataTable(list); - } - - /** - * 鏍规嵁閫氱煡鍏憡缂栧彿鑾峰彇璇︾粏淇℃伅 - */ - @RequiresPermissions("system:notice:query") - @GetMapping(value = "/{noticeId}") - public AjaxResult getInfo(@PathVariable Long noticeId) - { - return success(noticeService.selectNoticeById(noticeId)); - } - - /** - * 鏂板閫氱煡鍏憡 - */ - @RequiresPermissions("system:notice:add") - @Log(title = "閫氱煡鍏憡", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@Validated @RequestBody SysNotice notice) - { - notice.setCreateBy(SecurityUtils.getUsername()); - return toAjax(noticeService.insertNotice(notice)); - } - - /** - * 淇敼閫氱煡鍏憡 - */ - @RequiresPermissions("system:notice:edit") - @Log(title = "閫氱煡鍏憡", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@Validated @RequestBody SysNotice notice) - { - notice.setUpdateBy(SecurityUtils.getUsername()); - return toAjax(noticeService.updateNotice(notice)); - } - - /** - * 鍒犻櫎閫氱煡鍏憡 - */ - @RequiresPermissions("system:notice:remove") - @Log(title = "閫氱煡鍏憡", businessType = BusinessType.DELETE) - @DeleteMapping("/{noticeIds}") - public AjaxResult remove(@PathVariable Long[] noticeIds) - { - return toAjax(noticeService.deleteNoticeByIds(noticeIds)); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java deleted file mode 100644 index 4439026..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.ruoyi.system.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.se.common.core.utils.poi.ExcelUtil; -import com.se.common.core.web.controller.BaseController; -import com.se.common.core.web.domain.AjaxResult; -import com.se.common.core.web.page.TableDataInfo; -import com.se.common.log.annotation.Log; -import com.se.common.log.enums.BusinessType; -import com.se.common.security.annotation.InnerAuth; -import com.se.common.security.annotation.RequiresPermissions; -import com.se.system.api.domain.SysOperLog; -import com.ruoyi.system.service.ISysOperLogService; - -/** - * 鎿嶄綔鏃ュ織璁板綍 - * - * @author admin - */ -@RestController -@RequestMapping("/operlog") -public class SysOperlogController extends BaseController -{ - @Autowired - private ISysOperLogService operLogService; - - @RequiresPermissions("system:operlog:list") - @GetMapping("/list") - public TableDataInfo list(SysOperLog operLog) - { - startPage(); - List<SysOperLog> list = operLogService.selectOperLogList(operLog); - return getDataTable(list); - } - - @Log(title = "鎿嶄綔鏃ュ織", businessType = BusinessType.EXPORT) - @RequiresPermissions("system:operlog:export") - @PostMapping("/export") - public void export(HttpServletResponse response, SysOperLog operLog) - { - List<SysOperLog> list = operLogService.selectOperLogList(operLog); - ExcelUtil<SysOperLog> util = new ExcelUtil<SysOperLog>(SysOperLog.class); - util.exportExcel(response, list, "鎿嶄綔鏃ュ織"); - } - - @Log(title = "鎿嶄綔鏃ュ織", businessType = BusinessType.DELETE) - @RequiresPermissions("system:operlog:remove") - @DeleteMapping("/{operIds}") - public AjaxResult remove(@PathVariable Long[] operIds) - { - return toAjax(operLogService.deleteOperLogByIds(operIds)); - } - - @RequiresPermissions("system:operlog:remove") - @Log(title = "鎿嶄綔鏃ュ織", businessType = BusinessType.CLEAN) - @DeleteMapping("/clean") - public AjaxResult clean() - { - operLogService.cleanOperLog(); - return success(); - } - - @InnerAuth - @PostMapping - public AjaxResult add(@RequestBody SysOperLog operLog) - { - return toAjax(operLogService.insertOperlog(operLog)); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysPostController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysPostController.java deleted file mode 100644 index c0fbcb8..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysPostController.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.ruoyi.system.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.se.common.core.utils.poi.ExcelUtil; -import com.se.common.core.web.controller.BaseController; -import com.se.common.core.web.domain.AjaxResult; -import com.se.common.core.web.page.TableDataInfo; -import com.se.common.log.annotation.Log; -import com.se.common.log.enums.BusinessType; -import com.se.common.security.annotation.RequiresPermissions; -import com.se.common.security.utils.SecurityUtils; -import com.ruoyi.system.domain.SysPost; -import com.ruoyi.system.service.ISysPostService; - -/** - * 宀椾綅淇℃伅鎿嶄綔澶勭悊 - * - * @author admin - */ -@RestController -@RequestMapping("/post") -public class SysPostController extends BaseController -{ - @Autowired - private ISysPostService postService; - - /** - * 鑾峰彇宀椾綅鍒楄〃 - */ - @RequiresPermissions("system:post:list") - @GetMapping("/list") - public TableDataInfo list(SysPost post) - { - startPage(); - List<SysPost> list = postService.selectPostList(post); - return getDataTable(list); - } - - @Log(title = "宀椾綅绠$悊", businessType = BusinessType.EXPORT) - @RequiresPermissions("system:post:export") - @PostMapping("/export") - public void export(HttpServletResponse response, SysPost post) - { - List<SysPost> list = postService.selectPostList(post); - ExcelUtil<SysPost> util = new ExcelUtil<SysPost>(SysPost.class); - util.exportExcel(response, list, "宀椾綅鏁版嵁"); - } - - /** - * 鏍规嵁宀椾綅缂栧彿鑾峰彇璇︾粏淇℃伅 - */ - @RequiresPermissions("system:post:query") - @GetMapping(value = "/{postId}") - public AjaxResult getInfo(@PathVariable Long postId) - { - return success(postService.selectPostById(postId)); - } - - /** - * 鏂板宀椾綅 - */ - @RequiresPermissions("system:post:add") - @Log(title = "宀椾綅绠$悊", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@Validated @RequestBody SysPost post) - { - if (!postService.checkPostNameUnique(post)) - { - return error("鏂板宀椾綅'" + post.getPostName() + "'澶辫触锛屽矖浣嶅悕绉板凡瀛樺湪"); - } - else if (!postService.checkPostCodeUnique(post)) - { - return error("鏂板宀椾綅'" + post.getPostName() + "'澶辫触锛屽矖浣嶇紪鐮佸凡瀛樺湪"); - } - post.setCreateBy(SecurityUtils.getUsername()); - return toAjax(postService.insertPost(post)); - } - - /** - * 淇敼宀椾綅 - */ - @RequiresPermissions("system:post:edit") - @Log(title = "宀椾綅绠$悊", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@Validated @RequestBody SysPost post) - { - if (!postService.checkPostNameUnique(post)) - { - return error("淇敼宀椾綅'" + post.getPostName() + "'澶辫触锛屽矖浣嶅悕绉板凡瀛樺湪"); - } - else if (!postService.checkPostCodeUnique(post)) - { - return error("淇敼宀椾綅'" + post.getPostName() + "'澶辫触锛屽矖浣嶇紪鐮佸凡瀛樺湪"); - } - post.setUpdateBy(SecurityUtils.getUsername()); - return toAjax(postService.updatePost(post)); - } - - /** - * 鍒犻櫎宀椾綅 - */ - @RequiresPermissions("system:post:remove") - @Log(title = "宀椾綅绠$悊", businessType = BusinessType.DELETE) - @DeleteMapping("/{postIds}") - public AjaxResult remove(@PathVariable Long[] postIds) - { - return toAjax(postService.deletePostByIds(postIds)); - } - - /** - * 鑾峰彇宀椾綅閫夋嫨妗嗗垪琛� - */ - @GetMapping("/optionselect") - public AjaxResult optionselect() - { - List<SysPost> posts = postService.selectPostAll(); - return success(posts); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysProfileController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysProfileController.java deleted file mode 100644 index 18290d2..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysProfileController.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.ruoyi.system.controller; - -import java.util.Arrays; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; -import com.se.common.core.domain.R; -import com.se.common.core.utils.StringUtils; -import com.se.common.core.utils.file.FileTypeUtils; -import com.se.common.core.utils.file.MimeTypeUtils; -import com.se.common.core.web.controller.BaseController; -import com.se.common.core.web.domain.AjaxResult; -import com.se.common.log.annotation.Log; -import com.se.common.log.enums.BusinessType; -import com.se.common.security.service.TokenService; -import com.se.common.security.utils.SecurityUtils; -import com.se.system.api.RemoteFileService; -import com.se.system.api.domain.SysFile; -import com.se.system.api.domain.SysUser; -import com.se.system.api.model.LoginUser; -import com.ruoyi.system.service.ISysUserService; - -/** - * 涓汉淇℃伅 涓氬姟澶勭悊 - * - * @author admin - */ -@RestController -@RequestMapping("/user/profile") -public class SysProfileController extends BaseController -{ - @Autowired - private ISysUserService userService; - - @Autowired - private TokenService tokenService; - - @Autowired - private RemoteFileService remoteFileService; - - /** - * 涓汉淇℃伅 - */ - @GetMapping - public AjaxResult profile() - { - String username = SecurityUtils.getUsername(); - SysUser user = userService.selectUserByUserName(username); - AjaxResult ajax = AjaxResult.success(user); - ajax.put("roleGroup", userService.selectUserRoleGroup(username)); - ajax.put("postGroup", userService.selectUserPostGroup(username)); - return ajax; - } - - /** - * 淇敼鐢ㄦ埛 - */ - @Log(title = "涓汉淇℃伅", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult updateProfile(@RequestBody SysUser user) - { - LoginUser loginUser = SecurityUtils.getLoginUser(); - SysUser currentUser = loginUser.getSysUser(); - currentUser.setNickName(user.getNickName()); - currentUser.setEmail(user.getEmail()); - currentUser.setPhonenumber(user.getPhonenumber()); - currentUser.setSex(user.getSex()); - if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser)) - { - return error("淇敼鐢ㄦ埛'" + loginUser.getUsername() + "'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪"); - } - if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser)) - { - return error("淇敼鐢ㄦ埛'" + loginUser.getUsername() + "'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪"); - } - if (userService.updateUserProfile(currentUser)) - { - // 鏇存柊缂撳瓨鐢ㄦ埛淇℃伅 - tokenService.setLoginUser(loginUser); - return success(); - } - return error("淇敼涓汉淇℃伅寮傚父锛岃鑱旂郴绠$悊鍛�"); - } - - /** - * 閲嶇疆瀵嗙爜 - */ - @Log(title = "涓汉淇℃伅", businessType = BusinessType.UPDATE) - @PutMapping("/updatePwd") - public AjaxResult updatePwd(String oldPassword, String newPassword) - { - String username = SecurityUtils.getUsername(); - SysUser user = userService.selectUserByUserName(username); - String password = user.getPassword(); - if (!SecurityUtils.matchesPassword(oldPassword, password)) - { - return error("淇敼瀵嗙爜澶辫触锛屾棫瀵嗙爜閿欒"); - } - if (SecurityUtils.matchesPassword(newPassword, password)) - { - return error("鏂板瘑鐮佷笉鑳戒笌鏃у瘑鐮佺浉鍚�"); - } - newPassword = SecurityUtils.encryptPassword(newPassword); - if (userService.resetUserPwd(username, newPassword) > 0) - { - // 鏇存柊缂撳瓨鐢ㄦ埛瀵嗙爜 - LoginUser loginUser = SecurityUtils.getLoginUser(); - loginUser.getSysUser().setPassword(newPassword); - tokenService.setLoginUser(loginUser); - return success(); - } - return error("淇敼瀵嗙爜寮傚父锛岃鑱旂郴绠$悊鍛�"); - } - - /** - * 澶村儚涓婁紶 - */ - @Log(title = "鐢ㄦ埛澶村儚", businessType = BusinessType.UPDATE) - @PostMapping("/avatar") - public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) - { - if (!file.isEmpty()) - { - LoginUser loginUser = SecurityUtils.getLoginUser(); - String extension = FileTypeUtils.getExtension(file); - if (!StringUtils.equalsAnyIgnoreCase(extension, MimeTypeUtils.IMAGE_EXTENSION)) - { - return error("鏂囦欢鏍煎紡涓嶆纭紝璇蜂笂浼�" + Arrays.toString(MimeTypeUtils.IMAGE_EXTENSION) + "鏍煎紡"); - } - R<SysFile> fileResult = remoteFileService.upload(file); - if (StringUtils.isNull(fileResult) || StringUtils.isNull(fileResult.getData())) - { - return error("鏂囦欢鏈嶅姟寮傚父锛岃鑱旂郴绠$悊鍛�"); - } - String url = fileResult.getData().getUrl(); - if (userService.updateUserAvatar(loginUser.getUsername(), url)) - { - AjaxResult ajax = AjaxResult.success(); - ajax.put("imgUrl", url); - // 鏇存柊缂撳瓨鐢ㄦ埛澶村儚 - loginUser.getSysUser().setAvatar(url); - tokenService.setLoginUser(loginUser); - return ajax; - } - } - return error("涓婁紶鍥剧墖寮傚父锛岃鑱旂郴绠$悊鍛�"); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java deleted file mode 100644 index 61ef5a2..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java +++ /dev/null @@ -1,239 +0,0 @@ -package com.ruoyi.system.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.se.common.core.utils.poi.ExcelUtil; -import com.se.common.core.web.controller.BaseController; -import com.se.common.core.web.domain.AjaxResult; -import com.se.common.core.web.page.TableDataInfo; -import com.se.common.log.annotation.Log; -import com.se.common.log.enums.BusinessType; -import com.se.common.security.annotation.RequiresPermissions; -import com.se.common.security.utils.SecurityUtils; -import com.se.system.api.domain.SysDept; -import com.se.system.api.domain.SysRole; -import com.se.system.api.domain.SysUser; -import com.ruoyi.system.domain.SysUserRole; -import com.ruoyi.system.service.ISysDeptService; -import com.ruoyi.system.service.ISysRoleService; -import com.ruoyi.system.service.ISysUserService; - -/** - * 瑙掕壊淇℃伅 - * - * @author admin - */ -@RestController -@RequestMapping("/role") -public class SysRoleController extends BaseController -{ - @Autowired - private ISysRoleService roleService; - - @Autowired - private ISysUserService userService; - - @Autowired - private ISysDeptService deptService; - - @RequiresPermissions("system:role:list") - @GetMapping("/list") - public TableDataInfo list(SysRole role) - { - startPage(); - List<SysRole> list = roleService.selectRoleList(role); - return getDataTable(list); - } - - @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.EXPORT) - @RequiresPermissions("system:role:export") - @PostMapping("/export") - public void export(HttpServletResponse response, SysRole role) - { - List<SysRole> list = roleService.selectRoleList(role); - ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class); - util.exportExcel(response, list, "瑙掕壊鏁版嵁"); - } - - /** - * 鏍规嵁瑙掕壊缂栧彿鑾峰彇璇︾粏淇℃伅 - */ - @RequiresPermissions("system:role:query") - @GetMapping(value = "/{roleId}") - public AjaxResult getInfo(@PathVariable Long roleId) - { - roleService.checkRoleDataScope(roleId); - return success(roleService.selectRoleById(roleId)); - } - - /** - * 鏂板瑙掕壊 - */ - @RequiresPermissions("system:role:add") - @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@Validated @RequestBody SysRole role) - { - if (!roleService.checkRoleNameUnique(role)) - { - return error("鏂板瑙掕壊'" + role.getRoleName() + "'澶辫触锛岃鑹插悕绉板凡瀛樺湪"); - } - else if (!roleService.checkRoleKeyUnique(role)) - { - return error("鏂板瑙掕壊'" + role.getRoleName() + "'澶辫触锛岃鑹叉潈闄愬凡瀛樺湪"); - } - role.setCreateBy(SecurityUtils.getUsername()); - return toAjax(roleService.insertRole(role)); - - } - - /** - * 淇敼淇濆瓨瑙掕壊 - */ - @RequiresPermissions("system:role:edit") - @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@Validated @RequestBody SysRole role) - { - roleService.checkRoleAllowed(role); - roleService.checkRoleDataScope(role.getRoleId()); - if (!roleService.checkRoleNameUnique(role)) - { - return error("淇敼瑙掕壊'" + role.getRoleName() + "'澶辫触锛岃鑹插悕绉板凡瀛樺湪"); - } - else if (!roleService.checkRoleKeyUnique(role)) - { - return error("淇敼瑙掕壊'" + role.getRoleName() + "'澶辫触锛岃鑹叉潈闄愬凡瀛樺湪"); - } - role.setUpdateBy(SecurityUtils.getUsername()); - return toAjax(roleService.updateRole(role)); - } - - /** - * 淇敼淇濆瓨鏁版嵁鏉冮檺 - */ - @RequiresPermissions("system:role:edit") - @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.UPDATE) - @PutMapping("/dataScope") - public AjaxResult dataScope(@RequestBody SysRole role) - { - roleService.checkRoleAllowed(role); - roleService.checkRoleDataScope(role.getRoleId()); - return toAjax(roleService.authDataScope(role)); - } - - /** - * 鐘舵�佷慨鏀� - */ - @RequiresPermissions("system:role:edit") - @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.UPDATE) - @PutMapping("/changeStatus") - public AjaxResult changeStatus(@RequestBody SysRole role) - { - roleService.checkRoleAllowed(role); - roleService.checkRoleDataScope(role.getRoleId()); - role.setUpdateBy(SecurityUtils.getUsername()); - return toAjax(roleService.updateRoleStatus(role)); - } - - /** - * 鍒犻櫎瑙掕壊 - */ - @RequiresPermissions("system:role:remove") - @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.DELETE) - @DeleteMapping("/{roleIds}") - public AjaxResult remove(@PathVariable Long[] roleIds) - { - return toAjax(roleService.deleteRoleByIds(roleIds)); - } - - /** - * 鑾峰彇瑙掕壊閫夋嫨妗嗗垪琛� - */ - @RequiresPermissions("system:role:query") - @GetMapping("/optionselect") - public AjaxResult optionselect() - { - return success(roleService.selectRoleAll()); - } - /** - * 鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛� - */ - @RequiresPermissions("system:role:list") - @GetMapping("/authUser/allocatedList") - public TableDataInfo allocatedList(SysUser user) - { - startPage(); - List<SysUser> list = userService.selectAllocatedList(user); - return getDataTable(list); - } - - /** - * 鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛� - */ - @RequiresPermissions("system:role:list") - @GetMapping("/authUser/unallocatedList") - public TableDataInfo unallocatedList(SysUser user) - { - startPage(); - List<SysUser> list = userService.selectUnallocatedList(user); - return getDataTable(list); - } - - /** - * 鍙栨秷鎺堟潈鐢ㄦ埛 - */ - @RequiresPermissions("system:role:edit") - @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.GRANT) - @PutMapping("/authUser/cancel") - public AjaxResult cancelAuthUser(@RequestBody SysUserRole userRole) - { - return toAjax(roleService.deleteAuthUser(userRole)); - } - - /** - * 鎵归噺鍙栨秷鎺堟潈鐢ㄦ埛 - */ - @RequiresPermissions("system:role:edit") - @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.GRANT) - @PutMapping("/authUser/cancelAll") - public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds) - { - return toAjax(roleService.deleteAuthUsers(roleId, userIds)); - } - - /** - * 鎵归噺閫夋嫨鐢ㄦ埛鎺堟潈 - */ - @RequiresPermissions("system:role:edit") - @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.GRANT) - @PutMapping("/authUser/selectAll") - public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds) - { - roleService.checkRoleDataScope(roleId); - return toAjax(roleService.insertAuthUsers(roleId, userIds)); - } - - /** - * 鑾峰彇瀵瑰簲瑙掕壊閮ㄩ棬鏍戝垪琛� - */ - @RequiresPermissions("system:role:query") - @GetMapping(value = "/deptTree/{roleId}") - public AjaxResult deptTree(@PathVariable("roleId") Long roleId) - { - AjaxResult ajax = AjaxResult.success(); - ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId)); - ajax.put("depts", deptService.selectDeptTreeList(new SysDept())); - return ajax; - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java deleted file mode 100644 index 44bed81..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java +++ /dev/null @@ -1,341 +0,0 @@ -package com.ruoyi.system.controller; - -import java.io.IOException; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; -import javax.servlet.http.HttpServletResponse; -import org.apache.commons.lang3.ArrayUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; -import com.se.common.core.domain.R; -import com.se.common.core.utils.StringUtils; -import com.se.common.core.utils.poi.ExcelUtil; -import com.se.common.core.web.controller.BaseController; -import com.se.common.core.web.domain.AjaxResult; -import com.se.common.core.web.page.TableDataInfo; -import com.se.common.log.annotation.Log; -import com.se.common.log.enums.BusinessType; -import com.se.common.security.annotation.InnerAuth; -import com.se.common.security.annotation.RequiresPermissions; -import com.se.common.security.utils.SecurityUtils; -import com.se.system.api.domain.SysDept; -import com.se.system.api.domain.SysRole; -import com.se.system.api.domain.SysUser; -import com.se.system.api.model.LoginUser; -import com.ruoyi.system.service.ISysConfigService; -import com.ruoyi.system.service.ISysDeptService; -import com.ruoyi.system.service.ISysPermissionService; -import com.ruoyi.system.service.ISysPostService; -import com.ruoyi.system.service.ISysRoleService; -import com.ruoyi.system.service.ISysUserService; - -/** - * 鐢ㄦ埛淇℃伅 - * - * @author admin - */ -@RestController -@RequestMapping("/user") -public class SysUserController extends BaseController -{ - @Autowired - private ISysUserService userService; - - @Autowired - private ISysRoleService roleService; - - @Autowired - private ISysDeptService deptService; - - @Autowired - private ISysPostService postService; - - @Autowired - private ISysPermissionService permissionService; - - @Autowired - private ISysConfigService configService; - - /** - * 鑾峰彇鐢ㄦ埛鍒楄〃 - */ - @RequiresPermissions("system:user:list") - @GetMapping("/list") - public TableDataInfo list(SysUser user) - { - startPage(); - List<SysUser> list = userService.selectUserList(user); - return getDataTable(list); - } - - @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.EXPORT) - @RequiresPermissions("system:user:export") - @PostMapping("/export") - public void export(HttpServletResponse response, SysUser user) - { - List<SysUser> list = userService.selectUserList(user); - ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); - util.exportExcel(response, list, "鐢ㄦ埛鏁版嵁"); - } - - @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.IMPORT) - @RequiresPermissions("system:user:import") - @PostMapping("/importData") - public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception - { - ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); - List<SysUser> userList = util.importExcel(file.getInputStream()); - String operName = SecurityUtils.getUsername(); - String message = userService.importUser(userList, updateSupport, operName); - return success(message); - } - - @PostMapping("/importTemplate") - public void importTemplate(HttpServletResponse response) throws IOException - { - ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); - util.importTemplateExcel(response, "鐢ㄦ埛鏁版嵁"); - } - - /** - * 鑾峰彇褰撳墠鐢ㄦ埛淇℃伅 - */ - @InnerAuth - @GetMapping("/info/{username}") - public R<LoginUser> info(@PathVariable("username") String username) - { - SysUser sysUser = userService.selectUserByUserName(username); - if (StringUtils.isNull(sysUser)) - { - return R.fail("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒"); - } - // 瑙掕壊闆嗗悎 - Set<String> roles = permissionService.getRolePermission(sysUser); - // 鏉冮檺闆嗗悎 - Set<String> permissions = permissionService.getMenuPermission(sysUser); - LoginUser sysUserVo = new LoginUser(); - sysUserVo.setSysUser(sysUser); - sysUserVo.setRoles(roles); - sysUserVo.setPermissions(permissions); - return R.ok(sysUserVo); - } - - /** - * 娉ㄥ唽鐢ㄦ埛淇℃伅 - */ - @InnerAuth - @PostMapping("/register") - public R<Boolean> register(@RequestBody SysUser sysUser) - { - String username = sysUser.getUserName(); - if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) - { - return R.fail("褰撳墠绯荤粺娌℃湁寮�鍚敞鍐屽姛鑳斤紒"); - } - if (!userService.checkUserNameUnique(sysUser)) - { - return R.fail("淇濆瓨鐢ㄦ埛'" + username + "'澶辫触锛屾敞鍐岃处鍙峰凡瀛樺湪"); - } - return R.ok(userService.registerUser(sysUser)); - } - - /** - *璁板綍鐢ㄦ埛鐧诲綍IP鍦板潃鍜岀櫥褰曟椂闂� - */ - @InnerAuth - @PutMapping("/recordlogin") - public R<Boolean> recordlogin(@RequestBody SysUser sysUser) - { - return R.ok(userService.updateUserProfile(sysUser)); - } - - /** - * 鑾峰彇鐢ㄦ埛淇℃伅 - * - * @return 鐢ㄦ埛淇℃伅 - */ - @GetMapping("getInfo") - public AjaxResult getInfo() - { - SysUser user = userService.selectUserById(SecurityUtils.getUserId()); - // 瑙掕壊闆嗗悎 - Set<String> roles = permissionService.getRolePermission(user); - // 鏉冮檺闆嗗悎 - Set<String> permissions = permissionService.getMenuPermission(user); - AjaxResult ajax = AjaxResult.success(); - ajax.put("user", user); - ajax.put("roles", roles); - ajax.put("permissions", permissions); - return ajax; - } - - /** - * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇璇︾粏淇℃伅 - */ - @RequiresPermissions("system:user:query") - @GetMapping(value = { "/", "/{userId}" }) - public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) - { - userService.checkUserDataScope(userId); - AjaxResult ajax = AjaxResult.success(); - List<SysRole> 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)) - { - SysUser sysUser = userService.selectUserById(userId); - ajax.put(AjaxResult.DATA_TAG, sysUser); - ajax.put("postIds", postService.selectPostListByUserId(userId)); - ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList())); - } - return ajax; - } - - /** - * 鏂板鐢ㄦ埛 - */ - @RequiresPermissions("system:user:add") - @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@Validated @RequestBody SysUser user) - { - deptService.checkDeptDataScope(user.getDeptId()); - roleService.checkRoleDataScope(user.getRoleIds()); - if (!userService.checkUserNameUnique(user)) - { - return error("鏂板鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岀櫥褰曡处鍙峰凡瀛樺湪"); - } - else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) - { - return error("鏂板鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪"); - } - else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) - { - return error("鏂板鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪"); - } - user.setCreateBy(SecurityUtils.getUsername()); - user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); - return toAjax(userService.insertUser(user)); - } - - /** - * 淇敼鐢ㄦ埛 - */ - @RequiresPermissions("system:user:edit") - @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@Validated @RequestBody SysUser user) - { - userService.checkUserAllowed(user); - userService.checkUserDataScope(user.getUserId()); - deptService.checkDeptDataScope(user.getDeptId()); - roleService.checkRoleDataScope(user.getRoleIds()); - if (!userService.checkUserNameUnique(user)) - { - return error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岀櫥褰曡处鍙峰凡瀛樺湪"); - } - else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) - { - return error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪"); - } - else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) - { - return error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪"); - } - user.setUpdateBy(SecurityUtils.getUsername()); - return toAjax(userService.updateUser(user)); - } - - /** - * 鍒犻櫎鐢ㄦ埛 - */ - @RequiresPermissions("system:user:remove") - @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.DELETE) - @DeleteMapping("/{userIds}") - public AjaxResult remove(@PathVariable Long[] userIds) - { - if (ArrayUtils.contains(userIds, SecurityUtils.getUserId())) - { - return error("褰撳墠鐢ㄦ埛涓嶈兘鍒犻櫎"); - } - return toAjax(userService.deleteUserByIds(userIds)); - } - - /** - * 閲嶇疆瀵嗙爜 - */ - @RequiresPermissions("system:user:edit") - @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE) - @PutMapping("/resetPwd") - public AjaxResult resetPwd(@RequestBody SysUser user) - { - userService.checkUserAllowed(user); - userService.checkUserDataScope(user.getUserId()); - user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); - user.setUpdateBy(SecurityUtils.getUsername()); - return toAjax(userService.resetPwd(user)); - } - - /** - * 鐘舵�佷慨鏀� - */ - @RequiresPermissions("system:user:edit") - @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE) - @PutMapping("/changeStatus") - public AjaxResult changeStatus(@RequestBody SysUser user) - { - userService.checkUserAllowed(user); - userService.checkUserDataScope(user.getUserId()); - user.setUpdateBy(SecurityUtils.getUsername()); - return toAjax(userService.updateUserStatus(user)); - } - - /** - * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇鎺堟潈瑙掕壊 - */ - @RequiresPermissions("system:user:query") - @GetMapping("/authRole/{userId}") - public AjaxResult authRole(@PathVariable("userId") Long userId) - { - AjaxResult ajax = AjaxResult.success(); - SysUser user = userService.selectUserById(userId); - List<SysRole> roles = roleService.selectRolesByUserId(userId); - ajax.put("user", user); - ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); - return ajax; - } - - /** - * 鐢ㄦ埛鎺堟潈瑙掕壊 - */ - @RequiresPermissions("system:user:edit") - @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.GRANT) - @PutMapping("/authRole") - public AjaxResult insertAuthRole(Long userId, Long[] roleIds) - { - userService.checkUserDataScope(userId); - roleService.checkRoleDataScope(roleIds); - userService.insertUserAuth(userId, roleIds); - return success(); - } - - /** - * 鑾峰彇閮ㄩ棬鏍戝垪琛� - */ - @RequiresPermissions("system:user:list") - @GetMapping("/deptTree") - public AjaxResult deptTree(SysDept dept) - { - return success(deptService.selectDeptTreeList(dept)); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java deleted file mode 100644 index 864ddf5..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.ruoyi.system.controller; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.se.common.core.constant.CacheConstants; -import com.se.common.core.utils.StringUtils; -import com.se.common.core.web.controller.BaseController; -import com.se.common.core.web.domain.AjaxResult; -import com.se.common.core.web.page.TableDataInfo; -import com.se.common.log.annotation.Log; -import com.se.common.log.enums.BusinessType; -import com.se.common.redis.service.RedisService; -import com.se.common.security.annotation.RequiresPermissions; -import com.se.system.api.model.LoginUser; -import com.ruoyi.system.domain.SysUserOnline; -import com.ruoyi.system.service.ISysUserOnlineService; - -/** - * 鍦ㄧ嚎鐢ㄦ埛鐩戞帶 - * - * @author admin - */ -@RestController -@RequestMapping("/online") -public class SysUserOnlineController extends BaseController -{ - @Autowired - private ISysUserOnlineService userOnlineService; - - @Autowired - private RedisService redisService; - - @RequiresPermissions("monitor:online:list") - @GetMapping("/list") - public TableDataInfo list(String ipaddr, String userName) - { - Collection<String> keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*"); - List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>(); - for (String key : keys) - { - LoginUser user = redisService.getCacheObject(key); - if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) - { - userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user)); - } - else if (StringUtils.isNotEmpty(ipaddr)) - { - userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user)); - } - else if (StringUtils.isNotEmpty(userName)) - { - userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user)); - } - else - { - userOnlineList.add(userOnlineService.loginUserToUserOnline(user)); - } - } - Collections.reverse(userOnlineList); - userOnlineList.removeAll(Collections.singleton(null)); - return getDataTable(userOnlineList); - } - - /** - * 寮洪��鐢ㄦ埛 - */ - @RequiresPermissions("monitor:online:forceLogout") - @Log(title = "鍦ㄧ嚎鐢ㄦ埛", businessType = BusinessType.FORCE) - @DeleteMapping("/{tokenId}") - public AjaxResult forceLogout(@PathVariable String tokenId) - { - redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + tokenId); - return success(); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java deleted file mode 100644 index 3e18992..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.ruoyi.system.domain; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Size; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; -import com.se.common.core.annotation.Excel; -import com.se.common.core.annotation.Excel.ColumnType; -import com.se.common.core.web.domain.BaseEntity; - -/** - * 鍙傛暟閰嶇疆琛� sys_config - * - * @author admin - */ -public class SysConfig extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 鍙傛暟涓婚敭 */ - @Excel(name = "鍙傛暟涓婚敭", cellType = ColumnType.NUMERIC) - private Long configId; - - /** 鍙傛暟鍚嶇О */ - @Excel(name = "鍙傛暟鍚嶇О") - private String configName; - - /** 鍙傛暟閿悕 */ - @Excel(name = "鍙傛暟閿悕") - private String configKey; - - /** 鍙傛暟閿�� */ - @Excel(name = "鍙傛暟閿��") - private String configValue; - - /** 绯荤粺鍐呯疆锛圷鏄� N鍚︼級 */ - @Excel(name = "绯荤粺鍐呯疆", readConverterExp = "Y=鏄�,N=鍚�") - private String configType; - - public Long getConfigId() - { - return configId; - } - - public void setConfigId(Long configId) - { - this.configId = configId; - } - - @NotBlank(message = "鍙傛暟鍚嶇О涓嶈兘涓虹┖") - @Size(min = 0, max = 100, message = "鍙傛暟鍚嶇О涓嶈兘瓒呰繃100涓瓧绗�") - public String getConfigName() - { - return configName; - } - - public void setConfigName(String configName) - { - this.configName = configName; - } - - @NotBlank(message = "鍙傛暟閿悕闀垮害涓嶈兘涓虹┖") - @Size(min = 0, max = 100, message = "鍙傛暟閿悕闀垮害涓嶈兘瓒呰繃100涓瓧绗�") - public String getConfigKey() - { - return configKey; - } - - public void setConfigKey(String configKey) - { - this.configKey = configKey; - } - - @NotBlank(message = "鍙傛暟閿�间笉鑳戒负绌�") - @Size(min = 0, max = 500, message = "鍙傛暟閿�奸暱搴︿笉鑳借秴杩�500涓瓧绗�") - public String getConfigValue() - { - return configValue; - } - - public void setConfigValue(String configValue) - { - this.configValue = configValue; - } - - public String getConfigType() - { - return configType; - } - - public void setConfigType(String configType) - { - this.configType = configType; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("configId", getConfigId()) - .append("configName", getConfigName()) - .append("configKey", getConfigKey()) - .append("configValue", getConfigValue()) - .append("configType", getConfigType()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("remark", getRemark()) - .toString(); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java deleted file mode 100644 index 1be9e3b..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.ruoyi.system.domain; - -import java.util.ArrayList; -import java.util.List; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; -import com.se.common.core.web.domain.BaseEntity; - -/** - * 鑿滃崟鏉冮檺琛� sys_menu - * - * @author admin - */ -public class SysMenu extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 鑿滃崟ID */ - private Long menuId; - - /** 鑿滃崟鍚嶇О */ - private String menuName; - - /** 鐖惰彍鍗曞悕绉� */ - private String parentName; - - /** 鐖惰彍鍗旾D */ - private Long parentId; - - /** 鏄剧ず椤哄簭 */ - private Integer orderNum; - - /** 璺敱鍦板潃 */ - private String path; - - /** 缁勪欢璺緞 */ - private String component; - - /** 璺敱鍙傛暟 */ - private String query; - - /** 璺敱鍚嶇О锛岄粯璁ゅ拰璺敱鍦板潃鐩稿悓鐨勯┘宄版牸寮忥紙娉ㄦ剰锛氬洜涓簐ue3鐗堟湰鐨剅outer浼氬垹闄ゅ悕绉扮浉鍚岃矾鐢憋紝涓洪伩鍏嶅悕瀛楃殑鍐茬獊锛岀壒娈婃儏鍐靛彲浠ヨ嚜瀹氫箟锛� */ - private String routeName; - - /** 鏄惁涓哄閾撅紙0鏄� 1鍚︼級 */ - private String isFrame; - - /** 鏄惁缂撳瓨锛�0缂撳瓨 1涓嶇紦瀛橈級 */ - private String isCache; - - /** 绫诲瀷锛圡鐩綍 C鑿滃崟 F鎸夐挳锛� */ - private String menuType; - - /** 鏄剧ず鐘舵�侊紙0鏄剧ず 1闅愯棌锛� */ - private String visible; - - /** 鑿滃崟鐘舵�侊紙0姝e父 1鍋滅敤锛� */ - private String status; - - /** 鏉冮檺瀛楃涓� */ - private String perms; - - /** 鑿滃崟鍥炬爣 */ - private String icon; - - /** 瀛愯彍鍗� */ - private List<SysMenu> children = new ArrayList<SysMenu>(); - - public Long getMenuId() - { - return menuId; - } - - public void setMenuId(Long menuId) - { - this.menuId = menuId; - } - - @NotBlank(message = "鑿滃崟鍚嶇О涓嶈兘涓虹┖") - @Size(min = 0, max = 50, message = "鑿滃崟鍚嶇О闀垮害涓嶈兘瓒呰繃50涓瓧绗�") - public String getMenuName() - { - return menuName; - } - - public void setMenuName(String menuName) - { - this.menuName = menuName; - } - - public String getParentName() - { - return parentName; - } - - public void setParentName(String parentName) - { - this.parentName = parentName; - } - - public Long getParentId() - { - return parentId; - } - - public void setParentId(Long parentId) - { - this.parentId = parentId; - } - - @NotNull(message = "鏄剧ず椤哄簭涓嶈兘涓虹┖") - public Integer getOrderNum() - { - return orderNum; - } - - public void setOrderNum(Integer orderNum) - { - this.orderNum = orderNum; - } - - @Size(min = 0, max = 200, message = "璺敱鍦板潃涓嶈兘瓒呰繃200涓瓧绗�") - public String getPath() - { - return path; - } - - public void setPath(String path) - { - this.path = path; - } - - @Size(min = 0, max = 200, message = "缁勪欢璺緞涓嶈兘瓒呰繃255涓瓧绗�") - public String getComponent() - { - return component; - } - - public void setComponent(String component) - { - this.component = component; - } - - public String getQuery() - { - return query; - } - - public void setQuery(String query) - { - this.query = query; - } - - public String getRouteName() - { - return routeName; - } - - public void setRouteName(String routeName) - { - this.routeName = routeName; - } - - public String getIsFrame() - { - return isFrame; - } - - public void setIsFrame(String isFrame) - { - this.isFrame = isFrame; - } - - public String getIsCache() - { - return isCache; - } - - public void setIsCache(String isCache) - { - this.isCache = isCache; - } - - @NotBlank(message = "鑿滃崟绫诲瀷涓嶈兘涓虹┖") - public String getMenuType() - { - return menuType; - } - - public void setMenuType(String menuType) - { - this.menuType = menuType; - } - - public String getVisible() - { - return visible; - } - - public void setVisible(String visible) - { - this.visible = visible; - } - - public String getStatus() - { - return status; - } - - public void setStatus(String status) - { - this.status = status; - } - - @Size(min = 0, max = 100, message = "鏉冮檺鏍囪瘑闀垮害涓嶈兘瓒呰繃100涓瓧绗�") - public String getPerms() - { - return perms; - } - - public void setPerms(String perms) - { - this.perms = perms; - } - - public String getIcon() - { - return icon; - } - - public void setIcon(String icon) - { - this.icon = icon; - } - - public List<SysMenu> getChildren() - { - return children; - } - - public void setChildren(List<SysMenu> children) - { - this.children = children; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("menuId", getMenuId()) - .append("menuName", getMenuName()) - .append("parentId", getParentId()) - .append("orderNum", getOrderNum()) - .append("path", getPath()) - .append("component", getComponent()) - .append("query", getQuery()) - .append("routeName", getRouteName()) - .append("isFrame", getIsFrame()) - .append("IsCache", getIsCache()) - .append("menuType", getMenuType()) - .append("visible", getVisible()) - .append("status ", getStatus()) - .append("perms", getPerms()) - .append("icon", getIcon()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("remark", getRemark()) - .toString(); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java deleted file mode 100644 index 23cd2d8..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.ruoyi.system.domain; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Size; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; -import com.se.common.core.web.domain.BaseEntity; -import com.se.common.core.xss.Xss; - -/** - * 閫氱煡鍏憡琛� sys_notice - * - * @author admin - */ -public class SysNotice extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 鍏憡ID */ - private Long noticeId; - - /** 鍏憡鏍囬 */ - private String noticeTitle; - - /** 鍏憡绫诲瀷锛�1閫氱煡 2鍏憡锛� */ - private String noticeType; - - /** 鍏憡鍐呭 */ - private String noticeContent; - - /** 鍏憡鐘舵�侊紙0姝e父 1鍏抽棴锛� */ - private String status; - - public Long getNoticeId() - { - return noticeId; - } - - public void setNoticeId(Long noticeId) - { - this.noticeId = noticeId; - } - - public void setNoticeTitle(String noticeTitle) - { - this.noticeTitle = noticeTitle; - } - - @Xss(message = "鍏憡鏍囬涓嶈兘鍖呭惈鑴氭湰瀛楃") - @NotBlank(message = "鍏憡鏍囬涓嶈兘涓虹┖") - @Size(min = 0, max = 50, message = "鍏憡鏍囬涓嶈兘瓒呰繃50涓瓧绗�") - public String getNoticeTitle() - { - return noticeTitle; - } - - public void setNoticeType(String noticeType) - { - this.noticeType = noticeType; - } - - public String getNoticeType() - { - return noticeType; - } - - public void setNoticeContent(String noticeContent) - { - this.noticeContent = noticeContent; - } - - public String getNoticeContent() - { - return noticeContent; - } - - public void setStatus(String status) - { - this.status = status; - } - - public String getStatus() - { - return status; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("noticeId", getNoticeId()) - .append("noticeTitle", getNoticeTitle()) - .append("noticeType", getNoticeType()) - .append("noticeContent", getNoticeContent()) - .append("status", getStatus()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("remark", getRemark()) - .toString(); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java deleted file mode 100644 index 8369664..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.ruoyi.system.domain; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; -import com.se.common.core.annotation.Excel; -import com.se.common.core.annotation.Excel.ColumnType; -import com.se.common.core.web.domain.BaseEntity; - -/** - * 宀椾綅琛� sys_post - * - * @author admin - */ -public class SysPost extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 宀椾綅搴忓彿 */ - @Excel(name = "宀椾綅搴忓彿", cellType = ColumnType.NUMERIC) - private Long postId; - - /** 宀椾綅缂栫爜 */ - @Excel(name = "宀椾綅缂栫爜") - private String postCode; - - /** 宀椾綅鍚嶇О */ - @Excel(name = "宀椾綅鍚嶇О") - private String postName; - - /** 宀椾綅鎺掑簭 */ - @Excel(name = "宀椾綅鎺掑簭") - private Integer postSort; - - /** 鐘舵�侊紙0姝e父 1鍋滅敤锛� */ - @Excel(name = "鐘舵��", readConverterExp = "0=姝e父,1=鍋滅敤") - private String status; - - /** 鐢ㄦ埛鏄惁瀛樺湪姝ゅ矖浣嶆爣璇� 榛樿涓嶅瓨鍦� */ - private boolean flag = false; - - public Long getPostId() - { - return postId; - } - - public void setPostId(Long postId) - { - this.postId = postId; - } - - @NotBlank(message = "宀椾綅缂栫爜涓嶈兘涓虹┖") - @Size(min = 0, max = 64, message = "宀椾綅缂栫爜闀垮害涓嶈兘瓒呰繃64涓瓧绗�") - public String getPostCode() - { - return postCode; - } - - public void setPostCode(String postCode) - { - this.postCode = postCode; - } - - @NotBlank(message = "宀椾綅鍚嶇О涓嶈兘涓虹┖") - @Size(min = 0, max = 50, message = "宀椾綅鍚嶇О闀垮害涓嶈兘瓒呰繃50涓瓧绗�") - public String getPostName() - { - return postName; - } - - public void setPostName(String postName) - { - this.postName = postName; - } - - @NotNull(message = "鏄剧ず椤哄簭涓嶈兘涓虹┖") - public Integer getPostSort() - { - return postSort; - } - - public void setPostSort(Integer postSort) - { - this.postSort = postSort; - } - - public String getStatus() - { - return status; - } - - public void setStatus(String status) - { - this.status = status; - } - - public boolean isFlag() - { - return flag; - } - - public void setFlag(boolean flag) - { - this.flag = flag; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("postId", getPostId()) - .append("postCode", getPostCode()) - .append("postName", getPostName()) - .append("postSort", getPostSort()) - .append("status", getStatus()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("remark", getRemark()) - .toString(); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java deleted file mode 100644 index e6fa9aa..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.ruoyi.system.domain; - -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - -/** - * 瑙掕壊鍜岄儴闂ㄥ叧鑱� sys_role_dept - * - * @author admin - */ -public class SysRoleDept -{ - /** 瑙掕壊ID */ - private Long roleId; - - /** 閮ㄩ棬ID */ - private Long deptId; - - public Long getRoleId() - { - return roleId; - } - - public void setRoleId(Long roleId) - { - this.roleId = roleId; - } - - public Long getDeptId() - { - return deptId; - } - - public void setDeptId(Long deptId) - { - this.deptId = deptId; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("roleId", getRoleId()) - .append("deptId", getDeptId()) - .toString(); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java deleted file mode 100644 index 3897f31..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.ruoyi.system.domain; - -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - -/** - * 瑙掕壊鍜岃彍鍗曞叧鑱� sys_role_menu - * - * @author admin - */ -public class SysRoleMenu -{ - /** 瑙掕壊ID */ - private Long roleId; - - /** 鑿滃崟ID */ - private Long menuId; - - public Long getRoleId() - { - return roleId; - } - - public void setRoleId(Long roleId) - { - this.roleId = roleId; - } - - public Long getMenuId() - { - return menuId; - } - - public void setMenuId(Long menuId) - { - this.menuId = menuId; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("roleId", getRoleId()) - .append("menuId", getMenuId()) - .toString(); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java deleted file mode 100644 index d1a7db2..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.ruoyi.system.domain; - -/** - * 褰撳墠鍦ㄧ嚎浼氳瘽 - * - * @author admin - */ -public class SysUserOnline -{ - /** 浼氳瘽缂栧彿 */ - private String tokenId; - - /** 鐢ㄦ埛鍚嶇О */ - private String userName; - - /** 鐧诲綍IP鍦板潃 */ - private String ipaddr; - - /** 鐧诲綍鍦板潃 */ - private String loginLocation; - - /** 娴忚鍣ㄧ被鍨� */ - private String browser; - - /** 鎿嶄綔绯荤粺 */ - private String os; - - /** 鐧诲綍鏃堕棿 */ - private Long loginTime; - - public String getTokenId() - { - return tokenId; - } - - public void setTokenId(String tokenId) - { - this.tokenId = tokenId; - } - - public String getUserName() - { - return userName; - } - - public void setUserName(String userName) - { - this.userName = userName; - } - - public String getIpaddr() - { - return ipaddr; - } - - public void setIpaddr(String ipaddr) - { - this.ipaddr = ipaddr; - } - - public String getLoginLocation() - { - return loginLocation; - } - - public void setLoginLocation(String loginLocation) - { - this.loginLocation = loginLocation; - } - - public String getBrowser() - { - return browser; - } - - public void setBrowser(String browser) - { - this.browser = browser; - } - - public String getOs() - { - return os; - } - - public void setOs(String os) - { - this.os = os; - } - - public Long getLoginTime() - { - return loginTime; - } - - public void setLoginTime(Long loginTime) - { - this.loginTime = loginTime; - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java deleted file mode 100644 index 5c1219b..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.ruoyi.system.domain; - -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - -/** - * 鐢ㄦ埛鍜屽矖浣嶅叧鑱� sys_user_post - * - * @author admin - */ -public class SysUserPost -{ - /** 鐢ㄦ埛ID */ - private Long userId; - - /** 宀椾綅ID */ - private Long postId; - - public Long getUserId() - { - return userId; - } - - public void setUserId(Long userId) - { - this.userId = userId; - } - - public Long getPostId() - { - return postId; - } - - public void setPostId(Long postId) - { - this.postId = postId; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("userId", getUserId()) - .append("postId", getPostId()) - .toString(); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java deleted file mode 100644 index 65badb7..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.ruoyi.system.domain; - -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - -/** - * 鐢ㄦ埛鍜岃鑹插叧鑱� sys_user_role - * - * @author admin - */ -public class SysUserRole -{ - /** 鐢ㄦ埛ID */ - private Long userId; - - /** 瑙掕壊ID */ - private Long roleId; - - public Long getUserId() - { - return userId; - } - - public void setUserId(Long userId) - { - this.userId = userId; - } - - public Long getRoleId() - { - return roleId; - } - - public void setRoleId(Long roleId) - { - this.roleId = roleId; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("userId", getUserId()) - .append("roleId", getRoleId()) - .toString(); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java deleted file mode 100644 index 449a1fc..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.ruoyi.system.domain.vo; - -import com.se.common.core.utils.StringUtils; - -/** - * 璺敱鏄剧ず淇℃伅 - * - * @author admin - */ -public class MetaVo -{ - /** - * 璁剧疆璇ヨ矾鐢卞湪渚ц竟鏍忓拰闈㈠寘灞戜腑灞曠ず鐨勫悕瀛� - */ - private String title; - - /** - * 璁剧疆璇ヨ矾鐢辩殑鍥炬爣锛屽搴旇矾寰剆rc/assets/icons/svg - */ - private String icon; - - /** - * 璁剧疆涓簍rue锛屽垯涓嶄細琚� <keep-alive>缂撳瓨 - */ - private boolean noCache; - - /** - * 鍐呴摼鍦板潃锛坔ttp(s)://寮�澶达級 - */ - private String link; - - public MetaVo() - { - } - - public MetaVo(String title, String icon) - { - this.title = title; - this.icon = icon; - } - - public MetaVo(String title, String icon, boolean noCache) - { - this.title = title; - this.icon = icon; - this.noCache = noCache; - } - - public MetaVo(String title, String icon, String link) - { - this.title = title; - this.icon = icon; - this.link = link; - } - - public MetaVo(String title, String icon, boolean noCache, String link) - { - this.title = title; - this.icon = icon; - this.noCache = noCache; - if (StringUtils.ishttp(link)) - { - this.link = link; - } - } - - public boolean isNoCache() - { - return noCache; - } - - public void setNoCache(boolean noCache) - { - this.noCache = noCache; - } - - public String getTitle() - { - return title; - } - - public void setTitle(String title) - { - this.title = title; - } - - public String getIcon() - { - return icon; - } - - public void setIcon(String icon) - { - this.icon = icon; - } - - public String getLink() - { - return link; - } - - public void setLink(String link) - { - this.link = link; - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RouterVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RouterVo.java deleted file mode 100644 index 16eb2e1..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RouterVo.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.ruoyi.system.domain.vo; - -import com.fasterxml.jackson.annotation.JsonInclude; -import java.util.List; - -/** - * 璺敱閰嶇疆淇℃伅 - * - * @author admin - */ -@JsonInclude(JsonInclude.Include.NON_EMPTY) -public class RouterVo -{ - /** - * 璺敱鍚嶅瓧 - */ - private String name; - - /** - * 璺敱鍦板潃 - */ - private String path; - - /** - * 鏄惁闅愯棌璺敱锛屽綋璁剧疆 true 鐨勬椂鍊欒璺敱涓嶄細鍐嶄晶杈规爮鍑虹幇 - */ - private boolean hidden; - - /** - * 閲嶅畾鍚戝湴鍧�锛屽綋璁剧疆 noRedirect 鐨勬椂鍊欒璺敱鍦ㄩ潰鍖呭睉瀵艰埅涓笉鍙鐐瑰嚮 - */ - private String redirect; - - /** - * 缁勪欢鍦板潃 - */ - private String component; - - /** - * 璺敱鍙傛暟锛氬 {"id": 1, "name": "ry"} - */ - private String query; - - /** - * 褰撲綘涓�涓矾鐢变笅闈㈢殑 children 澹版槑鐨勮矾鐢卞ぇ浜�1涓椂锛岃嚜鍔ㄤ細鍙樻垚宓屽鐨勬ā寮�--濡傜粍浠堕〉闈� - */ - private Boolean alwaysShow; - - /** - * 鍏朵粬鍏冪礌 - */ - private MetaVo meta; - - /** - * 瀛愯矾鐢� - */ - private List<RouterVo> children; - - public String getName() - { - return name; - } - - public void setName(String name) - { - this.name = name; - } - - public String getPath() - { - return path; - } - - public void setPath(String path) - { - this.path = path; - } - - public boolean getHidden() - { - return hidden; - } - - public void setHidden(boolean hidden) - { - this.hidden = hidden; - } - - public String getRedirect() - { - return redirect; - } - - public void setRedirect(String redirect) - { - this.redirect = redirect; - } - - public String getComponent() - { - return component; - } - - public void setComponent(String component) - { - this.component = component; - } - - public String getQuery() - { - return query; - } - - public void setQuery(String query) - { - this.query = query; - } - - public Boolean getAlwaysShow() - { - return alwaysShow; - } - - public void setAlwaysShow(Boolean alwaysShow) - { - this.alwaysShow = alwaysShow; - } - - public MetaVo getMeta() - { - return meta; - } - - public void setMeta(MetaVo meta) - { - this.meta = meta; - } - - public List<RouterVo> getChildren() - { - return children; - } - - public void setChildren(List<RouterVo> children) - { - this.children = children; - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/TreeSelect.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/TreeSelect.java deleted file mode 100644 index 4be5870..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/TreeSelect.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.ruoyi.system.domain.vo; - -import java.io.Serializable; -import java.util.List; -import java.util.stream.Collectors; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.se.system.api.domain.SysDept; -import com.ruoyi.system.domain.SysMenu; - -/** - * Treeselect鏍戠粨鏋勫疄浣撶被 - * - * @author admin - */ -public class TreeSelect implements Serializable -{ - private static final long serialVersionUID = 1L; - - /** 鑺傜偣ID */ - private Long id; - - /** 鑺傜偣鍚嶇О */ - private String label; - - /** 瀛愯妭鐐� */ - @JsonInclude(JsonInclude.Include.NON_EMPTY) - private List<TreeSelect> children; - - public TreeSelect() - { - - } - - public TreeSelect(SysDept dept) - { - this.id = dept.getDeptId(); - this.label = dept.getDeptName(); - this.children = dept.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); - } - - public TreeSelect(SysMenu menu) - { - this.id = menu.getMenuId(); - this.label = menu.getMenuName(); - this.children = menu.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); - } - - public Long getId() - { - return id; - } - - public void setId(Long id) - { - this.id = id; - } - - public String getLabel() - { - return label; - } - - public void setLabel(String label) - { - this.label = label; - } - - public List<TreeSelect> getChildren() - { - return children; - } - - public void setChildren(List<TreeSelect> children) - { - this.children = children; - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java deleted file mode 100644 index 1aa9d00..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.ruoyi.system.mapper; - -import java.util.List; -import com.ruoyi.system.domain.SysConfig; - -/** - * 鍙傛暟閰嶇疆 鏁版嵁灞� - * - * @author admin - */ -public interface SysConfigMapper -{ - /** - * 鏌ヨ鍙傛暟閰嶇疆淇℃伅 - * - * @param config 鍙傛暟閰嶇疆淇℃伅 - * @return 鍙傛暟閰嶇疆淇℃伅 - */ - public SysConfig selectConfig(SysConfig config); - - /** - * 閫氳繃ID鏌ヨ閰嶇疆 - * - * @param configId 鍙傛暟ID - * @return 鍙傛暟閰嶇疆淇℃伅 - */ - public SysConfig selectConfigById(Long configId); - - /** - * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃 - * - * @param config 鍙傛暟閰嶇疆淇℃伅 - * @return 鍙傛暟閰嶇疆闆嗗悎 - */ - public List<SysConfig> selectConfigList(SysConfig config); - - /** - * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅 - * - * @param configKey 鍙傛暟閿悕 - * @return 鍙傛暟閰嶇疆淇℃伅 - */ - public SysConfig checkConfigKeyUnique(String configKey); - - /** - * 鏂板鍙傛暟閰嶇疆 - * - * @param config 鍙傛暟閰嶇疆淇℃伅 - * @return 缁撴灉 - */ - public int insertConfig(SysConfig config); - - /** - * 淇敼鍙傛暟閰嶇疆 - * - * @param config 鍙傛暟閰嶇疆淇℃伅 - * @return 缁撴灉 - */ - public int updateConfig(SysConfig config); - - /** - * 鍒犻櫎鍙傛暟閰嶇疆 - * - * @param configId 鍙傛暟ID - * @return 缁撴灉 - */ - public int deleteConfigById(Long configId); - - /** - * 鎵归噺鍒犻櫎鍙傛暟淇℃伅 - * - * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID - * @return 缁撴灉 - */ - public int deleteConfigByIds(Long[] configIds); -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java deleted file mode 100644 index b29197e..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.ruoyi.system.mapper; - -import java.util.List; -import org.apache.ibatis.annotations.Param; -import com.se.system.api.domain.SysDept; - -/** - * 閮ㄩ棬绠$悊 鏁版嵁灞� - * - * @author admin - */ -public interface SysDeptMapper -{ - /** - * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁 - * - * @param dept 閮ㄩ棬淇℃伅 - * @return 閮ㄩ棬淇℃伅闆嗗悎 - */ - public List<SysDept> selectDeptList(SysDept dept); - - /** - * 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭� - * - * @param roleId 瑙掕壊ID - * @param deptCheckStrictly 閮ㄩ棬鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀� - * @return 閫変腑閮ㄩ棬鍒楄〃 - */ - public List<Long> selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly); - - /** - * 鏍规嵁閮ㄩ棬ID鏌ヨ淇℃伅 - * - * @param deptId 閮ㄩ棬ID - * @return 閮ㄩ棬淇℃伅 - */ - public SysDept selectDeptById(Long deptId); - - /** - * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬 - * - * @param deptId 閮ㄩ棬ID - * @return 閮ㄩ棬鍒楄〃 - */ - public List<SysDept> selectChildrenDeptById(Long deptId); - - /** - * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬锛堟甯哥姸鎬侊級 - * - * @param deptId 閮ㄩ棬ID - * @return 瀛愰儴闂ㄦ暟 - */ - public int selectNormalChildrenDeptById(Long deptId); - - /** - * 鏄惁瀛樺湪瀛愯妭鐐� - * - * @param deptId 閮ㄩ棬ID - * @return 缁撴灉 - */ - public int hasChildByDeptId(Long deptId); - - /** - * 鏌ヨ閮ㄩ棬鏄惁瀛樺湪鐢ㄦ埛 - * - * @param deptId 閮ㄩ棬ID - * @return 缁撴灉 - */ - public int checkDeptExistUser(Long deptId); - - /** - * 鏍¢獙閮ㄩ棬鍚嶇О鏄惁鍞竴 - * - * @param deptName 閮ㄩ棬鍚嶇О - * @param parentId 鐖堕儴闂↖D - * @return 缁撴灉 - */ - public SysDept checkDeptNameUnique(@Param("deptName") String deptName, @Param("parentId") Long parentId); - - /** - * 鏂板閮ㄩ棬淇℃伅 - * - * @param dept 閮ㄩ棬淇℃伅 - * @return 缁撴灉 - */ - public int insertDept(SysDept dept); - - /** - * 淇敼閮ㄩ棬淇℃伅 - * - * @param dept 閮ㄩ棬淇℃伅 - * @return 缁撴灉 - */ - public int updateDept(SysDept dept); - - /** - * 淇敼鎵�鍦ㄩ儴闂ㄦ甯哥姸鎬� - * - * @param deptIds 閮ㄩ棬ID缁� - */ - public void updateDeptStatusNormal(Long[] deptIds); - - /** - * 淇敼瀛愬厓绱犲叧绯� - * - * @param depts 瀛愬厓绱� - * @return 缁撴灉 - */ - public int updateDeptChildren(@Param("depts") List<SysDept> depts); - - /** - * 鍒犻櫎閮ㄩ棬绠$悊淇℃伅 - * - * @param deptId 閮ㄩ棬ID - * @return 缁撴灉 - */ - public int deleteDeptById(Long deptId); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java deleted file mode 100644 index 1403a8e..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.ruoyi.system.mapper; - -import java.util.List; -import org.apache.ibatis.annotations.Param; -import com.se.system.api.domain.SysDictData; - -/** - * 瀛楀吀琛� 鏁版嵁灞� - * - * @author admin - */ -public interface SysDictDataMapper -{ - /** - * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀鏁版嵁 - * - * @param dictData 瀛楀吀鏁版嵁淇℃伅 - * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅 - */ - public List<SysDictData> selectDictDataList(SysDictData dictData); - - /** - * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁 - * - * @param dictType 瀛楀吀绫诲瀷 - * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅 - */ - public List<SysDictData> selectDictDataByType(String dictType); - - /** - * 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏搁敭鍊兼煡璇㈠瓧鍏告暟鎹俊鎭� - * - * @param dictType 瀛楀吀绫诲瀷 - * @param dictValue 瀛楀吀閿�� - * @return 瀛楀吀鏍囩 - */ - public String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue); - - /** - * 鏍规嵁瀛楀吀鏁版嵁ID鏌ヨ淇℃伅 - * - * @param dictCode 瀛楀吀鏁版嵁ID - * @return 瀛楀吀鏁版嵁 - */ - public SysDictData selectDictDataById(Long dictCode); - - /** - * 鏌ヨ瀛楀吀鏁版嵁 - * - * @param dictType 瀛楀吀绫诲瀷 - * @return 瀛楀吀鏁版嵁 - */ - public int countDictDataByType(String dictType); - - /** - * 閫氳繃瀛楀吀ID鍒犻櫎瀛楀吀鏁版嵁淇℃伅 - * - * @param dictCode 瀛楀吀鏁版嵁ID - * @return 缁撴灉 - */ - public int deleteDictDataById(Long dictCode); - - /** - * 鎵归噺鍒犻櫎瀛楀吀鏁版嵁淇℃伅 - * - * @param dictCodes 闇�瑕佸垹闄ょ殑瀛楀吀鏁版嵁ID - * @return 缁撴灉 - */ - public int deleteDictDataByIds(Long[] dictCodes); - - /** - * 鏂板瀛楀吀鏁版嵁淇℃伅 - * - * @param dictData 瀛楀吀鏁版嵁淇℃伅 - * @return 缁撴灉 - */ - public int insertDictData(SysDictData dictData); - - /** - * 淇敼瀛楀吀鏁版嵁淇℃伅 - * - * @param dictData 瀛楀吀鏁版嵁淇℃伅 - * @return 缁撴灉 - */ - public int updateDictData(SysDictData dictData); - - /** - * 鍚屾淇敼瀛楀吀绫诲瀷 - * - * @param oldDictType 鏃у瓧鍏哥被鍨� - * @param newDictType 鏂版棫瀛楀吀绫诲瀷 - * @return 缁撴灉 - */ - public int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java deleted file mode 100644 index 02fe04c..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.ruoyi.system.mapper; - -import java.util.List; -import com.se.system.api.domain.SysDictType; - -/** - * 瀛楀吀琛� 鏁版嵁灞� - * - * @author admin - */ -public interface SysDictTypeMapper -{ - /** - * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀绫诲瀷 - * - * @param dictType 瀛楀吀绫诲瀷淇℃伅 - * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅 - */ - public List<SysDictType> selectDictTypeList(SysDictType dictType); - - /** - * 鏍规嵁鎵�鏈夊瓧鍏哥被鍨� - * - * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅 - */ - public List<SysDictType> selectDictTypeAll(); - - /** - * 鏍规嵁瀛楀吀绫诲瀷ID鏌ヨ淇℃伅 - * - * @param dictId 瀛楀吀绫诲瀷ID - * @return 瀛楀吀绫诲瀷 - */ - public SysDictType selectDictTypeById(Long dictId); - - /** - * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ淇℃伅 - * - * @param dictType 瀛楀吀绫诲瀷 - * @return 瀛楀吀绫诲瀷 - */ - public SysDictType selectDictTypeByType(String dictType); - - /** - * 閫氳繃瀛楀吀ID鍒犻櫎瀛楀吀淇℃伅 - * - * @param dictId 瀛楀吀ID - * @return 缁撴灉 - */ - public int deleteDictTypeById(Long dictId); - - /** - * 鎵归噺鍒犻櫎瀛楀吀绫诲瀷淇℃伅 - * - * @param dictIds 闇�瑕佸垹闄ょ殑瀛楀吀ID - * @return 缁撴灉 - */ - public int deleteDictTypeByIds(Long[] dictIds); - - /** - * 鏂板瀛楀吀绫诲瀷淇℃伅 - * - * @param dictType 瀛楀吀绫诲瀷淇℃伅 - * @return 缁撴灉 - */ - public int insertDictType(SysDictType dictType); - - /** - * 淇敼瀛楀吀绫诲瀷淇℃伅 - * - * @param dictType 瀛楀吀绫诲瀷淇℃伅 - * @return 缁撴灉 - */ - public int updateDictType(SysDictType dictType); - - /** - * 鏍¢獙瀛楀吀绫诲瀷绉版槸鍚﹀敮涓� - * - * @param dictType 瀛楀吀绫诲瀷 - * @return 缁撴灉 - */ - public SysDictType checkDictTypeUnique(String dictType); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java deleted file mode 100644 index d6cf4c3..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.ruoyi.system.mapper; - -import java.util.List; -import com.se.system.api.domain.SysLogininfor; - -/** - * 绯荤粺璁块棶鏃ュ織鎯呭喌淇℃伅 鏁版嵁灞� - * - * @author admin - */ -public interface SysLogininforMapper -{ - /** - * 鏂板绯荤粺鐧诲綍鏃ュ織 - * - * @param logininfor 璁块棶鏃ュ織瀵硅薄 - */ - public int insertLogininfor(SysLogininfor logininfor); - - /** - * 鏌ヨ绯荤粺鐧诲綍鏃ュ織闆嗗悎 - * - * @param logininfor 璁块棶鏃ュ織瀵硅薄 - * @return 鐧诲綍璁板綍闆嗗悎 - */ - public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor); - - /** - * 鎵归噺鍒犻櫎绯荤粺鐧诲綍鏃ュ織 - * - * @param infoIds 闇�瑕佸垹闄ょ殑鐧诲綍鏃ュ織ID - * @return 缁撴灉 - */ - public int deleteLogininforByIds(Long[] infoIds); - - /** - * 娓呯┖绯荤粺鐧诲綍鏃ュ織 - * - * @return 缁撴灉 - */ - public int cleanLogininfor(); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java deleted file mode 100644 index 0342c46..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.ruoyi.system.mapper; - -import java.util.List; -import org.apache.ibatis.annotations.Param; -import com.ruoyi.system.domain.SysMenu; - -/** - * 鑿滃崟琛� 鏁版嵁灞� - * - * @author admin - */ -public interface SysMenuMapper -{ - /** - * 鏌ヨ绯荤粺鑿滃崟鍒楄〃 - * - * @param menu 鑿滃崟淇℃伅 - * @return 鑿滃崟鍒楄〃 - */ - public List<SysMenu> selectMenuList(SysMenu menu); - - /** - * 鏍规嵁鐢ㄦ埛鎵�鏈夋潈闄� - * - * @return 鏉冮檺鍒楄〃 - */ - public List<String> selectMenuPerms(); - - /** - * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃 - * - * @param menu 鑿滃崟淇℃伅 - * @return 鑿滃崟鍒楄〃 - */ - public List<SysMenu> selectMenuListByUserId(SysMenu menu); - - /** - * 鏍规嵁瑙掕壊ID鏌ヨ鏉冮檺 - * - * @param roleId 瑙掕壊ID - * @return 鏉冮檺鍒楄〃 - */ - public List<String> selectMenuPermsByRoleId(Long roleId); - - /** - * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺 - * - * @param userId 鐢ㄦ埛ID - * @return 鏉冮檺鍒楄〃 - */ - public List<String> selectMenuPermsByUserId(Long userId); - - /** - * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟 - * - * @return 鑿滃崟鍒楄〃 - */ - public List<SysMenu> selectMenuTreeAll(); - - /** - * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟 - * - * @param userId 鐢ㄦ埛ID - * @return 鑿滃崟鍒楄〃 - */ - public List<SysMenu> selectMenuTreeByUserId(Long userId); - - /** - * 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鏍戜俊鎭� - * - * @param roleId 瑙掕壊ID - * @param menuCheckStrictly 鑿滃崟鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀� - * @return 閫変腑鑿滃崟鍒楄〃 - */ - public List<Long> selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly); - - /** - * 鏍规嵁鑿滃崟ID鏌ヨ淇℃伅 - * - * @param menuId 鑿滃崟ID - * @return 鑿滃崟淇℃伅 - */ - public SysMenu selectMenuById(Long menuId); - - /** - * 鏄惁瀛樺湪鑿滃崟瀛愯妭鐐� - * - * @param menuId 鑿滃崟ID - * @return 缁撴灉 - */ - public int hasChildByMenuId(Long menuId); - - /** - * 鏂板鑿滃崟淇℃伅 - * - * @param menu 鑿滃崟淇℃伅 - * @return 缁撴灉 - */ - public int insertMenu(SysMenu menu); - - /** - * 淇敼鑿滃崟淇℃伅 - * - * @param menu 鑿滃崟淇℃伅 - * @return 缁撴灉 - */ - public int updateMenu(SysMenu menu); - - /** - * 鍒犻櫎鑿滃崟绠$悊淇℃伅 - * - * @param menuId 鑿滃崟ID - * @return 缁撴灉 - */ - public int deleteMenuById(Long menuId); - - /** - * 鏍¢獙鑿滃崟鍚嶇О鏄惁鍞竴 - * - * @param menuName 鑿滃崟鍚嶇О - * @param parentId 鐖惰彍鍗旾D - * @return 缁撴灉 - */ - public SysMenu checkMenuNameUnique(@Param("menuName") String menuName, @Param("parentId") Long parentId); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java deleted file mode 100644 index 4876782..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.ruoyi.system.mapper; - -import java.util.List; -import com.ruoyi.system.domain.SysNotice; - -/** - * 閫氱煡鍏憡琛� 鏁版嵁灞� - * - * @author admin - */ -public interface SysNoticeMapper -{ - /** - * 鏌ヨ鍏憡淇℃伅 - * - * @param noticeId 鍏憡ID - * @return 鍏憡淇℃伅 - */ - public SysNotice selectNoticeById(Long noticeId); - - /** - * 鏌ヨ鍏憡鍒楄〃 - * - * @param notice 鍏憡淇℃伅 - * @return 鍏憡闆嗗悎 - */ - public List<SysNotice> selectNoticeList(SysNotice notice); - - /** - * 鏂板鍏憡 - * - * @param notice 鍏憡淇℃伅 - * @return 缁撴灉 - */ - public int insertNotice(SysNotice notice); - - /** - * 淇敼鍏憡 - * - * @param notice 鍏憡淇℃伅 - * @return 缁撴灉 - */ - public int updateNotice(SysNotice notice); - - /** - * 鎵归噺鍒犻櫎鍏憡 - * - * @param noticeId 鍏憡ID - * @return 缁撴灉 - */ - public int deleteNoticeById(Long noticeId); - - /** - * 鎵归噺鍒犻櫎鍏憡淇℃伅 - * - * @param noticeIds 闇�瑕佸垹闄ょ殑鍏憡ID - * @return 缁撴灉 - */ - public int deleteNoticeByIds(Long[] noticeIds); -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java deleted file mode 100644 index 04b197a..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.ruoyi.system.mapper; - -import java.util.List; -import com.se.system.api.domain.SysOperLog; - -/** - * 鎿嶄綔鏃ュ織 鏁版嵁灞� - * - * @author admin - */ -public interface SysOperLogMapper -{ - /** - * 鏂板鎿嶄綔鏃ュ織 - * - * @param operLog 鎿嶄綔鏃ュ織瀵硅薄 - */ - public int insertOperlog(SysOperLog operLog); - - /** - * 鏌ヨ绯荤粺鎿嶄綔鏃ュ織闆嗗悎 - * - * @param operLog 鎿嶄綔鏃ュ織瀵硅薄 - * @return 鎿嶄綔鏃ュ織闆嗗悎 - */ - public List<SysOperLog> selectOperLogList(SysOperLog operLog); - - /** - * 鎵归噺鍒犻櫎绯荤粺鎿嶄綔鏃ュ織 - * - * @param operIds 闇�瑕佸垹闄ょ殑鎿嶄綔鏃ュ織ID - * @return 缁撴灉 - */ - public int deleteOperLogByIds(Long[] operIds); - - /** - * 鏌ヨ鎿嶄綔鏃ュ織璇︾粏 - * - * @param operId 鎿嶄綔ID - * @return 鎿嶄綔鏃ュ織瀵硅薄 - */ - public SysOperLog selectOperLogById(Long operId); - - /** - * 娓呯┖鎿嶄綔鏃ュ織 - */ - public void cleanOperLog(); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java deleted file mode 100644 index 21e8662..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.ruoyi.system.mapper; - -import java.util.List; -import com.ruoyi.system.domain.SysPost; - -/** - * 宀椾綅淇℃伅 鏁版嵁灞� - * - * @author admin - */ -public interface SysPostMapper -{ - /** - * 鏌ヨ宀椾綅鏁版嵁闆嗗悎 - * - * @param post 宀椾綅淇℃伅 - * @return 宀椾綅鏁版嵁闆嗗悎 - */ - public List<SysPost> selectPostList(SysPost post); - - /** - * 鏌ヨ鎵�鏈夊矖浣� - * - * @return 宀椾綅鍒楄〃 - */ - public List<SysPost> selectPostAll(); - - /** - * 閫氳繃宀椾綅ID鏌ヨ宀椾綅淇℃伅 - * - * @param postId 宀椾綅ID - * @return 瑙掕壊瀵硅薄淇℃伅 - */ - public SysPost selectPostById(Long postId); - - /** - * 鏍规嵁鐢ㄦ埛ID鑾峰彇宀椾綅閫夋嫨妗嗗垪琛� - * - * @param userId 鐢ㄦ埛ID - * @return 閫変腑宀椾綅ID鍒楄〃 - */ - public List<Long> selectPostListByUserId(Long userId); - - /** - * 鏌ヨ鐢ㄦ埛鎵�灞炲矖浣嶇粍 - * - * @param userName 鐢ㄦ埛鍚� - * @return 缁撴灉 - */ - public List<SysPost> selectPostsByUserName(String userName); - - /** - * 鍒犻櫎宀椾綅淇℃伅 - * - * @param postId 宀椾綅ID - * @return 缁撴灉 - */ - public int deletePostById(Long postId); - - /** - * 鎵归噺鍒犻櫎宀椾綅淇℃伅 - * - * @param postIds 闇�瑕佸垹闄ょ殑宀椾綅ID - * @return 缁撴灉 - */ - public int deletePostByIds(Long[] postIds); - - /** - * 淇敼宀椾綅淇℃伅 - * - * @param post 宀椾綅淇℃伅 - * @return 缁撴灉 - */ - public int updatePost(SysPost post); - - /** - * 鏂板宀椾綅淇℃伅 - * - * @param post 宀椾綅淇℃伅 - * @return 缁撴灉 - */ - public int insertPost(SysPost post); - - /** - * 鏍¢獙宀椾綅鍚嶇О - * - * @param postName 宀椾綅鍚嶇О - * @return 缁撴灉 - */ - public SysPost checkPostNameUnique(String postName); - - /** - * 鏍¢獙宀椾綅缂栫爜 - * - * @param postCode 宀椾綅缂栫爜 - * @return 缁撴灉 - */ - public SysPost checkPostCodeUnique(String postCode); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java deleted file mode 100644 index d1d4f7d..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.ruoyi.system.mapper; - -import java.util.List; -import com.ruoyi.system.domain.SysRoleDept; - -/** - * 瑙掕壊涓庨儴闂ㄥ叧鑱旇〃 鏁版嵁灞� - * - * @author admin - */ -public interface SysRoleDeptMapper -{ - /** - * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊鍜岄儴闂ㄥ叧鑱� - * - * @param roleId 瑙掕壊ID - * @return 缁撴灉 - */ - public int deleteRoleDeptByRoleId(Long roleId); - - /** - * 鎵归噺鍒犻櫎瑙掕壊閮ㄩ棬鍏宠仈淇℃伅 - * - * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID - * @return 缁撴灉 - */ - public int deleteRoleDept(Long[] ids); - - /** - * 鏌ヨ閮ㄩ棬浣跨敤鏁伴噺 - * - * @param deptId 閮ㄩ棬ID - * @return 缁撴灉 - */ - public int selectCountRoleDeptByDeptId(Long deptId); - - /** - * 鎵归噺鏂板瑙掕壊閮ㄩ棬淇℃伅 - * - * @param roleDeptList 瑙掕壊閮ㄩ棬鍒楄〃 - * @return 缁撴灉 - */ - public int batchRoleDept(List<SysRoleDept> roleDeptList); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java deleted file mode 100644 index 5d33398..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.ruoyi.system.mapper; - -import java.util.List; -import com.se.system.api.domain.SysRole; - -/** - * 瑙掕壊琛� 鏁版嵁灞� - * - * @author admin - */ -public interface SysRoleMapper -{ - /** - * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瑙掕壊鏁版嵁 - * - * @param role 瑙掕壊淇℃伅 - * @return 瑙掕壊鏁版嵁闆嗗悎淇℃伅 - */ - public List<SysRole> selectRoleList(SysRole role); - - /** - * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊 - * - * @param userId 鐢ㄦ埛ID - * @return 瑙掕壊鍒楄〃 - */ - public List<SysRole> selectRolePermissionByUserId(Long userId); - - /** - * 鏌ヨ鎵�鏈夎鑹� - * - * @return 瑙掕壊鍒楄〃 - */ - public List<SysRole> selectRoleAll(); - - /** - * 鏍规嵁鐢ㄦ埛ID鑾峰彇瑙掕壊閫夋嫨妗嗗垪琛� - * - * @param userId 鐢ㄦ埛ID - * @return 閫変腑瑙掕壊ID鍒楄〃 - */ - public List<Long> selectRoleListByUserId(Long userId); - - /** - * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊 - * - * @param roleId 瑙掕壊ID - * @return 瑙掕壊瀵硅薄淇℃伅 - */ - public SysRole selectRoleById(Long roleId); - - /** - * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊 - * - * @param userName 鐢ㄦ埛鍚� - * @return 瑙掕壊鍒楄〃 - */ - public List<SysRole> selectRolesByUserName(String userName); - - /** - * 鏍¢獙瑙掕壊鍚嶇О鏄惁鍞竴 - * - * @param roleName 瑙掕壊鍚嶇О - * @return 瑙掕壊淇℃伅 - */ - public SysRole checkRoleNameUnique(String roleName); - - /** - * 鏍¢獙瑙掕壊鏉冮檺鏄惁鍞竴 - * - * @param roleKey 瑙掕壊鏉冮檺 - * @return 瑙掕壊淇℃伅 - */ - public SysRole checkRoleKeyUnique(String roleKey); - - /** - * 淇敼瑙掕壊淇℃伅 - * - * @param role 瑙掕壊淇℃伅 - * @return 缁撴灉 - */ - public int updateRole(SysRole role); - - /** - * 鏂板瑙掕壊淇℃伅 - * - * @param role 瑙掕壊淇℃伅 - * @return 缁撴灉 - */ - public int insertRole(SysRole role); - - /** - * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊 - * - * @param roleId 瑙掕壊ID - * @return 缁撴灉 - */ - public int deleteRoleById(Long roleId); - - /** - * 鎵归噺鍒犻櫎瑙掕壊淇℃伅 - * - * @param roleIds 闇�瑕佸垹闄ょ殑瑙掕壊ID - * @return 缁撴灉 - */ - public int deleteRoleByIds(Long[] roleIds); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java deleted file mode 100644 index 87fb374..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.ruoyi.system.mapper; - -import java.util.List; -import com.ruoyi.system.domain.SysRoleMenu; - -/** - * 瑙掕壊涓庤彍鍗曞叧鑱旇〃 鏁版嵁灞� - * - * @author admin - */ -public interface SysRoleMenuMapper -{ - /** - * 鏌ヨ鑿滃崟浣跨敤鏁伴噺 - * - * @param menuId 鑿滃崟ID - * @return 缁撴灉 - */ - public int checkMenuExistRole(Long menuId); - - /** - * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊鍜岃彍鍗曞叧鑱� - * - * @param roleId 瑙掕壊ID - * @return 缁撴灉 - */ - public int deleteRoleMenuByRoleId(Long roleId); - - /** - * 鎵归噺鍒犻櫎瑙掕壊鑿滃崟鍏宠仈淇℃伅 - * - * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID - * @return 缁撴灉 - */ - public int deleteRoleMenu(Long[] ids); - - /** - * 鎵归噺鏂板瑙掕壊鑿滃崟淇℃伅 - * - * @param roleMenuList 瑙掕壊鑿滃崟鍒楄〃 - * @return 缁撴灉 - */ - public int batchRoleMenu(List<SysRoleMenu> roleMenuList); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java deleted file mode 100644 index 9a4b430..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java +++ /dev/null @@ -1,127 +0,0 @@ -package com.ruoyi.system.mapper; - -import java.util.List; -import org.apache.ibatis.annotations.Param; -import com.se.system.api.domain.SysUser; - -/** - * 鐢ㄦ埛琛� 鏁版嵁灞� - * - * @author admin - */ -public interface SysUserMapper -{ - /** - * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃 - * - * @param sysUser 鐢ㄦ埛淇℃伅 - * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 - */ - public List<SysUser> selectUserList(SysUser sysUser); - - /** - * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸查厤鐢ㄦ埛瑙掕壊鍒楄〃 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 - */ - public List<SysUser> selectAllocatedList(SysUser user); - - /** - * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛� - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 - */ - public List<SysUser> selectUnallocatedList(SysUser user); - - /** - * 閫氳繃鐢ㄦ埛鍚嶆煡璇㈢敤鎴� - * - * @param userName 鐢ㄦ埛鍚� - * @return 鐢ㄦ埛瀵硅薄淇℃伅 - */ - public SysUser selectUserByUserName(String userName); - - /** - * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛 - * - * @param userId 鐢ㄦ埛ID - * @return 鐢ㄦ埛瀵硅薄淇℃伅 - */ - public SysUser selectUserById(Long userId); - - /** - * 鏂板鐢ㄦ埛淇℃伅 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 缁撴灉 - */ - public int insertUser(SysUser user); - - /** - * 淇敼鐢ㄦ埛淇℃伅 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 缁撴灉 - */ - public int updateUser(SysUser user); - - /** - * 淇敼鐢ㄦ埛澶村儚 - * - * @param userName 鐢ㄦ埛鍚� - * @param avatar 澶村儚鍦板潃 - * @return 缁撴灉 - */ - public int updateUserAvatar(@Param("userName") String userName, @Param("avatar") String avatar); - - /** - * 閲嶇疆鐢ㄦ埛瀵嗙爜 - * - * @param userName 鐢ㄦ埛鍚� - * @param password 瀵嗙爜 - * @return 缁撴灉 - */ - public int resetUserPwd(@Param("userName") String userName, @Param("password") String password); - - /** - * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛 - * - * @param userId 鐢ㄦ埛ID - * @return 缁撴灉 - */ - public int deleteUserById(Long userId); - - /** - * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅 - * - * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛ID - * @return 缁撴灉 - */ - public int deleteUserByIds(Long[] userIds); - - /** - * 鏍¢獙鐢ㄦ埛鍚嶇О鏄惁鍞竴 - * - * @param userName 鐢ㄦ埛鍚嶇О - * @return 缁撴灉 - */ - public SysUser checkUserNameUnique(String userName); - - /** - * 鏍¢獙鎵嬫満鍙风爜鏄惁鍞竴 - * - * @param phonenumber 鎵嬫満鍙风爜 - * @return 缁撴灉 - */ - public SysUser checkPhoneUnique(String phonenumber); - - /** - * 鏍¢獙email鏄惁鍞竴 - * - * @param email 鐢ㄦ埛閭 - * @return 缁撴灉 - */ - public SysUser checkEmailUnique(String email); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java deleted file mode 100644 index ad9bb68..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.ruoyi.system.mapper; - -import java.util.List; -import com.ruoyi.system.domain.SysUserPost; - -/** - * 鐢ㄦ埛涓庡矖浣嶅叧鑱旇〃 鏁版嵁灞� - * - * @author admin - */ -public interface SysUserPostMapper -{ - /** - * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛鍜屽矖浣嶅叧鑱� - * - * @param userId 鐢ㄦ埛ID - * @return 缁撴灉 - */ - public int deleteUserPostByUserId(Long userId); - - /** - * 閫氳繃宀椾綅ID鏌ヨ宀椾綅浣跨敤鏁伴噺 - * - * @param postId 宀椾綅ID - * @return 缁撴灉 - */ - public int countUserPostById(Long postId); - - /** - * 鎵归噺鍒犻櫎鐢ㄦ埛鍜屽矖浣嶅叧鑱� - * - * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID - * @return 缁撴灉 - */ - public int deleteUserPost(Long[] ids); - - /** - * 鎵归噺鏂板鐢ㄦ埛宀椾綅淇℃伅 - * - * @param userPostList 鐢ㄦ埛宀椾綅鍒楄〃 - * @return 缁撴灉 - */ - public int batchUserPost(List<SysUserPost> userPostList); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java deleted file mode 100644 index d2dd378..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.ruoyi.system.mapper; - -import java.util.List; -import org.apache.ibatis.annotations.Param; -import com.ruoyi.system.domain.SysUserRole; - -/** - * 鐢ㄦ埛涓庤鑹插叧鑱旇〃 鏁版嵁灞� - * - * @author admin - */ -public interface SysUserRoleMapper -{ - /** - * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛鍜岃鑹插叧鑱� - * - * @param userId 鐢ㄦ埛ID - * @return 缁撴灉 - */ - public int deleteUserRoleByUserId(Long userId); - - /** - * 鎵归噺鍒犻櫎鐢ㄦ埛鍜岃鑹插叧鑱� - * - * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID - * @return 缁撴灉 - */ - public int deleteUserRole(Long[] ids); - - /** - * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊浣跨敤鏁伴噺 - * - * @param roleId 瑙掕壊ID - * @return 缁撴灉 - */ - public int countUserRoleByRoleId(Long roleId); - - /** - * 鎵归噺鏂板鐢ㄦ埛瑙掕壊淇℃伅 - * - * @param userRoleList 鐢ㄦ埛瑙掕壊鍒楄〃 - * @return 缁撴灉 - */ - public int batchUserRole(List<SysUserRole> userRoleList); - - /** - * 鍒犻櫎鐢ㄦ埛鍜岃鑹插叧鑱斾俊鎭� - * - * @param userRole 鐢ㄦ埛鍜岃鑹插叧鑱斾俊鎭� - * @return 缁撴灉 - */ - public int deleteUserRoleInfo(SysUserRole userRole); - - /** - * 鎵归噺鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊 - * - * @param roleId 瑙掕壊ID - * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛鏁版嵁ID - * @return 缁撴灉 - */ - public int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") Long[] userIds); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java deleted file mode 100644 index 607e370..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.ruoyi.system.service; - -import java.util.List; -import com.ruoyi.system.domain.SysConfig; - -/** - * 鍙傛暟閰嶇疆 鏈嶅姟灞� - * - * @author admin - */ -public interface ISysConfigService -{ - /** - * 鏌ヨ鍙傛暟閰嶇疆淇℃伅 - * - * @param configId 鍙傛暟閰嶇疆ID - * @return 鍙傛暟閰嶇疆淇℃伅 - */ - public SysConfig selectConfigById(Long configId); - - /** - * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅 - * - * @param configKey 鍙傛暟閿悕 - * @return 鍙傛暟閿�� - */ - public String selectConfigByKey(String configKey); - - /** - * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃 - * - * @param config 鍙傛暟閰嶇疆淇℃伅 - * @return 鍙傛暟閰嶇疆闆嗗悎 - */ - public List<SysConfig> selectConfigList(SysConfig config); - - /** - * 鏂板鍙傛暟閰嶇疆 - * - * @param config 鍙傛暟閰嶇疆淇℃伅 - * @return 缁撴灉 - */ - public int insertConfig(SysConfig config); - - /** - * 淇敼鍙傛暟閰嶇疆 - * - * @param config 鍙傛暟閰嶇疆淇℃伅 - * @return 缁撴灉 - */ - public int updateConfig(SysConfig config); - - /** - * 鎵归噺鍒犻櫎鍙傛暟淇℃伅 - * - * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID - */ - public void deleteConfigByIds(Long[] configIds); - - /** - * 鍔犺浇鍙傛暟缂撳瓨鏁版嵁 - */ - public void loadingConfigCache(); - - /** - * 娓呯┖鍙傛暟缂撳瓨鏁版嵁 - */ - public void clearConfigCache(); - - /** - * 閲嶇疆鍙傛暟缂撳瓨鏁版嵁 - */ - public void resetConfigCache(); - - /** - * 鏍¢獙鍙傛暟閿悕鏄惁鍞竴 - * - * @param config 鍙傛暟淇℃伅 - * @return 缁撴灉 - */ - public boolean checkConfigKeyUnique(SysConfig config); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java deleted file mode 100644 index 76bb396..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.ruoyi.system.service; - -import java.util.List; -import com.se.system.api.domain.SysDept; -import com.ruoyi.system.domain.vo.TreeSelect; - -/** - * 閮ㄩ棬绠$悊 鏈嶅姟灞� - * - * @author admin - */ -public interface ISysDeptService -{ - /** - * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁 - * - * @param dept 閮ㄩ棬淇℃伅 - * @return 閮ㄩ棬淇℃伅闆嗗悎 - */ - public List<SysDept> selectDeptList(SysDept dept); - - /** - * 鏌ヨ閮ㄩ棬鏍戠粨鏋勪俊鎭� - * - * @param dept 閮ㄩ棬淇℃伅 - * @return 閮ㄩ棬鏍戜俊鎭泦鍚� - */ - public List<TreeSelect> selectDeptTreeList(SysDept dept); - - /** - * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯 - * - * @param depts 閮ㄩ棬鍒楄〃 - * @return 鏍戠粨鏋勫垪琛� - */ - public List<SysDept> buildDeptTree(List<SysDept> depts); - - /** - * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯 - * - * @param depts 閮ㄩ棬鍒楄〃 - * @return 涓嬫媺鏍戠粨鏋勫垪琛� - */ - public List<TreeSelect> buildDeptTreeSelect(List<SysDept> depts); - - /** - * 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭� - * - * @param roleId 瑙掕壊ID - * @return 閫変腑閮ㄩ棬鍒楄〃 - */ - public List<Long> selectDeptListByRoleId(Long roleId); - - /** - * 鏍规嵁閮ㄩ棬ID鏌ヨ淇℃伅 - * - * @param deptId 閮ㄩ棬ID - * @return 閮ㄩ棬淇℃伅 - */ - public SysDept selectDeptById(Long deptId); - - /** - * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬锛堟甯哥姸鎬侊級 - * - * @param deptId 閮ㄩ棬ID - * @return 瀛愰儴闂ㄦ暟 - */ - public int selectNormalChildrenDeptById(Long deptId); - - /** - * 鏄惁瀛樺湪閮ㄩ棬瀛愯妭鐐� - * - * @param deptId 閮ㄩ棬ID - * @return 缁撴灉 - */ - public boolean hasChildByDeptId(Long deptId); - - /** - * 鏌ヨ閮ㄩ棬鏄惁瀛樺湪鐢ㄦ埛 - * - * @param deptId 閮ㄩ棬ID - * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦� - */ - public boolean checkDeptExistUser(Long deptId); - - /** - * 鏍¢獙閮ㄩ棬鍚嶇О鏄惁鍞竴 - * - * @param dept 閮ㄩ棬淇℃伅 - * @return 缁撴灉 - */ - public boolean checkDeptNameUnique(SysDept dept); - - /** - * 鏍¢獙閮ㄩ棬鏄惁鏈夋暟鎹潈闄� - * - * @param deptId 閮ㄩ棬id - */ - public void checkDeptDataScope(Long deptId); - - /** - * 鏂板淇濆瓨閮ㄩ棬淇℃伅 - * - * @param dept 閮ㄩ棬淇℃伅 - * @return 缁撴灉 - */ - public int insertDept(SysDept dept); - - /** - * 淇敼淇濆瓨閮ㄩ棬淇℃伅 - * - * @param dept 閮ㄩ棬淇℃伅 - * @return 缁撴灉 - */ - public int updateDept(SysDept dept); - - /** - * 鍒犻櫎閮ㄩ棬绠$悊淇℃伅 - * - * @param deptId 閮ㄩ棬ID - * @return 缁撴灉 - */ - public int deleteDeptById(Long deptId); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java deleted file mode 100644 index 84df114..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.ruoyi.system.service; - -import java.util.List; -import com.se.system.api.domain.SysDictData; - -/** - * 瀛楀吀 涓氬姟灞� - * - * @author admin - */ -public interface ISysDictDataService -{ - /** - * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀鏁版嵁 - * - * @param dictData 瀛楀吀鏁版嵁淇℃伅 - * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅 - */ - public List<SysDictData> selectDictDataList(SysDictData dictData); - - /** - * 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏搁敭鍊兼煡璇㈠瓧鍏告暟鎹俊鎭� - * - * @param dictType 瀛楀吀绫诲瀷 - * @param dictValue 瀛楀吀閿�� - * @return 瀛楀吀鏍囩 - */ - public String selectDictLabel(String dictType, String dictValue); - - /** - * 鏍规嵁瀛楀吀鏁版嵁ID鏌ヨ淇℃伅 - * - * @param dictCode 瀛楀吀鏁版嵁ID - * @return 瀛楀吀鏁版嵁 - */ - public SysDictData selectDictDataById(Long dictCode); - - /** - * 鎵归噺鍒犻櫎瀛楀吀鏁版嵁淇℃伅 - * - * @param dictCodes 闇�瑕佸垹闄ょ殑瀛楀吀鏁版嵁ID - */ - public void deleteDictDataByIds(Long[] dictCodes); - - /** - * 鏂板淇濆瓨瀛楀吀鏁版嵁淇℃伅 - * - * @param dictData 瀛楀吀鏁版嵁淇℃伅 - * @return 缁撴灉 - */ - public int insertDictData(SysDictData dictData); - - /** - * 淇敼淇濆瓨瀛楀吀鏁版嵁淇℃伅 - * - * @param dictData 瀛楀吀鏁版嵁淇℃伅 - * @return 缁撴灉 - */ - public int updateDictData(SysDictData dictData); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java deleted file mode 100644 index 78da119..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.ruoyi.system.service; - -import java.util.List; -import com.se.system.api.domain.SysDictData; -import com.se.system.api.domain.SysDictType; - -/** - * 瀛楀吀 涓氬姟灞� - * - * @author admin - */ -public interface ISysDictTypeService -{ - /** - * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀绫诲瀷 - * - * @param dictType 瀛楀吀绫诲瀷淇℃伅 - * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅 - */ - public List<SysDictType> selectDictTypeList(SysDictType dictType); - - /** - * 鏍规嵁鎵�鏈夊瓧鍏哥被鍨� - * - * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅 - */ - public List<SysDictType> selectDictTypeAll(); - - /** - * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁 - * - * @param dictType 瀛楀吀绫诲瀷 - * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅 - */ - public List<SysDictData> selectDictDataByType(String dictType); - - /** - * 鏍规嵁瀛楀吀绫诲瀷ID鏌ヨ淇℃伅 - * - * @param dictId 瀛楀吀绫诲瀷ID - * @return 瀛楀吀绫诲瀷 - */ - public SysDictType selectDictTypeById(Long dictId); - - /** - * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ淇℃伅 - * - * @param dictType 瀛楀吀绫诲瀷 - * @return 瀛楀吀绫诲瀷 - */ - public SysDictType selectDictTypeByType(String dictType); - - /** - * 鎵归噺鍒犻櫎瀛楀吀淇℃伅 - * - * @param dictIds 闇�瑕佸垹闄ょ殑瀛楀吀ID - */ - public void deleteDictTypeByIds(Long[] dictIds); - - /** - * 鍔犺浇瀛楀吀缂撳瓨鏁版嵁 - */ - public void loadingDictCache(); - - /** - * 娓呯┖瀛楀吀缂撳瓨鏁版嵁 - */ - public void clearDictCache(); - - /** - * 閲嶇疆瀛楀吀缂撳瓨鏁版嵁 - */ - public void resetDictCache(); - - /** - * 鏂板淇濆瓨瀛楀吀绫诲瀷淇℃伅 - * - * @param dictType 瀛楀吀绫诲瀷淇℃伅 - * @return 缁撴灉 - */ - public int insertDictType(SysDictType dictType); - - /** - * 淇敼淇濆瓨瀛楀吀绫诲瀷淇℃伅 - * - * @param dictType 瀛楀吀绫诲瀷淇℃伅 - * @return 缁撴灉 - */ - public int updateDictType(SysDictType dictType); - - /** - * 鏍¢獙瀛楀吀绫诲瀷绉版槸鍚﹀敮涓� - * - * @param dictType 瀛楀吀绫诲瀷 - * @return 缁撴灉 - */ - public boolean checkDictTypeUnique(SysDictType dictType); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java deleted file mode 100644 index f46a38a..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.ruoyi.system.service; - -import java.util.List; -import com.se.system.api.domain.SysLogininfor; - -/** - * 绯荤粺璁块棶鏃ュ織鎯呭喌淇℃伅 鏈嶅姟灞� - * - * @author admin - */ -public interface ISysLogininforService -{ - /** - * 鏂板绯荤粺鐧诲綍鏃ュ織 - * - * @param logininfor 璁块棶鏃ュ織瀵硅薄 - */ - public int insertLogininfor(SysLogininfor logininfor); - - /** - * 鏌ヨ绯荤粺鐧诲綍鏃ュ織闆嗗悎 - * - * @param logininfor 璁块棶鏃ュ織瀵硅薄 - * @return 鐧诲綍璁板綍闆嗗悎 - */ - public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor); - - /** - * 鎵归噺鍒犻櫎绯荤粺鐧诲綍鏃ュ織 - * - * @param infoIds 闇�瑕佸垹闄ょ殑鐧诲綍鏃ュ織ID - * @return 缁撴灉 - */ - public int deleteLogininforByIds(Long[] infoIds); - - /** - * 娓呯┖绯荤粺鐧诲綍鏃ュ織 - */ - public void cleanLogininfor(); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java deleted file mode 100644 index da2b7fe..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java +++ /dev/null @@ -1,144 +0,0 @@ -package com.ruoyi.system.service; - -import java.util.List; -import java.util.Set; -import com.ruoyi.system.domain.SysMenu; -import com.ruoyi.system.domain.vo.RouterVo; -import com.ruoyi.system.domain.vo.TreeSelect; - -/** - * 鑿滃崟 涓氬姟灞� - * - * @author admin - */ -public interface ISysMenuService -{ - /** - * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃 - * - * @param userId 鐢ㄦ埛ID - * @return 鑿滃崟鍒楄〃 - */ - public List<SysMenu> selectMenuList(Long userId); - - /** - * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃 - * - * @param menu 鑿滃崟淇℃伅 - * @param userId 鐢ㄦ埛ID - * @return 鑿滃崟鍒楄〃 - */ - public List<SysMenu> selectMenuList(SysMenu menu, Long userId); - - /** - * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺 - * - * @param userId 鐢ㄦ埛ID - * @return 鏉冮檺鍒楄〃 - */ - public Set<String> selectMenuPermsByUserId(Long userId); - - /** - * 鏍规嵁瑙掕壊ID鏌ヨ鏉冮檺 - * - * @param roleId 瑙掕壊ID - * @return 鏉冮檺鍒楄〃 - */ - public Set<String> selectMenuPermsByRoleId(Long roleId); - - /** - * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟鏍戜俊鎭� - * - * @param userId 鐢ㄦ埛ID - * @return 鑿滃崟鍒楄〃 - */ - public List<SysMenu> selectMenuTreeByUserId(Long userId); - - /** - * 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鏍戜俊鎭� - * - * @param roleId 瑙掕壊ID - * @return 閫変腑鑿滃崟鍒楄〃 - */ - public List<Long> selectMenuListByRoleId(Long roleId); - - /** - * 鏋勫缓鍓嶇璺敱鎵�闇�瑕佺殑鑿滃崟 - * - * @param menus 鑿滃崟鍒楄〃 - * @return 璺敱鍒楄〃 - */ - public List<RouterVo> buildMenus(List<SysMenu> menus); - - /** - * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯 - * - * @param menus 鑿滃崟鍒楄〃 - * @return 鏍戠粨鏋勫垪琛� - */ - public List<SysMenu> buildMenuTree(List<SysMenu> menus); - - /** - * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯 - * - * @param menus 鑿滃崟鍒楄〃 - * @return 涓嬫媺鏍戠粨鏋勫垪琛� - */ - public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus); - - /** - * 鏍规嵁鑿滃崟ID鏌ヨ淇℃伅 - * - * @param menuId 鑿滃崟ID - * @return 鑿滃崟淇℃伅 - */ - public SysMenu selectMenuById(Long menuId); - - /** - * 鏄惁瀛樺湪鑿滃崟瀛愯妭鐐� - * - * @param menuId 鑿滃崟ID - * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦� - */ - public boolean hasChildByMenuId(Long menuId); - - /** - * 鏌ヨ鑿滃崟鏄惁瀛樺湪瑙掕壊 - * - * @param menuId 鑿滃崟ID - * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦� - */ - public boolean checkMenuExistRole(Long menuId); - - /** - * 鏂板淇濆瓨鑿滃崟淇℃伅 - * - * @param menu 鑿滃崟淇℃伅 - * @return 缁撴灉 - */ - public int insertMenu(SysMenu menu); - - /** - * 淇敼淇濆瓨鑿滃崟淇℃伅 - * - * @param menu 鑿滃崟淇℃伅 - * @return 缁撴灉 - */ - public int updateMenu(SysMenu menu); - - /** - * 鍒犻櫎鑿滃崟绠$悊淇℃伅 - * - * @param menuId 鑿滃崟ID - * @return 缁撴灉 - */ - public int deleteMenuById(Long menuId); - - /** - * 鏍¢獙鑿滃崟鍚嶇О鏄惁鍞竴 - * - * @param menu 鑿滃崟淇℃伅 - * @return 缁撴灉 - */ - public boolean checkMenuNameUnique(SysMenu menu); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java deleted file mode 100644 index 88879ce..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.ruoyi.system.service; - -import java.util.List; -import com.ruoyi.system.domain.SysNotice; - -/** - * 鍏憡 鏈嶅姟灞� - * - * @author admin - */ -public interface ISysNoticeService -{ - /** - * 鏌ヨ鍏憡淇℃伅 - * - * @param noticeId 鍏憡ID - * @return 鍏憡淇℃伅 - */ - public SysNotice selectNoticeById(Long noticeId); - - /** - * 鏌ヨ鍏憡鍒楄〃 - * - * @param notice 鍏憡淇℃伅 - * @return 鍏憡闆嗗悎 - */ - public List<SysNotice> selectNoticeList(SysNotice notice); - - /** - * 鏂板鍏憡 - * - * @param notice 鍏憡淇℃伅 - * @return 缁撴灉 - */ - public int insertNotice(SysNotice notice); - - /** - * 淇敼鍏憡 - * - * @param notice 鍏憡淇℃伅 - * @return 缁撴灉 - */ - public int updateNotice(SysNotice notice); - - /** - * 鍒犻櫎鍏憡淇℃伅 - * - * @param noticeId 鍏憡ID - * @return 缁撴灉 - */ - public int deleteNoticeById(Long noticeId); - - /** - * 鎵归噺鍒犻櫎鍏憡淇℃伅 - * - * @param noticeIds 闇�瑕佸垹闄ょ殑鍏憡ID - * @return 缁撴灉 - */ - public int deleteNoticeByIds(Long[] noticeIds); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java deleted file mode 100644 index 35040e9..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.ruoyi.system.service; - -import java.util.List; -import com.se.system.api.domain.SysOperLog; - -/** - * 鎿嶄綔鏃ュ織 鏈嶅姟灞� - * - * @author admin - */ -public interface ISysOperLogService -{ - /** - * 鏂板鎿嶄綔鏃ュ織 - * - * @param operLog 鎿嶄綔鏃ュ織瀵硅薄 - * @return 缁撴灉 - */ - public int insertOperlog(SysOperLog operLog); - - /** - * 鏌ヨ绯荤粺鎿嶄綔鏃ュ織闆嗗悎 - * - * @param operLog 鎿嶄綔鏃ュ織瀵硅薄 - * @return 鎿嶄綔鏃ュ織闆嗗悎 - */ - public List<SysOperLog> selectOperLogList(SysOperLog operLog); - - /** - * 鎵归噺鍒犻櫎绯荤粺鎿嶄綔鏃ュ織 - * - * @param operIds 闇�瑕佸垹闄ょ殑鎿嶄綔鏃ュ織ID - * @return 缁撴灉 - */ - public int deleteOperLogByIds(Long[] operIds); - - /** - * 鏌ヨ鎿嶄綔鏃ュ織璇︾粏 - * - * @param operId 鎿嶄綔ID - * @return 鎿嶄綔鏃ュ織瀵硅薄 - */ - public SysOperLog selectOperLogById(Long operId); - - /** - * 娓呯┖鎿嶄綔鏃ュ織 - */ - public void cleanOperLog(); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPermissionService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPermissionService.java deleted file mode 100644 index 9f38b49..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPermissionService.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.ruoyi.system.service; - -import java.util.Set; - -import com.se.system.api.domain.SysUser; - -/** - * 鏉冮檺淇℃伅 鏈嶅姟灞� - * - * @author admin - */ -public interface ISysPermissionService -{ - /** - * 鑾峰彇瑙掕壊鏁版嵁鏉冮檺 - * - * @param userId 鐢ㄦ埛Id - * @return 瑙掕壊鏉冮檺淇℃伅 - */ - public Set<String> getRolePermission(SysUser user); - - /** - * 鑾峰彇鑿滃崟鏁版嵁鏉冮檺 - * - * @param userId 鐢ㄦ埛Id - * @return 鑿滃崟鏉冮檺淇℃伅 - */ - public Set<String> getMenuPermission(SysUser user); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java deleted file mode 100644 index 55a43c0..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.ruoyi.system.service; - -import java.util.List; -import com.ruoyi.system.domain.SysPost; - -/** - * 宀椾綅淇℃伅 鏈嶅姟灞� - * - * @author admin - */ -public interface ISysPostService -{ - /** - * 鏌ヨ宀椾綅淇℃伅闆嗗悎 - * - * @param post 宀椾綅淇℃伅 - * @return 宀椾綅鍒楄〃 - */ - public List<SysPost> selectPostList(SysPost post); - - /** - * 鏌ヨ鎵�鏈夊矖浣� - * - * @return 宀椾綅鍒楄〃 - */ - public List<SysPost> selectPostAll(); - - /** - * 閫氳繃宀椾綅ID鏌ヨ宀椾綅淇℃伅 - * - * @param postId 宀椾綅ID - * @return 瑙掕壊瀵硅薄淇℃伅 - */ - public SysPost selectPostById(Long postId); - - /** - * 鏍规嵁鐢ㄦ埛ID鑾峰彇宀椾綅閫夋嫨妗嗗垪琛� - * - * @param userId 鐢ㄦ埛ID - * @return 閫変腑宀椾綅ID鍒楄〃 - */ - public List<Long> selectPostListByUserId(Long userId); - - /** - * 鏍¢獙宀椾綅鍚嶇О - * - * @param post 宀椾綅淇℃伅 - * @return 缁撴灉 - */ - public boolean checkPostNameUnique(SysPost post); - - /** - * 鏍¢獙宀椾綅缂栫爜 - * - * @param post 宀椾綅淇℃伅 - * @return 缁撴灉 - */ - public boolean checkPostCodeUnique(SysPost post); - - /** - * 閫氳繃宀椾綅ID鏌ヨ宀椾綅浣跨敤鏁伴噺 - * - * @param postId 宀椾綅ID - * @return 缁撴灉 - */ - public int countUserPostById(Long postId); - - /** - * 鍒犻櫎宀椾綅淇℃伅 - * - * @param postId 宀椾綅ID - * @return 缁撴灉 - */ - public int deletePostById(Long postId); - - /** - * 鎵归噺鍒犻櫎宀椾綅淇℃伅 - * - * @param postIds 闇�瑕佸垹闄ょ殑宀椾綅ID - * @return 缁撴灉 - */ - public int deletePostByIds(Long[] postIds); - - /** - * 鏂板淇濆瓨宀椾綅淇℃伅 - * - * @param post 宀椾綅淇℃伅 - * @return 缁撴灉 - */ - public int insertPost(SysPost post); - - /** - * 淇敼淇濆瓨宀椾綅淇℃伅 - * - * @param post 宀椾綅淇℃伅 - * @return 缁撴灉 - */ - public int updatePost(SysPost post); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java deleted file mode 100644 index d03531a..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java +++ /dev/null @@ -1,173 +0,0 @@ -package com.ruoyi.system.service; - -import java.util.List; -import java.util.Set; -import com.se.system.api.domain.SysRole; -import com.ruoyi.system.domain.SysUserRole; - -/** - * 瑙掕壊涓氬姟灞� - * - * @author admin - */ -public interface ISysRoleService -{ - /** - * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瑙掕壊鏁版嵁 - * - * @param role 瑙掕壊淇℃伅 - * @return 瑙掕壊鏁版嵁闆嗗悎淇℃伅 - */ - public List<SysRole> selectRoleList(SysRole role); - - /** - * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊鍒楄〃 - * - * @param userId 鐢ㄦ埛ID - * @return 瑙掕壊鍒楄〃 - */ - public List<SysRole> selectRolesByUserId(Long userId); - - /** - * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊鏉冮檺 - * - * @param userId 鐢ㄦ埛ID - * @return 鏉冮檺鍒楄〃 - */ - public Set<String> selectRolePermissionByUserId(Long userId); - - /** - * 鏌ヨ鎵�鏈夎鑹� - * - * @return 瑙掕壊鍒楄〃 - */ - public List<SysRole> selectRoleAll(); - - /** - * 鏍规嵁鐢ㄦ埛ID鑾峰彇瑙掕壊閫夋嫨妗嗗垪琛� - * - * @param userId 鐢ㄦ埛ID - * @return 閫変腑瑙掕壊ID鍒楄〃 - */ - public List<Long> selectRoleListByUserId(Long userId); - - /** - * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊 - * - * @param roleId 瑙掕壊ID - * @return 瑙掕壊瀵硅薄淇℃伅 - */ - public SysRole selectRoleById(Long roleId); - - /** - * 鏍¢獙瑙掕壊鍚嶇О鏄惁鍞竴 - * - * @param role 瑙掕壊淇℃伅 - * @return 缁撴灉 - */ - public boolean checkRoleNameUnique(SysRole role); - - /** - * 鏍¢獙瑙掕壊鏉冮檺鏄惁鍞竴 - * - * @param role 瑙掕壊淇℃伅 - * @return 缁撴灉 - */ - public boolean checkRoleKeyUnique(SysRole role); - - /** - * 鏍¢獙瑙掕壊鏄惁鍏佽鎿嶄綔 - * - * @param role 瑙掕壊淇℃伅 - */ - public void checkRoleAllowed(SysRole role); - - /** - * 鏍¢獙瑙掕壊鏄惁鏈夋暟鎹潈闄� - * - * @param roleIds 瑙掕壊id - */ - public void checkRoleDataScope(Long... roleIds); - - /** - * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊浣跨敤鏁伴噺 - * - * @param roleId 瑙掕壊ID - * @return 缁撴灉 - */ - public int countUserRoleByRoleId(Long roleId); - - /** - * 鏂板淇濆瓨瑙掕壊淇℃伅 - * - * @param role 瑙掕壊淇℃伅 - * @return 缁撴灉 - */ - public int insertRole(SysRole role); - - /** - * 淇敼淇濆瓨瑙掕壊淇℃伅 - * - * @param role 瑙掕壊淇℃伅 - * @return 缁撴灉 - */ - public int updateRole(SysRole role); - - /** - * 淇敼瑙掕壊鐘舵�� - * - * @param role 瑙掕壊淇℃伅 - * @return 缁撴灉 - */ - public int updateRoleStatus(SysRole role); - - /** - * 淇敼鏁版嵁鏉冮檺淇℃伅 - * - * @param role 瑙掕壊淇℃伅 - * @return 缁撴灉 - */ - public int authDataScope(SysRole role); - - /** - * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊 - * - * @param roleId 瑙掕壊ID - * @return 缁撴灉 - */ - public int deleteRoleById(Long roleId); - - /** - * 鎵归噺鍒犻櫎瑙掕壊淇℃伅 - * - * @param roleIds 闇�瑕佸垹闄ょ殑瑙掕壊ID - * @return 缁撴灉 - */ - public int deleteRoleByIds(Long[] roleIds); - - /** - * 鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊 - * - * @param userRole 鐢ㄦ埛鍜岃鑹插叧鑱斾俊鎭� - * @return 缁撴灉 - */ - public int deleteAuthUser(SysUserRole userRole); - - /** - * 鎵归噺鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊 - * - * @param roleId 瑙掕壊ID - * @param userIds 闇�瑕佸彇娑堟巿鏉冪殑鐢ㄦ埛鏁版嵁ID - * @return 缁撴灉 - */ - public int deleteAuthUsers(Long roleId, Long[] userIds); - - /** - * 鎵归噺閫夋嫨鎺堟潈鐢ㄦ埛瑙掕壊 - * - * @param roleId 瑙掕壊ID - * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛鏁版嵁ID - * @return 缁撴灉 - */ - public int insertAuthUsers(Long roleId, Long[] userIds); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserOnlineService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserOnlineService.java deleted file mode 100644 index 469c717..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserOnlineService.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.ruoyi.system.service; - -import com.se.system.api.model.LoginUser; -import com.ruoyi.system.domain.SysUserOnline; - -/** - * 鍦ㄧ嚎鐢ㄦ埛 鏈嶅姟灞� - * - * @author admin - */ -public interface ISysUserOnlineService -{ - /** - * 閫氳繃鐧诲綍鍦板潃鏌ヨ淇℃伅 - * - * @param ipaddr 鐧诲綍鍦板潃 - * @param user 鐢ㄦ埛淇℃伅 - * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅 - */ - public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user); - - /** - * 閫氳繃鐢ㄦ埛鍚嶇О鏌ヨ淇℃伅 - * - * @param userName 鐢ㄦ埛鍚嶇О - * @param user 鐢ㄦ埛淇℃伅 - * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅 - */ - public SysUserOnline selectOnlineByUserName(String userName, LoginUser user); - - /** - * 閫氳繃鐧诲綍鍦板潃/鐢ㄦ埛鍚嶇О鏌ヨ淇℃伅 - * - * @param ipaddr 鐧诲綍鍦板潃 - * @param userName 鐢ㄦ埛鍚嶇О - * @param user 鐢ㄦ埛淇℃伅 - * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅 - */ - public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user); - - /** - * 璁剧疆鍦ㄧ嚎鐢ㄦ埛淇℃伅 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 鍦ㄧ嚎鐢ㄦ埛 - */ - public SysUserOnline loginUserToUserOnline(LoginUser user); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java deleted file mode 100644 index 9003977..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java +++ /dev/null @@ -1,206 +0,0 @@ -package com.ruoyi.system.service; - -import java.util.List; -import com.se.system.api.domain.SysUser; - -/** - * 鐢ㄦ埛 涓氬姟灞� - * - * @author admin - */ -public interface ISysUserService -{ - /** - * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 - */ - public List<SysUser> selectUserList(SysUser user); - - /** - * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛� - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 - */ - public List<SysUser> selectAllocatedList(SysUser user); - - /** - * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛� - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 - */ - public List<SysUser> selectUnallocatedList(SysUser user); - - /** - * 閫氳繃鐢ㄦ埛鍚嶆煡璇㈢敤鎴� - * - * @param userName 鐢ㄦ埛鍚� - * @return 鐢ㄦ埛瀵硅薄淇℃伅 - */ - public SysUser selectUserByUserName(String userName); - - /** - * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛 - * - * @param userId 鐢ㄦ埛ID - * @return 鐢ㄦ埛瀵硅薄淇℃伅 - */ - public SysUser selectUserById(Long userId); - - /** - * 鏍规嵁鐢ㄦ埛ID鏌ヨ鐢ㄦ埛鎵�灞炶鑹茬粍 - * - * @param userName 鐢ㄦ埛鍚� - * @return 缁撴灉 - */ - public String selectUserRoleGroup(String userName); - - /** - * 鏍规嵁鐢ㄦ埛ID鏌ヨ鐢ㄦ埛鎵�灞炲矖浣嶇粍 - * - * @param userName 鐢ㄦ埛鍚� - * @return 缁撴灉 - */ - public String selectUserPostGroup(String userName); - - /** - * 鏍¢獙鐢ㄦ埛鍚嶇О鏄惁鍞竴 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 缁撴灉 - */ - public boolean checkUserNameUnique(SysUser user); - - /** - * 鏍¢獙鎵嬫満鍙风爜鏄惁鍞竴 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 缁撴灉 - */ - public boolean checkPhoneUnique(SysUser user); - - /** - * 鏍¢獙email鏄惁鍞竴 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 缁撴灉 - */ - public boolean checkEmailUnique(SysUser user); - - /** - * 鏍¢獙鐢ㄦ埛鏄惁鍏佽鎿嶄綔 - * - * @param user 鐢ㄦ埛淇℃伅 - */ - public void checkUserAllowed(SysUser user); - - /** - * 鏍¢獙鐢ㄦ埛鏄惁鏈夋暟鎹潈闄� - * - * @param userId 鐢ㄦ埛id - */ - public void checkUserDataScope(Long userId); - - /** - * 鏂板鐢ㄦ埛淇℃伅 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 缁撴灉 - */ - public int insertUser(SysUser user); - - /** - * 娉ㄥ唽鐢ㄦ埛淇℃伅 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 缁撴灉 - */ - public boolean registerUser(SysUser user); - - /** - * 淇敼鐢ㄦ埛淇℃伅 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 缁撴灉 - */ - public int updateUser(SysUser user); - - /** - * 鐢ㄦ埛鎺堟潈瑙掕壊 - * - * @param userId 鐢ㄦ埛ID - * @param roleIds 瑙掕壊缁� - */ - public void insertUserAuth(Long userId, Long[] roleIds); - - /** - * 淇敼鐢ㄦ埛鐘舵�� - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 缁撴灉 - */ - public int updateUserStatus(SysUser user); - - /** - * 淇敼鐢ㄦ埛鍩烘湰淇℃伅 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 缁撴灉 - */ - public boolean updateUserProfile(SysUser user); - - /** - * 淇敼鐢ㄦ埛澶村儚 - * - * @param userName 鐢ㄦ埛鍚� - * @param avatar 澶村儚鍦板潃 - * @return 缁撴灉 - */ - public boolean updateUserAvatar(String userName, String avatar); - - /** - * 閲嶇疆鐢ㄦ埛瀵嗙爜 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 缁撴灉 - */ - public int resetPwd(SysUser user); - - /** - * 閲嶇疆鐢ㄦ埛瀵嗙爜 - * - * @param userName 鐢ㄦ埛鍚� - * @param password 瀵嗙爜 - * @return 缁撴灉 - */ - public int resetUserPwd(String userName, String password); - - /** - * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛 - * - * @param userId 鐢ㄦ埛ID - * @return 缁撴灉 - */ - public int deleteUserById(Long userId); - - /** - * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅 - * - * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛ID - * @return 缁撴灉 - */ - public int deleteUserByIds(Long[] userIds); - - /** - * 瀵煎叆鐢ㄦ埛鏁版嵁 - * - * @param userList 鐢ㄦ埛鏁版嵁鍒楄〃 - * @param isUpdateSupport 鏄惁鏇存柊鏀寔锛屽鏋滃凡瀛樺湪锛屽垯杩涜鏇存柊鏁版嵁 - * @param operName 鎿嶄綔鐢ㄦ埛 - * @return 缁撴灉 - */ - public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName); -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java deleted file mode 100644 index cb7dbe2..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java +++ /dev/null @@ -1,213 +0,0 @@ -package com.ruoyi.system.service.impl; - -import java.util.Collection; -import java.util.List; -import javax.annotation.PostConstruct; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.se.common.core.constant.CacheConstants; -import com.se.common.core.constant.UserConstants; -import com.se.common.core.exception.ServiceException; -import com.se.common.core.text.Convert; -import com.se.common.core.utils.StringUtils; -import com.se.common.redis.service.RedisService; -import com.ruoyi.system.domain.SysConfig; -import com.ruoyi.system.mapper.SysConfigMapper; -import com.ruoyi.system.service.ISysConfigService; - -/** - * 鍙傛暟閰嶇疆 鏈嶅姟灞傚疄鐜� - * - * @author admin - */ -@Service -public class SysConfigServiceImpl implements ISysConfigService -{ - @Autowired - private SysConfigMapper configMapper; - - @Autowired - private RedisService redisService; - - /** - * 椤圭洰鍚姩鏃讹紝鍒濆鍖栧弬鏁板埌缂撳瓨 - */ - @PostConstruct - public void init() - { - loadingConfigCache(); - } - - /** - * 鏌ヨ鍙傛暟閰嶇疆淇℃伅 - * - * @param configId 鍙傛暟閰嶇疆ID - * @return 鍙傛暟閰嶇疆淇℃伅 - */ - @Override - public SysConfig selectConfigById(Long configId) - { - SysConfig config = new SysConfig(); - config.setConfigId(configId); - return configMapper.selectConfig(config); - } - - /** - * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅 - * - * @param configKey 鍙傛暟key - * @return 鍙傛暟閿�� - */ - @Override - public String selectConfigByKey(String configKey) - { - String configValue = Convert.toStr(redisService.getCacheObject(getCacheKey(configKey))); - if (StringUtils.isNotEmpty(configValue)) - { - return configValue; - } - SysConfig config = new SysConfig(); - config.setConfigKey(configKey); - SysConfig retConfig = configMapper.selectConfig(config); - if (StringUtils.isNotNull(retConfig)) - { - redisService.setCacheObject(getCacheKey(configKey), retConfig.getConfigValue()); - return retConfig.getConfigValue(); - } - return StringUtils.EMPTY; - } - - /** - * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃 - * - * @param config 鍙傛暟閰嶇疆淇℃伅 - * @return 鍙傛暟閰嶇疆闆嗗悎 - */ - @Override - public List<SysConfig> selectConfigList(SysConfig config) - { - return configMapper.selectConfigList(config); - } - - /** - * 鏂板鍙傛暟閰嶇疆 - * - * @param config 鍙傛暟閰嶇疆淇℃伅 - * @return 缁撴灉 - */ - @Override - public int insertConfig(SysConfig config) - { - int row = configMapper.insertConfig(config); - if (row > 0) - { - redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue()); - } - return row; - } - - /** - * 淇敼鍙傛暟閰嶇疆 - * - * @param config 鍙傛暟閰嶇疆淇℃伅 - * @return 缁撴灉 - */ - @Override - public int updateConfig(SysConfig config) - { - SysConfig temp = configMapper.selectConfigById(config.getConfigId()); - if (!StringUtils.equals(temp.getConfigKey(), config.getConfigKey())) - { - redisService.deleteObject(getCacheKey(temp.getConfigKey())); - } - - int row = configMapper.updateConfig(config); - if (row > 0) - { - redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue()); - } - return row; - } - - /** - * 鎵归噺鍒犻櫎鍙傛暟淇℃伅 - * - * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID - */ - @Override - public void deleteConfigByIds(Long[] configIds) - { - for (Long configId : configIds) - { - SysConfig config = selectConfigById(configId); - if (StringUtils.equals(UserConstants.YES, config.getConfigType())) - { - throw new ServiceException(String.format("鍐呯疆鍙傛暟銆�%1$s銆戜笉鑳藉垹闄� ", config.getConfigKey())); - } - configMapper.deleteConfigById(configId); - redisService.deleteObject(getCacheKey(config.getConfigKey())); - } - } - - /** - * 鍔犺浇鍙傛暟缂撳瓨鏁版嵁 - */ - @Override - public void loadingConfigCache() - { - List<SysConfig> configsList = configMapper.selectConfigList(new SysConfig()); - for (SysConfig config : configsList) - { - redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue()); - } - } - - /** - * 娓呯┖鍙傛暟缂撳瓨鏁版嵁 - */ - @Override - public void clearConfigCache() - { - Collection<String> keys = redisService.keys(CacheConstants.SYS_CONFIG_KEY + "*"); - redisService.deleteObject(keys); - } - - /** - * 閲嶇疆鍙傛暟缂撳瓨鏁版嵁 - */ - @Override - public void resetConfigCache() - { - clearConfigCache(); - loadingConfigCache(); - } - - /** - * 鏍¢獙鍙傛暟閿悕鏄惁鍞竴 - * - * @param config 鍙傛暟閰嶇疆淇℃伅 - * @return 缁撴灉 - */ - @Override - public boolean checkConfigKeyUnique(SysConfig config) - { - Long configId = StringUtils.isNull(config.getConfigId()) ? -1L : config.getConfigId(); - SysConfig info = configMapper.checkConfigKeyUnique(config.getConfigKey()); - if (StringUtils.isNotNull(info) && info.getConfigId().longValue() != configId.longValue()) - { - return UserConstants.NOT_UNIQUE; - } - return UserConstants.UNIQUE; - } - - /** - * 璁剧疆cache key - * - * @param configKey 鍙傛暟閿� - * @return 缂撳瓨閿甼ey - */ - private String getCacheKey(String configKey) - { - return CacheConstants.SYS_CONFIG_KEY + configKey; - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java deleted file mode 100644 index fc39218..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java +++ /dev/null @@ -1,338 +0,0 @@ -package com.ruoyi.system.service.impl; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.stream.Collectors; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.se.common.core.constant.UserConstants; -import com.se.common.core.exception.ServiceException; -import com.se.common.core.text.Convert; -import com.se.common.core.utils.SpringUtils; -import com.se.common.core.utils.StringUtils; -import com.se.common.datascope.annotation.DataScope; -import com.se.common.security.utils.SecurityUtils; -import com.se.system.api.domain.SysDept; -import com.se.system.api.domain.SysRole; -import com.se.system.api.domain.SysUser; -import com.ruoyi.system.domain.vo.TreeSelect; -import com.ruoyi.system.mapper.SysDeptMapper; -import com.ruoyi.system.mapper.SysRoleMapper; -import com.ruoyi.system.service.ISysDeptService; - -/** - * 閮ㄩ棬绠$悊 鏈嶅姟瀹炵幇 - * - * @author admin - */ -@Service -public class SysDeptServiceImpl implements ISysDeptService -{ - @Autowired - private SysDeptMapper deptMapper; - - @Autowired - private SysRoleMapper roleMapper; - - /** - * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁 - * - * @param dept 閮ㄩ棬淇℃伅 - * @return 閮ㄩ棬淇℃伅闆嗗悎 - */ - @Override - @DataScope(deptAlias = "d") - public List<SysDept> selectDeptList(SysDept dept) - { - return deptMapper.selectDeptList(dept); - } - - /** - * 鏌ヨ閮ㄩ棬鏍戠粨鏋勪俊鎭� - * - * @param dept 閮ㄩ棬淇℃伅 - * @return 閮ㄩ棬鏍戜俊鎭泦鍚� - */ - @Override - public List<TreeSelect> selectDeptTreeList(SysDept dept) - { - List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept); - return buildDeptTreeSelect(depts); - } - - /** - * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯 - * - * @param depts 閮ㄩ棬鍒楄〃 - * @return 鏍戠粨鏋勫垪琛� - */ - @Override - public List<SysDept> buildDeptTree(List<SysDept> depts) - { - List<SysDept> returnList = new ArrayList<SysDept>(); - List<Long> tempList = depts.stream().map(SysDept::getDeptId).collect(Collectors.toList()); - for (SysDept dept : depts) - { - // 濡傛灉鏄《绾ц妭鐐�, 閬嶅巻璇ョ埗鑺傜偣鐨勬墍鏈夊瓙鑺傜偣 - if (!tempList.contains(dept.getParentId())) - { - recursionFn(depts, dept); - returnList.add(dept); - } - } - if (returnList.isEmpty()) - { - returnList = depts; - } - return returnList; - } - - /** - * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯 - * - * @param depts 閮ㄩ棬鍒楄〃 - * @return 涓嬫媺鏍戠粨鏋勫垪琛� - */ - @Override - public List<TreeSelect> buildDeptTreeSelect(List<SysDept> depts) - { - List<SysDept> deptTrees = buildDeptTree(depts); - return deptTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); - } - - /** - * 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭� - * - * @param roleId 瑙掕壊ID - * @return 閫変腑閮ㄩ棬鍒楄〃 - */ - @Override - public List<Long> selectDeptListByRoleId(Long roleId) - { - SysRole role = roleMapper.selectRoleById(roleId); - return deptMapper.selectDeptListByRoleId(roleId, role.isDeptCheckStrictly()); - } - - /** - * 鏍规嵁閮ㄩ棬ID鏌ヨ淇℃伅 - * - * @param deptId 閮ㄩ棬ID - * @return 閮ㄩ棬淇℃伅 - */ - @Override - public SysDept selectDeptById(Long deptId) - { - return deptMapper.selectDeptById(deptId); - } - - /** - * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬锛堟甯哥姸鎬侊級 - * - * @param deptId 閮ㄩ棬ID - * @return 瀛愰儴闂ㄦ暟 - */ - @Override - public int selectNormalChildrenDeptById(Long deptId) - { - return deptMapper.selectNormalChildrenDeptById(deptId); - } - - /** - * 鏄惁瀛樺湪瀛愯妭鐐� - * - * @param deptId 閮ㄩ棬ID - * @return 缁撴灉 - */ - @Override - public boolean hasChildByDeptId(Long deptId) - { - int result = deptMapper.hasChildByDeptId(deptId); - return result > 0; - } - - /** - * 鏌ヨ閮ㄩ棬鏄惁瀛樺湪鐢ㄦ埛 - * - * @param deptId 閮ㄩ棬ID - * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦� - */ - @Override - public boolean checkDeptExistUser(Long deptId) - { - int result = deptMapper.checkDeptExistUser(deptId); - return result > 0; - } - - /** - * 鏍¢獙閮ㄩ棬鍚嶇О鏄惁鍞竴 - * - * @param dept 閮ㄩ棬淇℃伅 - * @return 缁撴灉 - */ - @Override - public boolean checkDeptNameUnique(SysDept dept) - { - Long deptId = StringUtils.isNull(dept.getDeptId()) ? -1L : dept.getDeptId(); - SysDept info = deptMapper.checkDeptNameUnique(dept.getDeptName(), dept.getParentId()); - if (StringUtils.isNotNull(info) && info.getDeptId().longValue() != deptId.longValue()) - { - return UserConstants.NOT_UNIQUE; - } - return UserConstants.UNIQUE; - } - - /** - * 鏍¢獙閮ㄩ棬鏄惁鏈夋暟鎹潈闄� - * - * @param deptId 閮ㄩ棬id - */ - @Override - public void checkDeptDataScope(Long deptId) - { - if (!SysUser.isAdmin(SecurityUtils.getUserId()) && StringUtils.isNotNull(deptId)) - { - SysDept dept = new SysDept(); - dept.setDeptId(deptId); - List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept); - if (StringUtils.isEmpty(depts)) - { - throw new ServiceException("娌℃湁鏉冮檺璁块棶閮ㄩ棬鏁版嵁锛�"); - } - } - } - - /** - * 鏂板淇濆瓨閮ㄩ棬淇℃伅 - * - * @param dept 閮ㄩ棬淇℃伅 - * @return 缁撴灉 - */ - @Override - public int insertDept(SysDept dept) - { - SysDept info = deptMapper.selectDeptById(dept.getParentId()); - // 濡傛灉鐖惰妭鐐逛笉涓烘甯哥姸鎬�,鍒欎笉鍏佽鏂板瀛愯妭鐐� - if (!UserConstants.DEPT_NORMAL.equals(info.getStatus())) - { - throw new ServiceException("閮ㄩ棬鍋滅敤锛屼笉鍏佽鏂板"); - } - dept.setAncestors(info.getAncestors() + "," + dept.getParentId()); - return deptMapper.insertDept(dept); - } - - /** - * 淇敼淇濆瓨閮ㄩ棬淇℃伅 - * - * @param dept 閮ㄩ棬淇℃伅 - * @return 缁撴灉 - */ - @Override - public int updateDept(SysDept dept) - { - SysDept newParentDept = deptMapper.selectDeptById(dept.getParentId()); - SysDept oldDept = deptMapper.selectDeptById(dept.getDeptId()); - if (StringUtils.isNotNull(newParentDept) && StringUtils.isNotNull(oldDept)) - { - String newAncestors = newParentDept.getAncestors() + "," + newParentDept.getDeptId(); - String oldAncestors = oldDept.getAncestors(); - dept.setAncestors(newAncestors); - updateDeptChildren(dept.getDeptId(), newAncestors, oldAncestors); - } - int result = deptMapper.updateDept(dept); - if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors()) - && !StringUtils.equals("0", dept.getAncestors())) - { - // 濡傛灉璇ラ儴闂ㄦ槸鍚敤鐘舵�侊紝鍒欏惎鐢ㄨ閮ㄩ棬鐨勬墍鏈変笂绾ч儴闂� - updateParentDeptStatusNormal(dept); - } - return result; - } - - /** - * 淇敼璇ラ儴闂ㄧ殑鐖剁骇閮ㄩ棬鐘舵�� - * - * @param dept 褰撳墠閮ㄩ棬 - */ - private void updateParentDeptStatusNormal(SysDept dept) - { - String ancestors = dept.getAncestors(); - Long[] deptIds = Convert.toLongArray(ancestors); - deptMapper.updateDeptStatusNormal(deptIds); - } - - /** - * 淇敼瀛愬厓绱犲叧绯� - * - * @param deptId 琚慨鏀圭殑閮ㄩ棬ID - * @param newAncestors 鏂扮殑鐖禝D闆嗗悎 - * @param oldAncestors 鏃х殑鐖禝D闆嗗悎 - */ - public void updateDeptChildren(Long deptId, String newAncestors, String oldAncestors) - { - List<SysDept> children = deptMapper.selectChildrenDeptById(deptId); - for (SysDept child : children) - { - child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors)); - } - if (children.size() > 0) - { - deptMapper.updateDeptChildren(children); - } - } - - /** - * 鍒犻櫎閮ㄩ棬绠$悊淇℃伅 - * - * @param deptId 閮ㄩ棬ID - * @return 缁撴灉 - */ - @Override - public int deleteDeptById(Long deptId) - { - return deptMapper.deleteDeptById(deptId); - } - - /** - * 閫掑綊鍒楄〃 - */ - private void recursionFn(List<SysDept> list, SysDept t) - { - // 寰楀埌瀛愯妭鐐瑰垪琛� - List<SysDept> childList = getChildList(list, t); - t.setChildren(childList); - for (SysDept tChild : childList) - { - if (hasChild(list, tChild)) - { - recursionFn(list, tChild); - } - } - } - - /** - * 寰楀埌瀛愯妭鐐瑰垪琛� - */ - private List<SysDept> getChildList(List<SysDept> list, SysDept t) - { - List<SysDept> tlist = new ArrayList<SysDept>(); - Iterator<SysDept> it = list.iterator(); - while (it.hasNext()) - { - SysDept n = (SysDept) it.next(); - if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue()) - { - tlist.add(n); - } - } - return tlist; - } - - /** - * 鍒ゆ柇鏄惁鏈夊瓙鑺傜偣 - */ - private boolean hasChild(List<SysDept> list, SysDept t) - { - return getChildList(list, t).size() > 0 ? true : false; - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java deleted file mode 100644 index 1f8ef78..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.ruoyi.system.service.impl; - -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.se.common.security.utils.DictUtils; -import com.se.system.api.domain.SysDictData; -import com.ruoyi.system.mapper.SysDictDataMapper; -import com.ruoyi.system.service.ISysDictDataService; - -/** - * 瀛楀吀 涓氬姟灞傚鐞� - * - * @author admin - */ -@Service -public class SysDictDataServiceImpl implements ISysDictDataService -{ - @Autowired - private SysDictDataMapper dictDataMapper; - - /** - * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀鏁版嵁 - * - * @param dictData 瀛楀吀鏁版嵁淇℃伅 - * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅 - */ - @Override - public List<SysDictData> selectDictDataList(SysDictData dictData) - { - return dictDataMapper.selectDictDataList(dictData); - } - - /** - * 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏搁敭鍊兼煡璇㈠瓧鍏告暟鎹俊鎭� - * - * @param dictType 瀛楀吀绫诲瀷 - * @param dictValue 瀛楀吀閿�� - * @return 瀛楀吀鏍囩 - */ - @Override - public String selectDictLabel(String dictType, String dictValue) - { - return dictDataMapper.selectDictLabel(dictType, dictValue); - } - - /** - * 鏍规嵁瀛楀吀鏁版嵁ID鏌ヨ淇℃伅 - * - * @param dictCode 瀛楀吀鏁版嵁ID - * @return 瀛楀吀鏁版嵁 - */ - @Override - public SysDictData selectDictDataById(Long dictCode) - { - return dictDataMapper.selectDictDataById(dictCode); - } - - /** - * 鎵归噺鍒犻櫎瀛楀吀鏁版嵁淇℃伅 - * - * @param dictCodes 闇�瑕佸垹闄ょ殑瀛楀吀鏁版嵁ID - */ - @Override - public void deleteDictDataByIds(Long[] dictCodes) - { - for (Long dictCode : dictCodes) - { - SysDictData data = selectDictDataById(dictCode); - dictDataMapper.deleteDictDataById(dictCode); - List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); - DictUtils.setDictCache(data.getDictType(), dictDatas); - } - } - - /** - * 鏂板淇濆瓨瀛楀吀鏁版嵁淇℃伅 - * - * @param data 瀛楀吀鏁版嵁淇℃伅 - * @return 缁撴灉 - */ - @Override - public int insertDictData(SysDictData data) - { - int row = dictDataMapper.insertDictData(data); - if (row > 0) - { - List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); - DictUtils.setDictCache(data.getDictType(), dictDatas); - } - return row; - } - - /** - * 淇敼淇濆瓨瀛楀吀鏁版嵁淇℃伅 - * - * @param data 瀛楀吀鏁版嵁淇℃伅 - * @return 缁撴灉 - */ - @Override - public int updateDictData(SysDictData data) - { - int row = dictDataMapper.updateDictData(data); - if (row > 0) - { - List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); - DictUtils.setDictCache(data.getDictType(), dictDatas); - } - return row; - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java deleted file mode 100644 index a90504a..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java +++ /dev/null @@ -1,223 +0,0 @@ -package com.ruoyi.system.service.impl; - -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; -import javax.annotation.PostConstruct; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import com.se.common.core.constant.UserConstants; -import com.se.common.core.exception.ServiceException; -import com.se.common.core.utils.StringUtils; -import com.se.common.security.utils.DictUtils; -import com.se.system.api.domain.SysDictData; -import com.se.system.api.domain.SysDictType; -import com.ruoyi.system.mapper.SysDictDataMapper; -import com.ruoyi.system.mapper.SysDictTypeMapper; -import com.ruoyi.system.service.ISysDictTypeService; - -/** - * 瀛楀吀 涓氬姟灞傚鐞� - * - * @author admin - */ -@Service -public class SysDictTypeServiceImpl implements ISysDictTypeService -{ - @Autowired - private SysDictTypeMapper dictTypeMapper; - - @Autowired - private SysDictDataMapper dictDataMapper; - - /** - * 椤圭洰鍚姩鏃讹紝鍒濆鍖栧瓧鍏稿埌缂撳瓨 - */ - @PostConstruct - public void init() - { - loadingDictCache(); - } - - /** - * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀绫诲瀷 - * - * @param dictType 瀛楀吀绫诲瀷淇℃伅 - * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅 - */ - @Override - public List<SysDictType> selectDictTypeList(SysDictType dictType) - { - return dictTypeMapper.selectDictTypeList(dictType); - } - - /** - * 鏍规嵁鎵�鏈夊瓧鍏哥被鍨� - * - * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅 - */ - @Override - public List<SysDictType> selectDictTypeAll() - { - return dictTypeMapper.selectDictTypeAll(); - } - - /** - * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁 - * - * @param dictType 瀛楀吀绫诲瀷 - * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅 - */ - @Override - public List<SysDictData> selectDictDataByType(String dictType) - { - List<SysDictData> dictDatas = DictUtils.getDictCache(dictType); - if (StringUtils.isNotEmpty(dictDatas)) - { - return dictDatas; - } - dictDatas = dictDataMapper.selectDictDataByType(dictType); - if (StringUtils.isNotEmpty(dictDatas)) - { - DictUtils.setDictCache(dictType, dictDatas); - return dictDatas; - } - return null; - } - - /** - * 鏍规嵁瀛楀吀绫诲瀷ID鏌ヨ淇℃伅 - * - * @param dictId 瀛楀吀绫诲瀷ID - * @return 瀛楀吀绫诲瀷 - */ - @Override - public SysDictType selectDictTypeById(Long dictId) - { - return dictTypeMapper.selectDictTypeById(dictId); - } - - /** - * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ淇℃伅 - * - * @param dictType 瀛楀吀绫诲瀷 - * @return 瀛楀吀绫诲瀷 - */ - @Override - public SysDictType selectDictTypeByType(String dictType) - { - return dictTypeMapper.selectDictTypeByType(dictType); - } - - /** - * 鎵归噺鍒犻櫎瀛楀吀绫诲瀷淇℃伅 - * - * @param dictIds 闇�瑕佸垹闄ょ殑瀛楀吀ID - */ - @Override - public void deleteDictTypeByIds(Long[] dictIds) - { - for (Long dictId : dictIds) - { - SysDictType dictType = selectDictTypeById(dictId); - if (dictDataMapper.countDictDataByType(dictType.getDictType()) > 0) - { - throw new ServiceException(String.format("%1$s宸插垎閰�,涓嶈兘鍒犻櫎", dictType.getDictName())); - } - dictTypeMapper.deleteDictTypeById(dictId); - DictUtils.removeDictCache(dictType.getDictType()); - } - } - - /** - * 鍔犺浇瀛楀吀缂撳瓨鏁版嵁 - */ - @Override - public void loadingDictCache() - { - SysDictData dictData = new SysDictData(); - dictData.setStatus("0"); - Map<String, List<SysDictData>> dictDataMap = dictDataMapper.selectDictDataList(dictData).stream().collect(Collectors.groupingBy(SysDictData::getDictType)); - for (Map.Entry<String, List<SysDictData>> entry : dictDataMap.entrySet()) - { - DictUtils.setDictCache(entry.getKey(), entry.getValue().stream().sorted(Comparator.comparing(SysDictData::getDictSort)).collect(Collectors.toList())); - } - } - - /** - * 娓呯┖瀛楀吀缂撳瓨鏁版嵁 - */ - @Override - public void clearDictCache() - { - DictUtils.clearDictCache(); - } - - /** - * 閲嶇疆瀛楀吀缂撳瓨鏁版嵁 - */ - @Override - public void resetDictCache() - { - clearDictCache(); - loadingDictCache(); - } - - /** - * 鏂板淇濆瓨瀛楀吀绫诲瀷淇℃伅 - * - * @param dict 瀛楀吀绫诲瀷淇℃伅 - * @return 缁撴灉 - */ - @Override - public int insertDictType(SysDictType dict) - { - int row = dictTypeMapper.insertDictType(dict); - if (row > 0) - { - DictUtils.setDictCache(dict.getDictType(), null); - } - return row; - } - - /** - * 淇敼淇濆瓨瀛楀吀绫诲瀷淇℃伅 - * - * @param dict 瀛楀吀绫诲瀷淇℃伅 - * @return 缁撴灉 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int updateDictType(SysDictType dict) - { - SysDictType oldDict = dictTypeMapper.selectDictTypeById(dict.getDictId()); - dictDataMapper.updateDictDataType(oldDict.getDictType(), dict.getDictType()); - int row = dictTypeMapper.updateDictType(dict); - if (row > 0) - { - List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(dict.getDictType()); - DictUtils.setDictCache(dict.getDictType(), dictDatas); - } - return row; - } - - /** - * 鏍¢獙瀛楀吀绫诲瀷绉版槸鍚﹀敮涓� - * - * @param dict 瀛楀吀绫诲瀷 - * @return 缁撴灉 - */ - @Override - public boolean checkDictTypeUnique(SysDictType dict) - { - Long dictId = StringUtils.isNull(dict.getDictId()) ? -1L : dict.getDictId(); - SysDictType dictType = dictTypeMapper.checkDictTypeUnique(dict.getDictType()); - if (StringUtils.isNotNull(dictType) && dictType.getDictId().longValue() != dictId.longValue()) - { - return UserConstants.NOT_UNIQUE; - } - return UserConstants.UNIQUE; - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java deleted file mode 100644 index c1557de..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.ruoyi.system.service.impl; - -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.se.system.api.domain.SysLogininfor; -import com.ruoyi.system.mapper.SysLogininforMapper; -import com.ruoyi.system.service.ISysLogininforService; - -/** - * 绯荤粺璁块棶鏃ュ織鎯呭喌淇℃伅 鏈嶅姟灞傚鐞� - * - * @author admin - */ -@Service -public class SysLogininforServiceImpl implements ISysLogininforService -{ - - @Autowired - private SysLogininforMapper logininforMapper; - - /** - * 鏂板绯荤粺鐧诲綍鏃ュ織 - * - * @param logininfor 璁块棶鏃ュ織瀵硅薄 - */ - @Override - public int insertLogininfor(SysLogininfor logininfor) - { - return logininforMapper.insertLogininfor(logininfor); - } - - /** - * 鏌ヨ绯荤粺鐧诲綍鏃ュ織闆嗗悎 - * - * @param logininfor 璁块棶鏃ュ織瀵硅薄 - * @return 鐧诲綍璁板綍闆嗗悎 - */ - @Override - public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor) - { - return logininforMapper.selectLogininforList(logininfor); - } - - /** - * 鎵归噺鍒犻櫎绯荤粺鐧诲綍鏃ュ織 - * - * @param infoIds 闇�瑕佸垹闄ょ殑鐧诲綍鏃ュ織ID - * @return 缁撴灉 - */ - @Override - public int deleteLogininforByIds(Long[] infoIds) - { - return logininforMapper.deleteLogininforByIds(infoIds); - } - - /** - * 娓呯┖绯荤粺鐧诲綍鏃ュ織 - */ - @Override - public void cleanLogininfor() - { - logininforMapper.cleanLogininfor(); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java deleted file mode 100644 index 9241a7f..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java +++ /dev/null @@ -1,543 +0,0 @@ -package com.ruoyi.system.service.impl; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.se.common.core.constant.Constants; -import com.se.common.core.constant.UserConstants; -import com.se.common.core.utils.StringUtils; -import com.se.common.security.utils.SecurityUtils; -import com.se.system.api.domain.SysRole; -import com.se.system.api.domain.SysUser; -import com.ruoyi.system.domain.SysMenu; -import com.ruoyi.system.domain.vo.MetaVo; -import com.ruoyi.system.domain.vo.RouterVo; -import com.ruoyi.system.domain.vo.TreeSelect; -import com.ruoyi.system.mapper.SysMenuMapper; -import com.ruoyi.system.mapper.SysRoleMapper; -import com.ruoyi.system.mapper.SysRoleMenuMapper; -import com.ruoyi.system.service.ISysMenuService; - -/** - * 鑿滃崟 涓氬姟灞傚鐞� - * - * @author admin - */ -@Service -public class SysMenuServiceImpl implements ISysMenuService -{ - public static final String PREMISSION_STRING = "perms[\"{0}\"]"; - - @Autowired - private SysMenuMapper menuMapper; - - @Autowired - private SysRoleMapper roleMapper; - - @Autowired - private SysRoleMenuMapper roleMenuMapper; - - /** - * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃 - * - * @param userId 鐢ㄦ埛ID - * @return 鑿滃崟鍒楄〃 - */ - @Override - public List<SysMenu> selectMenuList(Long userId) - { - return selectMenuList(new SysMenu(), userId); - } - - /** - * 鏌ヨ绯荤粺鑿滃崟鍒楄〃 - * - * @param menu 鑿滃崟淇℃伅 - * @return 鑿滃崟鍒楄〃 - */ - @Override - public List<SysMenu> selectMenuList(SysMenu menu, Long userId) - { - List<SysMenu> menuList = null; - // 绠$悊鍛樻樉绀烘墍鏈夎彍鍗曚俊鎭� - if (SysUser.isAdmin(userId)) - { - menuList = menuMapper.selectMenuList(menu); - } - else - { - menu.getParams().put("userId", userId); - menuList = menuMapper.selectMenuListByUserId(menu); - } - return menuList; - } - - /** - * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺 - * - * @param userId 鐢ㄦ埛ID - * @return 鏉冮檺鍒楄〃 - */ - @Override - public Set<String> selectMenuPermsByUserId(Long userId) - { - List<String> perms = menuMapper.selectMenuPermsByUserId(userId); - Set<String> permsSet = new HashSet<>(); - for (String perm : perms) - { - if (StringUtils.isNotEmpty(perm)) - { - permsSet.addAll(Arrays.asList(perm.trim().split(","))); - } - } - return permsSet; - } - - /** - * 鏍规嵁瑙掕壊ID鏌ヨ鏉冮檺 - * - * @param roleId 瑙掕壊ID - * @return 鏉冮檺鍒楄〃 - */ - @Override - public Set<String> selectMenuPermsByRoleId(Long roleId) - { - List<String> perms = menuMapper.selectMenuPermsByRoleId(roleId); - Set<String> permsSet = new HashSet<>(); - for (String perm : perms) - { - if (StringUtils.isNotEmpty(perm)) - { - permsSet.addAll(Arrays.asList(perm.trim().split(","))); - } - } - return permsSet; - } - - /** - * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟 - * - * @param userId 鐢ㄦ埛鍚嶇О - * @return 鑿滃崟鍒楄〃 - */ - @Override - public List<SysMenu> selectMenuTreeByUserId(Long userId) - { - List<SysMenu> menus = null; - if (SecurityUtils.isAdmin(userId)) - { - menus = menuMapper.selectMenuTreeAll(); - } - else - { - menus = menuMapper.selectMenuTreeByUserId(userId); - } - return getChildPerms(menus, 0); - } - - /** - * 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鏍戜俊鎭� - * - * @param roleId 瑙掕壊ID - * @return 閫変腑鑿滃崟鍒楄〃 - */ - @Override - public List<Long> selectMenuListByRoleId(Long roleId) - { - SysRole role = roleMapper.selectRoleById(roleId); - return menuMapper.selectMenuListByRoleId(roleId, role.isMenuCheckStrictly()); - } - - /** - * 鏋勫缓鍓嶇璺敱鎵�闇�瑕佺殑鑿滃崟 - * - * @param menus 鑿滃崟鍒楄〃 - * @return 璺敱鍒楄〃 - */ - @Override - public List<RouterVo> buildMenus(List<SysMenu> menus) - { - List<RouterVo> routers = new LinkedList<RouterVo>(); - for (SysMenu menu : menus) - { - RouterVo router = new RouterVo(); - router.setHidden("1".equals(menu.getVisible())); - router.setName(getRouteName(menu)); - router.setPath(getRouterPath(menu)); - router.setComponent(getComponent(menu)); - router.setQuery(menu.getQuery()); - router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath())); - List<SysMenu> cMenus = menu.getChildren(); - if (StringUtils.isNotEmpty(cMenus) && UserConstants.TYPE_DIR.equals(menu.getMenuType())) - { - router.setAlwaysShow(true); - router.setRedirect("noRedirect"); - router.setChildren(buildMenus(cMenus)); - } - else if (isMenuFrame(menu)) - { - router.setMeta(null); - List<RouterVo> childrenList = new ArrayList<RouterVo>(); - RouterVo children = new RouterVo(); - children.setPath(menu.getPath()); - children.setComponent(menu.getComponent()); - children.setName(getRouteName(menu.getRouteName(), menu.getPath())); - children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath())); - children.setQuery(menu.getQuery()); - childrenList.add(children); - router.setChildren(childrenList); - } - else if (menu.getParentId().intValue() == 0 && isInnerLink(menu)) - { - router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon())); - router.setPath("/"); - List<RouterVo> childrenList = new ArrayList<RouterVo>(); - RouterVo children = new RouterVo(); - String routerPath = innerLinkReplaceEach(menu.getPath()); - children.setPath(routerPath); - children.setComponent(UserConstants.INNER_LINK); - children.setName(getRouteName(menu.getRouteName(), routerPath)); - children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), menu.getPath())); - childrenList.add(children); - router.setChildren(childrenList); - } - routers.add(router); - } - return routers; - } - - /** - * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯 - * - * @param menus 鑿滃崟鍒楄〃 - * @return 鏍戠粨鏋勫垪琛� - */ - @Override - public List<SysMenu> buildMenuTree(List<SysMenu> menus) - { - List<SysMenu> returnList = new ArrayList<SysMenu>(); - List<Long> tempList = menus.stream().map(SysMenu::getMenuId).collect(Collectors.toList()); - for (Iterator<SysMenu> iterator = menus.iterator(); iterator.hasNext();) - { - SysMenu menu = (SysMenu) iterator.next(); - // 濡傛灉鏄《绾ц妭鐐�, 閬嶅巻璇ョ埗鑺傜偣鐨勬墍鏈夊瓙鑺傜偣 - if (!tempList.contains(menu.getParentId())) - { - recursionFn(menus, menu); - returnList.add(menu); - } - } - if (returnList.isEmpty()) - { - returnList = menus; - } - return returnList; - } - - /** - * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯 - * - * @param menus 鑿滃崟鍒楄〃 - * @return 涓嬫媺鏍戠粨鏋勫垪琛� - */ - @Override - public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus) - { - List<SysMenu> menuTrees = buildMenuTree(menus); - return menuTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); - } - - /** - * 鏍规嵁鑿滃崟ID鏌ヨ淇℃伅 - * - * @param menuId 鑿滃崟ID - * @return 鑿滃崟淇℃伅 - */ - @Override - public SysMenu selectMenuById(Long menuId) - { - return menuMapper.selectMenuById(menuId); - } - - /** - * 鏄惁瀛樺湪鑿滃崟瀛愯妭鐐� - * - * @param menuId 鑿滃崟ID - * @return 缁撴灉 - */ - @Override - public boolean hasChildByMenuId(Long menuId) - { - int result = menuMapper.hasChildByMenuId(menuId); - return result > 0; - } - - /** - * 鏌ヨ鑿滃崟浣跨敤鏁伴噺 - * - * @param menuId 鑿滃崟ID - * @return 缁撴灉 - */ - @Override - public boolean checkMenuExistRole(Long menuId) - { - int result = roleMenuMapper.checkMenuExistRole(menuId); - return result > 0; - } - - /** - * 鏂板淇濆瓨鑿滃崟淇℃伅 - * - * @param menu 鑿滃崟淇℃伅 - * @return 缁撴灉 - */ - @Override - public int insertMenu(SysMenu menu) - { - return menuMapper.insertMenu(menu); - } - - /** - * 淇敼淇濆瓨鑿滃崟淇℃伅 - * - * @param menu 鑿滃崟淇℃伅 - * @return 缁撴灉 - */ - @Override - public int updateMenu(SysMenu menu) - { - return menuMapper.updateMenu(menu); - } - - /** - * 鍒犻櫎鑿滃崟绠$悊淇℃伅 - * - * @param menuId 鑿滃崟ID - * @return 缁撴灉 - */ - @Override - public int deleteMenuById(Long menuId) - { - return menuMapper.deleteMenuById(menuId); - } - - /** - * 鏍¢獙鑿滃崟鍚嶇О鏄惁鍞竴 - * - * @param menu 鑿滃崟淇℃伅 - * @return 缁撴灉 - */ - @Override - public boolean checkMenuNameUnique(SysMenu menu) - { - Long menuId = StringUtils.isNull(menu.getMenuId()) ? -1L : menu.getMenuId(); - SysMenu info = menuMapper.checkMenuNameUnique(menu.getMenuName(), menu.getParentId()); - if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue()) - { - return UserConstants.NOT_UNIQUE; - } - return UserConstants.UNIQUE; - } - - /** - * 鑾峰彇璺敱鍚嶇О - * - * @param menu 鑿滃崟淇℃伅 - * @return 璺敱鍚嶇О - */ - public String getRouteName(SysMenu menu) - { - // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓虹洰褰曪級 - if (isMenuFrame(menu)) - { - return StringUtils.EMPTY; - } - return getRouteName(menu.getRouteName(), menu.getPath()); - } - - /** - * 鑾峰彇璺敱鍚嶇О锛屽娌℃湁閰嶇疆璺敱鍚嶇О鍒欏彇璺敱鍦板潃 - * - * @param routerName 璺敱鍚嶇О - * @param path 璺敱鍦板潃 - * @return 璺敱鍚嶇О锛堥┘宄版牸寮忥級 - */ - public String getRouteName(String name, String path) - { - String routerName = StringUtils.isNotEmpty(name) ? name : path; - return StringUtils.capitalize(routerName); - } - - /** - * 鑾峰彇璺敱鍦板潃 - * - * @param menu 鑿滃崟淇℃伅 - * @return 璺敱鍦板潃 - */ - public String getRouterPath(SysMenu menu) - { - String routerPath = menu.getPath(); - // 鍐呴摼鎵撳紑澶栫綉鏂瑰紡 - if (menu.getParentId().intValue() != 0 && isInnerLink(menu)) - { - routerPath = innerLinkReplaceEach(routerPath); - } - // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓虹洰褰曪級 - if (0 == menu.getParentId().intValue() && UserConstants.TYPE_DIR.equals(menu.getMenuType()) - && UserConstants.NO_FRAME.equals(menu.getIsFrame())) - { - routerPath = "/" + menu.getPath(); - } - // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓鸿彍鍗曪級 - else if (isMenuFrame(menu)) - { - routerPath = "/"; - } - return routerPath; - } - - /** - * 鑾峰彇缁勪欢淇℃伅 - * - * @param menu 鑿滃崟淇℃伅 - * @return 缁勪欢淇℃伅 - */ - public String getComponent(SysMenu menu) - { - String component = UserConstants.LAYOUT; - if (StringUtils.isNotEmpty(menu.getComponent()) && !isMenuFrame(menu)) - { - component = menu.getComponent(); - } - else if (StringUtils.isEmpty(menu.getComponent()) && menu.getParentId().intValue() != 0 && isInnerLink(menu)) - { - component = UserConstants.INNER_LINK; - } - else if (StringUtils.isEmpty(menu.getComponent()) && isParentView(menu)) - { - component = UserConstants.PARENT_VIEW; - } - return component; - } - - /** - * 鏄惁涓鸿彍鍗曞唴閮ㄨ烦杞� - * - * @param menu 鑿滃崟淇℃伅 - * @return 缁撴灉 - */ - public boolean isMenuFrame(SysMenu menu) - { - return menu.getParentId().intValue() == 0 && UserConstants.TYPE_MENU.equals(menu.getMenuType()) - && menu.getIsFrame().equals(UserConstants.NO_FRAME); - } - - /** - * 鏄惁涓哄唴閾剧粍浠� - * - * @param menu 鑿滃崟淇℃伅 - * @return 缁撴灉 - */ - public boolean isInnerLink(SysMenu menu) - { - return menu.getIsFrame().equals(UserConstants.NO_FRAME) && StringUtils.ishttp(menu.getPath()); - } - - /** - * 鏄惁涓簆arent_view缁勪欢 - * - * @param menu 鑿滃崟淇℃伅 - * @return 缁撴灉 - */ - public boolean isParentView(SysMenu menu) - { - return menu.getParentId().intValue() != 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType()); - } - - /** - * 鏍规嵁鐖惰妭鐐圭殑ID鑾峰彇鎵�鏈夊瓙鑺傜偣 - * - * @param list 鍒嗙被琛� - * @param parentId 浼犲叆鐨勭埗鑺傜偣ID - * @return String - */ - public List<SysMenu> getChildPerms(List<SysMenu> list, int parentId) - { - List<SysMenu> returnList = new ArrayList<SysMenu>(); - for (Iterator<SysMenu> iterator = list.iterator(); iterator.hasNext();) - { - SysMenu t = (SysMenu) iterator.next(); - // 涓�銆佹牴鎹紶鍏ョ殑鏌愪釜鐖惰妭鐐笽D,閬嶅巻璇ョ埗鑺傜偣鐨勬墍鏈夊瓙鑺傜偣 - if (t.getParentId() == parentId) - { - recursionFn(list, t); - returnList.add(t); - } - } - return returnList; - } - - /** - * 閫掑綊鍒楄〃 - * - * @param list 鍒嗙被琛� - * @param t 瀛愯妭鐐� - */ - private void recursionFn(List<SysMenu> list, SysMenu t) - { - // 寰楀埌瀛愯妭鐐瑰垪琛� - List<SysMenu> childList = getChildList(list, t); - t.setChildren(childList); - for (SysMenu tChild : childList) - { - if (hasChild(list, tChild)) - { - recursionFn(list, tChild); - } - } - } - - /** - * 寰楀埌瀛愯妭鐐瑰垪琛� - */ - private List<SysMenu> getChildList(List<SysMenu> list, SysMenu t) - { - List<SysMenu> tlist = new ArrayList<SysMenu>(); - Iterator<SysMenu> it = list.iterator(); - while (it.hasNext()) - { - SysMenu n = (SysMenu) it.next(); - if (n.getParentId().longValue() == t.getMenuId().longValue()) - { - tlist.add(n); - } - } - return tlist; - } - - /** - * 鍒ゆ柇鏄惁鏈夊瓙鑺傜偣 - */ - private boolean hasChild(List<SysMenu> list, SysMenu t) - { - return getChildList(list, t).size() > 0; - } - - /** - * 鍐呴摼鍩熷悕鐗规畩瀛楃鏇挎崲 - * - * @return 鏇挎崲鍚庣殑鍐呴摼鍩熷悕 - */ - public String innerLinkReplaceEach(String path) - { - return StringUtils.replaceEach(path, new String[] { Constants.HTTP, Constants.HTTPS, Constants.WWW, ".", ":" }, - new String[] { "", "", "", "/", "/" }); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java deleted file mode 100644 index e2ee68f..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.ruoyi.system.service.impl; - -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ruoyi.system.domain.SysNotice; -import com.ruoyi.system.mapper.SysNoticeMapper; -import com.ruoyi.system.service.ISysNoticeService; - -/** - * 鍏憡 鏈嶅姟灞傚疄鐜� - * - * @author admin - */ -@Service -public class SysNoticeServiceImpl implements ISysNoticeService -{ - @Autowired - private SysNoticeMapper noticeMapper; - - /** - * 鏌ヨ鍏憡淇℃伅 - * - * @param noticeId 鍏憡ID - * @return 鍏憡淇℃伅 - */ - @Override - public SysNotice selectNoticeById(Long noticeId) - { - return noticeMapper.selectNoticeById(noticeId); - } - - /** - * 鏌ヨ鍏憡鍒楄〃 - * - * @param notice 鍏憡淇℃伅 - * @return 鍏憡闆嗗悎 - */ - @Override - public List<SysNotice> selectNoticeList(SysNotice notice) - { - return noticeMapper.selectNoticeList(notice); - } - - /** - * 鏂板鍏憡 - * - * @param notice 鍏憡淇℃伅 - * @return 缁撴灉 - */ - @Override - public int insertNotice(SysNotice notice) - { - return noticeMapper.insertNotice(notice); - } - - /** - * 淇敼鍏憡 - * - * @param notice 鍏憡淇℃伅 - * @return 缁撴灉 - */ - @Override - public int updateNotice(SysNotice notice) - { - return noticeMapper.updateNotice(notice); - } - - /** - * 鍒犻櫎鍏憡瀵硅薄 - * - * @param noticeId 鍏憡ID - * @return 缁撴灉 - */ - @Override - public int deleteNoticeById(Long noticeId) - { - return noticeMapper.deleteNoticeById(noticeId); - } - - /** - * 鎵归噺鍒犻櫎鍏憡淇℃伅 - * - * @param noticeIds 闇�瑕佸垹闄ょ殑鍏憡ID - * @return 缁撴灉 - */ - @Override - public int deleteNoticeByIds(Long[] noticeIds) - { - return noticeMapper.deleteNoticeByIds(noticeIds); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java deleted file mode 100644 index 8cb1d92..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.ruoyi.system.service.impl; - -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.se.system.api.domain.SysOperLog; -import com.ruoyi.system.mapper.SysOperLogMapper; -import com.ruoyi.system.service.ISysOperLogService; - -/** - * 鎿嶄綔鏃ュ織 鏈嶅姟灞傚鐞� - * - * @author admin - */ -@Service -public class SysOperLogServiceImpl implements ISysOperLogService -{ - @Autowired - private SysOperLogMapper operLogMapper; - - /** - * 鏂板鎿嶄綔鏃ュ織 - * - * @param operLog 鎿嶄綔鏃ュ織瀵硅薄 - * @return 缁撴灉 - */ - @Override - public int insertOperlog(SysOperLog operLog) - { - return operLogMapper.insertOperlog(operLog); - } - - /** - * 鏌ヨ绯荤粺鎿嶄綔鏃ュ織闆嗗悎 - * - * @param operLog 鎿嶄綔鏃ュ織瀵硅薄 - * @return 鎿嶄綔鏃ュ織闆嗗悎 - */ - @Override - public List<SysOperLog> selectOperLogList(SysOperLog operLog) - { - return operLogMapper.selectOperLogList(operLog); - } - - /** - * 鎵归噺鍒犻櫎绯荤粺鎿嶄綔鏃ュ織 - * - * @param operIds 闇�瑕佸垹闄ょ殑鎿嶄綔鏃ュ織ID - * @return 缁撴灉 - */ - @Override - public int deleteOperLogByIds(Long[] operIds) - { - return operLogMapper.deleteOperLogByIds(operIds); - } - - /** - * 鏌ヨ鎿嶄綔鏃ュ織璇︾粏 - * - * @param operId 鎿嶄綔ID - * @return 鎿嶄綔鏃ュ織瀵硅薄 - */ - @Override - public SysOperLog selectOperLogById(Long operId) - { - return operLogMapper.selectOperLogById(operId); - } - - /** - * 娓呯┖鎿嶄綔鏃ュ織 - */ - @Override - public void cleanOperLog() - { - operLogMapper.cleanOperLog(); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPermissionServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPermissionServiceImpl.java deleted file mode 100644 index 32240b6..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPermissionServiceImpl.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.ruoyi.system.service.impl; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; -import com.se.system.api.domain.SysRole; -import com.se.system.api.domain.SysUser; -import com.ruoyi.system.service.ISysMenuService; -import com.ruoyi.system.service.ISysPermissionService; -import com.ruoyi.system.service.ISysRoleService; - -/** - * 鐢ㄦ埛鏉冮檺澶勭悊 - * - * @author admin - */ -@Service -public class SysPermissionServiceImpl implements ISysPermissionService -{ - @Autowired - private ISysRoleService roleService; - - @Autowired - private ISysMenuService menuService; - - /** - * 鑾峰彇瑙掕壊鏁版嵁鏉冮檺 - * - * @param userId 鐢ㄦ埛Id - * @return 瑙掕壊鏉冮檺淇℃伅 - */ - @Override - public Set<String> getRolePermission(SysUser user) - { - Set<String> roles = new HashSet<String>(); - // 绠$悊鍛樻嫢鏈夋墍鏈夋潈闄� - if (user.isAdmin()) - { - roles.add("admin"); - } - else - { - roles.addAll(roleService.selectRolePermissionByUserId(user.getUserId())); - } - return roles; - } - - /** - * 鑾峰彇鑿滃崟鏁版嵁鏉冮檺 - * - * @param userId 鐢ㄦ埛Id - * @return 鑿滃崟鏉冮檺淇℃伅 - */ - @Override - public Set<String> getMenuPermission(SysUser user) - { - Set<String> perms = new HashSet<String>(); - // 绠$悊鍛樻嫢鏈夋墍鏈夋潈闄� - if (user.isAdmin()) - { - perms.add("*:*:*"); - } - else - { - List<SysRole> roles = user.getRoles(); - if (!CollectionUtils.isEmpty(roles)) - { - // 澶氳鑹茶缃畃ermissions灞炴�э紝浠ヤ究鏁版嵁鏉冮檺鍖归厤鏉冮檺 - for (SysRole role : roles) - { - Set<String> rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId()); - role.setPermissions(rolePerms); - perms.addAll(rolePerms); - } - } - else - { - perms.addAll(menuService.selectMenuPermsByUserId(user.getUserId())); - } - } - return perms; - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java deleted file mode 100644 index 703f76d..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.ruoyi.system.service.impl; - -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.se.common.core.constant.UserConstants; -import com.se.common.core.exception.ServiceException; -import com.se.common.core.utils.StringUtils; -import com.ruoyi.system.domain.SysPost; -import com.ruoyi.system.mapper.SysPostMapper; -import com.ruoyi.system.mapper.SysUserPostMapper; -import com.ruoyi.system.service.ISysPostService; - -/** - * 宀椾綅淇℃伅 鏈嶅姟灞傚鐞� - * - * @author admin - */ -@Service -public class SysPostServiceImpl implements ISysPostService -{ - @Autowired - private SysPostMapper postMapper; - - @Autowired - private SysUserPostMapper userPostMapper; - - /** - * 鏌ヨ宀椾綅淇℃伅闆嗗悎 - * - * @param post 宀椾綅淇℃伅 - * @return 宀椾綅淇℃伅闆嗗悎 - */ - @Override - public List<SysPost> selectPostList(SysPost post) - { - return postMapper.selectPostList(post); - } - - /** - * 鏌ヨ鎵�鏈夊矖浣� - * - * @return 宀椾綅鍒楄〃 - */ - @Override - public List<SysPost> selectPostAll() - { - return postMapper.selectPostAll(); - } - - /** - * 閫氳繃宀椾綅ID鏌ヨ宀椾綅淇℃伅 - * - * @param postId 宀椾綅ID - * @return 瑙掕壊瀵硅薄淇℃伅 - */ - @Override - public SysPost selectPostById(Long postId) - { - return postMapper.selectPostById(postId); - } - - /** - * 鏍规嵁鐢ㄦ埛ID鑾峰彇宀椾綅閫夋嫨妗嗗垪琛� - * - * @param userId 鐢ㄦ埛ID - * @return 閫変腑宀椾綅ID鍒楄〃 - */ - @Override - public List<Long> selectPostListByUserId(Long userId) - { - return postMapper.selectPostListByUserId(userId); - } - - /** - * 鏍¢獙宀椾綅鍚嶇О鏄惁鍞竴 - * - * @param post 宀椾綅淇℃伅 - * @return 缁撴灉 - */ - @Override - public boolean checkPostNameUnique(SysPost post) - { - Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId(); - SysPost info = postMapper.checkPostNameUnique(post.getPostName()); - if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue()) - { - return UserConstants.NOT_UNIQUE; - } - return UserConstants.UNIQUE; - } - - /** - * 鏍¢獙宀椾綅缂栫爜鏄惁鍞竴 - * - * @param post 宀椾綅淇℃伅 - * @return 缁撴灉 - */ - @Override - public boolean checkPostCodeUnique(SysPost post) - { - Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId(); - SysPost info = postMapper.checkPostCodeUnique(post.getPostCode()); - if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue()) - { - return UserConstants.NOT_UNIQUE; - } - return UserConstants.UNIQUE; - } - - /** - * 閫氳繃宀椾綅ID鏌ヨ宀椾綅浣跨敤鏁伴噺 - * - * @param postId 宀椾綅ID - * @return 缁撴灉 - */ - @Override - public int countUserPostById(Long postId) - { - return userPostMapper.countUserPostById(postId); - } - - /** - * 鍒犻櫎宀椾綅淇℃伅 - * - * @param postId 宀椾綅ID - * @return 缁撴灉 - */ - @Override - public int deletePostById(Long postId) - { - return postMapper.deletePostById(postId); - } - - /** - * 鎵归噺鍒犻櫎宀椾綅淇℃伅 - * - * @param postIds 闇�瑕佸垹闄ょ殑宀椾綅ID - * @return 缁撴灉 - */ - @Override - public int deletePostByIds(Long[] postIds) - { - for (Long postId : postIds) - { - SysPost post = selectPostById(postId); - if (countUserPostById(postId) > 0) - { - throw new ServiceException(String.format("%1$s宸插垎閰�,涓嶈兘鍒犻櫎", post.getPostName())); - } - } - return postMapper.deletePostByIds(postIds); - } - - /** - * 鏂板淇濆瓨宀椾綅淇℃伅 - * - * @param post 宀椾綅淇℃伅 - * @return 缁撴灉 - */ - @Override - public int insertPost(SysPost post) - { - return postMapper.insertPost(post); - } - - /** - * 淇敼淇濆瓨宀椾綅淇℃伅 - * - * @param post 宀椾綅淇℃伅 - * @return 缁撴灉 - */ - @Override - public int updatePost(SysPost post) - { - return postMapper.updatePost(post); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java deleted file mode 100644 index ebcb81c..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java +++ /dev/null @@ -1,427 +0,0 @@ -package com.ruoyi.system.service.impl; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import com.se.common.core.constant.UserConstants; -import com.se.common.core.exception.ServiceException; -import com.se.common.core.utils.SpringUtils; -import com.se.common.core.utils.StringUtils; -import com.se.common.datascope.annotation.DataScope; -import com.se.common.security.utils.SecurityUtils; -import com.se.system.api.domain.SysRole; -import com.se.system.api.domain.SysUser; -import com.ruoyi.system.domain.SysRoleDept; -import com.ruoyi.system.domain.SysRoleMenu; -import com.ruoyi.system.domain.SysUserRole; -import com.ruoyi.system.mapper.SysRoleDeptMapper; -import com.ruoyi.system.mapper.SysRoleMapper; -import com.ruoyi.system.mapper.SysRoleMenuMapper; -import com.ruoyi.system.mapper.SysUserRoleMapper; -import com.ruoyi.system.service.ISysRoleService; - -/** - * 瑙掕壊 涓氬姟灞傚鐞� - * - * @author admin - */ -@Service -public class SysRoleServiceImpl implements ISysRoleService -{ - @Autowired - private SysRoleMapper roleMapper; - - @Autowired - private SysRoleMenuMapper roleMenuMapper; - - @Autowired - private SysUserRoleMapper userRoleMapper; - - @Autowired - private SysRoleDeptMapper roleDeptMapper; - - /** - * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瑙掕壊鏁版嵁 - * - * @param role 瑙掕壊淇℃伅 - * @return 瑙掕壊鏁版嵁闆嗗悎淇℃伅 - */ - @Override - @DataScope(deptAlias = "d") - public List<SysRole> selectRoleList(SysRole role) - { - return roleMapper.selectRoleList(role); - } - - /** - * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊 - * - * @param userId 鐢ㄦ埛ID - * @return 瑙掕壊鍒楄〃 - */ - @Override - public List<SysRole> selectRolesByUserId(Long userId) - { - List<SysRole> userRoles = roleMapper.selectRolePermissionByUserId(userId); - List<SysRole> roles = selectRoleAll(); - for (SysRole role : roles) - { - for (SysRole userRole : userRoles) - { - if (role.getRoleId().longValue() == userRole.getRoleId().longValue()) - { - role.setFlag(true); - break; - } - } - } - return roles; - } - - /** - * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺 - * - * @param userId 鐢ㄦ埛ID - * @return 鏉冮檺鍒楄〃 - */ - @Override - public Set<String> selectRolePermissionByUserId(Long userId) - { - List<SysRole> perms = roleMapper.selectRolePermissionByUserId(userId); - Set<String> permsSet = new HashSet<>(); - for (SysRole perm : perms) - { - if (StringUtils.isNotNull(perm)) - { - permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(","))); - } - } - return permsSet; - } - - /** - * 鏌ヨ鎵�鏈夎鑹� - * - * @return 瑙掕壊鍒楄〃 - */ - @Override - public List<SysRole> selectRoleAll() - { - return SpringUtils.getAopProxy(this).selectRoleList(new SysRole()); - } - - /** - * 鏍规嵁鐢ㄦ埛ID鑾峰彇瑙掕壊閫夋嫨妗嗗垪琛� - * - * @param userId 鐢ㄦ埛ID - * @return 閫変腑瑙掕壊ID鍒楄〃 - */ - @Override - public List<Long> selectRoleListByUserId(Long userId) - { - return roleMapper.selectRoleListByUserId(userId); - } - - /** - * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊 - * - * @param roleId 瑙掕壊ID - * @return 瑙掕壊瀵硅薄淇℃伅 - */ - @Override - public SysRole selectRoleById(Long roleId) - { - return roleMapper.selectRoleById(roleId); - } - - /** - * 鏍¢獙瑙掕壊鍚嶇О鏄惁鍞竴 - * - * @param role 瑙掕壊淇℃伅 - * @return 缁撴灉 - */ - @Override - public boolean checkRoleNameUnique(SysRole role) - { - Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId(); - SysRole info = roleMapper.checkRoleNameUnique(role.getRoleName()); - if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) - { - return UserConstants.NOT_UNIQUE; - } - return UserConstants.UNIQUE; - } - - /** - * 鏍¢獙瑙掕壊鏉冮檺鏄惁鍞竴 - * - * @param role 瑙掕壊淇℃伅 - * @return 缁撴灉 - */ - @Override - public boolean checkRoleKeyUnique(SysRole role) - { - Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId(); - SysRole info = roleMapper.checkRoleKeyUnique(role.getRoleKey()); - if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) - { - return UserConstants.NOT_UNIQUE; - } - return UserConstants.UNIQUE; - } - - /** - * 鏍¢獙瑙掕壊鏄惁鍏佽鎿嶄綔 - * - * @param role 瑙掕壊淇℃伅 - */ - @Override - public void checkRoleAllowed(SysRole role) - { - if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin()) - { - throw new ServiceException("涓嶅厑璁告搷浣滆秴绾х鐞嗗憳瑙掕壊"); - } - } - - /** - * 鏍¢獙瑙掕壊鏄惁鏈夋暟鎹潈闄� - * - * @param roleIds 瑙掕壊id - */ - @Override - public void checkRoleDataScope(Long... roleIds) - { - if (!SysUser.isAdmin(SecurityUtils.getUserId())) - { - for (Long roleId : roleIds) - { - SysRole role = new SysRole(); - role.setRoleId(roleId); - List<SysRole> roles = SpringUtils.getAopProxy(this).selectRoleList(role); - if (StringUtils.isEmpty(roles)) - { - throw new ServiceException("娌℃湁鏉冮檺璁块棶瑙掕壊鏁版嵁锛�"); - } - } - } - } - - /** - * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊浣跨敤鏁伴噺 - * - * @param roleId 瑙掕壊ID - * @return 缁撴灉 - */ - @Override - public int countUserRoleByRoleId(Long roleId) - { - return userRoleMapper.countUserRoleByRoleId(roleId); - } - - /** - * 鏂板淇濆瓨瑙掕壊淇℃伅 - * - * @param role 瑙掕壊淇℃伅 - * @return 缁撴灉 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int insertRole(SysRole role) - { - // 鏂板瑙掕壊淇℃伅 - roleMapper.insertRole(role); - return insertRoleMenu(role); - } - - /** - * 淇敼淇濆瓨瑙掕壊淇℃伅 - * - * @param role 瑙掕壊淇℃伅 - * @return 缁撴灉 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int updateRole(SysRole role) - { - // 淇敼瑙掕壊淇℃伅 - roleMapper.updateRole(role); - // 鍒犻櫎瑙掕壊涓庤彍鍗曞叧鑱� - roleMenuMapper.deleteRoleMenuByRoleId(role.getRoleId()); - return insertRoleMenu(role); - } - - /** - * 淇敼瑙掕壊鐘舵�� - * - * @param role 瑙掕壊淇℃伅 - * @return 缁撴灉 - */ - @Override - public int updateRoleStatus(SysRole role) - { - return roleMapper.updateRole(role); - } - - /** - * 淇敼鏁版嵁鏉冮檺淇℃伅 - * - * @param role 瑙掕壊淇℃伅 - * @return 缁撴灉 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int authDataScope(SysRole role) - { - // 淇敼瑙掕壊淇℃伅 - roleMapper.updateRole(role); - // 鍒犻櫎瑙掕壊涓庨儴闂ㄥ叧鑱� - roleDeptMapper.deleteRoleDeptByRoleId(role.getRoleId()); - // 鏂板瑙掕壊鍜岄儴闂ㄤ俊鎭紙鏁版嵁鏉冮檺锛� - return insertRoleDept(role); - } - - /** - * 鏂板瑙掕壊鑿滃崟淇℃伅 - * - * @param role 瑙掕壊瀵硅薄 - */ - public int insertRoleMenu(SysRole role) - { - int rows = 1; - // 鏂板鐢ㄦ埛涓庤鑹茬鐞� - List<SysRoleMenu> list = new ArrayList<SysRoleMenu>(); - for (Long menuId : role.getMenuIds()) - { - SysRoleMenu rm = new SysRoleMenu(); - rm.setRoleId(role.getRoleId()); - rm.setMenuId(menuId); - list.add(rm); - } - if (list.size() > 0) - { - rows = roleMenuMapper.batchRoleMenu(list); - } - return rows; - } - - /** - * 鏂板瑙掕壊閮ㄩ棬淇℃伅(鏁版嵁鏉冮檺) - * - * @param role 瑙掕壊瀵硅薄 - */ - public int insertRoleDept(SysRole role) - { - int rows = 1; - // 鏂板瑙掕壊涓庨儴闂紙鏁版嵁鏉冮檺锛夌鐞� - List<SysRoleDept> list = new ArrayList<SysRoleDept>(); - for (Long deptId : role.getDeptIds()) - { - SysRoleDept rd = new SysRoleDept(); - rd.setRoleId(role.getRoleId()); - rd.setDeptId(deptId); - list.add(rd); - } - if (list.size() > 0) - { - rows = roleDeptMapper.batchRoleDept(list); - } - return rows; - } - - /** - * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊 - * - * @param roleId 瑙掕壊ID - * @return 缁撴灉 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int deleteRoleById(Long roleId) - { - // 鍒犻櫎瑙掕壊涓庤彍鍗曞叧鑱� - roleMenuMapper.deleteRoleMenuByRoleId(roleId); - // 鍒犻櫎瑙掕壊涓庨儴闂ㄥ叧鑱� - roleDeptMapper.deleteRoleDeptByRoleId(roleId); - return roleMapper.deleteRoleById(roleId); - } - - /** - * 鎵归噺鍒犻櫎瑙掕壊淇℃伅 - * - * @param roleIds 闇�瑕佸垹闄ょ殑瑙掕壊ID - * @return 缁撴灉 - */ - @Override - @Transactional(rollbackFor = Exception.class) - 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())); - } - } - // 鍒犻櫎瑙掕壊涓庤彍鍗曞叧鑱� - roleMenuMapper.deleteRoleMenu(roleIds); - // 鍒犻櫎瑙掕壊涓庨儴闂ㄥ叧鑱� - roleDeptMapper.deleteRoleDept(roleIds); - return roleMapper.deleteRoleByIds(roleIds); - } - - /** - * 鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊 - * - * @param userRole 鐢ㄦ埛鍜岃鑹插叧鑱斾俊鎭� - * @return 缁撴灉 - */ - @Override - public int deleteAuthUser(SysUserRole userRole) - { - return userRoleMapper.deleteUserRoleInfo(userRole); - } - - /** - * 鎵归噺鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊 - * - * @param roleId 瑙掕壊ID - * @param userIds 闇�瑕佸彇娑堟巿鏉冪殑鐢ㄦ埛鏁版嵁ID - * @return 缁撴灉 - */ - @Override - public int deleteAuthUsers(Long roleId, Long[] userIds) - { - return userRoleMapper.deleteUserRoleInfos(roleId, userIds); - } - - /** - * 鎵归噺閫夋嫨鎺堟潈鐢ㄦ埛瑙掕壊 - * - * @param roleId 瑙掕壊ID - * @param userIds 闇�瑕佹巿鏉冪殑鐢ㄦ埛鏁版嵁ID - * @return 缁撴灉 - */ - @Override - public int insertAuthUsers(Long roleId, Long[] userIds) - { - // 鏂板鐢ㄦ埛涓庤鑹茬鐞� - List<SysUserRole> list = new ArrayList<SysUserRole>(); - for (Long userId : userIds) - { - SysUserRole ur = new SysUserRole(); - ur.setUserId(userId); - ur.setRoleId(roleId); - list.add(ur); - } - return userRoleMapper.batchUserRole(list); - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java deleted file mode 100644 index 8570d45..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.ruoyi.system.service.impl; - -import org.springframework.stereotype.Service; -import com.se.common.core.utils.StringUtils; -import com.se.system.api.model.LoginUser; -import com.ruoyi.system.domain.SysUserOnline; -import com.ruoyi.system.service.ISysUserOnlineService; - -/** - * 鍦ㄧ嚎鐢ㄦ埛 鏈嶅姟灞傚鐞� - * - * @author admin - */ -@Service -public class SysUserOnlineServiceImpl implements ISysUserOnlineService -{ - /** - * 閫氳繃鐧诲綍鍦板潃鏌ヨ淇℃伅 - * - * @param ipaddr 鐧诲綍鍦板潃 - * @param user 鐢ㄦ埛淇℃伅 - * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅 - */ - @Override - public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user) - { - if (StringUtils.equals(ipaddr, user.getIpaddr())) - { - return loginUserToUserOnline(user); - } - return null; - } - - /** - * 閫氳繃鐢ㄦ埛鍚嶇О鏌ヨ淇℃伅 - * - * @param userName 鐢ㄦ埛鍚嶇О - * @param user 鐢ㄦ埛淇℃伅 - * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅 - */ - @Override - public SysUserOnline selectOnlineByUserName(String userName, LoginUser user) - { - if (StringUtils.equals(userName, user.getUsername())) - { - return loginUserToUserOnline(user); - } - return null; - } - - /** - * 閫氳繃鐧诲綍鍦板潃/鐢ㄦ埛鍚嶇О鏌ヨ淇℃伅 - * - * @param ipaddr 鐧诲綍鍦板潃 - * @param userName 鐢ㄦ埛鍚嶇О - * @param user 鐢ㄦ埛淇℃伅 - * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅 - */ - @Override - public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user) - { - if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername())) - { - return loginUserToUserOnline(user); - } - return null; - } - - /** - * 璁剧疆鍦ㄧ嚎鐢ㄦ埛淇℃伅 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 鍦ㄧ嚎鐢ㄦ埛 - */ - @Override - public SysUserOnline loginUserToUserOnline(LoginUser user) - { - if (StringUtils.isNull(user)) - { - return null; - } - SysUserOnline sysUserOnline = new SysUserOnline(); - sysUserOnline.setTokenId(user.getToken()); - sysUserOnline.setUserName(user.getUsername()); - sysUserOnline.setIpaddr(user.getIpaddr()); - sysUserOnline.setLoginTime(user.getLoginTime()); - return sysUserOnline; - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java deleted file mode 100644 index 1f44f5d..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ /dev/null @@ -1,551 +0,0 @@ -package com.ruoyi.system.service.impl; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; -import javax.validation.Validator; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; -import com.se.common.core.constant.UserConstants; -import com.se.common.core.exception.ServiceException; -import com.se.common.core.utils.SpringUtils; -import com.se.common.core.utils.StringUtils; -import com.se.common.core.utils.bean.BeanValidators; -import com.se.common.datascope.annotation.DataScope; -import com.se.common.security.utils.SecurityUtils; -import com.se.system.api.domain.SysRole; -import com.se.system.api.domain.SysUser; -import com.ruoyi.system.domain.SysPost; -import com.ruoyi.system.domain.SysUserPost; -import com.ruoyi.system.domain.SysUserRole; -import com.ruoyi.system.mapper.SysPostMapper; -import com.ruoyi.system.mapper.SysRoleMapper; -import com.ruoyi.system.mapper.SysUserMapper; -import com.ruoyi.system.mapper.SysUserPostMapper; -import com.ruoyi.system.mapper.SysUserRoleMapper; -import com.ruoyi.system.service.ISysConfigService; -import com.ruoyi.system.service.ISysDeptService; -import com.ruoyi.system.service.ISysUserService; - -/** - * 鐢ㄦ埛 涓氬姟灞傚鐞� - * - * @author admin - */ -@Service -public class SysUserServiceImpl implements ISysUserService -{ - private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class); - - @Autowired - private SysUserMapper userMapper; - - @Autowired - private SysRoleMapper roleMapper; - - @Autowired - private SysPostMapper postMapper; - - @Autowired - private SysUserRoleMapper userRoleMapper; - - @Autowired - private SysUserPostMapper userPostMapper; - - @Autowired - private ISysConfigService configService; - - @Autowired - private ISysDeptService deptService; - - @Autowired - protected Validator validator; - - /** - * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 - */ - @Override - @DataScope(deptAlias = "d", userAlias = "u") - public List<SysUser> selectUserList(SysUser user) - { - return userMapper.selectUserList(user); - } - - /** - * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛� - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 - */ - @Override - @DataScope(deptAlias = "d", userAlias = "u") - public List<SysUser> selectAllocatedList(SysUser user) - { - return userMapper.selectAllocatedList(user); - } - - /** - * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛� - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 - */ - @Override - @DataScope(deptAlias = "d", userAlias = "u") - public List<SysUser> selectUnallocatedList(SysUser user) - { - return userMapper.selectUnallocatedList(user); - } - - /** - * 閫氳繃鐢ㄦ埛鍚嶆煡璇㈢敤鎴� - * - * @param userName 鐢ㄦ埛鍚� - * @return 鐢ㄦ埛瀵硅薄淇℃伅 - */ - @Override - public SysUser selectUserByUserName(String userName) - { - return userMapper.selectUserByUserName(userName); - } - - /** - * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛 - * - * @param userId 鐢ㄦ埛ID - * @return 鐢ㄦ埛瀵硅薄淇℃伅 - */ - @Override - public SysUser selectUserById(Long userId) - { - return userMapper.selectUserById(userId); - } - - /** - * 鏌ヨ鐢ㄦ埛鎵�灞炶鑹茬粍 - * - * @param userName 鐢ㄦ埛鍚� - * @return 缁撴灉 - */ - @Override - public String selectUserRoleGroup(String userName) - { - List<SysRole> list = roleMapper.selectRolesByUserName(userName); - if (CollectionUtils.isEmpty(list)) - { - return StringUtils.EMPTY; - } - return list.stream().map(SysRole::getRoleName).collect(Collectors.joining(",")); - } - - /** - * 鏌ヨ鐢ㄦ埛鎵�灞炲矖浣嶇粍 - * - * @param userName 鐢ㄦ埛鍚� - * @return 缁撴灉 - */ - @Override - public String selectUserPostGroup(String userName) - { - List<SysPost> list = postMapper.selectPostsByUserName(userName); - if (CollectionUtils.isEmpty(list)) - { - return StringUtils.EMPTY; - } - return list.stream().map(SysPost::getPostName).collect(Collectors.joining(",")); - } - - /** - * 鏍¢獙鐢ㄦ埛鍚嶇О鏄惁鍞竴 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 缁撴灉 - */ - @Override - public boolean checkUserNameUnique(SysUser user) - { - Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); - SysUser info = userMapper.checkUserNameUnique(user.getUserName()); - if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) - { - return UserConstants.NOT_UNIQUE; - } - return UserConstants.UNIQUE; - } - - /** - * 鏍¢獙鎵嬫満鍙风爜鏄惁鍞竴 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return - */ - @Override - public boolean checkPhoneUnique(SysUser user) - { - Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); - SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber()); - if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) - { - return UserConstants.NOT_UNIQUE; - } - return UserConstants.UNIQUE; - } - - /** - * 鏍¢獙email鏄惁鍞竴 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return - */ - @Override - public boolean checkEmailUnique(SysUser user) - { - Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); - SysUser info = userMapper.checkEmailUnique(user.getEmail()); - if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) - { - return UserConstants.NOT_UNIQUE; - } - return UserConstants.UNIQUE; - } - - /** - * 鏍¢獙鐢ㄦ埛鏄惁鍏佽鎿嶄綔 - * - * @param user 鐢ㄦ埛淇℃伅 - */ - @Override - public void checkUserAllowed(SysUser user) - { - if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) - { - throw new ServiceException("涓嶅厑璁告搷浣滆秴绾х鐞嗗憳鐢ㄦ埛"); - } - } - - /** - * 鏍¢獙鐢ㄦ埛鏄惁鏈夋暟鎹潈闄� - * - * @param userId 鐢ㄦ埛id - */ - @Override - public void checkUserDataScope(Long userId) - { - if (!SysUser.isAdmin(SecurityUtils.getUserId())) - { - SysUser user = new SysUser(); - user.setUserId(userId); - List<SysUser> users = SpringUtils.getAopProxy(this).selectUserList(user); - if (StringUtils.isEmpty(users)) - { - throw new ServiceException("娌℃湁鏉冮檺璁块棶鐢ㄦ埛鏁版嵁锛�"); - } - } - } - - /** - * 鏂板淇濆瓨鐢ㄦ埛淇℃伅 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 缁撴灉 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int insertUser(SysUser user) - { - // 鏂板鐢ㄦ埛淇℃伅 - int rows = userMapper.insertUser(user); - // 鏂板鐢ㄦ埛宀椾綅鍏宠仈 - insertUserPost(user); - // 鏂板鐢ㄦ埛涓庤鑹茬鐞� - insertUserRole(user); - return rows; - } - - /** - * 娉ㄥ唽鐢ㄦ埛淇℃伅 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 缁撴灉 - */ - @Override - public boolean registerUser(SysUser user) - { - return userMapper.insertUser(user) > 0; - } - - /** - * 淇敼淇濆瓨鐢ㄦ埛淇℃伅 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 缁撴灉 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int updateUser(SysUser user) - { - Long userId = user.getUserId(); - // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱� - userRoleMapper.deleteUserRoleByUserId(userId); - // 鏂板鐢ㄦ埛涓庤鑹茬鐞� - insertUserRole(user); - // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶅叧鑱� - userPostMapper.deleteUserPostByUserId(userId); - // 鏂板鐢ㄦ埛涓庡矖浣嶇鐞� - insertUserPost(user); - return userMapper.updateUser(user); - } - - /** - * 鐢ㄦ埛鎺堟潈瑙掕壊 - * - * @param userId 鐢ㄦ埛ID - * @param roleIds 瑙掕壊缁� - */ - @Override - @Transactional(rollbackFor = Exception.class) - public void insertUserAuth(Long userId, Long[] roleIds) - { - userRoleMapper.deleteUserRoleByUserId(userId); - insertUserRole(userId, roleIds); - } - - /** - * 淇敼鐢ㄦ埛鐘舵�� - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 缁撴灉 - */ - @Override - public int updateUserStatus(SysUser user) - { - return userMapper.updateUser(user); - } - - /** - * 淇敼鐢ㄦ埛鍩烘湰淇℃伅 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 缁撴灉 - */ - @Override - public boolean updateUserProfile(SysUser user) - { - return userMapper.updateUser(user) > 0; - } - - /** - * 淇敼鐢ㄦ埛澶村儚 - * - * @param userName 鐢ㄦ埛鍚� - * @param avatar 澶村儚鍦板潃 - * @return 缁撴灉 - */ - @Override - public boolean updateUserAvatar(String userName, String avatar) - { - return userMapper.updateUserAvatar(userName, avatar) > 0; - } - - /** - * 閲嶇疆鐢ㄦ埛瀵嗙爜 - * - * @param user 鐢ㄦ埛淇℃伅 - * @return 缁撴灉 - */ - @Override - public int resetPwd(SysUser user) - { - return userMapper.updateUser(user); - } - - /** - * 閲嶇疆鐢ㄦ埛瀵嗙爜 - * - * @param userName 鐢ㄦ埛鍚� - * @param password 瀵嗙爜 - * @return 缁撴灉 - */ - @Override - public int resetUserPwd(String userName, String password) - { - return userMapper.resetUserPwd(userName, password); - } - - /** - * 鏂板鐢ㄦ埛瑙掕壊淇℃伅 - * - * @param user 鐢ㄦ埛瀵硅薄 - */ - public void insertUserRole(SysUser user) - { - this.insertUserRole(user.getUserId(), user.getRoleIds()); - } - - /** - * 鏂板鐢ㄦ埛宀椾綅淇℃伅 - * - * @param user 鐢ㄦ埛瀵硅薄 - */ - public void insertUserPost(SysUser user) - { - Long[] posts = user.getPostIds(); - if (StringUtils.isNotEmpty(posts)) - { - // 鏂板鐢ㄦ埛涓庡矖浣嶇鐞� - List<SysUserPost> list = new ArrayList<SysUserPost>(); - for (Long postId : posts) - { - SysUserPost up = new SysUserPost(); - up.setUserId(user.getUserId()); - up.setPostId(postId); - list.add(up); - } - userPostMapper.batchUserPost(list); - } - } - - /** - * 鏂板鐢ㄦ埛瑙掕壊淇℃伅 - * - * @param userId 鐢ㄦ埛ID - * @param roleIds 瑙掕壊缁� - */ - public void insertUserRole(Long userId, Long[] roleIds) - { - if (StringUtils.isNotEmpty(roleIds)) - { - // 鏂板鐢ㄦ埛涓庤鑹茬鐞� - List<SysUserRole> list = new ArrayList<SysUserRole>(); - for (Long roleId : roleIds) - { - SysUserRole ur = new SysUserRole(); - ur.setUserId(userId); - ur.setRoleId(roleId); - list.add(ur); - } - userRoleMapper.batchUserRole(list); - } - } - - /** - * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛 - * - * @param userId 鐢ㄦ埛ID - * @return 缁撴灉 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int deleteUserById(Long userId) - { - // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱� - userRoleMapper.deleteUserRoleByUserId(userId); - // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶈〃 - userPostMapper.deleteUserPostByUserId(userId); - return userMapper.deleteUserById(userId); - } - - /** - * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅 - * - * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛ID - * @return 缁撴灉 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int deleteUserByIds(Long[] userIds) - { - for (Long userId : userIds) - { - checkUserAllowed(new SysUser(userId)); - checkUserDataScope(userId); - } - // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱� - userRoleMapper.deleteUserRole(userIds); - // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶅叧鑱� - userPostMapper.deleteUserPost(userIds); - return userMapper.deleteUserByIds(userIds); - } - - /** - * 瀵煎叆鐢ㄦ埛鏁版嵁 - * - * @param userList 鐢ㄦ埛鏁版嵁鍒楄〃 - * @param isUpdateSupport 鏄惁鏇存柊鏀寔锛屽鏋滃凡瀛樺湪锛屽垯杩涜鏇存柊鏁版嵁 - * @param operName 鎿嶄綔鐢ㄦ埛 - * @return 缁撴灉 - */ - @Override - public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName) - { - if (StringUtils.isNull(userList) || userList.size() == 0) - { - throw new ServiceException("瀵煎叆鐢ㄦ埛鏁版嵁涓嶈兘涓虹┖锛�"); - } - int successNum = 0; - int failureNum = 0; - StringBuilder successMsg = new StringBuilder(); - StringBuilder failureMsg = new StringBuilder(); - for (SysUser user : userList) - { - try - { - // 楠岃瘉鏄惁瀛樺湪杩欎釜鐢ㄦ埛 - SysUser u = userMapper.selectUserByUserName(user.getUserName()); - if (StringUtils.isNull(u)) - { - BeanValidators.validateWithException(validator, user); - deptService.checkDeptDataScope(user.getDeptId()); - String password = configService.selectConfigByKey("sys.user.initPassword"); - user.setPassword(SecurityUtils.encryptPassword(password)); - user.setCreateBy(operName); - userMapper.insertUser(user); - successNum++; - successMsg.append("<br/>" + successNum + "銆佽处鍙� " + user.getUserName() + " 瀵煎叆鎴愬姛"); - } - else if (isUpdateSupport) - { - BeanValidators.validateWithException(validator, user); - checkUserAllowed(u); - checkUserDataScope(u.getUserId()); - deptService.checkDeptDataScope(user.getDeptId()); - user.setUserId(u.getUserId()); - user.setUpdateBy(operName); - userMapper.updateUser(user); - successNum++; - successMsg.append("<br/>" + successNum + "銆佽处鍙� " + user.getUserName() + " 鏇存柊鎴愬姛"); - } - else - { - failureNum++; - failureMsg.append("<br/>" + failureNum + "銆佽处鍙� " + user.getUserName() + " 宸插瓨鍦�"); - } - } - catch (Exception e) - { - failureNum++; - String msg = "<br/>" + failureNum + "銆佽处鍙� " + user.getUserName() + " 瀵煎叆澶辫触锛�"; - failureMsg.append(msg + e.getMessage()); - log.error(msg, e); - } - } - if (failureNum > 0) - { - failureMsg.insert(0, "寰堟姳姝夛紝瀵煎叆澶辫触锛佸叡 " + failureNum + " 鏉℃暟鎹牸寮忎笉姝g‘锛岄敊璇涓嬶細"); - throw new ServiceException(failureMsg.toString()); - } - else - { - successMsg.insert(0, "鎭枩鎮紝鏁版嵁宸插叏閮ㄥ鍏ユ垚鍔燂紒鍏� " + successNum + " 鏉★紝鏁版嵁濡備笅锛�"); - } - return successMsg.toString(); - } - -} diff --git a/ruoyi-modules/ruoyi-file/pom.xml b/ruoyi-modules/se-file/pom.xml similarity index 100% rename from ruoyi-modules/ruoyi-file/pom.xml rename to ruoyi-modules/se-file/pom.xml diff --git a/ruoyi-modules/se-file/src/main/java/com/se/file/SeFileApplication.java b/ruoyi-modules/se-file/src/main/java/com/se/file/SeFileApplication.java new file mode 100644 index 0000000..d853e56 --- /dev/null +++ b/ruoyi-modules/se-file/src/main/java/com/se/file/SeFileApplication.java @@ -0,0 +1,22 @@ +package com.se.file; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import com.se.common.swagger.annotation.EnableCustomSwagger2; + +/** + * 鏂囦欢鏈嶅姟 + * + * @author admin + */ +@EnableCustomSwagger2 +@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class }) +public class SeFileApplication +{ + public static void main(String[] args) + { + SpringApplication.run(SeFileApplication.class, args); + System.out.println(" 鏂囦欢妯″潡鍚姩鎴愬姛 "); + } +} diff --git a/ruoyi-modules/se-file/src/main/java/com/se/file/config/MinioConfig.java b/ruoyi-modules/se-file/src/main/java/com/se/file/config/MinioConfig.java new file mode 100644 index 0000000..bb02876 --- /dev/null +++ b/ruoyi-modules/se-file/src/main/java/com/se/file/config/MinioConfig.java @@ -0,0 +1,82 @@ +package com.se.file.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import io.minio.MinioClient; + +/** + * Minio 閰嶇疆淇℃伅 + * + * @author admin + */ +@Configuration +@ConfigurationProperties(prefix = "minio") +public class MinioConfig +{ + /** + * 鏈嶅姟鍦板潃 + */ + private String url; + + /** + * 鐢ㄦ埛鍚� + */ + private String accessKey; + + /** + * 瀵嗙爜 + */ + private String secretKey; + + /** + * 瀛樺偍妗跺悕绉� + */ + private String bucketName; + + public String getUrl() + { + return url; + } + + public void setUrl(String url) + { + this.url = url; + } + + public String getAccessKey() + { + return accessKey; + } + + public void setAccessKey(String accessKey) + { + this.accessKey = accessKey; + } + + public String getSecretKey() + { + return secretKey; + } + + public void setSecretKey(String secretKey) + { + this.secretKey = secretKey; + } + + public String getBucketName() + { + return bucketName; + } + + public void setBucketName(String bucketName) + { + this.bucketName = bucketName; + } + + @Bean + public MinioClient getMinioClient() + { + return MinioClient.builder().endpoint(url).credentials(accessKey, secretKey).build(); + } +} diff --git a/ruoyi-modules/se-file/src/main/java/com/se/file/config/ResourcesConfig.java b/ruoyi-modules/se-file/src/main/java/com/se/file/config/ResourcesConfig.java new file mode 100644 index 0000000..bb0eebe --- /dev/null +++ b/ruoyi-modules/se-file/src/main/java/com/se/file/config/ResourcesConfig.java @@ -0,0 +1,50 @@ +package com.se.file.config; + +import java.io.File; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * 閫氱敤鏄犲皠閰嶇疆 + * + * @author admin + */ +@Configuration +public class ResourcesConfig implements WebMvcConfigurer +{ + /** + * 涓婁紶鏂囦欢瀛樺偍鍦ㄦ湰鍦扮殑鏍硅矾寰� + */ + @Value("${file.path}") + private String localFilePath; + + /** + * 璧勬簮鏄犲皠璺緞 鍓嶇紑 + */ + @Value("${file.prefix}") + public String localFilePrefix; + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) + { + /** 鏈湴鏂囦欢涓婁紶璺緞 */ + registry.addResourceHandler(localFilePrefix + "/**") + .addResourceLocations("file:" + localFilePath + File.separator); + } + + /** + * 寮�鍚法鍩� + */ + @Override + public void addCorsMappings(CorsRegistry registry) { + // 璁剧疆鍏佽璺ㄥ煙鐨勮矾鐢� + registry.addMapping(localFilePrefix + "/**") + // 璁剧疆鍏佽璺ㄥ煙璇锋眰鐨勫煙鍚� + .allowedOrigins("*") + // 璁剧疆鍏佽鐨勬柟娉� + .allowedMethods("GET"); + } +} \ No newline at end of file diff --git a/ruoyi-modules/se-file/src/main/java/com/se/file/controller/SysFileController.java b/ruoyi-modules/se-file/src/main/java/com/se/file/controller/SysFileController.java new file mode 100644 index 0000000..e87c238 --- /dev/null +++ b/ruoyi-modules/se-file/src/main/java/com/se/file/controller/SysFileController.java @@ -0,0 +1,48 @@ +package com.se.file.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; +import com.se.common.core.domain.R; +import com.se.common.core.utils.file.FileUtils; +import com.se.file.service.ISysFileService; +import com.se.system.api.domain.SysFile; + +/** + * 鏂囦欢璇锋眰澶勭悊 + * + * @author admin + */ +@RestController +public class SysFileController +{ + private static final Logger log = LoggerFactory.getLogger(SysFileController.class); + + @Autowired + private ISysFileService sysFileService; + + /** + * 鏂囦欢涓婁紶璇锋眰 + */ + @PostMapping("upload") + public R<SysFile> upload(MultipartFile file) + { + try + { + // 涓婁紶骞惰繑鍥炶闂湴鍧� + String url = sysFileService.uploadFile(file); + SysFile sysFile = new SysFile(); + sysFile.setName(FileUtils.getName(url)); + sysFile.setUrl(url); + return R.ok(sysFile); + } + catch (Exception e) + { + log.error("涓婁紶鏂囦欢澶辫触", e); + return R.fail(e.getMessage()); + } + } +} \ No newline at end of file diff --git a/ruoyi-modules/se-file/src/main/java/com/se/file/service/FastDfsSysFileServiceImpl.java b/ruoyi-modules/se-file/src/main/java/com/se/file/service/FastDfsSysFileServiceImpl.java new file mode 100644 index 0000000..fa25b7b --- /dev/null +++ b/ruoyi-modules/se-file/src/main/java/com/se/file/service/FastDfsSysFileServiceImpl.java @@ -0,0 +1,46 @@ +package com.se.file.service; + +import java.io.InputStream; +import com.alibaba.nacos.common.utils.IoUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; +import com.github.tobato.fastdfs.domain.fdfs.StorePath; +import com.github.tobato.fastdfs.service.FastFileStorageClient; +import com.se.common.core.utils.file.FileTypeUtils; + +/** + * FastDFS 鏂囦欢瀛樺偍 + * + * @author admin + */ +@Service +public class FastDfsSysFileServiceImpl implements ISysFileService +{ + /** + * 鍩熷悕鎴栨湰鏈鸿闂湴鍧� + */ + @Value("${fdfs.domain}") + public String domain; + + @Autowired + private FastFileStorageClient storageClient; + + /** + * FastDfs鏂囦欢涓婁紶鎺ュ彛 + * + * @param file 涓婁紶鐨勬枃浠� + * @return 璁块棶鍦板潃 + * @throws Exception + */ + @Override + public String uploadFile(MultipartFile file) throws Exception + { + InputStream inputStream = file.getInputStream(); + StorePath storePath = storageClient.uploadFile(inputStream, file.getSize(), + FileTypeUtils.getExtension(file), null); + IoUtils.closeQuietly(inputStream); + return domain + "/" + storePath.getFullPath(); + } +} diff --git a/ruoyi-modules/se-file/src/main/java/com/se/file/service/ISysFileService.java b/ruoyi-modules/se-file/src/main/java/com/se/file/service/ISysFileService.java new file mode 100644 index 0000000..9d4215e --- /dev/null +++ b/ruoyi-modules/se-file/src/main/java/com/se/file/service/ISysFileService.java @@ -0,0 +1,20 @@ +package com.se.file.service; + +import org.springframework.web.multipart.MultipartFile; + +/** + * 鏂囦欢涓婁紶鎺ュ彛 + * + * @author admin + */ +public interface ISysFileService +{ + /** + * 鏂囦欢涓婁紶鎺ュ彛 + * + * @param file 涓婁紶鐨勬枃浠� + * @return 璁块棶鍦板潃 + * @throws Exception + */ + public String uploadFile(MultipartFile file) throws Exception; +} diff --git a/ruoyi-modules/se-file/src/main/java/com/se/file/service/LocalSysFileServiceImpl.java b/ruoyi-modules/se-file/src/main/java/com/se/file/service/LocalSysFileServiceImpl.java new file mode 100644 index 0000000..0ffaf52 --- /dev/null +++ b/ruoyi-modules/se-file/src/main/java/com/se/file/service/LocalSysFileServiceImpl.java @@ -0,0 +1,50 @@ +package com.se.file.service; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; +import com.se.file.utils.FileUploadUtils; + +/** + * 鏈湴鏂囦欢瀛樺偍 + * + * @author admin + */ +@Primary +@Service +public class LocalSysFileServiceImpl implements ISysFileService +{ + /** + * 璧勬簮鏄犲皠璺緞 鍓嶇紑 + */ + @Value("${file.prefix}") + public String localFilePrefix; + + /** + * 鍩熷悕鎴栨湰鏈鸿闂湴鍧� + */ + @Value("${file.domain}") + public String domain; + + /** + * 涓婁紶鏂囦欢瀛樺偍鍦ㄦ湰鍦扮殑鏍硅矾寰� + */ + @Value("${file.path}") + private String localFilePath; + + /** + * 鏈湴鏂囦欢涓婁紶鎺ュ彛 + * + * @param file 涓婁紶鐨勬枃浠� + * @return 璁块棶鍦板潃 + * @throws Exception + */ + @Override + public String uploadFile(MultipartFile file) throws Exception + { + String name = FileUploadUtils.upload(localFilePath, file); + String url = domain + localFilePrefix + name; + return url; + } +} diff --git a/ruoyi-modules/se-file/src/main/java/com/se/file/service/MinioSysFileServiceImpl.java b/ruoyi-modules/se-file/src/main/java/com/se/file/service/MinioSysFileServiceImpl.java new file mode 100644 index 0000000..cf7c1a1 --- /dev/null +++ b/ruoyi-modules/se-file/src/main/java/com/se/file/service/MinioSysFileServiceImpl.java @@ -0,0 +1,50 @@ +package com.se.file.service; + +import java.io.InputStream; + +import com.se.file.config.MinioConfig; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; +import com.alibaba.nacos.common.utils.IoUtils; +import com.se.file.utils.FileUploadUtils; +import io.minio.MinioClient; +import io.minio.PutObjectArgs; + +/** + * Minio 鏂囦欢瀛樺偍 + * + * @author admin + */ +@Service +public class MinioSysFileServiceImpl implements ISysFileService +{ + @Autowired + private MinioConfig minioConfig; + + @Autowired + private MinioClient client; + + /** + * Minio鏂囦欢涓婁紶鎺ュ彛 + * + * @param file 涓婁紶鐨勬枃浠� + * @return 璁块棶鍦板潃 + * @throws Exception + */ + @Override + public String uploadFile(MultipartFile file) throws Exception + { + String fileName = FileUploadUtils.extractFilename(file); + InputStream inputStream = file.getInputStream(); + PutObjectArgs args = PutObjectArgs.builder() + .bucket(minioConfig.getBucketName()) + .object(fileName) + .stream(inputStream, file.getSize(), -1) + .contentType(file.getContentType()) + .build(); + client.putObject(args); + IoUtils.closeQuietly(inputStream); + return minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + fileName; + } +} diff --git a/ruoyi-modules/se-file/src/main/java/com/se/file/utils/FileUploadUtils.java b/ruoyi-modules/se-file/src/main/java/com/se/file/utils/FileUploadUtils.java new file mode 100644 index 0000000..c51548d --- /dev/null +++ b/ruoyi-modules/se-file/src/main/java/com/se/file/utils/FileUploadUtils.java @@ -0,0 +1,185 @@ +package com.se.file.utils; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Paths; +import java.util.Objects; +import org.apache.commons.io.FilenameUtils; +import org.springframework.web.multipart.MultipartFile; +import com.se.common.core.exception.file.FileException; +import com.se.common.core.exception.file.FileNameLengthLimitExceededException; +import com.se.common.core.exception.file.FileSizeLimitExceededException; +import com.se.common.core.exception.file.InvalidExtensionException; +import com.se.common.core.utils.DateUtils; +import com.se.common.core.utils.StringUtils; +import com.se.common.core.utils.file.FileTypeUtils; +import com.se.common.core.utils.file.MimeTypeUtils; +import com.se.common.core.utils.uuid.Seq; + +/** + * 鏂囦欢涓婁紶宸ュ叿绫� + * + * @author admin + */ +public class FileUploadUtils +{ + /** + * 榛樿澶у皬 50M + */ + public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024L; + + /** + * 榛樿鐨勬枃浠跺悕鏈�澶ч暱搴� 100 + */ + public static final int DEFAULT_FILE_NAME_LENGTH = 100; + + /** + * 鏍规嵁鏂囦欢璺緞涓婁紶 + * + * @param baseDir 鐩稿搴旂敤鐨勫熀鐩綍 + * @param file 涓婁紶鐨勬枃浠� + * @return 鏂囦欢鍚嶇О + * @throws IOException + */ + public static final String upload(String baseDir, MultipartFile file) throws IOException + { + try + { + return upload(baseDir, file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION); + } + catch (FileException fe) + { + throw new IOException(fe.getDefaultMessage(), fe); + } + catch (Exception e) + { + throw new IOException(e.getMessage(), e); + } + } + + /** + * 鏂囦欢涓婁紶 + * + * @param baseDir 鐩稿搴旂敤鐨勫熀鐩綍 + * @param file 涓婁紶鐨勬枃浠� + * @param allowedExtension 涓婁紶鏂囦欢绫诲瀷 + * @return 杩斿洖涓婁紶鎴愬姛鐨勬枃浠跺悕 + * @throws FileSizeLimitExceededException 濡傛灉瓒呭嚭鏈�澶уぇ灏� + * @throws FileNameLengthLimitExceededException 鏂囦欢鍚嶅お闀� + * @throws IOException 姣斿璇诲啓鏂囦欢鍑洪敊鏃� + * @throws InvalidExtensionException 鏂囦欢鏍¢獙寮傚父 + */ + public static final String upload(String baseDir, MultipartFile file, String[] allowedExtension) + throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException, + InvalidExtensionException + { + int fileNamelength = Objects.requireNonNull(file.getOriginalFilename()).length(); + if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH) + { + throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH); + } + + assertAllowed(file, allowedExtension); + + String fileName = extractFilename(file); + + String absPath = getAbsoluteFile(baseDir, fileName).getAbsolutePath(); + file.transferTo(Paths.get(absPath)); + return getPathFileName(fileName); + } + + /** + * 缂栫爜鏂囦欢鍚� + */ + public static final String extractFilename(MultipartFile file) + { + return StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(), + FilenameUtils.getBaseName(file.getOriginalFilename()), Seq.getId(Seq.uploadSeqType), FileTypeUtils.getExtension(file)); + } + + private static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException + { + File desc = new File(uploadDir + File.separator + fileName); + + if (!desc.exists()) + { + if (!desc.getParentFile().exists()) + { + desc.getParentFile().mkdirs(); + } + } + return desc.isAbsolute() ? desc : desc.getAbsoluteFile(); + } + + private static final String getPathFileName(String fileName) throws IOException + { + String pathFileName = "/" + fileName; + return pathFileName; + } + + /** + * 鏂囦欢澶у皬鏍¢獙 + * + * @param file 涓婁紶鐨勬枃浠� + * @throws FileSizeLimitExceededException 濡傛灉瓒呭嚭鏈�澶уぇ灏� + * @throws InvalidExtensionException 鏂囦欢鏍¢獙寮傚父 + */ + public static final void assertAllowed(MultipartFile file, String[] allowedExtension) + throws FileSizeLimitExceededException, InvalidExtensionException + { + long size = file.getSize(); + if (size > DEFAULT_MAX_SIZE) + { + throw new FileSizeLimitExceededException(DEFAULT_MAX_SIZE / 1024 / 1024); + } + + String fileName = file.getOriginalFilename(); + String extension = FileTypeUtils.getExtension(file); + if (allowedExtension != null && !isAllowedExtension(extension, allowedExtension)) + { + if (allowedExtension == MimeTypeUtils.IMAGE_EXTENSION) + { + throw new InvalidExtensionException.InvalidImageExtensionException(allowedExtension, extension, + fileName); + } + else if (allowedExtension == MimeTypeUtils.FLASH_EXTENSION) + { + throw new InvalidExtensionException.InvalidFlashExtensionException(allowedExtension, extension, + fileName); + } + else if (allowedExtension == MimeTypeUtils.MEDIA_EXTENSION) + { + throw new InvalidExtensionException.InvalidMediaExtensionException(allowedExtension, extension, + fileName); + } + else if (allowedExtension == MimeTypeUtils.VIDEO_EXTENSION) + { + throw new InvalidExtensionException.InvalidVideoExtensionException(allowedExtension, extension, + fileName); + } + else + { + throw new InvalidExtensionException(allowedExtension, extension, fileName); + } + } + } + + /** + * 鍒ゆ柇MIME绫诲瀷鏄惁鏄厑璁哥殑MIME绫诲瀷 + * + * @param extension 涓婁紶鏂囦欢绫诲瀷 + * @param allowedExtension 鍏佽涓婁紶鏂囦欢绫诲瀷 + * @return true/false + */ + public static final boolean isAllowedExtension(String extension, String[] allowedExtension) + { + for (String str : allowedExtension) + { + if (str.equalsIgnoreCase(extension)) + { + return true; + } + } + return false; + } +} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-file/src/main/resources/banner.txt b/ruoyi-modules/se-file/src/main/resources/banner.txt similarity index 100% rename from ruoyi-modules/ruoyi-file/src/main/resources/banner.txt rename to ruoyi-modules/se-file/src/main/resources/banner.txt diff --git a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml b/ruoyi-modules/se-file/src/main/resources/bootstrap.yml similarity index 100% rename from ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml rename to ruoyi-modules/se-file/src/main/resources/bootstrap.yml diff --git a/ruoyi-modules/ruoyi-file/src/main/resources/logback.xml b/ruoyi-modules/se-file/src/main/resources/logback.xml similarity index 100% rename from ruoyi-modules/ruoyi-file/src/main/resources/logback.xml rename to ruoyi-modules/se-file/src/main/resources/logback.xml diff --git a/ruoyi-modules/ruoyi-gen/pom.xml b/ruoyi-modules/se-gen/pom.xml similarity index 100% rename from ruoyi-modules/ruoyi-gen/pom.xml rename to ruoyi-modules/se-gen/pom.xml diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/SeGenApplication.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/SeGenApplication.java new file mode 100644 index 0000000..49a19fd --- /dev/null +++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/SeGenApplication.java @@ -0,0 +1,34 @@ +package com.se.gen; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import com.se.common.security.annotation.EnableCustomConfig; +import com.se.common.security.annotation.EnableRyFeignClients; +import com.se.common.swagger.annotation.EnableCustomSwagger2; + +/** + * 浠g爜鐢熸垚 + * + * @author admin + */ +@EnableCustomConfig +@EnableCustomSwagger2 +@EnableRyFeignClients +@SpringBootApplication +public class SeGenApplication +{ + public static void main(String[] args) + { + SpringApplication.run(SeGenApplication.class, args); + System.out.println("(鈾モ棤鈥库棤)锞夛緸 浠g爜鐢熸垚妯″潡鍚姩鎴愬姛 醿�(麓凇`醿�)锞� \n" + + " .-------. ____ __ \n" + + " | _ _ \\ \\ \\ / / \n" + + " | ( ' ) | \\ _. / ' \n" + + " |(_ o _) / _( )_ .' \n" + + " | (_,_).' __ ___(_ o _)' \n" + + " | |\\ \\ | || |(_,_)' \n" + + " | | \\ `' /| `-' / \n" + + " | | \\ / \\ / \n" + + " ''-' `'-' `-..-' "); + } +} diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/config/GenConfig.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/config/GenConfig.java new file mode 100644 index 0000000..28143c1 --- /dev/null +++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/config/GenConfig.java @@ -0,0 +1,66 @@ +package com.se.gen.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * 浠g爜鐢熸垚鐩稿叧閰嶇疆 + * + * @author admin + */ +@Component +@ConfigurationProperties(prefix = "gen") +public class GenConfig +{ + /** 浣滆�� */ + public static String author; + + /** 鐢熸垚鍖呰矾寰� */ + public static String packageName; + + /** 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸false */ + public static boolean autoRemovePre; + + /** 琛ㄥ墠缂�(绫诲悕涓嶄細鍖呭惈琛ㄥ墠缂�) */ + public static String tablePrefix; + + public static String getAuthor() + { + return author; + } + + public void setAuthor(String author) + { + GenConfig.author = author; + } + + public static String getPackageName() + { + return packageName; + } + + public void setPackageName(String packageName) + { + GenConfig.packageName = packageName; + } + + public static boolean getAutoRemovePre() + { + return autoRemovePre; + } + + public void setAutoRemovePre(boolean autoRemovePre) + { + GenConfig.autoRemovePre = autoRemovePre; + } + + public static String getTablePrefix() + { + return tablePrefix; + } + + public void setTablePrefix(String tablePrefix) + { + GenConfig.tablePrefix = tablePrefix; + } +} diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/controller/GenController.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/controller/GenController.java new file mode 100644 index 0000000..cd740c0 --- /dev/null +++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/controller/GenController.java @@ -0,0 +1,212 @@ +package com.se.gen.controller; + +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.servlet.http.HttpServletResponse; + +import com.se.gen.domain.GenTableColumn; +import org.apache.commons.io.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.se.common.core.text.Convert; +import com.se.common.core.web.controller.BaseController; +import com.se.common.core.web.domain.AjaxResult; +import com.se.common.core.web.page.TableDataInfo; +import com.se.common.log.annotation.Log; +import com.se.common.log.enums.BusinessType; +import com.se.common.security.annotation.RequiresPermissions; +import com.se.gen.domain.GenTable; +import com.se.gen.service.IGenTableColumnService; +import com.se.gen.service.IGenTableService; + +/** + * 浠g爜鐢熸垚 鎿嶄綔澶勭悊 + * + * @author admin + */ +@RequestMapping("/gen") +@RestController +public class GenController extends BaseController +{ + @Autowired + private IGenTableService genTableService; + + @Autowired + private IGenTableColumnService genTableColumnService; + + /** + * 鏌ヨ浠g爜鐢熸垚鍒楄〃 + */ + @RequiresPermissions("tool:gen:list") + @GetMapping("/list") + public TableDataInfo genList(GenTable genTable) + { + startPage(); + List<GenTable> list = genTableService.selectGenTableList(genTable); + return getDataTable(list); + } + + /** + * 淇敼浠g爜鐢熸垚涓氬姟 + */ + @RequiresPermissions("tool:gen:query") + @GetMapping(value = "/{tableId}") + public AjaxResult getInfo(@PathVariable Long tableId) + { + GenTable table = genTableService.selectGenTableById(tableId); + List<GenTable> tables = genTableService.selectGenTableAll(); + List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(tableId); + Map<String, Object> map = new HashMap<String, Object>(); + map.put("info", table); + map.put("rows", list); + map.put("tables", tables); + return success(map); + } + + /** + * 鏌ヨ鏁版嵁搴撳垪琛� + */ + @RequiresPermissions("tool:gen:list") + @GetMapping("/db/list") + public TableDataInfo dataList(GenTable genTable) + { + startPage(); + List<GenTable> list = genTableService.selectDbTableList(genTable); + return getDataTable(list); + } + + /** + * 鏌ヨ鏁版嵁琛ㄥ瓧娈靛垪琛� + */ + @GetMapping(value = "/column/{tableId}") + public TableDataInfo columnList(Long tableId) + { + TableDataInfo dataInfo = new TableDataInfo(); + List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(tableId); + dataInfo.setRows(list); + dataInfo.setTotal(list.size()); + return dataInfo; + } + + /** + * 瀵煎叆琛ㄧ粨鏋勶紙淇濆瓨锛� + */ + @RequiresPermissions("tool:gen:import") + @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.IMPORT) + @PostMapping("/importTable") + public AjaxResult importTableSave(String tables) + { + String[] tableNames = Convert.toStrArray(tables); + // 鏌ヨ琛ㄤ俊鎭� + List<GenTable> tableList = genTableService.selectDbTableListByNames(tableNames); + genTableService.importGenTable(tableList); + return success(); + } + + /** + * 淇敼淇濆瓨浠g爜鐢熸垚涓氬姟 + */ + @RequiresPermissions("tool:gen:edit") + @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult editSave(@Validated @RequestBody GenTable genTable) + { + genTableService.validateEdit(genTable); + genTableService.updateGenTable(genTable); + return success(); + } + + /** + * 鍒犻櫎浠g爜鐢熸垚 + */ + @RequiresPermissions("tool:gen:remove") + @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.DELETE) + @DeleteMapping("/{tableIds}") + public AjaxResult remove(@PathVariable Long[] tableIds) + { + genTableService.deleteGenTableByIds(tableIds); + return success(); + } + + /** + * 棰勮浠g爜 + */ + @RequiresPermissions("tool:gen:preview") + @GetMapping("/preview/{tableId}") + public AjaxResult preview(@PathVariable("tableId") Long tableId) throws IOException + { + Map<String, String> dataMap = genTableService.previewCode(tableId); + return success(dataMap); + } + + /** + * 鐢熸垚浠g爜锛堜笅杞芥柟寮忥級 + */ + @RequiresPermissions("tool:gen:code") + @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.GENCODE) + @GetMapping("/download/{tableName}") + public void download(HttpServletResponse response, @PathVariable("tableName") String tableName) throws IOException + { + byte[] data = genTableService.downloadCode(tableName); + genCode(response, data); + } + + /** + * 鐢熸垚浠g爜锛堣嚜瀹氫箟璺緞锛� + */ + @RequiresPermissions("tool:gen:code") + @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.GENCODE) + @GetMapping("/genCode/{tableName}") + public AjaxResult genCode(@PathVariable("tableName") String tableName) + { + genTableService.generatorCode(tableName); + return success(); + } + + /** + * 鍚屾鏁版嵁搴� + */ + @RequiresPermissions("tool:gen:edit") + @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.UPDATE) + @GetMapping("/synchDb/{tableName}") + public AjaxResult synchDb(@PathVariable("tableName") String tableName) + { + genTableService.synchDb(tableName); + return success(); + } + + /** + * 鎵归噺鐢熸垚浠g爜 + */ + @RequiresPermissions("tool:gen:code") + @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.GENCODE) + @GetMapping("/batchGenCode") + public void batchGenCode(HttpServletResponse response, String tables) throws IOException + { + String[] tableNames = Convert.toStrArray(tables); + byte[] data = genTableService.downloadCode(tableNames); + genCode(response, data); + } + + /** + * 鐢熸垚zip鏂囦欢 + */ + private void genCode(HttpServletResponse response, byte[] data) throws IOException + { + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\""); + response.addHeader("Content-Length", "" + data.length); + response.setContentType("application/octet-stream; charset=UTF-8"); + IOUtils.write(data, response.getOutputStream()); + } +} diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/domain/GenTable.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/domain/GenTable.java new file mode 100644 index 0000000..7878289 --- /dev/null +++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/domain/GenTable.java @@ -0,0 +1,383 @@ +package com.se.gen.domain; + +import java.util.List; +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import org.apache.commons.lang3.ArrayUtils; +import com.se.common.core.constant.GenConstants; +import com.se.common.core.utils.StringUtils; +import com.se.common.core.web.domain.BaseEntity; + +/** + * 涓氬姟琛� gen_table + * + * @author admin + */ +public class GenTable extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 缂栧彿 */ + private Long tableId; + + /** 琛ㄥ悕绉� */ + @NotBlank(message = "琛ㄥ悕绉颁笉鑳戒负绌�") + private String tableName; + + /** 琛ㄦ弿杩� */ + @NotBlank(message = "琛ㄦ弿杩颁笉鑳戒负绌�") + private String tableComment; + + /** 鍏宠仈鐖惰〃鐨勮〃鍚� */ + private String subTableName; + + /** 鏈〃鍏宠仈鐖惰〃鐨勫閿悕 */ + private String subTableFkName; + + /** 瀹炰綋绫诲悕绉�(棣栧瓧姣嶅ぇ鍐�) */ + @NotBlank(message = "瀹炰綋绫诲悕绉颁笉鑳戒负绌�") + private String className; + + /** 浣跨敤鐨勬ā鏉匡紙crud鍗曡〃鎿嶄綔 tree鏍戣〃鎿嶄綔 sub涓诲瓙琛ㄦ搷浣滐級 */ + private String tplCategory; + + /** 鍓嶇绫诲瀷锛坋lement-ui妯$増 element-plus妯$増锛� */ + private String tplWebType; + + /** 鐢熸垚鍖呰矾寰� */ + @NotBlank(message = "鐢熸垚鍖呰矾寰勪笉鑳戒负绌�") + private String packageName; + + /** 鐢熸垚妯″潡鍚� */ + @NotBlank(message = "鐢熸垚妯″潡鍚嶄笉鑳戒负绌�") + private String moduleName; + + /** 鐢熸垚涓氬姟鍚� */ + @NotBlank(message = "鐢熸垚涓氬姟鍚嶄笉鑳戒负绌�") + private String businessName; + + /** 鐢熸垚鍔熻兘鍚� */ + @NotBlank(message = "鐢熸垚鍔熻兘鍚嶄笉鑳戒负绌�") + private String functionName; + + /** 鐢熸垚浣滆�� */ + @NotBlank(message = "浣滆�呬笉鑳戒负绌�") + private String functionAuthor; + + /** 鐢熸垚浠g爜鏂瑰紡锛�0zip鍘嬬缉鍖� 1鑷畾涔夎矾寰勶級 */ + private String genType; + + /** 鐢熸垚璺緞锛堜笉濉粯璁ら」鐩矾寰勶級 */ + private String genPath; + + /** 涓婚敭淇℃伅 */ + private GenTableColumn pkColumn; + + /** 瀛愯〃淇℃伅 */ + private GenTable subTable; + + /** 琛ㄥ垪淇℃伅 */ + @Valid + private List<GenTableColumn> columns; + + /** 鍏跺畠鐢熸垚閫夐」 */ + private String options; + + /** 鏍戠紪鐮佸瓧娈� */ + private String treeCode; + + /** 鏍戠埗缂栫爜瀛楁 */ + private String treeParentCode; + + /** 鏍戝悕绉板瓧娈� */ + private String treeName; + + /** 涓婄骇鑿滃崟ID瀛楁 */ + private String parentMenuId; + + /** 涓婄骇鑿滃崟鍚嶇О瀛楁 */ + private String parentMenuName; + + public Long getTableId() + { + return tableId; + } + + public void setTableId(Long tableId) + { + this.tableId = tableId; + } + + public String getTableName() + { + return tableName; + } + + public void setTableName(String tableName) + { + this.tableName = tableName; + } + + public String getTableComment() + { + return tableComment; + } + + public void setTableComment(String tableComment) + { + this.tableComment = tableComment; + } + + public String getSubTableName() + { + return subTableName; + } + + public void setSubTableName(String subTableName) + { + this.subTableName = subTableName; + } + + public String getSubTableFkName() + { + return subTableFkName; + } + + public void setSubTableFkName(String subTableFkName) + { + this.subTableFkName = subTableFkName; + } + + public String getClassName() + { + return className; + } + + public void setClassName(String className) + { + this.className = className; + } + + public String getTplCategory() + { + return tplCategory; + } + + public void setTplCategory(String tplCategory) + { + this.tplCategory = tplCategory; + } + + public String getTplWebType() + { + return tplWebType; + } + + public void setTplWebType(String tplWebType) + { + this.tplWebType = tplWebType; + } + + public String getPackageName() + { + return packageName; + } + + public void setPackageName(String packageName) + { + this.packageName = packageName; + } + + public String getModuleName() + { + return moduleName; + } + + public void setModuleName(String moduleName) + { + this.moduleName = moduleName; + } + + public String getBusinessName() + { + return businessName; + } + + public void setBusinessName(String businessName) + { + this.businessName = businessName; + } + + public String getFunctionName() + { + return functionName; + } + + public void setFunctionName(String functionName) + { + this.functionName = functionName; + } + + public String getFunctionAuthor() + { + return functionAuthor; + } + + public void setFunctionAuthor(String functionAuthor) + { + this.functionAuthor = functionAuthor; + } + + public String getGenType() + { + return genType; + } + + public void setGenType(String genType) + { + this.genType = genType; + } + + public String getGenPath() + { + return genPath; + } + + public void setGenPath(String genPath) + { + this.genPath = genPath; + } + + public GenTableColumn getPkColumn() + { + return pkColumn; + } + + public void setPkColumn(GenTableColumn pkColumn) + { + this.pkColumn = pkColumn; + } + + public GenTable getSubTable() + { + return subTable; + } + + public void setSubTable(GenTable subTable) + { + this.subTable = subTable; + } + public List<GenTableColumn> getColumns() + { + return columns; + } + + public void setColumns(List<GenTableColumn> columns) + { + this.columns = columns; + } + + public String getOptions() + { + return options; + } + + public void setOptions(String options) + { + this.options = options; + } + + public String getTreeCode() + { + return treeCode; + } + + public void setTreeCode(String treeCode) + { + this.treeCode = treeCode; + } + + public String getTreeParentCode() + { + return treeParentCode; + } + + public void setTreeParentCode(String treeParentCode) + { + this.treeParentCode = treeParentCode; + } + + public String getTreeName() + { + return treeName; + } + + public void setTreeName(String treeName) + { + this.treeName = treeName; + } + + public String getParentMenuId() + { + return parentMenuId; + } + + public void setParentMenuId(String parentMenuId) + { + this.parentMenuId = parentMenuId; + } + + public String getParentMenuName() + { + return parentMenuName; + } + + public void setParentMenuName(String parentMenuName) + { + this.parentMenuName = parentMenuName; + } + + public boolean isSub() + { + return isSub(this.tplCategory); + } + + public static boolean isSub(String tplCategory) + { + return tplCategory != null && StringUtils.equals(GenConstants.TPL_SUB, tplCategory); + } + public boolean isTree() + { + return isTree(this.tplCategory); + } + + public static boolean isTree(String tplCategory) + { + return tplCategory != null && StringUtils.equals(GenConstants.TPL_TREE, tplCategory); + } + + public boolean isCrud() + { + return isCrud(this.tplCategory); + } + + public static boolean isCrud(String tplCategory) + { + return tplCategory != null && StringUtils.equals(GenConstants.TPL_CRUD, tplCategory); + } + + public boolean isSuperColumn(String javaField) + { + return isSuperColumn(this.tplCategory, javaField); + } + + public static boolean isSuperColumn(String tplCategory, String javaField) + { + if (isTree(tplCategory)) + { + return StringUtils.equalsAnyIgnoreCase(javaField, + ArrayUtils.addAll(GenConstants.TREE_ENTITY, GenConstants.BASE_ENTITY)); + } + return StringUtils.equalsAnyIgnoreCase(javaField, GenConstants.BASE_ENTITY); + } +} diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/domain/GenTableColumn.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/domain/GenTableColumn.java new file mode 100644 index 0000000..36200be --- /dev/null +++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/domain/GenTableColumn.java @@ -0,0 +1,374 @@ +package com.se.gen.domain; + +import javax.validation.constraints.NotBlank; + +import com.se.common.core.utils.StringUtils; +import com.se.common.core.web.domain.BaseEntity; + +/** + * 浠g爜鐢熸垚涓氬姟瀛楁琛� gen_table_column + * + * @author admin + */ +public class GenTableColumn extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 缂栧彿 */ + private Long columnId; + + /** 褰掑睘琛ㄧ紪鍙� */ + private Long tableId; + + /** 鍒楀悕绉� */ + private String columnName; + + /** 鍒楁弿杩� */ + private String columnComment; + + /** 鍒楃被鍨� */ + private String columnType; + + /** JAVA绫诲瀷 */ + private String javaType; + + /** JAVA瀛楁鍚� */ + @NotBlank(message = "Java灞炴�т笉鑳戒负绌�") + private String javaField; + + /** 鏄惁涓婚敭锛�1鏄級 */ + private String isPk; + + /** 鏄惁鑷锛�1鏄級 */ + private String isIncrement; + + /** 鏄惁蹇呭~锛�1鏄級 */ + private String isRequired; + + /** 鏄惁涓烘彃鍏ュ瓧娈碉紙1鏄級 */ + private String isInsert; + + /** 鏄惁缂栬緫瀛楁锛�1鏄級 */ + private String isEdit; + + /** 鏄惁鍒楄〃瀛楁锛�1鏄級 */ + private String isList; + + /** 鏄惁鏌ヨ瀛楁锛�1鏄級 */ + private String isQuery; + + /** 鏌ヨ鏂瑰紡锛圗Q绛変簬銆丯E涓嶇瓑浜庛�丟T澶т簬銆丩T灏忎簬銆丩IKE妯$硦銆丅ETWEEN鑼冨洿锛� */ + private String queryType; + + /** 鏄剧ず绫诲瀷锛坕nput鏂囨湰妗嗐�乼extarea鏂囨湰鍩熴�乻elect涓嬫媺妗嗐�乧heckbox澶嶉�夋銆乺adio鍗曢�夋銆乨atetime鏃ユ湡鎺т欢銆乮mage鍥剧墖涓婁紶鎺т欢銆乽pload鏂囦欢涓婁紶鎺т欢銆乪ditor瀵屾枃鏈帶浠讹級 */ + private String htmlType; + + /** 瀛楀吀绫诲瀷 */ + private String dictType; + + /** 鎺掑簭 */ + private Integer sort; + + public void setColumnId(Long columnId) + { + this.columnId = columnId; + } + + public Long getColumnId() + { + return columnId; + } + + public void setTableId(Long tableId) + { + this.tableId = tableId; + } + + public Long getTableId() + { + return tableId; + } + + public void setColumnName(String columnName) + { + this.columnName = columnName; + } + + public String getColumnName() + { + return columnName; + } + + public void setColumnComment(String columnComment) + { + this.columnComment = columnComment; + } + + public String getColumnComment() + { + return columnComment; + } + + public void setColumnType(String columnType) + { + this.columnType = columnType; + } + + public String getColumnType() + { + return columnType; + } + + public void setJavaType(String javaType) + { + this.javaType = javaType; + } + + public String getJavaType() + { + return javaType; + } + + public void setJavaField(String javaField) + { + this.javaField = javaField; + } + + public String getJavaField() + { + return javaField; + } + + public String getCapJavaField() + { + return StringUtils.capitalize(javaField); + } + + public void setIsPk(String isPk) + { + this.isPk = isPk; + } + + public String getIsPk() + { + return isPk; + } + + public boolean isPk() + { + return isPk(this.isPk); + } + + public boolean isPk(String isPk) + { + return isPk != null && StringUtils.equals("1", isPk); + } + + public String getIsIncrement() + { + return isIncrement; + } + + public void setIsIncrement(String isIncrement) + { + this.isIncrement = isIncrement; + } + + public boolean isIncrement() + { + return isIncrement(this.isIncrement); + } + + public boolean isIncrement(String isIncrement) + { + return isIncrement != null && StringUtils.equals("1", isIncrement); + } + + public void setIsRequired(String isRequired) + { + this.isRequired = isRequired; + } + + public String getIsRequired() + { + return isRequired; + } + + public boolean isRequired() + { + return isRequired(this.isRequired); + } + + public boolean isRequired(String isRequired) + { + return isRequired != null && StringUtils.equals("1", isRequired); + } + + public void setIsInsert(String isInsert) + { + this.isInsert = isInsert; + } + + public String getIsInsert() + { + return isInsert; + } + + public boolean isInsert() + { + return isInsert(this.isInsert); + } + + public boolean isInsert(String isInsert) + { + return isInsert != null && StringUtils.equals("1", isInsert); + } + + public void setIsEdit(String isEdit) + { + this.isEdit = isEdit; + } + + public String getIsEdit() + { + return isEdit; + } + + public boolean isEdit() + { + return isInsert(this.isEdit); + } + + public boolean isEdit(String isEdit) + { + return isEdit != null && StringUtils.equals("1", isEdit); + } + + public void setIsList(String isList) + { + this.isList = isList; + } + + public String getIsList() + { + return isList; + } + + public boolean isList() + { + return isList(this.isList); + } + + public boolean isList(String isList) + { + return isList != null && StringUtils.equals("1", isList); + } + + public void setIsQuery(String isQuery) + { + this.isQuery = isQuery; + } + + public String getIsQuery() + { + return isQuery; + } + + public boolean isQuery() + { + return isQuery(this.isQuery); + } + + public boolean isQuery(String isQuery) + { + return isQuery != null && StringUtils.equals("1", isQuery); + } + + public void setQueryType(String queryType) + { + this.queryType = queryType; + } + + public String getQueryType() + { + return queryType; + } + + public String getHtmlType() + { + return htmlType; + } + + public void setHtmlType(String htmlType) + { + this.htmlType = htmlType; + } + + public void setDictType(String dictType) + { + this.dictType = dictType; + } + + public String getDictType() + { + return dictType; + } + + public void setSort(Integer sort) + { + this.sort = sort; + } + + public Integer getSort() + { + return sort; + } + + public boolean isSuperColumn() + { + return isSuperColumn(this.javaField); + } + + public static boolean isSuperColumn(String javaField) + { + return StringUtils.equalsAnyIgnoreCase(javaField, + // BaseEntity + "createBy", "createTime", "updateBy", "updateTime", "remark", + // TreeEntity + "parentName", "parentId", "orderNum", "ancestors"); + } + + public boolean isUsableColumn() + { + return isUsableColumn(javaField); + } + + public static boolean isUsableColumn(String javaField) + { + // isSuperColumn()涓殑鍚嶅崟鐢ㄤ簬閬垮厤鐢熸垚澶氫綑Domain灞炴�э紝鑻ユ煇浜涘睘鎬у湪鐢熸垚椤甸潰鏃堕渶瑕佺敤鍒颁笉鑳藉拷鐣ワ紝鍒欐斁鍦ㄦ澶勭櫧鍚嶅崟 + return StringUtils.equalsAnyIgnoreCase(javaField, "parentId", "orderNum", "remark"); + } + + public String readConverterExp() + { + String remarks = StringUtils.substringBetween(this.columnComment, "锛�", "锛�"); + StringBuffer sb = new StringBuffer(); + if (StringUtils.isNotEmpty(remarks)) + { + for (String value : remarks.split(" ")) + { + if (StringUtils.isNotEmpty(value)) + { + Object startStr = value.subSequence(0, 1); + String endStr = value.substring(1); + sb.append("").append(startStr).append("=").append(endStr).append(","); + } + } + return sb.deleteCharAt(sb.length() - 1).toString(); + } + else + { + return this.columnComment; + } + } +} \ No newline at end of file diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/mapper/GenTableColumnMapper.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/mapper/GenTableColumnMapper.java new file mode 100644 index 0000000..9e8aca2 --- /dev/null +++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/mapper/GenTableColumnMapper.java @@ -0,0 +1,60 @@ +package com.se.gen.mapper; + +import java.util.List; +import com.se.gen.domain.GenTableColumn; + +/** + * 涓氬姟瀛楁 鏁版嵁灞� + * + * @author admin + */ +public interface GenTableColumnMapper +{ + /** + * 鏍规嵁琛ㄥ悕绉版煡璇㈠垪淇℃伅 + * + * @param tableName 琛ㄥ悕绉� + * @return 鍒椾俊鎭� + */ + public List<GenTableColumn> selectDbTableColumnsByName(String tableName); + + /** + * 鏌ヨ涓氬姟瀛楁鍒楄〃 + * + * @param tableId 涓氬姟瀛楁缂栧彿 + * @return 涓氬姟瀛楁闆嗗悎 + */ + public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId); + + /** + * 鏂板涓氬姟瀛楁 + * + * @param genTableColumn 涓氬姟瀛楁淇℃伅 + * @return 缁撴灉 + */ + public int insertGenTableColumn(GenTableColumn genTableColumn); + + /** + * 淇敼涓氬姟瀛楁 + * + * @param genTableColumn 涓氬姟瀛楁淇℃伅 + * @return 缁撴灉 + */ + public int updateGenTableColumn(GenTableColumn genTableColumn); + + /** + * 鍒犻櫎涓氬姟瀛楁 + * + * @param genTableColumns 鍒楁暟鎹� + * @return 缁撴灉 + */ + public int deleteGenTableColumns(List<GenTableColumn> genTableColumns); + + /** + * 鎵归噺鍒犻櫎涓氬姟瀛楁 + * + * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID + * @return 缁撴灉 + */ + public int deleteGenTableColumnByIds(Long[] ids); +} \ No newline at end of file diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/mapper/GenTableMapper.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/mapper/GenTableMapper.java new file mode 100644 index 0000000..0f781b4 --- /dev/null +++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/mapper/GenTableMapper.java @@ -0,0 +1,83 @@ +package com.se.gen.mapper; + +import java.util.List; +import com.se.gen.domain.GenTable; + +/** + * 涓氬姟 鏁版嵁灞� + * + * @author admin + */ +public interface GenTableMapper +{ + /** + * 鏌ヨ涓氬姟鍒楄〃 + * + * @param genTable 涓氬姟淇℃伅 + * @return 涓氬姟闆嗗悎 + */ + public List<GenTable> selectGenTableList(GenTable genTable); + + /** + * 鏌ヨ鎹簱鍒楄〃 + * + * @param genTable 涓氬姟淇℃伅 + * @return 鏁版嵁搴撹〃闆嗗悎 + */ + public List<GenTable> selectDbTableList(GenTable genTable); + + /** + * 鏌ヨ鎹簱鍒楄〃 + * + * @param tableNames 琛ㄥ悕绉扮粍 + * @return 鏁版嵁搴撹〃闆嗗悎 + */ + public List<GenTable> selectDbTableListByNames(String[] tableNames); + + /** + * 鏌ヨ鎵�鏈夎〃淇℃伅 + * + * @return 琛ㄤ俊鎭泦鍚� + */ + public List<GenTable> selectGenTableAll(); + + /** + * 鏌ヨ琛↖D涓氬姟淇℃伅 + * + * @param id 涓氬姟ID + * @return 涓氬姟淇℃伅 + */ + public GenTable selectGenTableById(Long id); + + /** + * 鏌ヨ琛ㄥ悕绉颁笟鍔′俊鎭� + * + * @param tableName 琛ㄥ悕绉� + * @return 涓氬姟淇℃伅 + */ + public GenTable selectGenTableByName(String tableName); + + /** + * 鏂板涓氬姟 + * + * @param genTable 涓氬姟淇℃伅 + * @return 缁撴灉 + */ + public int insertGenTable(GenTable genTable); + + /** + * 淇敼涓氬姟 + * + * @param genTable 涓氬姟淇℃伅 + * @return 缁撴灉 + */ + public int updateGenTable(GenTable genTable); + + /** + * 鎵归噺鍒犻櫎涓氬姟 + * + * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID + * @return 缁撴灉 + */ + public int deleteGenTableByIds(Long[] ids); +} \ No newline at end of file diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/GenTableColumnServiceImpl.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/GenTableColumnServiceImpl.java new file mode 100644 index 0000000..9eb75e4 --- /dev/null +++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/GenTableColumnServiceImpl.java @@ -0,0 +1,69 @@ +package com.se.gen.service; + +import java.util.List; + +import com.se.gen.domain.GenTableColumn; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.se.common.core.text.Convert; +import com.se.gen.mapper.GenTableColumnMapper; + +/** + * 涓氬姟瀛楁 鏈嶅姟灞傚疄鐜� + * + * @author admin + */ +@Service +public class GenTableColumnServiceImpl implements IGenTableColumnService +{ + @Autowired + private GenTableColumnMapper genTableColumnMapper; + + /** + * 鏌ヨ涓氬姟瀛楁鍒楄〃 + * + * @param tableId 涓氬姟瀛楁缂栧彿 + * @return 涓氬姟瀛楁闆嗗悎 + */ + @Override + public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId) + { + return genTableColumnMapper.selectGenTableColumnListByTableId(tableId); + } + + /** + * 鏂板涓氬姟瀛楁 + * + * @param genTableColumn 涓氬姟瀛楁淇℃伅 + * @return 缁撴灉 + */ + @Override + public int insertGenTableColumn(GenTableColumn genTableColumn) + { + return genTableColumnMapper.insertGenTableColumn(genTableColumn); + } + + /** + * 淇敼涓氬姟瀛楁 + * + * @param genTableColumn 涓氬姟瀛楁淇℃伅 + * @return 缁撴灉 + */ + @Override + public int updateGenTableColumn(GenTableColumn genTableColumn) + { + return genTableColumnMapper.updateGenTableColumn(genTableColumn); + } + + /** + * 鍒犻櫎涓氬姟瀛楁瀵硅薄 + * + * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID + * @return 缁撴灉 + */ + @Override + public int deleteGenTableColumnByIds(String ids) + { + return genTableColumnMapper.deleteGenTableColumnByIds(Convert.toLongArray(ids)); + } +} \ No newline at end of file diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/GenTableServiceImpl.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/GenTableServiceImpl.java new file mode 100644 index 0000000..e636ad8 --- /dev/null +++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/GenTableServiceImpl.java @@ -0,0 +1,522 @@ +package com.se.gen.service; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.StringWriter; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +import com.se.gen.domain.GenTableColumn; +import com.se.gen.util.GenUtils; +import com.se.gen.util.VelocityInitializer; +import com.se.gen.util.VelocityUtils; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; +import org.apache.velocity.Template; +import org.apache.velocity.VelocityContext; +import org.apache.velocity.app.Velocity; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.se.common.core.constant.Constants; +import com.se.common.core.constant.GenConstants; +import com.se.common.core.exception.ServiceException; +import com.se.common.core.text.CharsetKit; +import com.se.common.core.utils.StringUtils; +import com.se.common.security.utils.SecurityUtils; +import com.se.gen.domain.GenTable; +import com.se.gen.mapper.GenTableColumnMapper; +import com.se.gen.mapper.GenTableMapper; + +/** + * 涓氬姟 鏈嶅姟灞傚疄鐜� + * + * @author admin + */ +@Service +public class GenTableServiceImpl implements IGenTableService +{ + private static final Logger log = LoggerFactory.getLogger(GenTableServiceImpl.class); + + @Autowired + private GenTableMapper genTableMapper; + + @Autowired + private GenTableColumnMapper genTableColumnMapper; + + /** + * 鏌ヨ涓氬姟淇℃伅 + * + * @param id 涓氬姟ID + * @return 涓氬姟淇℃伅 + */ + @Override + public GenTable selectGenTableById(Long id) + { + GenTable genTable = genTableMapper.selectGenTableById(id); + setTableFromOptions(genTable); + return genTable; + } + + /** + * 鏌ヨ涓氬姟鍒楄〃 + * + * @param genTable 涓氬姟淇℃伅 + * @return 涓氬姟闆嗗悎 + */ + @Override + public List<GenTable> selectGenTableList(GenTable genTable) + { + return genTableMapper.selectGenTableList(genTable); + } + + /** + * 鏌ヨ鎹簱鍒楄〃 + * + * @param genTable 涓氬姟淇℃伅 + * @return 鏁版嵁搴撹〃闆嗗悎 + */ + @Override + public List<GenTable> selectDbTableList(GenTable genTable) + { + return genTableMapper.selectDbTableList(genTable); + } + + /** + * 鏌ヨ鎹簱鍒楄〃 + * + * @param tableNames 琛ㄥ悕绉扮粍 + * @return 鏁版嵁搴撹〃闆嗗悎 + */ + @Override + public List<GenTable> selectDbTableListByNames(String[] tableNames) + { + return genTableMapper.selectDbTableListByNames(tableNames); + } + + /** + * 鏌ヨ鎵�鏈夎〃淇℃伅 + * + * @return 琛ㄤ俊鎭泦鍚� + */ + @Override + public List<GenTable> selectGenTableAll() + { + return genTableMapper.selectGenTableAll(); + } + + /** + * 淇敼涓氬姟 + * + * @param genTable 涓氬姟淇℃伅 + * @return 缁撴灉 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void updateGenTable(GenTable genTable) + { + String options = JSON.toJSONString(genTable.getParams()); + genTable.setOptions(options); + int row = genTableMapper.updateGenTable(genTable); + if (row > 0) + { + for (GenTableColumn cenTableColumn : genTable.getColumns()) + { + genTableColumnMapper.updateGenTableColumn(cenTableColumn); + } + } + } + + /** + * 鍒犻櫎涓氬姟瀵硅薄 + * + * @param tableIds 闇�瑕佸垹闄ょ殑鏁版嵁ID + * @return 缁撴灉 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteGenTableByIds(Long[] tableIds) + { + genTableMapper.deleteGenTableByIds(tableIds); + genTableColumnMapper.deleteGenTableColumnByIds(tableIds); + } + + /** + * 瀵煎叆琛ㄧ粨鏋� + * + * @param tableList 瀵煎叆琛ㄥ垪琛� + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void importGenTable(List<GenTable> tableList) + { + String operName = SecurityUtils.getUsername(); + try + { + for (GenTable table : tableList) + { + String tableName = table.getTableName(); + GenUtils.initTable(table, operName); + int row = genTableMapper.insertGenTable(table); + if (row > 0) + { + // 淇濆瓨鍒椾俊鎭� + List<GenTableColumn> genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); + for (GenTableColumn column : genTableColumns) + { + GenUtils.initColumnField(column, table); + genTableColumnMapper.insertGenTableColumn(column); + } + } + } + } + catch (Exception e) + { + throw new ServiceException("瀵煎叆澶辫触锛�" + e.getMessage()); + } + } + + /** + * 棰勮浠g爜 + * + * @param tableId 琛ㄧ紪鍙� + * @return 棰勮鏁版嵁鍒楄〃 + */ + @Override + public Map<String, String> previewCode(Long tableId) + { + Map<String, String> dataMap = new LinkedHashMap<>(); + // 鏌ヨ琛ㄤ俊鎭� + GenTable table = genTableMapper.selectGenTableById(tableId); + // 璁剧疆涓诲瓙琛ㄤ俊鎭� + setSubTable(table); + // 璁剧疆涓婚敭鍒椾俊鎭� + setPkColumn(table); + VelocityInitializer.initVelocity(); + + VelocityContext context = VelocityUtils.prepareContext(table); + + // 鑾峰彇妯℃澘鍒楄〃 + List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType()); + for (String template : templates) + { + // 娓叉煋妯℃澘 + StringWriter sw = new StringWriter(); + Template tpl = Velocity.getTemplate(template, Constants.UTF8); + tpl.merge(context, sw); + dataMap.put(template, sw.toString()); + } + return dataMap; + } + + /** + * 鐢熸垚浠g爜锛堜笅杞芥柟寮忥級 + * + * @param tableName 琛ㄥ悕绉� + * @return 鏁版嵁 + */ + @Override + public byte[] downloadCode(String tableName) + { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + ZipOutputStream zip = new ZipOutputStream(outputStream); + generatorCode(tableName, zip); + IOUtils.closeQuietly(zip); + return outputStream.toByteArray(); + } + + /** + * 鐢熸垚浠g爜锛堣嚜瀹氫箟璺緞锛� + * + * @param tableName 琛ㄥ悕绉� + */ + @Override + public void generatorCode(String tableName) + { + // 鏌ヨ琛ㄤ俊鎭� + GenTable table = genTableMapper.selectGenTableByName(tableName); + // 璁剧疆涓诲瓙琛ㄤ俊鎭� + setSubTable(table); + // 璁剧疆涓婚敭鍒椾俊鎭� + setPkColumn(table); + + VelocityInitializer.initVelocity(); + + VelocityContext context = VelocityUtils.prepareContext(table); + + // 鑾峰彇妯℃澘鍒楄〃 + List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType()); + for (String template : templates) + { + if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm")) + { + // 娓叉煋妯℃澘 + StringWriter sw = new StringWriter(); + Template tpl = Velocity.getTemplate(template, Constants.UTF8); + tpl.merge(context, sw); + try + { + String path = getGenPath(table, template); + FileUtils.writeStringToFile(new File(path), sw.toString(), CharsetKit.UTF_8); + } + catch (IOException e) + { + throw new ServiceException("娓叉煋妯℃澘澶辫触锛岃〃鍚嶏細" + table.getTableName()); + } + } + } + } + + /** + * 鍚屾鏁版嵁搴� + * + * @param tableName 琛ㄥ悕绉� + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void synchDb(String tableName) + { + GenTable table = genTableMapper.selectGenTableByName(tableName); + List<GenTableColumn> tableColumns = table.getColumns(); + Map<String, GenTableColumn> tableColumnMap = tableColumns.stream().collect(Collectors.toMap(GenTableColumn::getColumnName, Function.identity())); + + List<GenTableColumn> dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); + if (StringUtils.isEmpty(dbTableColumns)) + { + throw new ServiceException("鍚屾鏁版嵁澶辫触锛屽師琛ㄧ粨鏋勪笉瀛樺湪"); + } + List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); + + dbTableColumns.forEach(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()); + column.setQueryType(prevColumn.getQueryType()); + } + if (StringUtils.isNotEmpty(prevColumn.getIsRequired()) && !column.isPk() + && (column.isInsert() || column.isEdit()) + && ((column.isUsableColumn()) || (!column.isSuperColumn()))) + { + // 濡傛灉鏄�(鏂板/淇敼&闈炰富閿�/闈炲拷鐣ュ強鐖跺睘鎬�)锛岀户缁繚鐣欏繀濉�/鏄剧ず绫诲瀷閫夐」 + column.setIsRequired(prevColumn.getIsRequired()); + column.setHtmlType(prevColumn.getHtmlType()); + } + genTableColumnMapper.updateGenTableColumn(column); + } + else + { + genTableColumnMapper.insertGenTableColumn(column); + } + }); + + List<GenTableColumn> delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList()); + if (StringUtils.isNotEmpty(delColumns)) + { + genTableColumnMapper.deleteGenTableColumns(delColumns); + } + } + + /** + * 鎵归噺鐢熸垚浠g爜锛堜笅杞芥柟寮忥級 + * + * @param tableNames 琛ㄦ暟缁� + * @return 鏁版嵁 + */ + @Override + public byte[] downloadCode(String[] tableNames) + { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + ZipOutputStream zip = new ZipOutputStream(outputStream); + for (String tableName : tableNames) + { + generatorCode(tableName, zip); + } + IOUtils.closeQuietly(zip); + return outputStream.toByteArray(); + } + + /** + * 鏌ヨ琛ㄤ俊鎭苟鐢熸垚浠g爜 + */ + private void generatorCode(String tableName, ZipOutputStream zip) + { + // 鏌ヨ琛ㄤ俊鎭� + GenTable table = genTableMapper.selectGenTableByName(tableName); + // 璁剧疆涓诲瓙琛ㄤ俊鎭� + setSubTable(table); + // 璁剧疆涓婚敭鍒椾俊鎭� + setPkColumn(table); + + VelocityInitializer.initVelocity(); + + VelocityContext context = VelocityUtils.prepareContext(table); + + // 鑾峰彇妯℃澘鍒楄〃 + List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType()); + for (String template : templates) + { + // 娓叉煋妯℃澘 + StringWriter sw = new StringWriter(); + Template tpl = Velocity.getTemplate(template, Constants.UTF8); + tpl.merge(context, sw); + try + { + // 娣诲姞鍒皕ip + zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table))); + IOUtils.write(sw.toString(), zip, Constants.UTF8); + IOUtils.closeQuietly(sw); + zip.flush(); + zip.closeEntry(); + } + catch (IOException e) + { + log.error("娓叉煋妯℃澘澶辫触锛岃〃鍚嶏細" + table.getTableName(), e); + } + } + } + + /** + * 淇敼淇濆瓨鍙傛暟鏍¢獙 + * + * @param genTable 涓氬姟淇℃伅 + */ + @Override + public void validateEdit(GenTable genTable) + { + if (GenConstants.TPL_TREE.equals(genTable.getTplCategory())) + { + String options = JSON.toJSONString(genTable.getParams()); + JSONObject paramsObj = JSON.parseObject(options); + if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_CODE))) + { + throw new ServiceException("鏍戠紪鐮佸瓧娈典笉鑳戒负绌�"); + } + else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE))) + { + throw new ServiceException("鏍戠埗缂栫爜瀛楁涓嶈兘涓虹┖"); + } + else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_NAME))) + { + throw new ServiceException("鏍戝悕绉板瓧娈典笉鑳戒负绌�"); + } + else if (GenConstants.TPL_SUB.equals(genTable.getTplCategory())) + { + if (StringUtils.isEmpty(genTable.getSubTableName())) + { + throw new ServiceException("鍏宠仈瀛愯〃鐨勮〃鍚嶄笉鑳戒负绌�"); + } + else if (StringUtils.isEmpty(genTable.getSubTableFkName())) + { + throw new ServiceException("瀛愯〃鍏宠仈鐨勫閿悕涓嶈兘涓虹┖"); + } + } + } + } + + /** + * 璁剧疆涓婚敭鍒椾俊鎭� + * + * @param table 涓氬姟琛ㄤ俊鎭� + */ + public void setPkColumn(GenTable table) + { + for (GenTableColumn column : table.getColumns()) + { + if (column.isPk()) + { + table.setPkColumn(column); + break; + } + } + if (StringUtils.isNull(table.getPkColumn())) + { + table.setPkColumn(table.getColumns().get(0)); + } + if (GenConstants.TPL_SUB.equals(table.getTplCategory())) + { + for (GenTableColumn column : table.getSubTable().getColumns()) + { + if (column.isPk()) + { + table.getSubTable().setPkColumn(column); + break; + } + } + if (StringUtils.isNull(table.getSubTable().getPkColumn())) + { + table.getSubTable().setPkColumn(table.getSubTable().getColumns().get(0)); + } + } + } + + /** + * 璁剧疆涓诲瓙琛ㄤ俊鎭� + * + * @param table 涓氬姟琛ㄤ俊鎭� + */ + public void setSubTable(GenTable table) + { + String subTableName = table.getSubTableName(); + if (StringUtils.isNotEmpty(subTableName)) + { + table.setSubTable(genTableMapper.selectGenTableByName(subTableName)); + } + } + + /** + * 璁剧疆浠g爜鐢熸垚鍏朵粬閫夐」鍊� + * + * @param genTable 璁剧疆鍚庣殑鐢熸垚瀵硅薄 + */ + public void setTableFromOptions(GenTable genTable) + { + JSONObject paramsObj = JSON.parseObject(genTable.getOptions()); + if (StringUtils.isNotNull(paramsObj)) + { + String treeCode = paramsObj.getString(GenConstants.TREE_CODE); + String treeParentCode = paramsObj.getString(GenConstants.TREE_PARENT_CODE); + String treeName = paramsObj.getString(GenConstants.TREE_NAME); + String parentMenuId = paramsObj.getString(GenConstants.PARENT_MENU_ID); + String parentMenuName = paramsObj.getString(GenConstants.PARENT_MENU_NAME); + + genTable.setTreeCode(treeCode); + genTable.setTreeParentCode(treeParentCode); + genTable.setTreeName(treeName); + genTable.setParentMenuId(parentMenuId); + genTable.setParentMenuName(parentMenuName); + } + } + + /** + * 鑾峰彇浠g爜鐢熸垚鍦板潃 + * + * @param table 涓氬姟琛ㄤ俊鎭� + * @param template 妯℃澘鏂囦欢璺緞 + * @return 鐢熸垚鍦板潃 + */ + public static String getGenPath(GenTable table, String template) + { + String genPath = table.getGenPath(); + if (StringUtils.equals(genPath, "/")) + { + return System.getProperty("user.dir") + File.separator + "src" + File.separator + VelocityUtils.getFileName(template, table); + } + return genPath + File.separator + VelocityUtils.getFileName(template, table); + } +} diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/IGenTableColumnService.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/IGenTableColumnService.java new file mode 100644 index 0000000..0a0c6af --- /dev/null +++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/IGenTableColumnService.java @@ -0,0 +1,44 @@ +package com.se.gen.service; + +import java.util.List; +import com.se.gen.domain.GenTableColumn; + +/** + * 涓氬姟瀛楁 鏈嶅姟灞� + * + * @author admin + */ +public interface IGenTableColumnService +{ + /** + * 鏌ヨ涓氬姟瀛楁鍒楄〃 + * + * @param tableId 涓氬姟瀛楁缂栧彿 + * @return 涓氬姟瀛楁闆嗗悎 + */ + public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId); + + /** + * 鏂板涓氬姟瀛楁 + * + * @param genTableColumn 涓氬姟瀛楁淇℃伅 + * @return 缁撴灉 + */ + public int insertGenTableColumn(GenTableColumn genTableColumn); + + /** + * 淇敼涓氬姟瀛楁 + * + * @param genTableColumn 涓氬姟瀛楁淇℃伅 + * @return 缁撴灉 + */ + public int updateGenTableColumn(GenTableColumn genTableColumn); + + /** + * 鍒犻櫎涓氬姟瀛楁淇℃伅 + * + * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID + * @return 缁撴灉 + */ + public int deleteGenTableColumnByIds(String ids); +} diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/IGenTableService.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/IGenTableService.java new file mode 100644 index 0000000..ff8cd09 --- /dev/null +++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/IGenTableService.java @@ -0,0 +1,121 @@ +package com.se.gen.service; + +import java.util.List; +import java.util.Map; +import com.se.gen.domain.GenTable; + +/** + * 涓氬姟 鏈嶅姟灞� + * + * @author admin + */ +public interface IGenTableService +{ + /** + * 鏌ヨ涓氬姟鍒楄〃 + * + * @param genTable 涓氬姟淇℃伅 + * @return 涓氬姟闆嗗悎 + */ + public List<GenTable> selectGenTableList(GenTable genTable); + + /** + * 鏌ヨ鎹簱鍒楄〃 + * + * @param genTable 涓氬姟淇℃伅 + * @return 鏁版嵁搴撹〃闆嗗悎 + */ + public List<GenTable> selectDbTableList(GenTable genTable); + + /** + * 鏌ヨ鎹簱鍒楄〃 + * + * @param tableNames 琛ㄥ悕绉扮粍 + * @return 鏁版嵁搴撹〃闆嗗悎 + */ + public List<GenTable> selectDbTableListByNames(String[] tableNames); + + /** + * 鏌ヨ鎵�鏈夎〃淇℃伅 + * + * @return 琛ㄤ俊鎭泦鍚� + */ + public List<GenTable> selectGenTableAll(); + + /** + * 鏌ヨ涓氬姟淇℃伅 + * + * @param id 涓氬姟ID + * @return 涓氬姟淇℃伅 + */ + public GenTable selectGenTableById(Long id); + + /** + * 淇敼涓氬姟 + * + * @param genTable 涓氬姟淇℃伅 + * @return 缁撴灉 + */ + public void updateGenTable(GenTable genTable); + + /** + * 鍒犻櫎涓氬姟淇℃伅 + * + * @param tableIds 闇�瑕佸垹闄ょ殑琛ㄦ暟鎹甀D + * @return 缁撴灉 + */ + public void deleteGenTableByIds(Long[] tableIds); + + /** + * 瀵煎叆琛ㄧ粨鏋� + * + * @param tableList 瀵煎叆琛ㄥ垪琛� + */ + public void importGenTable(List<GenTable> tableList); + + /** + * 棰勮浠g爜 + * + * @param tableId 琛ㄧ紪鍙� + * @return 棰勮鏁版嵁鍒楄〃 + */ + public Map<String, String> previewCode(Long tableId); + + /** + * 鐢熸垚浠g爜锛堜笅杞芥柟寮忥級 + * + * @param tableName 琛ㄥ悕绉� + * @return 鏁版嵁 + */ + public byte[] downloadCode(String tableName); + + /** + * 鐢熸垚浠g爜锛堣嚜瀹氫箟璺緞锛� + * + * @param tableName 琛ㄥ悕绉� + * @return 鏁版嵁 + */ + public void generatorCode(String tableName); + + /** + * 鍚屾鏁版嵁搴� + * + * @param tableName 琛ㄥ悕绉� + */ + public void synchDb(String tableName); + + /** + * 鎵归噺鐢熸垚浠g爜锛堜笅杞芥柟寮忥級 + * + * @param tableNames 琛ㄦ暟缁� + * @return 鏁版嵁 + */ + public byte[] downloadCode(String[] tableNames); + + /** + * 淇敼淇濆瓨鍙傛暟鏍¢獙 + * + * @param genTable 涓氬姟淇℃伅 + */ + public void validateEdit(GenTable genTable); +} diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/util/GenUtils.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/util/GenUtils.java new file mode 100644 index 0000000..a312d92 --- /dev/null +++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/util/GenUtils.java @@ -0,0 +1,258 @@ +package com.se.gen.util; + +import java.util.Arrays; + +import com.se.gen.config.GenConfig; +import com.se.gen.domain.GenTableColumn; +import org.apache.commons.lang3.RegExUtils; +import com.se.common.core.constant.GenConstants; +import com.se.common.core.utils.StringUtils; +import com.se.gen.domain.GenTable; + +/** + * 浠g爜鐢熸垚鍣� 宸ュ叿绫� + * + * @author admin + */ +public class GenUtils +{ + /** + * 鍒濆鍖栬〃淇℃伅 + */ + public static void initTable(GenTable genTable, String operName) + { + genTable.setClassName(convertClassName(genTable.getTableName())); + genTable.setPackageName(GenConfig.getPackageName()); + genTable.setModuleName(getModuleName(GenConfig.getPackageName())); + genTable.setBusinessName(getBusinessName(genTable.getTableName())); + genTable.setFunctionName(replaceText(genTable.getTableComment())); + genTable.setFunctionAuthor(GenConfig.getAuthor()); + genTable.setCreateBy(operName); + } + + /** + * 鍒濆鍖栧垪灞炴�у瓧娈� + */ + public static void initColumnField(GenTableColumn column, GenTable table) + { + String dataType = getDbType(column.getColumnType()); + String columnName = column.getColumnName(); + column.setTableId(table.getTableId()); + column.setCreateBy(table.getCreateBy()); + // 璁剧疆java瀛楁鍚� + column.setJavaField(StringUtils.toCamelCase(columnName)); + // 璁剧疆榛樿绫诲瀷 + column.setJavaType(GenConstants.TYPE_STRING); + column.setQueryType(GenConstants.QUERY_EQ); + + if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType)) + { + // 瀛楃涓查暱搴﹁秴杩�500璁剧疆涓烘枃鏈煙 + Integer columnLength = getColumnLength(column.getColumnType()); + String htmlType = columnLength >= 500 || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType) ? GenConstants.HTML_TEXTAREA : GenConstants.HTML_INPUT; + column.setHtmlType(htmlType); + } + else if (arraysContains(GenConstants.COLUMNTYPE_TIME, dataType)) + { + column.setJavaType(GenConstants.TYPE_DATE); + column.setHtmlType(GenConstants.HTML_DATETIME); + } + else if (arraysContains(GenConstants.COLUMNTYPE_NUMBER, dataType)) + { + column.setHtmlType(GenConstants.HTML_INPUT); + + // 濡傛灉鏄诞鐐瑰瀷 缁熶竴鐢˙igDecimal + String[] str = StringUtils.split(StringUtils.substringBetween(column.getColumnType(), "(", ")"), ","); + if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0) + { + column.setJavaType(GenConstants.TYPE_BIGDECIMAL); + } + // 濡傛灉鏄暣褰� + else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10) + { + column.setJavaType(GenConstants.TYPE_INTEGER); + } + // 闀挎暣褰� + else + { + column.setJavaType(GenConstants.TYPE_LONG); + } + } + + // 鎻掑叆瀛楁锛堥粯璁ゆ墍鏈夊瓧娈甸兘闇�瑕佹彃鍏ワ級 + column.setIsInsert(GenConstants.REQUIRE); + + // 缂栬緫瀛楁 + if (!arraysContains(GenConstants.COLUMNNAME_NOT_EDIT, columnName) && !column.isPk()) + { + column.setIsEdit(GenConstants.REQUIRE); + } + // 鍒楄〃瀛楁 + if (!arraysContains(GenConstants.COLUMNNAME_NOT_LIST, columnName) && !column.isPk()) + { + column.setIsList(GenConstants.REQUIRE); + } + // 鏌ヨ瀛楁 + if (!arraysContains(GenConstants.COLUMNNAME_NOT_QUERY, columnName) && !column.isPk()) + { + column.setIsQuery(GenConstants.REQUIRE); + } + + // 鏌ヨ瀛楁绫诲瀷 + if (StringUtils.endsWithIgnoreCase(columnName, "name")) + { + column.setQueryType(GenConstants.QUERY_LIKE); + } + // 鐘舵�佸瓧娈佃缃崟閫夋 + if (StringUtils.endsWithIgnoreCase(columnName, "status")) + { + column.setHtmlType(GenConstants.HTML_RADIO); + } + // 绫诲瀷&鎬у埆瀛楁璁剧疆涓嬫媺妗� + else if (StringUtils.endsWithIgnoreCase(columnName, "type") + || StringUtils.endsWithIgnoreCase(columnName, "sex")) + { + column.setHtmlType(GenConstants.HTML_SELECT); + } + // 鍥剧墖瀛楁璁剧疆鍥剧墖涓婁紶鎺т欢 + else if (StringUtils.endsWithIgnoreCase(columnName, "image")) + { + column.setHtmlType(GenConstants.HTML_IMAGE_UPLOAD); + } + // 鏂囦欢瀛楁璁剧疆鏂囦欢涓婁紶鎺т欢 + else if (StringUtils.endsWithIgnoreCase(columnName, "file")) + { + column.setHtmlType(GenConstants.HTML_FILE_UPLOAD); + } + // 鍐呭瀛楁璁剧疆瀵屾枃鏈帶浠� + else if (StringUtils.endsWithIgnoreCase(columnName, "content")) + { + column.setHtmlType(GenConstants.HTML_EDITOR); + } + } + + /** + * 鏍¢獙鏁扮粍鏄惁鍖呭惈鎸囧畾鍊� + * + * @param arr 鏁扮粍 + * @param targetValue 鍊� + * @return 鏄惁鍖呭惈 + */ + public static boolean arraysContains(String[] arr, String targetValue) + { + return Arrays.asList(arr).contains(targetValue); + } + + /** + * 鑾峰彇妯″潡鍚� + * + * @param packageName 鍖呭悕 + * @return 妯″潡鍚� + */ + public static String getModuleName(String packageName) + { + int lastIndex = packageName.lastIndexOf("."); + int nameLength = packageName.length(); + return StringUtils.substring(packageName, lastIndex + 1, nameLength); + } + + /** + * 鑾峰彇涓氬姟鍚� + * + * @param tableName 琛ㄥ悕 + * @return 涓氬姟鍚� + */ + public static String getBusinessName(String tableName) + { + int lastIndex = tableName.lastIndexOf("_"); + int nameLength = tableName.length(); + return StringUtils.substring(tableName, lastIndex + 1, nameLength); + } + + /** + * 琛ㄥ悕杞崲鎴怞ava绫诲悕 + * + * @param tableName 琛ㄥ悕绉� + * @return 绫诲悕 + */ + public static String convertClassName(String tableName) + { + boolean autoRemovePre = GenConfig.getAutoRemovePre(); + String tablePrefix = GenConfig.getTablePrefix(); + if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix)) + { + String[] searchList = StringUtils.split(tablePrefix, ","); + tableName = replaceFirst(tableName, searchList); + } + return StringUtils.convertToCamelCase(tableName); + } + + /** + * 鎵归噺鏇挎崲鍓嶇紑 + * + * @param replacementm 鏇挎崲鍊� + * @param searchList 鏇挎崲鍒楄〃 + * @return + */ + public static String replaceFirst(String replacementm, String[] searchList) + { + String text = replacementm; + for (String searchString : searchList) + { + if (replacementm.startsWith(searchString)) + { + text = replacementm.replaceFirst(searchString, ""); + break; + } + } + return text; + } + + /** + * 鍏抽敭瀛楁浛鎹� + * + * @param text 闇�瑕佽鏇挎崲鐨勫悕瀛� + * @return 鏇挎崲鍚庣殑鍚嶅瓧 + */ + public static String replaceText(String text) + { + return RegExUtils.replaceAll(text, "(?:琛▅鑻ヤ緷)", ""); + } + + /** + * 鑾峰彇鏁版嵁搴撶被鍨嬪瓧娈� + * + * @param columnType 鍒楃被鍨� + * @return 鎴彇鍚庣殑鍒楃被鍨� + */ + public static String getDbType(String columnType) + { + if (StringUtils.indexOf(columnType, "(") > 0) + { + return StringUtils.substringBefore(columnType, "("); + } + else + { + return columnType; + } + } + + /** + * 鑾峰彇瀛楁闀垮害 + * + * @param columnType 鍒楃被鍨� + * @return 鎴彇鍚庣殑鍒楃被鍨� + */ + public static Integer getColumnLength(String columnType) + { + if (StringUtils.indexOf(columnType, "(") > 0) + { + String length = StringUtils.substringBetween(columnType, "(", ")"); + return Integer.valueOf(length); + } + else + { + return 0; + } + } +} diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/util/VelocityInitializer.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/util/VelocityInitializer.java new file mode 100644 index 0000000..5301486 --- /dev/null +++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/util/VelocityInitializer.java @@ -0,0 +1,34 @@ +package com.se.gen.util; + +import java.util.Properties; +import org.apache.velocity.app.Velocity; +import com.se.common.core.constant.Constants; + +/** + * VelocityEngine宸ュ巶 + * + * @author admin + */ +public class VelocityInitializer +{ + /** + * 鍒濆鍖杤m鏂规硶 + */ + public static void initVelocity() + { + Properties p = new Properties(); + try + { + // 鍔犺浇classpath鐩綍涓嬬殑vm鏂囦欢 + p.setProperty("resource.loader.file.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); + // 瀹氫箟瀛楃闆� + p.setProperty(Velocity.INPUT_ENCODING, Constants.UTF8); + // 鍒濆鍖朧elocity寮曟搸锛屾寚瀹氶厤缃甈roperties + Velocity.init(p); + } + catch (Exception e) + { + throw new RuntimeException(e); + } + } +} diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/util/VelocityUtils.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/util/VelocityUtils.java new file mode 100644 index 0000000..f9de77c --- /dev/null +++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/util/VelocityUtils.java @@ -0,0 +1,409 @@ +package com.se.gen.util; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import com.se.gen.domain.GenTableColumn; +import org.apache.velocity.VelocityContext; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.se.common.core.constant.GenConstants; +import com.se.common.core.utils.DateUtils; +import com.se.common.core.utils.StringUtils; +import com.se.gen.domain.GenTable; + +/** + * 妯℃澘宸ュ叿绫� + * + * @author admin + */ +public class VelocityUtils +{ + /** 椤圭洰绌洪棿璺緞 */ + private static final String PROJECT_PATH = "main/java"; + + /** mybatis绌洪棿璺緞 */ + private static final String MYBATIS_PATH = "main/resources/mapper"; + + /** 榛樿涓婄骇鑿滃崟锛岀郴缁熷伐鍏� */ + private static final String DEFAULT_PARENT_MENU_ID = "3"; + + /** + * 璁剧疆妯℃澘鍙橀噺淇℃伅 + * + * @return 妯℃澘鍒楄〃 + */ + public static VelocityContext prepareContext(GenTable genTable) + { + String moduleName = genTable.getModuleName(); + String businessName = genTable.getBusinessName(); + String packageName = genTable.getPackageName(); + String tplCategory = genTable.getTplCategory(); + String functionName = genTable.getFunctionName(); + + VelocityContext velocityContext = new VelocityContext(); + velocityContext.put("tplCategory", genTable.getTplCategory()); + velocityContext.put("tableName", genTable.getTableName()); + velocityContext.put("functionName", StringUtils.isNotEmpty(functionName) ? functionName : "銆愯濉啓鍔熻兘鍚嶇О銆�"); + velocityContext.put("ClassName", genTable.getClassName()); + velocityContext.put("className", StringUtils.uncapitalize(genTable.getClassName())); + velocityContext.put("moduleName", genTable.getModuleName()); + velocityContext.put("BusinessName", StringUtils.capitalize(genTable.getBusinessName())); + velocityContext.put("businessName", genTable.getBusinessName()); + velocityContext.put("basePackage", getPackagePrefix(packageName)); + velocityContext.put("packageName", packageName); + velocityContext.put("author", genTable.getFunctionAuthor()); + velocityContext.put("datetime", DateUtils.getDate()); + velocityContext.put("pkColumn", genTable.getPkColumn()); + velocityContext.put("importList", getImportList(genTable)); + velocityContext.put("permissionPrefix", getPermissionPrefix(moduleName, businessName)); + velocityContext.put("columns", genTable.getColumns()); + velocityContext.put("table", genTable); + velocityContext.put("dicts", getDicts(genTable)); + setMenuVelocityContext(velocityContext, genTable); + if (GenConstants.TPL_TREE.equals(tplCategory)) + { + setTreeVelocityContext(velocityContext, genTable); + } + if (GenConstants.TPL_SUB.equals(tplCategory)) + { + setSubVelocityContext(velocityContext, genTable); + } + return velocityContext; + } + + public static void setMenuVelocityContext(VelocityContext context, GenTable genTable) + { + String options = genTable.getOptions(); + JSONObject paramsObj = JSON.parseObject(options); + String parentMenuId = getParentMenuId(paramsObj); + context.put("parentMenuId", parentMenuId); + } + + public static void setTreeVelocityContext(VelocityContext context, GenTable genTable) + { + String options = genTable.getOptions(); + JSONObject paramsObj = JSON.parseObject(options); + String treeCode = getTreecode(paramsObj); + String treeParentCode = getTreeParentCode(paramsObj); + String treeName = getTreeName(paramsObj); + + context.put("treeCode", treeCode); + context.put("treeParentCode", treeParentCode); + context.put("treeName", treeName); + context.put("expandColumn", getExpandColumn(genTable)); + if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) + { + context.put("tree_parent_code", paramsObj.getString(GenConstants.TREE_PARENT_CODE)); + } + if (paramsObj.containsKey(GenConstants.TREE_NAME)) + { + context.put("tree_name", paramsObj.getString(GenConstants.TREE_NAME)); + } + } + + public static void setSubVelocityContext(VelocityContext context, GenTable genTable) + { + GenTable subTable = genTable.getSubTable(); + String subTableName = genTable.getSubTableName(); + String subTableFkName = genTable.getSubTableFkName(); + String subClassName = genTable.getSubTable().getClassName(); + String subTableFkClassName = StringUtils.convertToCamelCase(subTableFkName); + + context.put("subTable", subTable); + context.put("subTableName", subTableName); + context.put("subTableFkName", subTableFkName); + context.put("subTableFkClassName", subTableFkClassName); + context.put("subTableFkclassName", StringUtils.uncapitalize(subTableFkClassName)); + context.put("subClassName", subClassName); + context.put("subclassName", StringUtils.uncapitalize(subClassName)); + context.put("subImportList", getImportList(genTable.getSubTable())); + } + + /** + * 鑾峰彇妯℃澘淇℃伅 + * @param tplCategory 鐢熸垚鐨勬ā鏉� + * @param tplWebType 鍓嶇绫诲瀷 + * @return 妯℃澘鍒楄〃 + */ + public static List<String> getTemplateList(String tplCategory, String tplWebType) + { + String useWebType = "vm/vue"; + if ("element-plus".equals(tplWebType)) + { + useWebType = "vm/vue/v3"; + } + List<String> templates = new ArrayList<String>(); + templates.add("vm/java/domain.java.vm"); + templates.add("vm/java/mapper.java.vm"); + templates.add("vm/java/service.java.vm"); + templates.add("vm/java/serviceImpl.java.vm"); + templates.add("vm/java/controller.java.vm"); + templates.add("vm/xml/mapper.xml.vm"); + templates.add("vm/sql/sql.vm"); + templates.add("vm/js/api.js.vm"); + if (GenConstants.TPL_CRUD.equals(tplCategory)) + { + templates.add(useWebType + "/index.vue.vm"); + } + else if (GenConstants.TPL_TREE.equals(tplCategory)) + { + templates.add(useWebType + "/index-tree.vue.vm"); + } + else if (GenConstants.TPL_SUB.equals(tplCategory)) + { + templates.add(useWebType + "/index.vue.vm"); + templates.add("vm/java/sub-domain.java.vm"); + } + return templates; + } + + /** + * 鑾峰彇鏂囦欢鍚� + */ + public static String getFileName(String template, GenTable genTable) + { + // 鏂囦欢鍚嶇О + String fileName = ""; + // 鍖呰矾寰� + String packageName = genTable.getPackageName(); + // 妯″潡鍚� + String moduleName = genTable.getModuleName(); + // 澶у啓绫诲悕 + String className = genTable.getClassName(); + // 涓氬姟鍚嶇О + String businessName = genTable.getBusinessName(); + + String javaPath = PROJECT_PATH + "/" + StringUtils.replace(packageName, ".", "/"); + String mybatisPath = MYBATIS_PATH + "/" + moduleName; + String vuePath = "vue"; + + if (template.contains("domain.java.vm")) + { + fileName = StringUtils.format("{}/domain/{}.java", javaPath, className); + } + if (template.contains("sub-domain.java.vm") && StringUtils.equals(GenConstants.TPL_SUB, genTable.getTplCategory())) + { + fileName = StringUtils.format("{}/domain/{}.java", javaPath, genTable.getSubTable().getClassName()); + } + else if (template.contains("mapper.java.vm")) + { + fileName = StringUtils.format("{}/mapper/{}Mapper.java", javaPath, className); + } + else if (template.contains("service.java.vm")) + { + fileName = StringUtils.format("{}/service/I{}Service.java", javaPath, className); + } + else if (template.contains("serviceImpl.java.vm")) + { + fileName = StringUtils.format("{}/service/impl/{}ServiceImpl.java", javaPath, className); + } + else if (template.contains("controller.java.vm")) + { + fileName = StringUtils.format("{}/controller/{}Controller.java", javaPath, className); + } + else if (template.contains("mapper.xml.vm")) + { + fileName = StringUtils.format("{}/{}Mapper.xml", mybatisPath, className); + } + else if (template.contains("sql.vm")) + { + fileName = businessName + "Menu.sql"; + } + else if (template.contains("api.js.vm")) + { + fileName = StringUtils.format("{}/api/{}/{}.js", vuePath, moduleName, businessName); + } + else if (template.contains("index.vue.vm")) + { + fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); + } + else if (template.contains("index-tree.vue.vm")) + { + fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); + } + return fileName; + } + + /** + * 鑾峰彇鍖呭墠缂� + * + * @param packageName 鍖呭悕绉� + * @return 鍖呭墠缂�鍚嶇О + */ + public static String getPackagePrefix(String packageName) + { + int lastIndex = packageName.lastIndexOf("."); + return StringUtils.substring(packageName, 0, lastIndex); + } + + /** + * 鏍规嵁鍒楃被鍨嬭幏鍙栧鍏ュ寘 + * + * @param genTable 涓氬姟琛ㄥ璞� + * @return 杩斿洖闇�瑕佸鍏ョ殑鍖呭垪琛� + */ + public static HashSet<String> getImportList(GenTable genTable) + { + List<GenTableColumn> columns = genTable.getColumns(); + GenTable subGenTable = genTable.getSubTable(); + HashSet<String> importList = new HashSet<String>(); + if (StringUtils.isNotNull(subGenTable)) + { + importList.add("java.util.List"); + } + for (GenTableColumn column : columns) + { + if (!column.isSuperColumn() && GenConstants.TYPE_DATE.equals(column.getJavaType())) + { + importList.add("java.util.Date"); + importList.add("com.fasterxml.jackson.annotation.JsonFormat"); + } + else if (!column.isSuperColumn() && GenConstants.TYPE_BIGDECIMAL.equals(column.getJavaType())) + { + importList.add("java.math.BigDecimal"); + } + } + return importList; + } + + /** + * 鏍规嵁鍒楃被鍨嬭幏鍙栧瓧鍏哥粍 + * + * @param genTable 涓氬姟琛ㄥ璞� + * @return 杩斿洖瀛楀吀缁� + */ + public static String getDicts(GenTable genTable) + { + List<GenTableColumn> columns = genTable.getColumns(); + Set<String> dicts = new HashSet<String>(); + addDicts(dicts, columns); + if (StringUtils.isNotNull(genTable.getSubTable())) + { + List<GenTableColumn> subColumns = genTable.getSubTable().getColumns(); + addDicts(dicts, subColumns); + } + return StringUtils.join(dicts, ", "); + } + + /** + * 娣诲姞瀛楀吀鍒楄〃 + * + * @param dicts 瀛楀吀鍒楄〃 + * @param columns 鍒楅泦鍚� + */ + public static void addDicts(Set<String> dicts, List<GenTableColumn> columns) + { + 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 })) + { + dicts.add("'" + column.getDictType() + "'"); + } + } + } + + /** + * 鑾峰彇鏉冮檺鍓嶇紑 + * + * @param moduleName 妯″潡鍚嶇О + * @param businessName 涓氬姟鍚嶇О + * @return 杩斿洖鏉冮檺鍓嶇紑 + */ + public static String getPermissionPrefix(String moduleName, String businessName) + { + return StringUtils.format("{}:{}", moduleName, businessName); + } + + /** + * 鑾峰彇涓婄骇鑿滃崟ID瀛楁 + * + * @param paramsObj 鐢熸垚鍏朵粬閫夐」 + * @return 涓婄骇鑿滃崟ID瀛楁 + */ + public static String getParentMenuId(JSONObject paramsObj) + { + if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.PARENT_MENU_ID) + && StringUtils.isNotEmpty(paramsObj.getString(GenConstants.PARENT_MENU_ID))) + { + return paramsObj.getString(GenConstants.PARENT_MENU_ID); + } + return DEFAULT_PARENT_MENU_ID; + } + + /** + * 鑾峰彇鏍戠紪鐮� + * + * @param paramsObj 鐢熸垚鍏朵粬閫夐」 + * @return 鏍戠紪鐮� + */ + public static String getTreecode(JSONObject paramsObj) + { + if (paramsObj.containsKey(GenConstants.TREE_CODE)) + { + return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_CODE)); + } + return StringUtils.EMPTY; + } + + /** + * 鑾峰彇鏍戠埗缂栫爜 + * + * @param paramsObj 鐢熸垚鍏朵粬閫夐」 + * @return 鏍戠埗缂栫爜 + */ + public static String getTreeParentCode(JSONObject paramsObj) + { + if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) + { + return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_PARENT_CODE)); + } + return StringUtils.EMPTY; + } + + /** + * 鑾峰彇鏍戝悕绉� + * + * @param paramsObj 鐢熸垚鍏朵粬閫夐」 + * @return 鏍戝悕绉� + */ + public static String getTreeName(JSONObject paramsObj) + { + if (paramsObj.containsKey(GenConstants.TREE_NAME)) + { + return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_NAME)); + } + return StringUtils.EMPTY; + } + + /** + * 鑾峰彇闇�瑕佸湪鍝竴鍒椾笂闈㈡樉绀哄睍寮�鎸夐挳 + * + * @param genTable 涓氬姟琛ㄥ璞� + * @return 灞曞紑鎸夐挳鍒楀簭鍙� + */ + public static int getExpandColumn(GenTable genTable) + { + String options = genTable.getOptions(); + JSONObject paramsObj = JSON.parseObject(options); + String treeName = paramsObj.getString(GenConstants.TREE_NAME); + int num = 0; + for (GenTableColumn column : genTable.getColumns()) + { + if (column.isList()) + { + num++; + String columnName = column.getColumnName(); + if (columnName.equals(treeName)) + { + break; + } + } + } + return num; + } +} diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/banner.txt b/ruoyi-modules/se-gen/src/main/resources/banner.txt similarity index 100% rename from ruoyi-modules/ruoyi-gen/src/main/resources/banner.txt rename to ruoyi-modules/se-gen/src/main/resources/banner.txt diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml b/ruoyi-modules/se-gen/src/main/resources/bootstrap.yml similarity index 100% rename from ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml rename to ruoyi-modules/se-gen/src/main/resources/bootstrap.yml diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/logback.xml b/ruoyi-modules/se-gen/src/main/resources/logback.xml similarity index 100% rename from ruoyi-modules/ruoyi-gen/src/main/resources/logback.xml rename to ruoyi-modules/se-gen/src/main/resources/logback.xml diff --git a/ruoyi-modules/se-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml b/ruoyi-modules/se-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml new file mode 100644 index 0000000..57726e8 --- /dev/null +++ b/ruoyi-modules/se-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml @@ -0,0 +1,127 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper +PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.se.gen.mapper.GenTableColumnMapper"> + + <resultMap type="GenTableColumn" id="GenTableColumnResult"> + <id property="columnId" column="column_id" /> + <result property="tableId" column="table_id" /> + <result property="columnName" column="column_name" /> + <result property="columnComment" column="column_comment" /> + <result property="columnType" column="column_type" /> + <result property="javaType" column="java_type" /> + <result property="javaField" column="java_field" /> + <result property="isPk" column="is_pk" /> + <result property="isIncrement" column="is_increment" /> + <result property="isRequired" column="is_required" /> + <result property="isInsert" column="is_insert" /> + <result property="isEdit" column="is_edit" /> + <result property="isList" column="is_list" /> + <result property="isQuery" column="is_query" /> + <result property="queryType" column="query_type" /> + <result property="htmlType" column="html_type" /> + <result property="dictType" column="dict_type" /> + <result property="sort" column="sort" /> + <result property="createBy" column="create_by" /> + <result property="createTime" column="create_time" /> + <result property="updateBy" column="update_by" /> + <result property="updateTime" column="update_time" /> + </resultMap> + + <sql id="selectGenTableColumnVo"> + select column_id, table_id, column_name, column_comment, column_type, java_type, java_field, is_pk, is_increment, is_required, is_insert, is_edit, is_list, is_query, query_type, html_type, dict_type, sort, create_by, create_time, update_by, update_time from gen_table_column + </sql> + + <select id="selectGenTableColumnListByTableId" parameterType="GenTableColumn" resultMap="GenTableColumnResult"> + <include refid="selectGenTableColumnVo"/> + where table_id = #{tableId} + order by sort + </select> + + <select id="selectDbTableColumnsByName" parameterType="String" resultMap="GenTableColumnResult"> + select column_name, (case when (is_nullable = 'no' <![CDATA[ && ]]> column_key != 'PRI') then '1' else null end) as is_required, (case when column_key = 'PRI' then '1' else '0' end) as is_pk, ordinal_position as sort, column_comment, (case when extra = 'auto_increment' then '1' else '0' end) as is_increment, column_type + from information_schema.columns where table_schema = (select database()) and table_name = (#{tableName}) + order by ordinal_position + </select> + + <insert id="insertGenTableColumn" parameterType="GenTableColumn" useGeneratedKeys="true" keyProperty="columnId"> + insert into gen_table_column ( + <if test="tableId != null and tableId != ''">table_id,</if> + <if test="columnName != null and columnName != ''">column_name,</if> + <if test="columnComment != null and columnComment != ''">column_comment,</if> + <if test="columnType != null and columnType != ''">column_type,</if> + <if test="javaType != null and javaType != ''">java_type,</if> + <if test="javaField != null and javaField != ''">java_field,</if> + <if test="isPk != null and isPk != ''">is_pk,</if> + <if test="isIncrement != null and isIncrement != ''">is_increment,</if> + <if test="isRequired != null and isRequired != ''">is_required,</if> + <if test="isInsert != null and isInsert != ''">is_insert,</if> + <if test="isEdit != null and isEdit != ''">is_edit,</if> + <if test="isList != null and isList != ''">is_list,</if> + <if test="isQuery != null and isQuery != ''">is_query,</if> + <if test="queryType != null and queryType != ''">query_type,</if> + <if test="htmlType != null and htmlType != ''">html_type,</if> + <if test="dictType != null and dictType != ''">dict_type,</if> + <if test="sort != null">sort,</if> + <if test="createBy != null and createBy != ''">create_by,</if> + create_time + )values( + <if test="tableId != null and tableId != ''">#{tableId},</if> + <if test="columnName != null and columnName != ''">#{columnName},</if> + <if test="columnComment != null and columnComment != ''">#{columnComment},</if> + <if test="columnType != null and columnType != ''">#{columnType},</if> + <if test="javaType != null and javaType != ''">#{javaType},</if> + <if test="javaField != null and javaField != ''">#{javaField},</if> + <if test="isPk != null and isPk != ''">#{isPk},</if> + <if test="isIncrement != null and isIncrement != ''">#{isIncrement},</if> + <if test="isRequired != null and isRequired != ''">#{isRequired},</if> + <if test="isInsert != null and isInsert != ''">#{isInsert},</if> + <if test="isEdit != null and isEdit != ''">#{isEdit},</if> + <if test="isList != null and isList != ''">#{isList},</if> + <if test="isQuery != null and isQuery != ''">#{isQuery},</if> + <if test="queryType != null and queryType != ''">#{queryType},</if> + <if test="htmlType != null and htmlType != ''">#{htmlType},</if> + <if test="dictType != null and dictType != ''">#{dictType},</if> + <if test="sort != null">#{sort},</if> + <if test="createBy != null and createBy != ''">#{createBy},</if> + sysdate() + ) + </insert> + + <update id="updateGenTableColumn" parameterType="GenTableColumn"> + update gen_table_column + <set> + <if test="columnComment != null">column_comment = #{columnComment},</if> + <if test="javaType != null">java_type = #{javaType},</if> + <if test="javaField != null">java_field = #{javaField},</if> + <if test="isInsert != null">is_insert = #{isInsert},</if> + <if test="isEdit != null">is_edit = #{isEdit},</if> + <if test="isList != null">is_list = #{isList},</if> + <if test="isQuery != null">is_query = #{isQuery},</if> + <if test="isRequired != null">is_required = #{isRequired},</if> + <if test="queryType != null">query_type = #{queryType},</if> + <if test="htmlType != null">html_type = #{htmlType},</if> + <if test="dictType != null">dict_type = #{dictType},</if> + <if test="sort != null">sort = #{sort},</if> + <if test="updateBy != null">update_by = #{updateBy},</if> + update_time = sysdate() + </set> + where column_id = #{columnId} + </update> + + <delete id="deleteGenTableColumnByIds" parameterType="Long"> + delete from gen_table_column where table_id in + <foreach collection="array" item="tableId" open="(" separator="," close=")"> + #{tableId} + </foreach> + </delete> + + <delete id="deleteGenTableColumns"> + delete from gen_table_column where column_id in + <foreach collection="list" item="item" open="(" separator="," close=")"> + #{item.columnId} + </foreach> + </delete> + +</mapper> \ No newline at end of file diff --git a/ruoyi-modules/se-gen/src/main/resources/mapper/generator/GenTableMapper.xml b/ruoyi-modules/se-gen/src/main/resources/mapper/generator/GenTableMapper.xml new file mode 100644 index 0000000..074d782 --- /dev/null +++ b/ruoyi-modules/se-gen/src/main/resources/mapper/generator/GenTableMapper.xml @@ -0,0 +1,206 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper +PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.se.gen.mapper.GenTableMapper"> + + <resultMap type="GenTable" id="GenTableResult"> + <id property="tableId" column="table_id" /> + <result property="tableName" column="table_name" /> + <result property="tableComment" column="table_comment" /> + <result property="subTableName" column="sub_table_name" /> + <result property="subTableFkName" column="sub_table_fk_name" /> + <result property="className" column="class_name" /> + <result property="tplCategory" column="tpl_category" /> + <result property="tplWebType" column="tpl_web_type" /> + <result property="packageName" column="package_name" /> + <result property="moduleName" column="module_name" /> + <result property="businessName" column="business_name" /> + <result property="functionName" column="function_name" /> + <result property="functionAuthor" column="function_author" /> + <result property="genType" column="gen_type" /> + <result property="genPath" column="gen_path" /> + <result property="options" column="options" /> + <result property="createBy" column="create_by" /> + <result property="createTime" column="create_time" /> + <result property="updateBy" column="update_by" /> + <result property="updateTime" column="update_time" /> + <result property="remark" column="remark" /> + <collection property="columns" javaType="java.util.List" resultMap="GenTableColumnResult" /> + </resultMap> + + <resultMap type="GenTableColumn" id="GenTableColumnResult"> + <id property="columnId" column="column_id" /> + <result property="tableId" column="table_id" /> + <result property="columnName" column="column_name" /> + <result property="columnComment" column="column_comment" /> + <result property="columnType" column="column_type" /> + <result property="javaType" column="java_type" /> + <result property="javaField" column="java_field" /> + <result property="isPk" column="is_pk" /> + <result property="isIncrement" column="is_increment" /> + <result property="isRequired" column="is_required" /> + <result property="isInsert" column="is_insert" /> + <result property="isEdit" column="is_edit" /> + <result property="isList" column="is_list" /> + <result property="isQuery" column="is_query" /> + <result property="queryType" column="query_type" /> + <result property="htmlType" column="html_type" /> + <result property="dictType" column="dict_type" /> + <result property="sort" column="sort" /> + <result property="createBy" column="create_by" /> + <result property="createTime" column="create_time" /> + <result property="updateBy" column="update_by" /> + <result property="updateTime" column="update_time" /> + </resultMap> + + <sql id="selectGenTableVo"> + select table_id, table_name, table_comment, sub_table_name, sub_table_fk_name, class_name, tpl_category, tpl_web_type, package_name, module_name, business_name, function_name, function_author, gen_type, gen_path, options, create_by, create_time, update_by, update_time, remark from gen_table + </sql> + + <select id="selectGenTableList" parameterType="GenTable" resultMap="GenTableResult"> + <include refid="selectGenTableVo"/> + <where> + <if test="tableName != null and tableName != ''"> + AND lower(table_name) like lower(concat('%', #{tableName}, '%')) + </if> + <if test="tableComment != null and tableComment != ''"> + AND lower(table_comment) like lower(concat('%', #{tableComment}, '%')) + </if> + <if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� --> + AND date_format(create_time,'%Y%m%d') >= date_format(#{params.beginTime},'%Y%m%d') + </if> + <if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� --> + AND date_format(create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d') + </if> + </where> + </select> + + <select id="selectDbTableList" parameterType="GenTable" resultMap="GenTableResult"> + select table_name, table_comment, create_time, update_time from information_schema.tables + where table_schema = (select database()) + AND table_name NOT LIKE 'qrtz\_%' AND table_name NOT LIKE 'gen\_%' + AND table_name NOT IN (select table_name from gen_table) + <if test="tableName != null and tableName != ''"> + AND lower(table_name) like lower(concat('%', #{tableName}, '%')) + </if> + <if test="tableComment != null and tableComment != ''"> + AND lower(table_comment) like lower(concat('%', #{tableComment}, '%')) + </if> + <if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� --> + AND date_format(create_time,'%Y%m%d') >= date_format(#{params.beginTime},'%Y%m%d') + </if> + <if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� --> + AND date_format(create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d') + </if> + order by create_time desc + </select> + + <select id="selectDbTableListByNames" resultMap="GenTableResult"> + select table_name, table_comment, create_time, update_time from information_schema.tables + where table_name NOT LIKE 'qrtz\_%' and table_name NOT LIKE 'gen\_%' and table_schema = (select database()) + and table_name in + <foreach collection="array" item="name" open="(" separator="," close=")"> + #{name} + </foreach> + </select> + + <select id="selectTableByName" parameterType="String" resultMap="GenTableResult"> + select table_name, table_comment, create_time, update_time from information_schema.tables + where table_comment <![CDATA[ <> ]]> '' and table_schema = (select database()) + and table_name = #{tableName} + </select> + + <select id="selectGenTableById" parameterType="Long" resultMap="GenTableResult"> + SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.tpl_web_type, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark, + c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort + FROM gen_table t + LEFT JOIN gen_table_column c ON t.table_id = c.table_id + where t.table_id = #{tableId} order by c.sort + </select> + + <select id="selectGenTableByName" parameterType="String" resultMap="GenTableResult"> + SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.tpl_web_type, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark, + c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort + FROM gen_table t + LEFT JOIN gen_table_column c ON t.table_id = c.table_id + where t.table_name = #{tableName} order by c.sort + </select> + + <select id="selectGenTableAll" parameterType="String" resultMap="GenTableResult"> + SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.tpl_web_type, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.options, t.remark, + c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort + FROM gen_table t + LEFT JOIN gen_table_column c ON t.table_id = c.table_id + order by c.sort + </select> + + <insert id="insertGenTable" parameterType="GenTable" useGeneratedKeys="true" keyProperty="tableId"> + insert into gen_table ( + <if test="tableName != null">table_name,</if> + <if test="tableComment != null and tableComment != ''">table_comment,</if> + <if test="className != null and className != ''">class_name,</if> + <if test="tplCategory != null and tplCategory != ''">tpl_category,</if> + <if test="tplWebType != null and tplWebType != ''">tpl_web_type,</if> + <if test="packageName != null and packageName != ''">package_name,</if> + <if test="moduleName != null and moduleName != ''">module_name,</if> + <if test="businessName != null and businessName != ''">business_name,</if> + <if test="functionName != null and functionName != ''">function_name,</if> + <if test="functionAuthor != null and functionAuthor != ''">function_author,</if> + <if test="genType != null and genType != ''">gen_type,</if> + <if test="genPath != null and genPath != ''">gen_path,</if> + <if test="remark != null and remark != ''">remark,</if> + <if test="createBy != null and createBy != ''">create_by,</if> + create_time + )values( + <if test="tableName != null">#{tableName},</if> + <if test="tableComment != null and tableComment != ''">#{tableComment},</if> + <if test="className != null and className != ''">#{className},</if> + <if test="tplCategory != null and tplCategory != ''">#{tplCategory},</if> + <if test="tplWebType != null and tplWebType != ''">#{tplWebType},</if> + <if test="packageName != null and packageName != ''">#{packageName},</if> + <if test="moduleName != null and moduleName != ''">#{moduleName},</if> + <if test="businessName != null and businessName != ''">#{businessName},</if> + <if test="functionName != null and functionName != ''">#{functionName},</if> + <if test="functionAuthor != null and functionAuthor != ''">#{functionAuthor},</if> + <if test="genType != null and genType != ''">#{genType},</if> + <if test="genPath != null and genPath != ''">#{genPath},</if> + <if test="remark != null and remark != ''">#{remark},</if> + <if test="createBy != null and createBy != ''">#{createBy},</if> + sysdate() + ) + </insert> + + <update id="updateGenTable" parameterType="GenTable"> + update gen_table + <set> + <if test="tableName != null">table_name = #{tableName},</if> + <if test="tableComment != null and tableComment != ''">table_comment = #{tableComment},</if> + <if test="subTableName != null">sub_table_name = #{subTableName},</if> + <if test="subTableFkName != null">sub_table_fk_name = #{subTableFkName},</if> + <if test="className != null and className != ''">class_name = #{className},</if> + <if test="functionAuthor != null and functionAuthor != ''">function_author = #{functionAuthor},</if> + <if test="genType != null and genType != ''">gen_type = #{genType},</if> + <if test="genPath != null and genPath != ''">gen_path = #{genPath},</if> + <if test="tplCategory != null and tplCategory != ''">tpl_category = #{tplCategory},</if> + <if test="tplWebType != null and tplWebType != ''">tpl_web_type = #{tplWebType},</if> + <if test="packageName != null and packageName != ''">package_name = #{packageName},</if> + <if test="moduleName != null and moduleName != ''">module_name = #{moduleName},</if> + <if test="businessName != null and businessName != ''">business_name = #{businessName},</if> + <if test="functionName != null and functionName != ''">function_name = #{functionName},</if> + <if test="options != null and options != ''">options = #{options},</if> + <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> + <if test="remark != null">remark = #{remark},</if> + update_time = sysdate() + </set> + where table_id = #{tableId} + </update> + + <delete id="deleteGenTableByIds" parameterType="Long"> + delete from gen_table where table_id in + <foreach collection="array" item="tableId" open="(" separator="," close=")"> + #{tableId} + </foreach> + </delete> + +</mapper> \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/controller.java.vm b/ruoyi-modules/se-gen/src/main/resources/vm/java/controller.java.vm similarity index 100% rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/controller.java.vm rename to ruoyi-modules/se-gen/src/main/resources/vm/java/controller.java.vm diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/domain.java.vm b/ruoyi-modules/se-gen/src/main/resources/vm/java/domain.java.vm similarity index 100% rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/domain.java.vm rename to ruoyi-modules/se-gen/src/main/resources/vm/java/domain.java.vm diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/mapper.java.vm b/ruoyi-modules/se-gen/src/main/resources/vm/java/mapper.java.vm similarity index 100% rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/mapper.java.vm rename to ruoyi-modules/se-gen/src/main/resources/vm/java/mapper.java.vm diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/service.java.vm b/ruoyi-modules/se-gen/src/main/resources/vm/java/service.java.vm similarity index 100% rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/service.java.vm rename to ruoyi-modules/se-gen/src/main/resources/vm/java/service.java.vm diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/serviceImpl.java.vm b/ruoyi-modules/se-gen/src/main/resources/vm/java/serviceImpl.java.vm similarity index 100% rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/serviceImpl.java.vm rename to ruoyi-modules/se-gen/src/main/resources/vm/java/serviceImpl.java.vm diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/sub-domain.java.vm b/ruoyi-modules/se-gen/src/main/resources/vm/java/sub-domain.java.vm similarity index 100% rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/sub-domain.java.vm rename to ruoyi-modules/se-gen/src/main/resources/vm/java/sub-domain.java.vm diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/js/api.js.vm b/ruoyi-modules/se-gen/src/main/resources/vm/js/api.js.vm similarity index 100% rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/js/api.js.vm rename to ruoyi-modules/se-gen/src/main/resources/vm/js/api.js.vm diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/sql/sql.vm b/ruoyi-modules/se-gen/src/main/resources/vm/sql/sql.vm similarity index 100% rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/sql/sql.vm rename to ruoyi-modules/se-gen/src/main/resources/vm/sql/sql.vm diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index-tree.vue.vm b/ruoyi-modules/se-gen/src/main/resources/vm/vue/index-tree.vue.vm similarity index 100% rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index-tree.vue.vm rename to ruoyi-modules/se-gen/src/main/resources/vm/vue/index-tree.vue.vm diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index.vue.vm b/ruoyi-modules/se-gen/src/main/resources/vm/vue/index.vue.vm similarity index 100% rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index.vue.vm rename to ruoyi-modules/se-gen/src/main/resources/vm/vue/index.vue.vm diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/v3/index-tree.vue.vm b/ruoyi-modules/se-gen/src/main/resources/vm/vue/v3/index-tree.vue.vm similarity index 100% rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/v3/index-tree.vue.vm rename to ruoyi-modules/se-gen/src/main/resources/vm/vue/v3/index-tree.vue.vm diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/v3/index.vue.vm b/ruoyi-modules/se-gen/src/main/resources/vm/vue/v3/index.vue.vm similarity index 100% rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/v3/index.vue.vm rename to ruoyi-modules/se-gen/src/main/resources/vm/vue/v3/index.vue.vm diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/xml/mapper.xml.vm b/ruoyi-modules/se-gen/src/main/resources/vm/xml/mapper.xml.vm similarity index 100% rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/xml/mapper.xml.vm rename to ruoyi-modules/se-gen/src/main/resources/vm/xml/mapper.xml.vm diff --git a/ruoyi-modules/ruoyi-job/pom.xml b/ruoyi-modules/se-job/pom.xml similarity index 100% rename from ruoyi-modules/ruoyi-job/pom.xml rename to ruoyi-modules/se-job/pom.xml diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/SeJobApplication.java b/ruoyi-modules/se-job/src/main/java/com/se/job/SeJobApplication.java new file mode 100644 index 0000000..43c8afc --- /dev/null +++ b/ruoyi-modules/se-job/src/main/java/com/se/job/SeJobApplication.java @@ -0,0 +1,34 @@ +package com.se.job; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import com.se.common.security.annotation.EnableCustomConfig; +import com.se.common.security.annotation.EnableRyFeignClients; +import com.se.common.swagger.annotation.EnableCustomSwagger2; + +/** + * 瀹氭椂浠诲姟 + * + * @author admin + */ +@EnableCustomConfig +@EnableCustomSwagger2 +@EnableRyFeignClients +@SpringBootApplication +public class SeJobApplication +{ + public static void main(String[] args) + { + SpringApplication.run(SeJobApplication.class, args); + System.out.println("(鈾モ棤鈥库棤)锞夛緸 瀹氭椂浠诲姟妯″潡鍚姩鎴愬姛 醿�(麓凇`醿�)锞� \n" + + " .-------. ____ __ \n" + + " | _ _ \\ \\ \\ / / \n" + + " | ( ' ) | \\ _. / ' \n" + + " |(_ o _) / _( )_ .' \n" + + " | (_,_).' __ ___(_ o _)' \n" + + " | |\\ \\ | || |(_,_)' \n" + + " | | \\ `' /| `-' / \n" + + " | | \\ / \\ / \n" + + " ''-' `'-' `-..-' "); + } +} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/config/ScheduleConfig.java b/ruoyi-modules/se-job/src/main/java/com/se/job/config/ScheduleConfig.java similarity index 100% rename from ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/config/ScheduleConfig.java rename to ruoyi-modules/se-job/src/main/java/com/se/job/config/ScheduleConfig.java diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/controller/SysJobController.java b/ruoyi-modules/se-job/src/main/java/com/se/job/controller/SysJobController.java new file mode 100644 index 0000000..0cddec9 --- /dev/null +++ b/ruoyi-modules/se-job/src/main/java/com/se/job/controller/SysJobController.java @@ -0,0 +1,187 @@ +package com.se.job.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.se.job.domain.SysJob; +import com.se.job.service.ISysJobService; +import com.se.job.util.ScheduleUtils; +import org.quartz.SchedulerException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.se.common.core.constant.Constants; +import com.se.common.core.exception.job.TaskException; +import com.se.common.core.utils.StringUtils; +import com.se.common.core.utils.poi.ExcelUtil; +import com.se.common.core.web.controller.BaseController; +import com.se.common.core.web.domain.AjaxResult; +import com.se.common.core.web.page.TableDataInfo; +import com.se.common.log.annotation.Log; +import com.se.common.log.enums.BusinessType; +import com.se.common.security.annotation.RequiresPermissions; +import com.se.common.security.utils.SecurityUtils; +import com.se.job.util.CronUtils; + +/** + * 璋冨害浠诲姟淇℃伅鎿嶄綔澶勭悊 + * + * @author admin + */ +@RestController +@RequestMapping("/job") +public class SysJobController extends BaseController +{ + @Autowired + private ISysJobService jobService; + + /** + * 鏌ヨ瀹氭椂浠诲姟鍒楄〃 + */ + @RequiresPermissions("monitor:job:list") + @GetMapping("/list") + public TableDataInfo list(SysJob sysJob) + { + startPage(); + List<SysJob> list = jobService.selectJobList(sysJob); + return getDataTable(list); + } + + /** + * 瀵煎嚭瀹氭椂浠诲姟鍒楄〃 + */ + @RequiresPermissions("monitor:job:export") + @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, SysJob sysJob) + { + List<SysJob> list = jobService.selectJobList(sysJob); + ExcelUtil<SysJob> util = new ExcelUtil<SysJob>(SysJob.class); + util.exportExcel(response, list, "瀹氭椂浠诲姟"); + } + + /** + * 鑾峰彇瀹氭椂浠诲姟璇︾粏淇℃伅 + */ + @RequiresPermissions("monitor:job:query") + @GetMapping(value = "/{jobId}") + public AjaxResult getInfo(@PathVariable("jobId") Long jobId) + { + return success(jobService.selectJobById(jobId)); + } + + /** + * 鏂板瀹氭椂浠诲姟 + */ + @RequiresPermissions("monitor:job:add") + @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody SysJob job) throws SchedulerException, TaskException + { + if (!CronUtils.isValid(job.getCronExpression())) + { + return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛孋ron琛ㄨ揪寮忎笉姝g‘"); + } + else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI)) + { + return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'rmi'璋冪敤"); + } + else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS })) + { + return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'ldap(s)'璋冪敤"); + } + else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.HTTP, Constants.HTTPS })) + { + return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'http(s)'璋冪敤"); + } + else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR)) + { + return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆瀛樺湪杩濊"); + } + else if (!ScheduleUtils.whiteList(job.getInvokeTarget())) + { + return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅湪鐧藉悕鍗曞唴"); + } + job.setCreateBy(SecurityUtils.getUsername()); + return toAjax(jobService.insertJob(job)); + } + + /** + * 淇敼瀹氭椂浠诲姟 + */ + @RequiresPermissions("monitor:job:edit") + @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody SysJob job) throws SchedulerException, TaskException + { + if (!CronUtils.isValid(job.getCronExpression())) + { + return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛孋ron琛ㄨ揪寮忎笉姝g‘"); + } + else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI)) + { + return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'rmi'璋冪敤"); + } + else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS })) + { + return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'ldap(s)'璋冪敤"); + } + else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.HTTP, Constants.HTTPS })) + { + return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'http(s)'璋冪敤"); + } + else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR)) + { + return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆瀛樺湪杩濊"); + } + else if (!ScheduleUtils.whiteList(job.getInvokeTarget())) + { + return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅湪鐧藉悕鍗曞唴"); + } + job.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(jobService.updateJob(job)); + } + + /** + * 瀹氭椂浠诲姟鐘舵�佷慨鏀� + */ + @RequiresPermissions("monitor:job:changeStatus") + @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.UPDATE) + @PutMapping("/changeStatus") + public AjaxResult changeStatus(@RequestBody SysJob job) throws SchedulerException + { + SysJob newJob = jobService.selectJobById(job.getJobId()); + newJob.setStatus(job.getStatus()); + return toAjax(jobService.changeStatus(newJob)); + } + + /** + * 瀹氭椂浠诲姟绔嬪嵆鎵ц涓�娆� + */ + @RequiresPermissions("monitor:job:changeStatus") + @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.UPDATE) + @PutMapping("/run") + public AjaxResult run(@RequestBody SysJob job) throws SchedulerException + { + boolean result = jobService.run(job); + return result ? success() : error("浠诲姟涓嶅瓨鍦ㄦ垨宸茶繃鏈燂紒"); + } + + /** + * 鍒犻櫎瀹氭椂浠诲姟 + */ + @RequiresPermissions("monitor:job:remove") + @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.DELETE) + @DeleteMapping("/{jobIds}") + public AjaxResult remove(@PathVariable Long[] jobIds) throws SchedulerException, TaskException + { + jobService.deleteJobByIds(jobIds); + return success(); + } +} diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/controller/SysJobLogController.java b/ruoyi-modules/se-job/src/main/java/com/se/job/controller/SysJobLogController.java new file mode 100644 index 0000000..3ba97de --- /dev/null +++ b/ruoyi-modules/se-job/src/main/java/com/se/job/controller/SysJobLogController.java @@ -0,0 +1,92 @@ +package com.se.job.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.se.job.domain.SysJobLog; +import com.se.job.service.ISysJobLogService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.se.common.core.utils.poi.ExcelUtil; +import com.se.common.core.web.controller.BaseController; +import com.se.common.core.web.domain.AjaxResult; +import com.se.common.core.web.page.TableDataInfo; +import com.se.common.log.annotation.Log; +import com.se.common.log.enums.BusinessType; +import com.se.common.security.annotation.RequiresPermissions; + +/** + * 璋冨害鏃ュ織鎿嶄綔澶勭悊 + * + * @author admin + */ +@RestController +@RequestMapping("/job/log") +public class SysJobLogController extends BaseController +{ + @Autowired + private ISysJobLogService jobLogService; + + /** + * 鏌ヨ瀹氭椂浠诲姟璋冨害鏃ュ織鍒楄〃 + */ + @RequiresPermissions("monitor:job:list") + @GetMapping("/list") + public TableDataInfo list(SysJobLog sysJobLog) + { + startPage(); + List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog); + return getDataTable(list); + } + + /** + * 瀵煎嚭瀹氭椂浠诲姟璋冨害鏃ュ織鍒楄〃 + */ + @RequiresPermissions("monitor:job:export") + @Log(title = "浠诲姟璋冨害鏃ュ織", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, SysJobLog sysJobLog) + { + List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog); + ExcelUtil<SysJobLog> util = new ExcelUtil<SysJobLog>(SysJobLog.class); + util.exportExcel(response, list, "璋冨害鏃ュ織"); + } + + /** + * 鏍规嵁璋冨害缂栧彿鑾峰彇璇︾粏淇℃伅 + */ + @RequiresPermissions("monitor:job:query") + @GetMapping(value = "/{jobLogId}") + public AjaxResult getInfo(@PathVariable Long jobLogId) + { + return success(jobLogService.selectJobLogById(jobLogId)); + } + + /** + * 鍒犻櫎瀹氭椂浠诲姟璋冨害鏃ュ織 + */ + @RequiresPermissions("monitor:job:remove") + @Log(title = "瀹氭椂浠诲姟璋冨害鏃ュ織", businessType = BusinessType.DELETE) + @DeleteMapping("/{jobLogIds}") + public AjaxResult remove(@PathVariable Long[] jobLogIds) + { + return toAjax(jobLogService.deleteJobLogByIds(jobLogIds)); + } + + /** + * 娓呯┖瀹氭椂浠诲姟璋冨害鏃ュ織 + */ + @RequiresPermissions("monitor:job:remove") + @Log(title = "璋冨害鏃ュ織", businessType = BusinessType.CLEAN) + @DeleteMapping("/clean") + public AjaxResult clean() + { + jobLogService.cleanJobLog(); + return success(); + } +} diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/domain/SysJob.java b/ruoyi-modules/se-job/src/main/java/com/se/job/domain/SysJob.java new file mode 100644 index 0000000..9fe5163 --- /dev/null +++ b/ruoyi-modules/se-job/src/main/java/com/se/job/domain/SysJob.java @@ -0,0 +1,171 @@ +package com.se.job.domain; + +import java.util.Date; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.se.common.core.annotation.Excel; +import com.se.common.core.annotation.Excel.ColumnType; +import com.se.common.core.constant.ScheduleConstants; +import com.se.common.core.utils.StringUtils; +import com.se.common.core.web.domain.BaseEntity; +import com.se.job.util.CronUtils; + +/** + * 瀹氭椂浠诲姟璋冨害琛� sys_job + * + * @author admin + */ +public class SysJob extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 浠诲姟ID */ + @Excel(name = "浠诲姟搴忓彿", cellType = ColumnType.NUMERIC) + private Long jobId; + + /** 浠诲姟鍚嶇О */ + @Excel(name = "浠诲姟鍚嶇О") + private String jobName; + + /** 浠诲姟缁勫悕 */ + @Excel(name = "浠诲姟缁勫悕") + private String jobGroup; + + /** 璋冪敤鐩爣瀛楃涓� */ + @Excel(name = "璋冪敤鐩爣瀛楃涓�") + private String invokeTarget; + + /** cron鎵ц琛ㄨ揪寮� */ + @Excel(name = "鎵ц琛ㄨ揪寮� ") + private String cronExpression; + + /** cron璁″垝绛栫暐 */ + @Excel(name = "璁″垝绛栫暐 ", readConverterExp = "0=榛樿,1=绔嬪嵆瑙﹀彂鎵ц,2=瑙﹀彂涓�娆℃墽琛�,3=涓嶈Е鍙戠珛鍗虫墽琛�") + private String misfirePolicy = ScheduleConstants.MISFIRE_DEFAULT; + + /** 鏄惁骞跺彂鎵ц锛�0鍏佽 1绂佹锛� */ + @Excel(name = "骞跺彂鎵ц", readConverterExp = "0=鍏佽,1=绂佹") + private String concurrent; + + /** 浠诲姟鐘舵�侊紙0姝e父 1鏆傚仠锛� */ + @Excel(name = "浠诲姟鐘舵��", readConverterExp = "0=姝e父,1=鏆傚仠") + private String status; + + public Long getJobId() + { + return jobId; + } + + public void setJobId(Long jobId) + { + this.jobId = jobId; + } + + @NotBlank(message = "浠诲姟鍚嶇О涓嶈兘涓虹┖") + @Size(min = 0, max = 64, message = "浠诲姟鍚嶇О涓嶈兘瓒呰繃64涓瓧绗�") + public String getJobName() + { + return jobName; + } + + public void setJobName(String jobName) + { + this.jobName = jobName; + } + + public String getJobGroup() + { + return jobGroup; + } + + public void setJobGroup(String jobGroup) + { + this.jobGroup = jobGroup; + } + + @NotBlank(message = "璋冪敤鐩爣瀛楃涓蹭笉鑳戒负绌�") + @Size(min = 0, max = 500, message = "璋冪敤鐩爣瀛楃涓查暱搴︿笉鑳借秴杩�500涓瓧绗�") + public String getInvokeTarget() + { + return invokeTarget; + } + + public void setInvokeTarget(String invokeTarget) + { + this.invokeTarget = invokeTarget; + } + + @NotBlank(message = "Cron鎵ц琛ㄨ揪寮忎笉鑳戒负绌�") + @Size(min = 0, max = 255, message = "Cron鎵ц琛ㄨ揪寮忎笉鑳借秴杩�255涓瓧绗�") + public String getCronExpression() + { + return cronExpression; + } + + public void setCronExpression(String cronExpression) + { + this.cronExpression = cronExpression; + } + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + public Date getNextValidTime() + { + if (StringUtils.isNotEmpty(cronExpression)) + { + return CronUtils.getNextExecution(cronExpression); + } + return null; + } + + public String getMisfirePolicy() + { + return misfirePolicy; + } + + public void setMisfirePolicy(String misfirePolicy) + { + this.misfirePolicy = misfirePolicy; + } + + public String getConcurrent() + { + return concurrent; + } + + public void setConcurrent(String concurrent) + { + this.concurrent = concurrent; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("jobId", getJobId()) + .append("jobName", getJobName()) + .append("jobGroup", getJobGroup()) + .append("cronExpression", getCronExpression()) + .append("nextValidTime", getNextValidTime()) + .append("misfirePolicy", getMisfirePolicy()) + .append("concurrent", getConcurrent()) + .append("status", getStatus()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} \ No newline at end of file diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/domain/SysJobLog.java b/ruoyi-modules/se-job/src/main/java/com/se/job/domain/SysJobLog.java new file mode 100644 index 0000000..b08cf99 --- /dev/null +++ b/ruoyi-modules/se-job/src/main/java/com/se/job/domain/SysJobLog.java @@ -0,0 +1,155 @@ +package com.se.job.domain; + +import java.util.Date; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.se.common.core.annotation.Excel; +import com.se.common.core.web.domain.BaseEntity; + +/** + * 瀹氭椂浠诲姟璋冨害鏃ュ織琛� sys_job_log + * + * @author admin + */ +public class SysJobLog extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** ID */ + @Excel(name = "鏃ュ織搴忓彿") + private Long jobLogId; + + /** 浠诲姟鍚嶇О */ + @Excel(name = "浠诲姟鍚嶇О") + private String jobName; + + /** 浠诲姟缁勫悕 */ + @Excel(name = "浠诲姟缁勫悕") + private String jobGroup; + + /** 璋冪敤鐩爣瀛楃涓� */ + @Excel(name = "璋冪敤鐩爣瀛楃涓�") + private String invokeTarget; + + /** 鏃ュ織淇℃伅 */ + @Excel(name = "鏃ュ織淇℃伅") + private String jobMessage; + + /** 鎵ц鐘舵�侊紙0姝e父 1澶辫触锛� */ + @Excel(name = "鎵ц鐘舵��", readConverterExp = "0=姝e父,1=澶辫触") + private String status; + + /** 寮傚父淇℃伅 */ + @Excel(name = "寮傚父淇℃伅") + private String exceptionInfo; + + /** 寮�濮嬫椂闂� */ + private Date startTime; + + /** 鍋滄鏃堕棿 */ + private Date stopTime; + + public Long getJobLogId() + { + return jobLogId; + } + + public void setJobLogId(Long jobLogId) + { + this.jobLogId = jobLogId; + } + + public String getJobName() + { + return jobName; + } + + public void setJobName(String jobName) + { + this.jobName = jobName; + } + + public String getJobGroup() + { + return jobGroup; + } + + public void setJobGroup(String jobGroup) + { + this.jobGroup = jobGroup; + } + + public String getInvokeTarget() + { + return invokeTarget; + } + + public void setInvokeTarget(String invokeTarget) + { + this.invokeTarget = invokeTarget; + } + + public String getJobMessage() + { + return jobMessage; + } + + public void setJobMessage(String jobMessage) + { + this.jobMessage = jobMessage; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } + + public String getExceptionInfo() + { + return exceptionInfo; + } + + public void setExceptionInfo(String exceptionInfo) + { + this.exceptionInfo = exceptionInfo; + } + + public Date getStartTime() + { + return startTime; + } + + public void setStartTime(Date startTime) + { + this.startTime = startTime; + } + + public Date getStopTime() + { + return stopTime; + } + + public void setStopTime(Date stopTime) + { + this.stopTime = stopTime; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("jobLogId", getJobLogId()) + .append("jobName", getJobName()) + .append("jobGroup", getJobGroup()) + .append("jobMessage", getJobMessage()) + .append("status", getStatus()) + .append("exceptionInfo", getExceptionInfo()) + .append("startTime", getStartTime()) + .append("stopTime", getStopTime()) + .toString(); + } +} diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/mapper/SysJobLogMapper.java b/ruoyi-modules/se-job/src/main/java/com/se/job/mapper/SysJobLogMapper.java new file mode 100644 index 0000000..82cb623 --- /dev/null +++ b/ruoyi-modules/se-job/src/main/java/com/se/job/mapper/SysJobLogMapper.java @@ -0,0 +1,64 @@ +package com.se.job.mapper; + +import java.util.List; +import com.se.job.domain.SysJobLog; + +/** + * 璋冨害浠诲姟鏃ュ織淇℃伅 鏁版嵁灞� + * + * @author admin + */ +public interface SysJobLogMapper +{ + /** + * 鑾峰彇quartz璋冨害鍣ㄦ棩蹇楃殑璁″垝浠诲姟 + * + * @param jobLog 璋冨害鏃ュ織淇℃伅 + * @return 璋冨害浠诲姟鏃ュ織闆嗗悎 + */ + public List<SysJobLog> selectJobLogList(SysJobLog jobLog); + + /** + * 鏌ヨ鎵�鏈夎皟搴︿换鍔℃棩蹇� + * + * @return 璋冨害浠诲姟鏃ュ織鍒楄〃 + */ + public List<SysJobLog> selectJobLogAll(); + + /** + * 閫氳繃璋冨害浠诲姟鏃ュ織ID鏌ヨ璋冨害淇℃伅 + * + * @param jobLogId 璋冨害浠诲姟鏃ュ織ID + * @return 璋冨害浠诲姟鏃ュ織瀵硅薄淇℃伅 + */ + public SysJobLog selectJobLogById(Long jobLogId); + + /** + * 鏂板浠诲姟鏃ュ織 + * + * @param jobLog 璋冨害鏃ュ織淇℃伅 + * @return 缁撴灉 + */ + public int insertJobLog(SysJobLog jobLog); + + /** + * 鎵归噺鍒犻櫎璋冨害鏃ュ織淇℃伅 + * + * @param logIds 闇�瑕佸垹闄ょ殑鏁版嵁ID + * @return 缁撴灉 + */ + public int deleteJobLogByIds(Long[] logIds); + + /** + * 鍒犻櫎浠诲姟鏃ュ織 + * + * @param jobId 璋冨害鏃ュ織ID + * @return 缁撴灉 + */ + public int deleteJobLogById(Long jobId); + + /** + * 娓呯┖浠诲姟鏃ュ織 + */ + public void cleanJobLog(); +} diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/mapper/SysJobMapper.java b/ruoyi-modules/se-job/src/main/java/com/se/job/mapper/SysJobMapper.java new file mode 100644 index 0000000..0f99ed6 --- /dev/null +++ b/ruoyi-modules/se-job/src/main/java/com/se/job/mapper/SysJobMapper.java @@ -0,0 +1,67 @@ +package com.se.job.mapper; + +import java.util.List; +import com.se.job.domain.SysJob; + +/** + * 璋冨害浠诲姟淇℃伅 鏁版嵁灞� + * + * @author admin + */ +public interface SysJobMapper +{ + /** + * 鏌ヨ璋冨害浠诲姟鏃ュ織闆嗗悎 + * + * @param job 璋冨害淇℃伅 + * @return 鎿嶄綔鏃ュ織闆嗗悎 + */ + public List<SysJob> selectJobList(SysJob job); + + /** + * 鏌ヨ鎵�鏈夎皟搴︿换鍔� + * + * @return 璋冨害浠诲姟鍒楄〃 + */ + public List<SysJob> selectJobAll(); + + /** + * 閫氳繃璋冨害ID鏌ヨ璋冨害浠诲姟淇℃伅 + * + * @param jobId 璋冨害ID + * @return 瑙掕壊瀵硅薄淇℃伅 + */ + public SysJob selectJobById(Long jobId); + + /** + * 閫氳繃璋冨害ID鍒犻櫎璋冨害浠诲姟淇℃伅 + * + * @param jobId 璋冨害ID + * @return 缁撴灉 + */ + public int deleteJobById(Long jobId); + + /** + * 鎵归噺鍒犻櫎璋冨害浠诲姟淇℃伅 + * + * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID + * @return 缁撴灉 + */ + public int deleteJobByIds(Long[] ids); + + /** + * 淇敼璋冨害浠诲姟淇℃伅 + * + * @param job 璋冨害浠诲姟淇℃伅 + * @return 缁撴灉 + */ + public int updateJob(SysJob job); + + /** + * 鏂板璋冨害浠诲姟淇℃伅 + * + * @param job 璋冨害浠诲姟淇℃伅 + * @return 缁撴灉 + */ + public int insertJob(SysJob job); +} diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/service/ISysJobLogService.java b/ruoyi-modules/se-job/src/main/java/com/se/job/service/ISysJobLogService.java new file mode 100644 index 0000000..0cb8913 --- /dev/null +++ b/ruoyi-modules/se-job/src/main/java/com/se/job/service/ISysJobLogService.java @@ -0,0 +1,56 @@ +package com.se.job.service; + +import java.util.List; +import com.se.job.domain.SysJobLog; + +/** + * 瀹氭椂浠诲姟璋冨害鏃ュ織淇℃伅淇℃伅 鏈嶅姟灞� + * + * @author admin + */ +public interface ISysJobLogService +{ + /** + * 鑾峰彇quartz璋冨害鍣ㄦ棩蹇楃殑璁″垝浠诲姟 + * + * @param jobLog 璋冨害鏃ュ織淇℃伅 + * @return 璋冨害浠诲姟鏃ュ織闆嗗悎 + */ + public List<SysJobLog> selectJobLogList(SysJobLog jobLog); + + /** + * 閫氳繃璋冨害浠诲姟鏃ュ織ID鏌ヨ璋冨害淇℃伅 + * + * @param jobLogId 璋冨害浠诲姟鏃ュ織ID + * @return 璋冨害浠诲姟鏃ュ織瀵硅薄淇℃伅 + */ + public SysJobLog selectJobLogById(Long jobLogId); + + /** + * 鏂板浠诲姟鏃ュ織 + * + * @param jobLog 璋冨害鏃ュ織淇℃伅 + */ + public void addJobLog(SysJobLog jobLog); + + /** + * 鎵归噺鍒犻櫎璋冨害鏃ュ織淇℃伅 + * + * @param logIds 闇�瑕佸垹闄ょ殑鏃ュ織ID + * @return 缁撴灉 + */ + public int deleteJobLogByIds(Long[] logIds); + + /** + * 鍒犻櫎浠诲姟鏃ュ織 + * + * @param jobId 璋冨害鏃ュ織ID + * @return 缁撴灉 + */ + public int deleteJobLogById(Long jobId); + + /** + * 娓呯┖浠诲姟鏃ュ織 + */ + public void cleanJobLog(); +} diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/service/ISysJobService.java b/ruoyi-modules/se-job/src/main/java/com/se/job/service/ISysJobService.java new file mode 100644 index 0000000..1a5afa9 --- /dev/null +++ b/ruoyi-modules/se-job/src/main/java/com/se/job/service/ISysJobService.java @@ -0,0 +1,102 @@ +package com.se.job.service; + +import java.util.List; +import org.quartz.SchedulerException; +import com.se.common.core.exception.job.TaskException; +import com.se.job.domain.SysJob; + +/** + * 瀹氭椂浠诲姟璋冨害淇℃伅淇℃伅 鏈嶅姟灞� + * + * @author admin + */ +public interface ISysJobService +{ + /** + * 鑾峰彇quartz璋冨害鍣ㄧ殑璁″垝浠诲姟 + * + * @param job 璋冨害淇℃伅 + * @return 璋冨害浠诲姟闆嗗悎 + */ + public List<SysJob> selectJobList(SysJob job); + + /** + * 閫氳繃璋冨害浠诲姟ID鏌ヨ璋冨害淇℃伅 + * + * @param jobId 璋冨害浠诲姟ID + * @return 璋冨害浠诲姟瀵硅薄淇℃伅 + */ + public SysJob selectJobById(Long jobId); + + /** + * 鏆傚仠浠诲姟 + * + * @param job 璋冨害淇℃伅 + * @return 缁撴灉 + */ + public int pauseJob(SysJob job) throws SchedulerException; + + /** + * 鎭㈠浠诲姟 + * + * @param job 璋冨害淇℃伅 + * @return 缁撴灉 + */ + public int resumeJob(SysJob job) throws SchedulerException; + + /** + * 鍒犻櫎浠诲姟鍚庯紝鎵�瀵瑰簲鐨則rigger涔熷皢琚垹闄� + * + * @param job 璋冨害淇℃伅 + * @return 缁撴灉 + */ + public int deleteJob(SysJob job) throws SchedulerException; + + /** + * 鎵归噺鍒犻櫎璋冨害淇℃伅 + * + * @param jobIds 闇�瑕佸垹闄ょ殑浠诲姟ID + * @return 缁撴灉 + */ + public void deleteJobByIds(Long[] jobIds) throws SchedulerException; + + /** + * 浠诲姟璋冨害鐘舵�佷慨鏀� + * + * @param job 璋冨害淇℃伅 + * @return 缁撴灉 + */ + public int changeStatus(SysJob job) throws SchedulerException; + + /** + * 绔嬪嵆杩愯浠诲姟 + * + * @param job 璋冨害淇℃伅 + * @return 缁撴灉 + */ + public boolean run(SysJob job) throws SchedulerException; + + /** + * 鏂板浠诲姟 + * + * @param job 璋冨害淇℃伅 + * @return 缁撴灉 + */ + public int insertJob(SysJob job) throws SchedulerException, TaskException; + + /** + * 鏇存柊浠诲姟 + * + * @param job 璋冨害淇℃伅 + * @return 缁撴灉 + */ + public int updateJob(SysJob job) throws SchedulerException, TaskException; + + /** + * 鏍¢獙cron琛ㄨ揪寮忔槸鍚︽湁鏁� + * + * @param cronExpression 琛ㄨ揪寮� + * @return 缁撴灉 + */ + public boolean checkCronExpressionIsValid(String cronExpression); +} \ No newline at end of file diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/service/SysJobLogServiceImpl.java b/ruoyi-modules/se-job/src/main/java/com/se/job/service/SysJobLogServiceImpl.java new file mode 100644 index 0000000..1dcbd38 --- /dev/null +++ b/ruoyi-modules/se-job/src/main/java/com/se/job/service/SysJobLogServiceImpl.java @@ -0,0 +1,86 @@ +package com.se.job.service; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.se.job.domain.SysJobLog; +import com.se.job.mapper.SysJobLogMapper; + +/** + * 瀹氭椂浠诲姟璋冨害鏃ュ織淇℃伅 鏈嶅姟灞� + * + * @author admin + */ +@Service +public class SysJobLogServiceImpl implements ISysJobLogService +{ + @Autowired + private SysJobLogMapper jobLogMapper; + + /** + * 鑾峰彇quartz璋冨害鍣ㄦ棩蹇楃殑璁″垝浠诲姟 + * + * @param jobLog 璋冨害鏃ュ織淇℃伅 + * @return 璋冨害浠诲姟鏃ュ織闆嗗悎 + */ + @Override + public List<SysJobLog> selectJobLogList(SysJobLog jobLog) + { + return jobLogMapper.selectJobLogList(jobLog); + } + + /** + * 閫氳繃璋冨害浠诲姟鏃ュ織ID鏌ヨ璋冨害淇℃伅 + * + * @param jobLogId 璋冨害浠诲姟鏃ュ織ID + * @return 璋冨害浠诲姟鏃ュ織瀵硅薄淇℃伅 + */ + @Override + public SysJobLog selectJobLogById(Long jobLogId) + { + return jobLogMapper.selectJobLogById(jobLogId); + } + + /** + * 鏂板浠诲姟鏃ュ織 + * + * @param jobLog 璋冨害鏃ュ織淇℃伅 + */ + @Override + public void addJobLog(SysJobLog jobLog) + { + jobLogMapper.insertJobLog(jobLog); + } + + /** + * 鎵归噺鍒犻櫎璋冨害鏃ュ織淇℃伅 + * + * @param logIds 闇�瑕佸垹闄ょ殑鏁版嵁ID + * @return 缁撴灉 + */ + @Override + public int deleteJobLogByIds(Long[] logIds) + { + return jobLogMapper.deleteJobLogByIds(logIds); + } + + /** + * 鍒犻櫎浠诲姟鏃ュ織 + * + * @param jobId 璋冨害鏃ュ織ID + */ + @Override + public int deleteJobLogById(Long jobId) + { + return jobLogMapper.deleteJobLogById(jobId); + } + + /** + * 娓呯┖浠诲姟鏃ュ織 + */ + @Override + public void cleanJobLog() + { + jobLogMapper.cleanJobLog(); + } +} diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/service/SysJobServiceImpl.java b/ruoyi-modules/se-job/src/main/java/com/se/job/service/SysJobServiceImpl.java new file mode 100644 index 0000000..0e303b4 --- /dev/null +++ b/ruoyi-modules/se-job/src/main/java/com/se/job/service/SysJobServiceImpl.java @@ -0,0 +1,260 @@ +package com.se.job.service; + +import java.util.List; +import javax.annotation.PostConstruct; +import org.quartz.JobDataMap; +import org.quartz.JobKey; +import org.quartz.Scheduler; +import org.quartz.SchedulerException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import com.se.common.core.constant.ScheduleConstants; +import com.se.common.core.exception.job.TaskException; +import com.se.job.domain.SysJob; +import com.se.job.mapper.SysJobMapper; +import com.se.job.util.CronUtils; +import com.se.job.util.ScheduleUtils; + +/** + * 瀹氭椂浠诲姟璋冨害淇℃伅 鏈嶅姟灞� + * + * @author admin + */ +@Service +public class SysJobServiceImpl implements ISysJobService +{ + @Autowired + private Scheduler scheduler; + + @Autowired + private SysJobMapper jobMapper; + + /** + * 椤圭洰鍚姩鏃讹紝鍒濆鍖栧畾鏃跺櫒 涓昏鏄槻姝㈡墜鍔ㄤ慨鏀规暟鎹簱瀵艰嚧鏈悓姝ュ埌瀹氭椂浠诲姟澶勭悊锛堟敞锛氫笉鑳芥墜鍔ㄤ慨鏀规暟鎹簱ID鍜屼换鍔$粍鍚嶏紝鍚﹀垯浼氬鑷磋剰鏁版嵁锛� + */ + @PostConstruct + public void init() throws SchedulerException, TaskException + { + scheduler.clear(); + List<SysJob> jobList = jobMapper.selectJobAll(); + for (SysJob job : jobList) + { + ScheduleUtils.createScheduleJob(scheduler, job); + } + } + + /** + * 鑾峰彇quartz璋冨害鍣ㄧ殑璁″垝浠诲姟鍒楄〃 + * + * @param job 璋冨害淇℃伅 + * @return + */ + @Override + public List<SysJob> selectJobList(SysJob job) + { + return jobMapper.selectJobList(job); + } + + /** + * 閫氳繃璋冨害浠诲姟ID鏌ヨ璋冨害淇℃伅 + * + * @param jobId 璋冨害浠诲姟ID + * @return 璋冨害浠诲姟瀵硅薄淇℃伅 + */ + @Override + public SysJob selectJobById(Long jobId) + { + return jobMapper.selectJobById(jobId); + } + + /** + * 鏆傚仠浠诲姟 + * + * @param job 璋冨害淇℃伅 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int pauseJob(SysJob job) throws SchedulerException + { + Long jobId = job.getJobId(); + String jobGroup = job.getJobGroup(); + job.setStatus(ScheduleConstants.Status.PAUSE.getValue()); + int rows = jobMapper.updateJob(job); + if (rows > 0) + { + scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup)); + } + return rows; + } + + /** + * 鎭㈠浠诲姟 + * + * @param job 璋冨害淇℃伅 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int resumeJob(SysJob job) throws SchedulerException + { + Long jobId = job.getJobId(); + String jobGroup = job.getJobGroup(); + job.setStatus(ScheduleConstants.Status.NORMAL.getValue()); + int rows = jobMapper.updateJob(job); + if (rows > 0) + { + scheduler.resumeJob(ScheduleUtils.getJobKey(jobId, jobGroup)); + } + return rows; + } + + /** + * 鍒犻櫎浠诲姟鍚庯紝鎵�瀵瑰簲鐨則rigger涔熷皢琚垹闄� + * + * @param job 璋冨害淇℃伅 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int deleteJob(SysJob job) throws SchedulerException + { + Long jobId = job.getJobId(); + String jobGroup = job.getJobGroup(); + int rows = jobMapper.deleteJobById(jobId); + if (rows > 0) + { + scheduler.deleteJob(ScheduleUtils.getJobKey(jobId, jobGroup)); + } + return rows; + } + + /** + * 鎵归噺鍒犻櫎璋冨害淇℃伅 + * + * @param jobIds 闇�瑕佸垹闄ょ殑浠诲姟ID + * @return 缁撴灉 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteJobByIds(Long[] jobIds) throws SchedulerException + { + for (Long jobId : jobIds) + { + SysJob job = jobMapper.selectJobById(jobId); + deleteJob(job); + } + } + + /** + * 浠诲姟璋冨害鐘舵�佷慨鏀� + * + * @param job 璋冨害淇℃伅 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int changeStatus(SysJob job) throws SchedulerException + { + int rows = 0; + String status = job.getStatus(); + if (ScheduleConstants.Status.NORMAL.getValue().equals(status)) + { + rows = resumeJob(job); + } + else if (ScheduleConstants.Status.PAUSE.getValue().equals(status)) + { + rows = pauseJob(job); + } + return rows; + } + + /** + * 绔嬪嵆杩愯浠诲姟 + * + * @param job 璋冨害淇℃伅 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean run(SysJob job) throws SchedulerException + { + boolean result = false; + Long jobId = job.getJobId(); + String jobGroup = job.getJobGroup(); + SysJob properties = selectJobById(job.getJobId()); + // 鍙傛暟 + JobDataMap dataMap = new JobDataMap(); + dataMap.put(ScheduleConstants.TASK_PROPERTIES, properties); + JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup); + if (scheduler.checkExists(jobKey)) + { + result = true; + scheduler.triggerJob(jobKey, dataMap); + } + return result; + } + + /** + * 鏂板浠诲姟 + * + * @param job 璋冨害淇℃伅 璋冨害淇℃伅 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int insertJob(SysJob job) throws SchedulerException, TaskException + { + job.setStatus(ScheduleConstants.Status.PAUSE.getValue()); + int rows = jobMapper.insertJob(job); + if (rows > 0) + { + ScheduleUtils.createScheduleJob(scheduler, job); + } + return rows; + } + + /** + * 鏇存柊浠诲姟鐨勬椂闂磋〃杈惧紡 + * + * @param job 璋冨害淇℃伅 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int updateJob(SysJob job) throws SchedulerException, TaskException + { + SysJob properties = selectJobById(job.getJobId()); + int rows = jobMapper.updateJob(job); + if (rows > 0) + { + updateSchedulerJob(job, properties.getJobGroup()); + } + return rows; + } + + /** + * 鏇存柊浠诲姟 + * + * @param job 浠诲姟瀵硅薄 + * @param jobGroup 浠诲姟缁勫悕 + */ + public void updateSchedulerJob(SysJob job, String jobGroup) throws SchedulerException, TaskException + { + Long jobId = job.getJobId(); + // 鍒ゆ柇鏄惁瀛樺湪 + JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup); + if (scheduler.checkExists(jobKey)) + { + // 闃叉鍒涘缓鏃跺瓨鍦ㄦ暟鎹棶棰� 鍏堢Щ闄わ紝鐒跺悗鍦ㄦ墽琛屽垱寤烘搷浣� + scheduler.deleteJob(jobKey); + } + ScheduleUtils.createScheduleJob(scheduler, job); + } + + /** + * 鏍¢獙cron琛ㄨ揪寮忔槸鍚︽湁鏁� + * + * @param cronExpression 琛ㄨ揪寮� + * @return 缁撴灉 + */ + @Override + public boolean checkCronExpressionIsValid(String cronExpression) + { + return CronUtils.isValid(cronExpression); + } +} \ No newline at end of file diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/task/RyTask.java b/ruoyi-modules/se-job/src/main/java/com/se/job/task/RyTask.java new file mode 100644 index 0000000..5293b57 --- /dev/null +++ b/ruoyi-modules/se-job/src/main/java/com/se/job/task/RyTask.java @@ -0,0 +1,28 @@ +package com.se.job.task; + +import org.springframework.stereotype.Component; +import com.se.common.core.utils.StringUtils; + +/** + * 瀹氭椂浠诲姟璋冨害娴嬭瘯 + * + * @author admin + */ +@Component("ryTask") +public class RyTask +{ + public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) + { + System.out.println(StringUtils.format("鎵ц澶氬弬鏂规硶锛� 瀛楃涓茬被鍨媨}锛屽竷灏旂被鍨媨}锛岄暱鏁村瀷{}锛屾诞鐐瑰瀷{}锛屾暣褰}", s, b, l, d, i)); + } + + public void ryParams(String params) + { + System.out.println("鎵ц鏈夊弬鏂规硶锛�" + params); + } + + public void ryNoParams() + { + System.out.println("鎵ц鏃犲弬鏂规硶"); + } +} diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/util/AbstractQuartzJob.java b/ruoyi-modules/se-job/src/main/java/com/se/job/util/AbstractQuartzJob.java new file mode 100644 index 0000000..39be601 --- /dev/null +++ b/ruoyi-modules/se-job/src/main/java/com/se/job/util/AbstractQuartzJob.java @@ -0,0 +1,107 @@ +package com.se.job.util; + +import java.util.Date; + +import com.se.job.domain.SysJob; +import com.se.job.domain.SysJobLog; +import com.se.job.service.ISysJobLogService; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import com.se.common.core.constant.ScheduleConstants; +import com.se.common.core.utils.ExceptionUtil; +import com.se.common.core.utils.SpringUtils; +import com.se.common.core.utils.StringUtils; +import com.se.common.core.utils.bean.BeanUtils; + +/** + * 鎶借薄quartz璋冪敤 + * + * @author admin + */ +public abstract class AbstractQuartzJob implements Job +{ + private static final Logger log = LoggerFactory.getLogger(AbstractQuartzJob.class); + + /** + * 绾跨▼鏈湴鍙橀噺 + */ + private static ThreadLocal<Date> threadLocal = new ThreadLocal<>(); + + @Override + public void execute(JobExecutionContext context) throws JobExecutionException + { + SysJob sysJob = new SysJob(); + BeanUtils.copyBeanProp(sysJob, context.getMergedJobDataMap().get(ScheduleConstants.TASK_PROPERTIES)); + try + { + before(context, sysJob); + if (sysJob != null) + { + doExecute(context, sysJob); + } + after(context, sysJob, null); + } + catch (Exception e) + { + log.error("浠诲姟鎵ц寮傚父 - 锛�", e); + after(context, sysJob, e); + } + } + + /** + * 鎵ц鍓� + * + * @param context 宸ヤ綔鎵ц涓婁笅鏂囧璞� + * @param sysJob 绯荤粺璁″垝浠诲姟 + */ + protected void before(JobExecutionContext context, SysJob sysJob) + { + threadLocal.set(new Date()); + } + + /** + * 鎵ц鍚� + * + * @param context 宸ヤ綔鎵ц涓婁笅鏂囧璞� + * @param sysJob 绯荤粺璁″垝浠诲姟 + */ + protected void after(JobExecutionContext context, SysJob sysJob, Exception e) + { + Date startTime = threadLocal.get(); + threadLocal.remove(); + + final SysJobLog sysJobLog = new SysJobLog(); + sysJobLog.setJobName(sysJob.getJobName()); + sysJobLog.setJobGroup(sysJob.getJobGroup()); + sysJobLog.setInvokeTarget(sysJob.getInvokeTarget()); + sysJobLog.setStartTime(startTime); + sysJobLog.setStopTime(new Date()); + long runMs = sysJobLog.getStopTime().getTime() - sysJobLog.getStartTime().getTime(); + sysJobLog.setJobMessage(sysJobLog.getJobName() + " 鎬诲叡鑰楁椂锛�" + runMs + "姣"); + if (e != null) + { + sysJobLog.setStatus("1"); + String errorMsg = StringUtils.substring(ExceptionUtil.getExceptionMessage(e), 0, 2000); + sysJobLog.setExceptionInfo(errorMsg); + } + else + { + sysJobLog.setStatus("0"); + } + + // 鍐欏叆鏁版嵁搴撳綋涓� + SpringUtils.getBean(ISysJobLogService.class).addJobLog(sysJobLog); + } + + /** + * 鎵ц鏂规硶锛岀敱瀛愮被閲嶈浇 + * + * @param context 宸ヤ綔鎵ц涓婁笅鏂囧璞� + * @param sysJob 绯荤粺璁″垝浠诲姟 + * @throws Exception 鎵ц杩囩▼涓殑寮傚父 + */ + protected abstract void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception; +} diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/util/CronUtils.java b/ruoyi-modules/se-job/src/main/java/com/se/job/util/CronUtils.java new file mode 100644 index 0000000..4590e21 --- /dev/null +++ b/ruoyi-modules/se-job/src/main/java/com/se/job/util/CronUtils.java @@ -0,0 +1,63 @@ +package com.se.job.util; + +import java.text.ParseException; +import java.util.Date; +import org.quartz.CronExpression; + +/** + * cron琛ㄨ揪寮忓伐鍏风被 + * + * @author admin + * + */ +public class CronUtils +{ + /** + * 杩斿洖涓�涓竷灏斿�间唬琛ㄤ竴涓粰瀹氱殑Cron琛ㄨ揪寮忕殑鏈夋晥鎬� + * + * @param cronExpression Cron琛ㄨ揪寮� + * @return boolean 琛ㄨ揪寮忔槸鍚︽湁鏁� + */ + public static boolean isValid(String cronExpression) + { + return CronExpression.isValidExpression(cronExpression); + } + + /** + * 杩斿洖涓�涓瓧绗︿覆鍊�,琛ㄧず璇ユ秷鎭棤鏁圕ron琛ㄨ揪寮忕粰鍑烘湁鏁堟�� + * + * @param cronExpression Cron琛ㄨ揪寮� + * @return String 鏃犳晥鏃惰繑鍥炶〃杈惧紡閿欒鎻忚堪,濡傛灉鏈夋晥杩斿洖null + */ + public static String getInvalidMessage(String cronExpression) + { + try + { + new CronExpression(cronExpression); + return null; + } + catch (ParseException pe) + { + return pe.getMessage(); + } + } + + /** + * 杩斿洖涓嬩竴涓墽琛屾椂闂存牴鎹粰瀹氱殑Cron琛ㄨ揪寮� + * + * @param cronExpression Cron琛ㄨ揪寮� + * @return Date 涓嬫Cron琛ㄨ揪寮忔墽琛屾椂闂� + */ + public static Date getNextExecution(String cronExpression) + { + try + { + CronExpression cron = new CronExpression(cronExpression); + return cron.getNextValidTimeAfter(new Date(System.currentTimeMillis())); + } + catch (ParseException e) + { + throw new IllegalArgumentException(e.getMessage()); + } + } +} diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/util/JobInvokeUtil.java b/ruoyi-modules/se-job/src/main/java/com/se/job/util/JobInvokeUtil.java new file mode 100644 index 0000000..6aaab12 --- /dev/null +++ b/ruoyi-modules/se-job/src/main/java/com/se/job/util/JobInvokeUtil.java @@ -0,0 +1,182 @@ +package com.se.job.util; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.LinkedList; +import java.util.List; +import com.se.common.core.utils.SpringUtils; +import com.se.common.core.utils.StringUtils; +import com.se.job.domain.SysJob; + +/** + * 浠诲姟鎵ц宸ュ叿 + * + * @author admin + */ +public class JobInvokeUtil +{ + /** + * 鎵ц鏂规硶 + * + * @param sysJob 绯荤粺浠诲姟 + */ + public static void invokeMethod(SysJob sysJob) throws Exception + { + String invokeTarget = sysJob.getInvokeTarget(); + String beanName = getBeanName(invokeTarget); + String methodName = getMethodName(invokeTarget); + List<Object[]> methodParams = getMethodParams(invokeTarget); + + if (!isValidClassName(beanName)) + { + Object bean = SpringUtils.getBean(beanName); + invokeMethod(bean, methodName, methodParams); + } + else + { + Object bean = Class.forName(beanName).getDeclaredConstructor().newInstance(); + invokeMethod(bean, methodName, methodParams); + } + } + + /** + * 璋冪敤浠诲姟鏂规硶 + * + * @param bean 鐩爣瀵硅薄 + * @param methodName 鏂规硶鍚嶇О + * @param methodParams 鏂规硶鍙傛暟 + */ + private static void invokeMethod(Object bean, String methodName, List<Object[]> methodParams) + throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, + InvocationTargetException + { + if (StringUtils.isNotNull(methodParams) && methodParams.size() > 0) + { + Method method = bean.getClass().getMethod(methodName, getMethodParamsType(methodParams)); + method.invoke(bean, getMethodParamsValue(methodParams)); + } + else + { + Method method = bean.getClass().getMethod(methodName); + method.invoke(bean); + } + } + + /** + * 鏍¢獙鏄惁涓轰负class鍖呭悕 + * + * @param invokeTarget 鍚嶇О + * @return true鏄� false鍚� + */ + public static boolean isValidClassName(String invokeTarget) + { + return StringUtils.countMatches(invokeTarget, ".") > 1; + } + + /** + * 鑾峰彇bean鍚嶇О + * + * @param invokeTarget 鐩爣瀛楃涓� + * @return bean鍚嶇О + */ + public static String getBeanName(String invokeTarget) + { + String beanName = StringUtils.substringBefore(invokeTarget, "("); + return StringUtils.substringBeforeLast(beanName, "."); + } + + /** + * 鑾峰彇bean鏂规硶 + * + * @param invokeTarget 鐩爣瀛楃涓� + * @return method鏂规硶 + */ + public static String getMethodName(String invokeTarget) + { + String methodName = StringUtils.substringBefore(invokeTarget, "("); + return StringUtils.substringAfterLast(methodName, "."); + } + + /** + * 鑾峰彇method鏂规硶鍙傛暟鐩稿叧鍒楄〃 + * + * @param invokeTarget 鐩爣瀛楃涓� + * @return method鏂规硶鐩稿叧鍙傛暟鍒楄〃 + */ + public static List<Object[]> getMethodParams(String invokeTarget) + { + String methodStr = StringUtils.substringBetween(invokeTarget, "(", ")"); + if (StringUtils.isEmpty(methodStr)) + { + return null; + } + String[] methodParams = methodStr.split(",(?=([^\"']*[\"'][^\"']*[\"'])*[^\"']*$)"); + List<Object[]> classs = new LinkedList<>(); + for (int i = 0; i < methodParams.length; i++) + { + String str = StringUtils.trimToEmpty(methodParams[i]); + // String瀛楃涓茬被鍨嬶紝浠�'鎴�"寮�澶� + if (StringUtils.startsWithAny(str, "'", "\"")) + { + classs.add(new Object[] { StringUtils.substring(str, 1, str.length() - 1), String.class }); + } + // boolean甯冨皵绫诲瀷锛岀瓑浜巘rue鎴栬�協alse + else if ("true".equalsIgnoreCase(str) || "false".equalsIgnoreCase(str)) + { + classs.add(new Object[] { Boolean.valueOf(str), Boolean.class }); + } + // long闀挎暣褰紝浠缁撳熬 + else if (StringUtils.endsWith(str, "L")) + { + classs.add(new Object[] { Long.valueOf(StringUtils.substring(str, 0, str.length() - 1)), Long.class }); + } + // double娴偣绫诲瀷锛屼互D缁撳熬 + else if (StringUtils.endsWith(str, "D")) + { + classs.add(new Object[] { Double.valueOf(StringUtils.substring(str, 0, str.length() - 1)), Double.class }); + } + // 鍏朵粬绫诲瀷褰掔被涓烘暣褰� + else + { + classs.add(new Object[] { Integer.valueOf(str), Integer.class }); + } + } + return classs; + } + + /** + * 鑾峰彇鍙傛暟绫诲瀷 + * + * @param methodParams 鍙傛暟鐩稿叧鍒楄〃 + * @return 鍙傛暟绫诲瀷鍒楄〃 + */ + public static Class<?>[] getMethodParamsType(List<Object[]> methodParams) + { + Class<?>[] classs = new Class<?>[methodParams.size()]; + int index = 0; + for (Object[] os : methodParams) + { + classs[index] = (Class<?>) os[1]; + index++; + } + return classs; + } + + /** + * 鑾峰彇鍙傛暟鍊� + * + * @param methodParams 鍙傛暟鐩稿叧鍒楄〃 + * @return 鍙傛暟鍊煎垪琛� + */ + public static Object[] getMethodParamsValue(List<Object[]> methodParams) + { + Object[] classs = new Object[methodParams.size()]; + int index = 0; + for (Object[] os : methodParams) + { + classs[index] = (Object) os[0]; + index++; + } + return classs; + } +} diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/util/QuartzDisallowConcurrentExecution.java b/ruoyi-modules/se-job/src/main/java/com/se/job/util/QuartzDisallowConcurrentExecution.java new file mode 100644 index 0000000..8901480 --- /dev/null +++ b/ruoyi-modules/se-job/src/main/java/com/se/job/util/QuartzDisallowConcurrentExecution.java @@ -0,0 +1,21 @@ +package com.se.job.util; + +import com.se.job.domain.SysJob; +import org.quartz.DisallowConcurrentExecution; +import org.quartz.JobExecutionContext; + +/** + * 瀹氭椂浠诲姟澶勭悊锛堢姝㈠苟鍙戞墽琛岋級 + * + * @author admin + * + */ +@DisallowConcurrentExecution +public class QuartzDisallowConcurrentExecution extends AbstractQuartzJob +{ + @Override + protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception + { + JobInvokeUtil.invokeMethod(sysJob); + } +} diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/util/QuartzJobExecution.java b/ruoyi-modules/se-job/src/main/java/com/se/job/util/QuartzJobExecution.java new file mode 100644 index 0000000..7529ef2 --- /dev/null +++ b/ruoyi-modules/se-job/src/main/java/com/se/job/util/QuartzJobExecution.java @@ -0,0 +1,19 @@ +package com.se.job.util; + +import com.se.job.domain.SysJob; +import org.quartz.JobExecutionContext; + +/** + * 瀹氭椂浠诲姟澶勭悊锛堝厑璁稿苟鍙戞墽琛岋級 + * + * @author admin + * + */ +public class QuartzJobExecution extends AbstractQuartzJob +{ + @Override + protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception + { + JobInvokeUtil.invokeMethod(sysJob); + } +} diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/util/ScheduleUtils.java b/ruoyi-modules/se-job/src/main/java/com/se/job/util/ScheduleUtils.java new file mode 100644 index 0000000..6a50822 --- /dev/null +++ b/ruoyi-modules/se-job/src/main/java/com/se/job/util/ScheduleUtils.java @@ -0,0 +1,141 @@ +package com.se.job.util; + +import com.se.job.domain.SysJob; +import org.quartz.CronScheduleBuilder; +import org.quartz.CronTrigger; +import org.quartz.Job; +import org.quartz.JobBuilder; +import org.quartz.JobDetail; +import org.quartz.JobKey; +import org.quartz.Scheduler; +import org.quartz.SchedulerException; +import org.quartz.TriggerBuilder; +import org.quartz.TriggerKey; +import com.se.common.core.constant.Constants; +import com.se.common.core.constant.ScheduleConstants; +import com.se.common.core.exception.job.TaskException; +import com.se.common.core.exception.job.TaskException.Code; +import com.se.common.core.utils.SpringUtils; +import com.se.common.core.utils.StringUtils; + +/** + * 瀹氭椂浠诲姟宸ュ叿绫� + * + * @author admin + * + */ +public class ScheduleUtils +{ + /** + * 寰楀埌quartz浠诲姟绫� + * + * @param sysJob 鎵ц璁″垝 + * @return 鍏蜂綋鎵ц浠诲姟绫� + */ + private static Class<? extends Job> getQuartzJobClass(SysJob sysJob) + { + boolean isConcurrent = "0".equals(sysJob.getConcurrent()); + return isConcurrent ? QuartzJobExecution.class : QuartzDisallowConcurrentExecution.class; + } + + /** + * 鏋勫缓浠诲姟瑙﹀彂瀵硅薄 + */ + public static TriggerKey getTriggerKey(Long jobId, String jobGroup) + { + return TriggerKey.triggerKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup); + } + + /** + * 鏋勫缓浠诲姟閿璞� + */ + public static JobKey getJobKey(Long jobId, String jobGroup) + { + return JobKey.jobKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup); + } + + /** + * 鍒涘缓瀹氭椂浠诲姟 + */ + public static void createScheduleJob(Scheduler scheduler, SysJob job) throws SchedulerException, TaskException + { + Class<? extends Job> jobClass = getQuartzJobClass(job); + // 鏋勫缓job淇℃伅 + Long jobId = job.getJobId(); + String jobGroup = job.getJobGroup(); + JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(getJobKey(jobId, jobGroup)).build(); + + // 琛ㄨ揪寮忚皟搴︽瀯寤哄櫒 + CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression()); + cronScheduleBuilder = handleCronScheduleMisfirePolicy(job, cronScheduleBuilder); + + // 鎸夋柊鐨刢ronExpression琛ㄨ揪寮忔瀯寤轰竴涓柊鐨則rigger + CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(jobId, jobGroup)) + .withSchedule(cronScheduleBuilder).build(); + + // 鏀惧叆鍙傛暟锛岃繍琛屾椂鐨勬柟娉曞彲浠ヨ幏鍙� + jobDetail.getJobDataMap().put(ScheduleConstants.TASK_PROPERTIES, job); + + // 鍒ゆ柇鏄惁瀛樺湪 + if (scheduler.checkExists(getJobKey(jobId, jobGroup))) + { + // 闃叉鍒涘缓鏃跺瓨鍦ㄦ暟鎹棶棰� 鍏堢Щ闄わ紝鐒跺悗鍦ㄦ墽琛屽垱寤烘搷浣� + scheduler.deleteJob(getJobKey(jobId, jobGroup)); + } + + // 鍒ゆ柇浠诲姟鏄惁杩囨湡 + if (StringUtils.isNotNull(CronUtils.getNextExecution(job.getCronExpression()))) + { + // 鎵ц璋冨害浠诲姟 + scheduler.scheduleJob(jobDetail, trigger); + } + + // 鏆傚仠浠诲姟 + if (job.getStatus().equals(ScheduleConstants.Status.PAUSE.getValue())) + { + scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup)); + } + } + + /** + * 璁剧疆瀹氭椂浠诲姟绛栫暐 + */ + public static CronScheduleBuilder handleCronScheduleMisfirePolicy(SysJob job, CronScheduleBuilder cb) + throws TaskException + { + switch (job.getMisfirePolicy()) + { + case ScheduleConstants.MISFIRE_DEFAULT: + return cb; + case ScheduleConstants.MISFIRE_IGNORE_MISFIRES: + return cb.withMisfireHandlingInstructionIgnoreMisfires(); + case ScheduleConstants.MISFIRE_FIRE_AND_PROCEED: + return cb.withMisfireHandlingInstructionFireAndProceed(); + case ScheduleConstants.MISFIRE_DO_NOTHING: + return cb.withMisfireHandlingInstructionDoNothing(); + default: + throw new TaskException("The task misfire policy '" + job.getMisfirePolicy() + + "' cannot be used in cron schedule tasks", Code.CONFIG_ERROR); + } + } + + /** + * 妫�鏌ュ寘鍚嶆槸鍚︿负鐧藉悕鍗曢厤缃� + * + * @param invokeTarget 鐩爣瀛楃涓� + * @return 缁撴灉 + */ + public static boolean whiteList(String invokeTarget) + { + String packageName = StringUtils.substringBefore(invokeTarget, "("); + int count = StringUtils.countMatches(packageName, "."); + if (count > 1) + { + return StringUtils.containsAnyIgnoreCase(invokeTarget, Constants.JOB_WHITELIST_STR); + } + Object obj = SpringUtils.getBean(StringUtils.split(invokeTarget, ".")[0]); + String beanPackageName = obj.getClass().getPackage().getName(); + return StringUtils.containsAnyIgnoreCase(beanPackageName, Constants.JOB_WHITELIST_STR) + && !StringUtils.containsAnyIgnoreCase(beanPackageName, Constants.JOB_ERROR_STR); + } +} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/banner.txt b/ruoyi-modules/se-job/src/main/resources/banner.txt similarity index 100% rename from ruoyi-modules/ruoyi-job/src/main/resources/banner.txt rename to ruoyi-modules/se-job/src/main/resources/banner.txt diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml b/ruoyi-modules/se-job/src/main/resources/bootstrap.yml similarity index 100% rename from ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml rename to ruoyi-modules/se-job/src/main/resources/bootstrap.yml diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/logback.xml b/ruoyi-modules/se-job/src/main/resources/logback.xml similarity index 100% rename from ruoyi-modules/ruoyi-job/src/main/resources/logback.xml rename to ruoyi-modules/se-job/src/main/resources/logback.xml diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/mapper/job/SysJobLogMapper.xml b/ruoyi-modules/se-job/src/main/resources/mapper/job/SysJobLogMapper.xml similarity index 100% rename from ruoyi-modules/ruoyi-job/src/main/resources/mapper/job/SysJobLogMapper.xml rename to ruoyi-modules/se-job/src/main/resources/mapper/job/SysJobLogMapper.xml diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/mapper/job/SysJobMapper.xml b/ruoyi-modules/se-job/src/main/resources/mapper/job/SysJobMapper.xml similarity index 100% rename from ruoyi-modules/ruoyi-job/src/main/resources/mapper/job/SysJobMapper.xml rename to ruoyi-modules/se-job/src/main/resources/mapper/job/SysJobMapper.xml diff --git a/ruoyi-modules/ruoyi-system/pom.xml b/ruoyi-modules/se-system/pom.xml similarity index 100% rename from ruoyi-modules/ruoyi-system/pom.xml rename to ruoyi-modules/se-system/pom.xml diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/RuoYiSystemApplication.java b/ruoyi-modules/se-system/src/main/java/com/se/system/RuoYiSystemApplication.java new file mode 100644 index 0000000..ffd74f7 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/RuoYiSystemApplication.java @@ -0,0 +1,25 @@ +package com.se.system; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import com.se.common.security.annotation.EnableCustomConfig; +import com.se.common.security.annotation.EnableRyFeignClients; +import com.se.common.swagger.annotation.EnableCustomSwagger2; + +/** + * 绯荤粺妯″潡 + * + * @author admin + */ +@EnableCustomConfig +@EnableCustomSwagger2 +@EnableRyFeignClients +@SpringBootApplication +public class RuoYiSystemApplication +{ + public static void main(String[] args) + { + SpringApplication.run(RuoYiSystemApplication.class, args); + System.out.println(" 绯荤粺妯″潡鍚姩鎴愬姛 "); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysConfigController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysConfigController.java new file mode 100644 index 0000000..8f816b5 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysConfigController.java @@ -0,0 +1,134 @@ +package com.se.system.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.se.system.domain.SysConfig; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.se.common.core.utils.poi.ExcelUtil; +import com.se.common.core.web.controller.BaseController; +import com.se.common.core.web.domain.AjaxResult; +import com.se.common.core.web.page.TableDataInfo; +import com.se.common.log.annotation.Log; +import com.se.common.log.enums.BusinessType; +import com.se.common.security.annotation.RequiresPermissions; +import com.se.common.security.utils.SecurityUtils; +import com.se.system.service.ISysConfigService; + +/** + * 鍙傛暟閰嶇疆 淇℃伅鎿嶄綔澶勭悊 + * + * @author admin + */ +@RestController +@RequestMapping("/config") +public class SysConfigController extends BaseController +{ + @Autowired + private ISysConfigService configService; + + /** + * 鑾峰彇鍙傛暟閰嶇疆鍒楄〃 + */ + @RequiresPermissions("system:config:list") + @GetMapping("/list") + public TableDataInfo list(SysConfig config) + { + startPage(); + List<SysConfig> list = configService.selectConfigList(config); + return getDataTable(list); + } + + @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.EXPORT) + @RequiresPermissions("system:config:export") + @PostMapping("/export") + public void export(HttpServletResponse response, SysConfig config) + { + List<SysConfig> list = configService.selectConfigList(config); + ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class); + util.exportExcel(response, list, "鍙傛暟鏁版嵁"); + } + + /** + * 鏍规嵁鍙傛暟缂栧彿鑾峰彇璇︾粏淇℃伅 + */ + @GetMapping(value = "/{configId}") + public AjaxResult getInfo(@PathVariable Long configId) + { + return success(configService.selectConfigById(configId)); + } + + /** + * 鏍规嵁鍙傛暟閿悕鏌ヨ鍙傛暟鍊� + */ + @GetMapping(value = "/configKey/{configKey}") + public AjaxResult getConfigKey(@PathVariable String configKey) + { + return success(configService.selectConfigByKey(configKey)); + } + + /** + * 鏂板鍙傛暟閰嶇疆 + */ + @RequiresPermissions("system:config:add") + @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysConfig config) + { + if (!configService.checkConfigKeyUnique(config)) + { + return error("鏂板鍙傛暟'" + config.getConfigName() + "'澶辫触锛屽弬鏁伴敭鍚嶅凡瀛樺湪"); + } + config.setCreateBy(SecurityUtils.getUsername()); + return toAjax(configService.insertConfig(config)); + } + + /** + * 淇敼鍙傛暟閰嶇疆 + */ + @RequiresPermissions("system:config:edit") + @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysConfig config) + { + if (!configService.checkConfigKeyUnique(config)) + { + return error("淇敼鍙傛暟'" + config.getConfigName() + "'澶辫触锛屽弬鏁伴敭鍚嶅凡瀛樺湪"); + } + config.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(configService.updateConfig(config)); + } + + /** + * 鍒犻櫎鍙傛暟閰嶇疆 + */ + @RequiresPermissions("system:config:remove") + @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.DELETE) + @DeleteMapping("/{configIds}") + public AjaxResult remove(@PathVariable Long[] configIds) + { + configService.deleteConfigByIds(configIds); + return success(); + } + + /** + * 鍒锋柊鍙傛暟缂撳瓨 + */ + @RequiresPermissions("system:config:remove") + @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.CLEAN) + @DeleteMapping("/refreshCache") + public AjaxResult refreshCache() + { + configService.resetConfigCache(); + return success(); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDeptController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDeptController.java new file mode 100644 index 0000000..c722d52 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDeptController.java @@ -0,0 +1,133 @@ +package com.se.system.controller; + +import java.util.List; +import org.apache.commons.lang3.ArrayUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.se.common.core.constant.UserConstants; +import com.se.common.core.utils.StringUtils; +import com.se.common.core.web.controller.BaseController; +import com.se.common.core.web.domain.AjaxResult; +import com.se.common.log.annotation.Log; +import com.se.common.log.enums.BusinessType; +import com.se.common.security.annotation.RequiresPermissions; +import com.se.common.security.utils.SecurityUtils; +import com.se.system.api.domain.SysDept; +import com.se.system.service.ISysDeptService; + +/** + * 閮ㄩ棬淇℃伅 + * + * @author admin + */ +@RestController +@RequestMapping("/dept") +public class SysDeptController extends BaseController +{ + @Autowired + private ISysDeptService deptService; + + /** + * 鑾峰彇閮ㄩ棬鍒楄〃 + */ + @RequiresPermissions("system:dept:list") + @GetMapping("/list") + public AjaxResult list(SysDept dept) + { + List<SysDept> depts = deptService.selectDeptList(dept); + return success(depts); + } + + /** + * 鏌ヨ閮ㄩ棬鍒楄〃锛堟帓闄よ妭鐐癸級 + */ + @RequiresPermissions("system:dept:list") + @GetMapping("/list/exclude/{deptId}") + public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) + { + List<SysDept> depts = deptService.selectDeptList(new SysDept()); + depts.removeIf(d -> d.getDeptId().intValue() == deptId || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + "")); + return success(depts); + } + + /** + * 鏍规嵁閮ㄩ棬缂栧彿鑾峰彇璇︾粏淇℃伅 + */ + @RequiresPermissions("system:dept:query") + @GetMapping(value = "/{deptId}") + public AjaxResult getInfo(@PathVariable Long deptId) + { + deptService.checkDeptDataScope(deptId); + return success(deptService.selectDeptById(deptId)); + } + + /** + * 鏂板閮ㄩ棬 + */ + @RequiresPermissions("system:dept:add") + @Log(title = "閮ㄩ棬绠$悊", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysDept dept) + { + if (!deptService.checkDeptNameUnique(dept)) + { + return error("鏂板閮ㄩ棬'" + dept.getDeptName() + "'澶辫触锛岄儴闂ㄥ悕绉板凡瀛樺湪"); + } + dept.setCreateBy(SecurityUtils.getUsername()); + return toAjax(deptService.insertDept(dept)); + } + + /** + * 淇敼閮ㄩ棬 + */ + @RequiresPermissions("system:dept:edit") + @Log(title = "閮ㄩ棬绠$悊", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysDept dept) + { + Long deptId = dept.getDeptId(); + deptService.checkDeptDataScope(deptId); + if (!deptService.checkDeptNameUnique(dept)) + { + return error("淇敼閮ㄩ棬'" + dept.getDeptName() + "'澶辫触锛岄儴闂ㄥ悕绉板凡瀛樺湪"); + } + else if (dept.getParentId().equals(deptId)) + { + return error("淇敼閮ㄩ棬'" + dept.getDeptName() + "'澶辫触锛屼笂绾ч儴闂ㄤ笉鑳芥槸鑷繁"); + } + else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) && deptService.selectNormalChildrenDeptById(deptId) > 0) + { + return error("璇ラ儴闂ㄥ寘鍚湭鍋滅敤鐨勫瓙閮ㄩ棬锛�"); + } + dept.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(deptService.updateDept(dept)); + } + + /** + * 鍒犻櫎閮ㄩ棬 + */ + @RequiresPermissions("system:dept:remove") + @Log(title = "閮ㄩ棬绠$悊", businessType = BusinessType.DELETE) + @DeleteMapping("/{deptId}") + public AjaxResult remove(@PathVariable Long deptId) + { + if (deptService.hasChildByDeptId(deptId)) + { + return warn("瀛樺湪涓嬬骇閮ㄩ棬,涓嶅厑璁稿垹闄�"); + } + if (deptService.checkDeptExistUser(deptId)) + { + return warn("閮ㄩ棬瀛樺湪鐢ㄦ埛,涓嶅厑璁稿垹闄�"); + } + deptService.checkDeptDataScope(deptId); + return toAjax(deptService.deleteDeptById(deptId)); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDictDataController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDictDataController.java new file mode 100644 index 0000000..51be763 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDictDataController.java @@ -0,0 +1,122 @@ +package com.se.system.controller; + +import java.util.ArrayList; +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.se.common.core.utils.StringUtils; +import com.se.common.core.utils.poi.ExcelUtil; +import com.se.common.core.web.controller.BaseController; +import com.se.common.core.web.domain.AjaxResult; +import com.se.common.core.web.page.TableDataInfo; +import com.se.common.log.annotation.Log; +import com.se.common.log.enums.BusinessType; +import com.se.common.security.annotation.RequiresPermissions; +import com.se.common.security.utils.SecurityUtils; +import com.se.system.api.domain.SysDictData; +import com.se.system.service.ISysDictDataService; +import com.se.system.service.ISysDictTypeService; + +/** + * 鏁版嵁瀛楀吀淇℃伅 + * + * @author admin + */ +@RestController +@RequestMapping("/dict/data") +public class SysDictDataController extends BaseController +{ + @Autowired + private ISysDictDataService dictDataService; + + @Autowired + private ISysDictTypeService dictTypeService; + + @RequiresPermissions("system:dict:list") + @GetMapping("/list") + public TableDataInfo list(SysDictData dictData) + { + startPage(); + List<SysDictData> list = dictDataService.selectDictDataList(dictData); + return getDataTable(list); + } + + @Log(title = "瀛楀吀鏁版嵁", businessType = BusinessType.EXPORT) + @RequiresPermissions("system:dict:export") + @PostMapping("/export") + public void export(HttpServletResponse response, SysDictData dictData) + { + List<SysDictData> list = dictDataService.selectDictDataList(dictData); + ExcelUtil<SysDictData> util = new ExcelUtil<SysDictData>(SysDictData.class); + util.exportExcel(response, list, "瀛楀吀鏁版嵁"); + } + + /** + * 鏌ヨ瀛楀吀鏁版嵁璇︾粏 + */ + @RequiresPermissions("system:dict:query") + @GetMapping(value = "/{dictCode}") + public AjaxResult getInfo(@PathVariable Long dictCode) + { + return success(dictDataService.selectDictDataById(dictCode)); + } + + /** + * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁淇℃伅 + */ + @GetMapping(value = "/type/{dictType}") + public AjaxResult dictType(@PathVariable String dictType) + { + List<SysDictData> data = dictTypeService.selectDictDataByType(dictType); + if (StringUtils.isNull(data)) + { + data = new ArrayList<SysDictData>(); + } + return success(data); + } + + /** + * 鏂板瀛楀吀绫诲瀷 + */ + @RequiresPermissions("system:dict:add") + @Log(title = "瀛楀吀鏁版嵁", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysDictData dict) + { + dict.setCreateBy(SecurityUtils.getUsername()); + return toAjax(dictDataService.insertDictData(dict)); + } + + /** + * 淇敼淇濆瓨瀛楀吀绫诲瀷 + */ + @RequiresPermissions("system:dict:edit") + @Log(title = "瀛楀吀鏁版嵁", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysDictData dict) + { + dict.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(dictDataService.updateDictData(dict)); + } + + /** + * 鍒犻櫎瀛楀吀绫诲瀷 + */ + @RequiresPermissions("system:dict:remove") + @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.DELETE) + @DeleteMapping("/{dictCodes}") + public AjaxResult remove(@PathVariable Long[] dictCodes) + { + dictDataService.deleteDictDataByIds(dictCodes); + return success(); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDictTypeController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDictTypeController.java new file mode 100644 index 0000000..8762592 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDictTypeController.java @@ -0,0 +1,132 @@ +package com.se.system.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.se.common.core.utils.poi.ExcelUtil; +import com.se.common.core.web.controller.BaseController; +import com.se.common.core.web.domain.AjaxResult; +import com.se.common.core.web.page.TableDataInfo; +import com.se.common.log.annotation.Log; +import com.se.common.log.enums.BusinessType; +import com.se.common.security.annotation.RequiresPermissions; +import com.se.common.security.utils.SecurityUtils; +import com.se.system.api.domain.SysDictType; +import com.se.system.service.ISysDictTypeService; + +/** + * 鏁版嵁瀛楀吀淇℃伅 + * + * @author admin + */ +@RestController +@RequestMapping("/dict/type") +public class SysDictTypeController extends BaseController +{ + @Autowired + private ISysDictTypeService dictTypeService; + + @RequiresPermissions("system:dict:list") + @GetMapping("/list") + public TableDataInfo list(SysDictType dictType) + { + startPage(); + List<SysDictType> list = dictTypeService.selectDictTypeList(dictType); + return getDataTable(list); + } + + @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.EXPORT) + @RequiresPermissions("system:dict:export") + @PostMapping("/export") + public void export(HttpServletResponse response, SysDictType dictType) + { + List<SysDictType> list = dictTypeService.selectDictTypeList(dictType); + ExcelUtil<SysDictType> util = new ExcelUtil<SysDictType>(SysDictType.class); + util.exportExcel(response, list, "瀛楀吀绫诲瀷"); + } + + /** + * 鏌ヨ瀛楀吀绫诲瀷璇︾粏 + */ + @RequiresPermissions("system:dict:query") + @GetMapping(value = "/{dictId}") + public AjaxResult getInfo(@PathVariable Long dictId) + { + return success(dictTypeService.selectDictTypeById(dictId)); + } + + /** + * 鏂板瀛楀吀绫诲瀷 + */ + @RequiresPermissions("system:dict:add") + @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysDictType dict) + { + if (!dictTypeService.checkDictTypeUnique(dict)) + { + return error("鏂板瀛楀吀'" + dict.getDictName() + "'澶辫触锛屽瓧鍏哥被鍨嬪凡瀛樺湪"); + } + dict.setCreateBy(SecurityUtils.getUsername()); + return toAjax(dictTypeService.insertDictType(dict)); + } + + /** + * 淇敼瀛楀吀绫诲瀷 + */ + @RequiresPermissions("system:dict:edit") + @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysDictType dict) + { + if (!dictTypeService.checkDictTypeUnique(dict)) + { + return error("淇敼瀛楀吀'" + dict.getDictName() + "'澶辫触锛屽瓧鍏哥被鍨嬪凡瀛樺湪"); + } + dict.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(dictTypeService.updateDictType(dict)); + } + + /** + * 鍒犻櫎瀛楀吀绫诲瀷 + */ + @RequiresPermissions("system:dict:remove") + @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.DELETE) + @DeleteMapping("/{dictIds}") + public AjaxResult remove(@PathVariable Long[] dictIds) + { + dictTypeService.deleteDictTypeByIds(dictIds); + return success(); + } + + /** + * 鍒锋柊瀛楀吀缂撳瓨 + */ + @RequiresPermissions("system:dict:remove") + @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.CLEAN) + @DeleteMapping("/refreshCache") + public AjaxResult refreshCache() + { + dictTypeService.resetDictCache(); + return success(); + } + + /** + * 鑾峰彇瀛楀吀閫夋嫨妗嗗垪琛� + */ + @GetMapping("/optionselect") + public AjaxResult optionselect() + { + List<SysDictType> dictTypes = dictTypeService.selectDictTypeAll(); + return success(dictTypes); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysLogininforController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysLogininforController.java new file mode 100644 index 0000000..4f5092b --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysLogininforController.java @@ -0,0 +1,92 @@ +package com.se.system.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.se.common.core.constant.CacheConstants; +import com.se.common.core.utils.poi.ExcelUtil; +import com.se.common.core.web.controller.BaseController; +import com.se.common.core.web.domain.AjaxResult; +import com.se.common.core.web.page.TableDataInfo; +import com.se.common.log.annotation.Log; +import com.se.common.log.enums.BusinessType; +import com.se.common.redis.service.RedisService; +import com.se.common.security.annotation.InnerAuth; +import com.se.common.security.annotation.RequiresPermissions; +import com.se.system.api.domain.SysLogininfor; +import com.se.system.service.ISysLogininforService; + +/** + * 绯荤粺璁块棶璁板綍 + * + * @author admin + */ +@RestController +@RequestMapping("/logininfor") +public class SysLogininforController extends BaseController +{ + @Autowired + private ISysLogininforService logininforService; + + @Autowired + private RedisService redisService; + + @RequiresPermissions("system:logininfor:list") + @GetMapping("/list") + public TableDataInfo list(SysLogininfor logininfor) + { + startPage(); + List<SysLogininfor> list = logininforService.selectLogininforList(logininfor); + return getDataTable(list); + } + + @Log(title = "鐧诲綍鏃ュ織", businessType = BusinessType.EXPORT) + @RequiresPermissions("system:logininfor:export") + @PostMapping("/export") + public void export(HttpServletResponse response, SysLogininfor logininfor) + { + List<SysLogininfor> list = logininforService.selectLogininforList(logininfor); + ExcelUtil<SysLogininfor> util = new ExcelUtil<SysLogininfor>(SysLogininfor.class); + util.exportExcel(response, list, "鐧诲綍鏃ュ織"); + } + + @RequiresPermissions("system:logininfor:remove") + @Log(title = "鐧诲綍鏃ュ織", businessType = BusinessType.DELETE) + @DeleteMapping("/{infoIds}") + public AjaxResult remove(@PathVariable Long[] infoIds) + { + return toAjax(logininforService.deleteLogininforByIds(infoIds)); + } + + @RequiresPermissions("system:logininfor:remove") + @Log(title = "鐧诲綍鏃ュ織", businessType = BusinessType.DELETE) + @DeleteMapping("/clean") + public AjaxResult clean() + { + logininforService.cleanLogininfor(); + return success(); + } + + @RequiresPermissions("system:logininfor:unlock") + @Log(title = "璐︽埛瑙i攣", businessType = BusinessType.OTHER) + @GetMapping("/unlock/{userName}") + public AjaxResult unlock(@PathVariable("userName") String userName) + { + redisService.deleteObject(CacheConstants.PWD_ERR_CNT_KEY + userName); + return success(); + } + + @InnerAuth + @PostMapping + public AjaxResult add(@RequestBody SysLogininfor logininfor) + { + return toAjax(logininforService.insertLogininfor(logininfor)); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysMenuController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysMenuController.java new file mode 100644 index 0000000..4b87041 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysMenuController.java @@ -0,0 +1,160 @@ +package com.se.system.controller; + +import java.util.List; + +import com.se.system.domain.SysMenu; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.se.common.core.constant.UserConstants; +import com.se.common.core.utils.StringUtils; +import com.se.common.core.web.controller.BaseController; +import com.se.common.core.web.domain.AjaxResult; +import com.se.common.log.annotation.Log; +import com.se.common.log.enums.BusinessType; +import com.se.common.security.annotation.RequiresPermissions; +import com.se.common.security.utils.SecurityUtils; +import com.se.system.service.ISysMenuService; + +/** + * 鑿滃崟淇℃伅 + * + * @author admin + */ +@RestController +@RequestMapping("/menu") +public class SysMenuController extends BaseController +{ + @Autowired + private ISysMenuService menuService; + + /** + * 鑾峰彇鑿滃崟鍒楄〃 + */ + @RequiresPermissions("system:menu:list") + @GetMapping("/list") + public AjaxResult list(SysMenu menu) + { + Long userId = SecurityUtils.getUserId(); + List<SysMenu> menus = menuService.selectMenuList(menu, userId); + return success(menus); + } + + /** + * 鏍规嵁鑿滃崟缂栧彿鑾峰彇璇︾粏淇℃伅 + */ + @RequiresPermissions("system:menu:query") + @GetMapping(value = "/{menuId}") + public AjaxResult getInfo(@PathVariable Long menuId) + { + return success(menuService.selectMenuById(menuId)); + } + + /** + * 鑾峰彇鑿滃崟涓嬫媺鏍戝垪琛� + */ + @GetMapping("/treeselect") + public AjaxResult treeselect(SysMenu menu) + { + Long userId = SecurityUtils.getUserId(); + List<SysMenu> menus = menuService.selectMenuList(menu, userId); + return success(menuService.buildMenuTreeSelect(menus)); + } + + /** + * 鍔犺浇瀵瑰簲瑙掕壊鑿滃崟鍒楄〃鏍� + */ + @GetMapping(value = "/roleMenuTreeselect/{roleId}") + public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId) + { + Long userId = SecurityUtils.getUserId(); + List<SysMenu> menus = menuService.selectMenuList(userId); + AjaxResult ajax = AjaxResult.success(); + ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId)); + ajax.put("menus", menuService.buildMenuTreeSelect(menus)); + return ajax; + } + + /** + * 鏂板鑿滃崟 + */ + @RequiresPermissions("system:menu:add") + @Log(title = "鑿滃崟绠$悊", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysMenu menu) + { + if (!menuService.checkMenuNameUnique(menu)) + { + return error("鏂板鑿滃崟'" + menu.getMenuName() + "'澶辫触锛岃彍鍗曞悕绉板凡瀛樺湪"); + } + else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) + { + return error("鏂板鑿滃崟'" + menu.getMenuName() + "'澶辫触锛屽湴鍧�蹇呴』浠ttp(s)://寮�澶�"); + } + menu.setCreateBy(SecurityUtils.getUsername()); + return toAjax(menuService.insertMenu(menu)); + } + + /** + * 淇敼鑿滃崟 + */ + @RequiresPermissions("system:menu:edit") + @Log(title = "鑿滃崟绠$悊", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysMenu menu) + { + if (!menuService.checkMenuNameUnique(menu)) + { + return error("淇敼鑿滃崟'" + menu.getMenuName() + "'澶辫触锛岃彍鍗曞悕绉板凡瀛樺湪"); + } + else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) + { + return error("淇敼鑿滃崟'" + menu.getMenuName() + "'澶辫触锛屽湴鍧�蹇呴』浠ttp(s)://寮�澶�"); + } + else if (menu.getMenuId().equals(menu.getParentId())) + { + return error("淇敼鑿滃崟'" + menu.getMenuName() + "'澶辫触锛屼笂绾ц彍鍗曚笉鑳介�夋嫨鑷繁"); + } + menu.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(menuService.updateMenu(menu)); + } + + /** + * 鍒犻櫎鑿滃崟 + */ + @RequiresPermissions("system:menu:remove") + @Log(title = "鑿滃崟绠$悊", businessType = BusinessType.DELETE) + @DeleteMapping("/{menuId}") + public AjaxResult remove(@PathVariable("menuId") Long menuId) + { + if (menuService.hasChildByMenuId(menuId)) + { + return warn("瀛樺湪瀛愯彍鍗�,涓嶅厑璁稿垹闄�"); + } + if (menuService.checkMenuExistRole(menuId)) + { + return warn("鑿滃崟宸插垎閰�,涓嶅厑璁稿垹闄�"); + } + return toAjax(menuService.deleteMenuById(menuId)); + } + + /** + * 鑾峰彇璺敱淇℃伅 + * + * @return 璺敱淇℃伅 + */ + @GetMapping("getRouters") + public AjaxResult getRouters() + { + Long userId = SecurityUtils.getUserId(); + List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId); + return success(menuService.buildMenus(menus)); + } +} \ No newline at end of file diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysNoticeController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysNoticeController.java new file mode 100644 index 0000000..7b1f4a8 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysNoticeController.java @@ -0,0 +1,93 @@ +package com.se.system.controller; + +import java.util.List; + +import com.se.system.domain.SysNotice; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.se.common.core.web.controller.BaseController; +import com.se.common.core.web.domain.AjaxResult; +import com.se.common.core.web.page.TableDataInfo; +import com.se.common.log.annotation.Log; +import com.se.common.log.enums.BusinessType; +import com.se.common.security.annotation.RequiresPermissions; +import com.se.common.security.utils.SecurityUtils; +import com.se.system.service.ISysNoticeService; + +/** + * 鍏憡 淇℃伅鎿嶄綔澶勭悊 + * + * @author admin + */ +@RestController +@RequestMapping("/notice") +public class SysNoticeController extends BaseController +{ + @Autowired + private ISysNoticeService noticeService; + + /** + * 鑾峰彇閫氱煡鍏憡鍒楄〃 + */ + @RequiresPermissions("system:notice:list") + @GetMapping("/list") + public TableDataInfo list(SysNotice notice) + { + startPage(); + List<SysNotice> list = noticeService.selectNoticeList(notice); + return getDataTable(list); + } + + /** + * 鏍规嵁閫氱煡鍏憡缂栧彿鑾峰彇璇︾粏淇℃伅 + */ + @RequiresPermissions("system:notice:query") + @GetMapping(value = "/{noticeId}") + public AjaxResult getInfo(@PathVariable Long noticeId) + { + return success(noticeService.selectNoticeById(noticeId)); + } + + /** + * 鏂板閫氱煡鍏憡 + */ + @RequiresPermissions("system:notice:add") + @Log(title = "閫氱煡鍏憡", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysNotice notice) + { + notice.setCreateBy(SecurityUtils.getUsername()); + return toAjax(noticeService.insertNotice(notice)); + } + + /** + * 淇敼閫氱煡鍏憡 + */ + @RequiresPermissions("system:notice:edit") + @Log(title = "閫氱煡鍏憡", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysNotice notice) + { + notice.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(noticeService.updateNotice(notice)); + } + + /** + * 鍒犻櫎閫氱煡鍏憡 + */ + @RequiresPermissions("system:notice:remove") + @Log(title = "閫氱煡鍏憡", businessType = BusinessType.DELETE) + @DeleteMapping("/{noticeIds}") + public AjaxResult remove(@PathVariable Long[] noticeIds) + { + return toAjax(noticeService.deleteNoticeByIds(noticeIds)); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysOperlogController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysOperlogController.java new file mode 100644 index 0000000..e07f9be --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysOperlogController.java @@ -0,0 +1,78 @@ +package com.se.system.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.se.common.core.utils.poi.ExcelUtil; +import com.se.common.core.web.controller.BaseController; +import com.se.common.core.web.domain.AjaxResult; +import com.se.common.core.web.page.TableDataInfo; +import com.se.common.log.annotation.Log; +import com.se.common.log.enums.BusinessType; +import com.se.common.security.annotation.InnerAuth; +import com.se.common.security.annotation.RequiresPermissions; +import com.se.system.api.domain.SysOperLog; +import com.se.system.service.ISysOperLogService; + +/** + * 鎿嶄綔鏃ュ織璁板綍 + * + * @author admin + */ +@RestController +@RequestMapping("/operlog") +public class SysOperlogController extends BaseController +{ + @Autowired + private ISysOperLogService operLogService; + + @RequiresPermissions("system:operlog:list") + @GetMapping("/list") + public TableDataInfo list(SysOperLog operLog) + { + startPage(); + List<SysOperLog> list = operLogService.selectOperLogList(operLog); + return getDataTable(list); + } + + @Log(title = "鎿嶄綔鏃ュ織", businessType = BusinessType.EXPORT) + @RequiresPermissions("system:operlog:export") + @PostMapping("/export") + public void export(HttpServletResponse response, SysOperLog operLog) + { + List<SysOperLog> list = operLogService.selectOperLogList(operLog); + ExcelUtil<SysOperLog> util = new ExcelUtil<SysOperLog>(SysOperLog.class); + util.exportExcel(response, list, "鎿嶄綔鏃ュ織"); + } + + @Log(title = "鎿嶄綔鏃ュ織", businessType = BusinessType.DELETE) + @RequiresPermissions("system:operlog:remove") + @DeleteMapping("/{operIds}") + public AjaxResult remove(@PathVariable Long[] operIds) + { + return toAjax(operLogService.deleteOperLogByIds(operIds)); + } + + @RequiresPermissions("system:operlog:remove") + @Log(title = "鎿嶄綔鏃ュ織", businessType = BusinessType.CLEAN) + @DeleteMapping("/clean") + public AjaxResult clean() + { + operLogService.cleanOperLog(); + return success(); + } + + @InnerAuth + @PostMapping + public AjaxResult add(@RequestBody SysOperLog operLog) + { + return toAjax(operLogService.insertOperlog(operLog)); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysPostController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysPostController.java new file mode 100644 index 0000000..b45bb70 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysPostController.java @@ -0,0 +1,131 @@ +package com.se.system.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.se.system.domain.SysPost; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.se.common.core.utils.poi.ExcelUtil; +import com.se.common.core.web.controller.BaseController; +import com.se.common.core.web.domain.AjaxResult; +import com.se.common.core.web.page.TableDataInfo; +import com.se.common.log.annotation.Log; +import com.se.common.log.enums.BusinessType; +import com.se.common.security.annotation.RequiresPermissions; +import com.se.common.security.utils.SecurityUtils; +import com.se.system.service.ISysPostService; + +/** + * 宀椾綅淇℃伅鎿嶄綔澶勭悊 + * + * @author admin + */ +@RestController +@RequestMapping("/post") +public class SysPostController extends BaseController +{ + @Autowired + private ISysPostService postService; + + /** + * 鑾峰彇宀椾綅鍒楄〃 + */ + @RequiresPermissions("system:post:list") + @GetMapping("/list") + public TableDataInfo list(SysPost post) + { + startPage(); + List<SysPost> list = postService.selectPostList(post); + return getDataTable(list); + } + + @Log(title = "宀椾綅绠$悊", businessType = BusinessType.EXPORT) + @RequiresPermissions("system:post:export") + @PostMapping("/export") + public void export(HttpServletResponse response, SysPost post) + { + List<SysPost> list = postService.selectPostList(post); + ExcelUtil<SysPost> util = new ExcelUtil<SysPost>(SysPost.class); + util.exportExcel(response, list, "宀椾綅鏁版嵁"); + } + + /** + * 鏍规嵁宀椾綅缂栧彿鑾峰彇璇︾粏淇℃伅 + */ + @RequiresPermissions("system:post:query") + @GetMapping(value = "/{postId}") + public AjaxResult getInfo(@PathVariable Long postId) + { + return success(postService.selectPostById(postId)); + } + + /** + * 鏂板宀椾綅 + */ + @RequiresPermissions("system:post:add") + @Log(title = "宀椾綅绠$悊", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysPost post) + { + if (!postService.checkPostNameUnique(post)) + { + return error("鏂板宀椾綅'" + post.getPostName() + "'澶辫触锛屽矖浣嶅悕绉板凡瀛樺湪"); + } + else if (!postService.checkPostCodeUnique(post)) + { + return error("鏂板宀椾綅'" + post.getPostName() + "'澶辫触锛屽矖浣嶇紪鐮佸凡瀛樺湪"); + } + post.setCreateBy(SecurityUtils.getUsername()); + return toAjax(postService.insertPost(post)); + } + + /** + * 淇敼宀椾綅 + */ + @RequiresPermissions("system:post:edit") + @Log(title = "宀椾綅绠$悊", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysPost post) + { + if (!postService.checkPostNameUnique(post)) + { + return error("淇敼宀椾綅'" + post.getPostName() + "'澶辫触锛屽矖浣嶅悕绉板凡瀛樺湪"); + } + else if (!postService.checkPostCodeUnique(post)) + { + return error("淇敼宀椾綅'" + post.getPostName() + "'澶辫触锛屽矖浣嶇紪鐮佸凡瀛樺湪"); + } + post.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(postService.updatePost(post)); + } + + /** + * 鍒犻櫎宀椾綅 + */ + @RequiresPermissions("system:post:remove") + @Log(title = "宀椾綅绠$悊", businessType = BusinessType.DELETE) + @DeleteMapping("/{postIds}") + public AjaxResult remove(@PathVariable Long[] postIds) + { + return toAjax(postService.deletePostByIds(postIds)); + } + + /** + * 鑾峰彇宀椾綅閫夋嫨妗嗗垪琛� + */ + @GetMapping("/optionselect") + public AjaxResult optionselect() + { + List<SysPost> posts = postService.selectPostAll(); + return success(posts); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysProfileController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysProfileController.java new file mode 100644 index 0000000..2cfdc41 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysProfileController.java @@ -0,0 +1,154 @@ +package com.se.system.controller; + +import java.util.Arrays; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; +import com.se.common.core.domain.R; +import com.se.common.core.utils.StringUtils; +import com.se.common.core.utils.file.FileTypeUtils; +import com.se.common.core.utils.file.MimeTypeUtils; +import com.se.common.core.web.controller.BaseController; +import com.se.common.core.web.domain.AjaxResult; +import com.se.common.log.annotation.Log; +import com.se.common.log.enums.BusinessType; +import com.se.common.security.service.TokenService; +import com.se.common.security.utils.SecurityUtils; +import com.se.system.api.RemoteFileService; +import com.se.system.api.domain.SysFile; +import com.se.system.api.domain.SysUser; +import com.se.system.api.model.LoginUser; +import com.se.system.service.ISysUserService; + +/** + * 涓汉淇℃伅 涓氬姟澶勭悊 + * + * @author admin + */ +@RestController +@RequestMapping("/user/profile") +public class SysProfileController extends BaseController +{ + @Autowired + private ISysUserService userService; + + @Autowired + private TokenService tokenService; + + @Autowired + private RemoteFileService remoteFileService; + + /** + * 涓汉淇℃伅 + */ + @GetMapping + public AjaxResult profile() + { + String username = SecurityUtils.getUsername(); + SysUser user = userService.selectUserByUserName(username); + AjaxResult ajax = AjaxResult.success(user); + ajax.put("roleGroup", userService.selectUserRoleGroup(username)); + ajax.put("postGroup", userService.selectUserPostGroup(username)); + return ajax; + } + + /** + * 淇敼鐢ㄦ埛 + */ + @Log(title = "涓汉淇℃伅", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult updateProfile(@RequestBody SysUser user) + { + LoginUser loginUser = SecurityUtils.getLoginUser(); + SysUser currentUser = loginUser.getSysUser(); + currentUser.setNickName(user.getNickName()); + currentUser.setEmail(user.getEmail()); + currentUser.setPhonenumber(user.getPhonenumber()); + currentUser.setSex(user.getSex()); + if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser)) + { + return error("淇敼鐢ㄦ埛'" + loginUser.getUsername() + "'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪"); + } + if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser)) + { + return error("淇敼鐢ㄦ埛'" + loginUser.getUsername() + "'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪"); + } + if (userService.updateUserProfile(currentUser)) + { + // 鏇存柊缂撳瓨鐢ㄦ埛淇℃伅 + tokenService.setLoginUser(loginUser); + return success(); + } + return error("淇敼涓汉淇℃伅寮傚父锛岃鑱旂郴绠$悊鍛�"); + } + + /** + * 閲嶇疆瀵嗙爜 + */ + @Log(title = "涓汉淇℃伅", businessType = BusinessType.UPDATE) + @PutMapping("/updatePwd") + public AjaxResult updatePwd(String oldPassword, String newPassword) + { + String username = SecurityUtils.getUsername(); + SysUser user = userService.selectUserByUserName(username); + String password = user.getPassword(); + if (!SecurityUtils.matchesPassword(oldPassword, password)) + { + return error("淇敼瀵嗙爜澶辫触锛屾棫瀵嗙爜閿欒"); + } + if (SecurityUtils.matchesPassword(newPassword, password)) + { + return error("鏂板瘑鐮佷笉鑳戒笌鏃у瘑鐮佺浉鍚�"); + } + newPassword = SecurityUtils.encryptPassword(newPassword); + if (userService.resetUserPwd(username, newPassword) > 0) + { + // 鏇存柊缂撳瓨鐢ㄦ埛瀵嗙爜 + LoginUser loginUser = SecurityUtils.getLoginUser(); + loginUser.getSysUser().setPassword(newPassword); + tokenService.setLoginUser(loginUser); + return success(); + } + return error("淇敼瀵嗙爜寮傚父锛岃鑱旂郴绠$悊鍛�"); + } + + /** + * 澶村儚涓婁紶 + */ + @Log(title = "鐢ㄦ埛澶村儚", businessType = BusinessType.UPDATE) + @PostMapping("/avatar") + public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) + { + if (!file.isEmpty()) + { + LoginUser loginUser = SecurityUtils.getLoginUser(); + String extension = FileTypeUtils.getExtension(file); + if (!StringUtils.equalsAnyIgnoreCase(extension, MimeTypeUtils.IMAGE_EXTENSION)) + { + return error("鏂囦欢鏍煎紡涓嶆纭紝璇蜂笂浼�" + Arrays.toString(MimeTypeUtils.IMAGE_EXTENSION) + "鏍煎紡"); + } + R<SysFile> fileResult = remoteFileService.upload(file); + if (StringUtils.isNull(fileResult) || StringUtils.isNull(fileResult.getData())) + { + return error("鏂囦欢鏈嶅姟寮傚父锛岃鑱旂郴绠$悊鍛�"); + } + String url = fileResult.getData().getUrl(); + if (userService.updateUserAvatar(loginUser.getUsername(), url)) + { + AjaxResult ajax = AjaxResult.success(); + ajax.put("imgUrl", url); + // 鏇存柊缂撳瓨鐢ㄦ埛澶村儚 + loginUser.getSysUser().setAvatar(url); + tokenService.setLoginUser(loginUser); + return ajax; + } + } + return error("涓婁紶鍥剧墖寮傚父锛岃鑱旂郴绠$悊鍛�"); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysRoleController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysRoleController.java new file mode 100644 index 0000000..5495969 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysRoleController.java @@ -0,0 +1,240 @@ +package com.se.system.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.se.system.domain.SysUserRole; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.se.common.core.utils.poi.ExcelUtil; +import com.se.common.core.web.controller.BaseController; +import com.se.common.core.web.domain.AjaxResult; +import com.se.common.core.web.page.TableDataInfo; +import com.se.common.log.annotation.Log; +import com.se.common.log.enums.BusinessType; +import com.se.common.security.annotation.RequiresPermissions; +import com.se.common.security.utils.SecurityUtils; +import com.se.system.api.domain.SysDept; +import com.se.system.api.domain.SysRole; +import com.se.system.api.domain.SysUser; +import com.se.system.service.ISysDeptService; +import com.se.system.service.ISysRoleService; +import com.se.system.service.ISysUserService; + +/** + * 瑙掕壊淇℃伅 + * + * @author admin + */ +@RestController +@RequestMapping("/role") +public class SysRoleController extends BaseController +{ + @Autowired + private ISysRoleService roleService; + + @Autowired + private ISysUserService userService; + + @Autowired + private ISysDeptService deptService; + + @RequiresPermissions("system:role:list") + @GetMapping("/list") + public TableDataInfo list(SysRole role) + { + startPage(); + List<SysRole> list = roleService.selectRoleList(role); + return getDataTable(list); + } + + @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.EXPORT) + @RequiresPermissions("system:role:export") + @PostMapping("/export") + public void export(HttpServletResponse response, SysRole role) + { + List<SysRole> list = roleService.selectRoleList(role); + ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class); + util.exportExcel(response, list, "瑙掕壊鏁版嵁"); + } + + /** + * 鏍规嵁瑙掕壊缂栧彿鑾峰彇璇︾粏淇℃伅 + */ + @RequiresPermissions("system:role:query") + @GetMapping(value = "/{roleId}") + public AjaxResult getInfo(@PathVariable Long roleId) + { + roleService.checkRoleDataScope(roleId); + return success(roleService.selectRoleById(roleId)); + } + + /** + * 鏂板瑙掕壊 + */ + @RequiresPermissions("system:role:add") + @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysRole role) + { + if (!roleService.checkRoleNameUnique(role)) + { + return error("鏂板瑙掕壊'" + role.getRoleName() + "'澶辫触锛岃鑹插悕绉板凡瀛樺湪"); + } + else if (!roleService.checkRoleKeyUnique(role)) + { + return error("鏂板瑙掕壊'" + role.getRoleName() + "'澶辫触锛岃鑹叉潈闄愬凡瀛樺湪"); + } + role.setCreateBy(SecurityUtils.getUsername()); + return toAjax(roleService.insertRole(role)); + + } + + /** + * 淇敼淇濆瓨瑙掕壊 + */ + @RequiresPermissions("system:role:edit") + @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysRole role) + { + roleService.checkRoleAllowed(role); + roleService.checkRoleDataScope(role.getRoleId()); + if (!roleService.checkRoleNameUnique(role)) + { + return error("淇敼瑙掕壊'" + role.getRoleName() + "'澶辫触锛岃鑹插悕绉板凡瀛樺湪"); + } + else if (!roleService.checkRoleKeyUnique(role)) + { + return error("淇敼瑙掕壊'" + role.getRoleName() + "'澶辫触锛岃鑹叉潈闄愬凡瀛樺湪"); + } + role.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(roleService.updateRole(role)); + } + + /** + * 淇敼淇濆瓨鏁版嵁鏉冮檺 + */ + @RequiresPermissions("system:role:edit") + @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.UPDATE) + @PutMapping("/dataScope") + public AjaxResult dataScope(@RequestBody SysRole role) + { + roleService.checkRoleAllowed(role); + roleService.checkRoleDataScope(role.getRoleId()); + return toAjax(roleService.authDataScope(role)); + } + + /** + * 鐘舵�佷慨鏀� + */ + @RequiresPermissions("system:role:edit") + @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.UPDATE) + @PutMapping("/changeStatus") + public AjaxResult changeStatus(@RequestBody SysRole role) + { + roleService.checkRoleAllowed(role); + roleService.checkRoleDataScope(role.getRoleId()); + role.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(roleService.updateRoleStatus(role)); + } + + /** + * 鍒犻櫎瑙掕壊 + */ + @RequiresPermissions("system:role:remove") + @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.DELETE) + @DeleteMapping("/{roleIds}") + public AjaxResult remove(@PathVariable Long[] roleIds) + { + return toAjax(roleService.deleteRoleByIds(roleIds)); + } + + /** + * 鑾峰彇瑙掕壊閫夋嫨妗嗗垪琛� + */ + @RequiresPermissions("system:role:query") + @GetMapping("/optionselect") + public AjaxResult optionselect() + { + return success(roleService.selectRoleAll()); + } + /** + * 鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛� + */ + @RequiresPermissions("system:role:list") + @GetMapping("/authUser/allocatedList") + public TableDataInfo allocatedList(SysUser user) + { + startPage(); + List<SysUser> list = userService.selectAllocatedList(user); + return getDataTable(list); + } + + /** + * 鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛� + */ + @RequiresPermissions("system:role:list") + @GetMapping("/authUser/unallocatedList") + public TableDataInfo unallocatedList(SysUser user) + { + startPage(); + List<SysUser> list = userService.selectUnallocatedList(user); + return getDataTable(list); + } + + /** + * 鍙栨秷鎺堟潈鐢ㄦ埛 + */ + @RequiresPermissions("system:role:edit") + @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.GRANT) + @PutMapping("/authUser/cancel") + public AjaxResult cancelAuthUser(@RequestBody SysUserRole userRole) + { + return toAjax(roleService.deleteAuthUser(userRole)); + } + + /** + * 鎵归噺鍙栨秷鎺堟潈鐢ㄦ埛 + */ + @RequiresPermissions("system:role:edit") + @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.GRANT) + @PutMapping("/authUser/cancelAll") + public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds) + { + return toAjax(roleService.deleteAuthUsers(roleId, userIds)); + } + + /** + * 鎵归噺閫夋嫨鐢ㄦ埛鎺堟潈 + */ + @RequiresPermissions("system:role:edit") + @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.GRANT) + @PutMapping("/authUser/selectAll") + public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds) + { + roleService.checkRoleDataScope(roleId); + return toAjax(roleService.insertAuthUsers(roleId, userIds)); + } + + /** + * 鑾峰彇瀵瑰簲瑙掕壊閮ㄩ棬鏍戝垪琛� + */ + @RequiresPermissions("system:role:query") + @GetMapping(value = "/deptTree/{roleId}") + public AjaxResult deptTree(@PathVariable("roleId") Long roleId) + { + AjaxResult ajax = AjaxResult.success(); + ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId)); + ajax.put("depts", deptService.selectDeptTreeList(new SysDept())); + return ajax; + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysUserController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysUserController.java new file mode 100644 index 0000000..3b9d05d --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysUserController.java @@ -0,0 +1,341 @@ +package com.se.system.controller; + +import java.io.IOException; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.lang3.ArrayUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; +import com.se.common.core.domain.R; +import com.se.common.core.utils.StringUtils; +import com.se.common.core.utils.poi.ExcelUtil; +import com.se.common.core.web.controller.BaseController; +import com.se.common.core.web.domain.AjaxResult; +import com.se.common.core.web.page.TableDataInfo; +import com.se.common.log.annotation.Log; +import com.se.common.log.enums.BusinessType; +import com.se.common.security.annotation.InnerAuth; +import com.se.common.security.annotation.RequiresPermissions; +import com.se.common.security.utils.SecurityUtils; +import com.se.system.api.domain.SysDept; +import com.se.system.api.domain.SysRole; +import com.se.system.api.domain.SysUser; +import com.se.system.api.model.LoginUser; +import com.se.system.service.ISysConfigService; +import com.se.system.service.ISysDeptService; +import com.se.system.service.ISysPermissionService; +import com.se.system.service.ISysPostService; +import com.se.system.service.ISysRoleService; +import com.se.system.service.ISysUserService; + +/** + * 鐢ㄦ埛淇℃伅 + * + * @author admin + */ +@RestController +@RequestMapping("/user") +public class SysUserController extends BaseController +{ + @Autowired + private ISysUserService userService; + + @Autowired + private ISysRoleService roleService; + + @Autowired + private ISysDeptService deptService; + + @Autowired + private ISysPostService postService; + + @Autowired + private ISysPermissionService permissionService; + + @Autowired + private ISysConfigService configService; + + /** + * 鑾峰彇鐢ㄦ埛鍒楄〃 + */ + @RequiresPermissions("system:user:list") + @GetMapping("/list") + public TableDataInfo list(SysUser user) + { + startPage(); + List<SysUser> list = userService.selectUserList(user); + return getDataTable(list); + } + + @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.EXPORT) + @RequiresPermissions("system:user:export") + @PostMapping("/export") + public void export(HttpServletResponse response, SysUser user) + { + List<SysUser> list = userService.selectUserList(user); + ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); + util.exportExcel(response, list, "鐢ㄦ埛鏁版嵁"); + } + + @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.IMPORT) + @RequiresPermissions("system:user:import") + @PostMapping("/importData") + public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception + { + ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); + List<SysUser> userList = util.importExcel(file.getInputStream()); + String operName = SecurityUtils.getUsername(); + String message = userService.importUser(userList, updateSupport, operName); + return success(message); + } + + @PostMapping("/importTemplate") + public void importTemplate(HttpServletResponse response) throws IOException + { + ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); + util.importTemplateExcel(response, "鐢ㄦ埛鏁版嵁"); + } + + /** + * 鑾峰彇褰撳墠鐢ㄦ埛淇℃伅 + */ + @InnerAuth + @GetMapping("/info/{username}") + public R<LoginUser> info(@PathVariable("username") String username) + { + SysUser sysUser = userService.selectUserByUserName(username); + if (StringUtils.isNull(sysUser)) + { + return R.fail("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒"); + } + // 瑙掕壊闆嗗悎 + Set<String> roles = permissionService.getRolePermission(sysUser); + // 鏉冮檺闆嗗悎 + Set<String> permissions = permissionService.getMenuPermission(sysUser); + LoginUser sysUserVo = new LoginUser(); + sysUserVo.setSysUser(sysUser); + sysUserVo.setRoles(roles); + sysUserVo.setPermissions(permissions); + return R.ok(sysUserVo); + } + + /** + * 娉ㄥ唽鐢ㄦ埛淇℃伅 + */ + @InnerAuth + @PostMapping("/register") + public R<Boolean> register(@RequestBody SysUser sysUser) + { + String username = sysUser.getUserName(); + if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) + { + return R.fail("褰撳墠绯荤粺娌℃湁寮�鍚敞鍐屽姛鑳斤紒"); + } + if (!userService.checkUserNameUnique(sysUser)) + { + return R.fail("淇濆瓨鐢ㄦ埛'" + username + "'澶辫触锛屾敞鍐岃处鍙峰凡瀛樺湪"); + } + return R.ok(userService.registerUser(sysUser)); + } + + /** + *璁板綍鐢ㄦ埛鐧诲綍IP鍦板潃鍜岀櫥褰曟椂闂� + */ + @InnerAuth + @PutMapping("/recordlogin") + public R<Boolean> recordlogin(@RequestBody SysUser sysUser) + { + return R.ok(userService.updateUserProfile(sysUser)); + } + + /** + * 鑾峰彇鐢ㄦ埛淇℃伅 + * + * @return 鐢ㄦ埛淇℃伅 + */ + @GetMapping("getInfo") + public AjaxResult getInfo() + { + SysUser user = userService.selectUserById(SecurityUtils.getUserId()); + // 瑙掕壊闆嗗悎 + Set<String> roles = permissionService.getRolePermission(user); + // 鏉冮檺闆嗗悎 + Set<String> permissions = permissionService.getMenuPermission(user); + AjaxResult ajax = AjaxResult.success(); + ajax.put("user", user); + ajax.put("roles", roles); + ajax.put("permissions", permissions); + return ajax; + } + + /** + * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇璇︾粏淇℃伅 + */ + @RequiresPermissions("system:user:query") + @GetMapping(value = { "/", "/{userId}" }) + public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) + { + userService.checkUserDataScope(userId); + AjaxResult ajax = AjaxResult.success(); + List<SysRole> 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)) + { + SysUser sysUser = userService.selectUserById(userId); + ajax.put(AjaxResult.DATA_TAG, sysUser); + ajax.put("postIds", postService.selectPostListByUserId(userId)); + ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList())); + } + return ajax; + } + + /** + * 鏂板鐢ㄦ埛 + */ + @RequiresPermissions("system:user:add") + @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysUser user) + { + deptService.checkDeptDataScope(user.getDeptId()); + roleService.checkRoleDataScope(user.getRoleIds()); + if (!userService.checkUserNameUnique(user)) + { + return error("鏂板鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岀櫥褰曡处鍙峰凡瀛樺湪"); + } + else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) + { + return error("鏂板鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪"); + } + else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) + { + return error("鏂板鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪"); + } + user.setCreateBy(SecurityUtils.getUsername()); + user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); + return toAjax(userService.insertUser(user)); + } + + /** + * 淇敼鐢ㄦ埛 + */ + @RequiresPermissions("system:user:edit") + @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysUser user) + { + userService.checkUserAllowed(user); + userService.checkUserDataScope(user.getUserId()); + deptService.checkDeptDataScope(user.getDeptId()); + roleService.checkRoleDataScope(user.getRoleIds()); + if (!userService.checkUserNameUnique(user)) + { + return error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岀櫥褰曡处鍙峰凡瀛樺湪"); + } + else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) + { + return error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪"); + } + else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) + { + return error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪"); + } + user.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(userService.updateUser(user)); + } + + /** + * 鍒犻櫎鐢ㄦ埛 + */ + @RequiresPermissions("system:user:remove") + @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.DELETE) + @DeleteMapping("/{userIds}") + public AjaxResult remove(@PathVariable Long[] userIds) + { + if (ArrayUtils.contains(userIds, SecurityUtils.getUserId())) + { + return error("褰撳墠鐢ㄦ埛涓嶈兘鍒犻櫎"); + } + return toAjax(userService.deleteUserByIds(userIds)); + } + + /** + * 閲嶇疆瀵嗙爜 + */ + @RequiresPermissions("system:user:edit") + @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE) + @PutMapping("/resetPwd") + public AjaxResult resetPwd(@RequestBody SysUser user) + { + userService.checkUserAllowed(user); + userService.checkUserDataScope(user.getUserId()); + user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); + user.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(userService.resetPwd(user)); + } + + /** + * 鐘舵�佷慨鏀� + */ + @RequiresPermissions("system:user:edit") + @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE) + @PutMapping("/changeStatus") + public AjaxResult changeStatus(@RequestBody SysUser user) + { + userService.checkUserAllowed(user); + userService.checkUserDataScope(user.getUserId()); + user.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(userService.updateUserStatus(user)); + } + + /** + * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇鎺堟潈瑙掕壊 + */ + @RequiresPermissions("system:user:query") + @GetMapping("/authRole/{userId}") + public AjaxResult authRole(@PathVariable("userId") Long userId) + { + AjaxResult ajax = AjaxResult.success(); + SysUser user = userService.selectUserById(userId); + List<SysRole> roles = roleService.selectRolesByUserId(userId); + ajax.put("user", user); + ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); + return ajax; + } + + /** + * 鐢ㄦ埛鎺堟潈瑙掕壊 + */ + @RequiresPermissions("system:user:edit") + @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.GRANT) + @PutMapping("/authRole") + public AjaxResult insertAuthRole(Long userId, Long[] roleIds) + { + userService.checkUserDataScope(userId); + roleService.checkRoleDataScope(roleIds); + userService.insertUserAuth(userId, roleIds); + return success(); + } + + /** + * 鑾峰彇閮ㄩ棬鏍戝垪琛� + */ + @RequiresPermissions("system:user:list") + @GetMapping("/deptTree") + public AjaxResult deptTree(SysDept dept) + { + return success(deptService.selectDeptTreeList(dept)); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysUserOnlineController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysUserOnlineController.java new file mode 100644 index 0000000..f5804b5 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysUserOnlineController.java @@ -0,0 +1,84 @@ +package com.se.system.controller; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +import com.se.system.domain.SysUserOnline; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.se.common.core.constant.CacheConstants; +import com.se.common.core.utils.StringUtils; +import com.se.common.core.web.controller.BaseController; +import com.se.common.core.web.domain.AjaxResult; +import com.se.common.core.web.page.TableDataInfo; +import com.se.common.log.annotation.Log; +import com.se.common.log.enums.BusinessType; +import com.se.common.redis.service.RedisService; +import com.se.common.security.annotation.RequiresPermissions; +import com.se.system.api.model.LoginUser; +import com.se.system.service.ISysUserOnlineService; + +/** + * 鍦ㄧ嚎鐢ㄦ埛鐩戞帶 + * + * @author admin + */ +@RestController +@RequestMapping("/online") +public class SysUserOnlineController extends BaseController +{ + @Autowired + private ISysUserOnlineService userOnlineService; + + @Autowired + private RedisService redisService; + + @RequiresPermissions("monitor:online:list") + @GetMapping("/list") + public TableDataInfo list(String ipaddr, String userName) + { + Collection<String> keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*"); + List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>(); + for (String key : keys) + { + LoginUser user = redisService.getCacheObject(key); + if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) + { + userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user)); + } + else if (StringUtils.isNotEmpty(ipaddr)) + { + userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user)); + } + else if (StringUtils.isNotEmpty(userName)) + { + userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user)); + } + else + { + userOnlineList.add(userOnlineService.loginUserToUserOnline(user)); + } + } + Collections.reverse(userOnlineList); + userOnlineList.removeAll(Collections.singleton(null)); + return getDataTable(userOnlineList); + } + + /** + * 寮洪��鐢ㄦ埛 + */ + @RequiresPermissions("monitor:online:forceLogout") + @Log(title = "鍦ㄧ嚎鐢ㄦ埛", businessType = BusinessType.FORCE) + @DeleteMapping("/{tokenId}") + public AjaxResult forceLogout(@PathVariable String tokenId) + { + redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + tokenId); + return success(); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysConfig.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysConfig.java new file mode 100644 index 0000000..e4f1570 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysConfig.java @@ -0,0 +1,111 @@ +package com.se.system.domain; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.se.common.core.annotation.Excel; +import com.se.common.core.annotation.Excel.ColumnType; +import com.se.common.core.web.domain.BaseEntity; + +/** + * 鍙傛暟閰嶇疆琛� sys_config + * + * @author admin + */ +public class SysConfig extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 鍙傛暟涓婚敭 */ + @Excel(name = "鍙傛暟涓婚敭", cellType = ColumnType.NUMERIC) + private Long configId; + + /** 鍙傛暟鍚嶇О */ + @Excel(name = "鍙傛暟鍚嶇О") + private String configName; + + /** 鍙傛暟閿悕 */ + @Excel(name = "鍙傛暟閿悕") + private String configKey; + + /** 鍙傛暟閿�� */ + @Excel(name = "鍙傛暟閿��") + private String configValue; + + /** 绯荤粺鍐呯疆锛圷鏄� N鍚︼級 */ + @Excel(name = "绯荤粺鍐呯疆", readConverterExp = "Y=鏄�,N=鍚�") + private String configType; + + public Long getConfigId() + { + return configId; + } + + public void setConfigId(Long configId) + { + this.configId = configId; + } + + @NotBlank(message = "鍙傛暟鍚嶇О涓嶈兘涓虹┖") + @Size(min = 0, max = 100, message = "鍙傛暟鍚嶇О涓嶈兘瓒呰繃100涓瓧绗�") + public String getConfigName() + { + return configName; + } + + public void setConfigName(String configName) + { + this.configName = configName; + } + + @NotBlank(message = "鍙傛暟閿悕闀垮害涓嶈兘涓虹┖") + @Size(min = 0, max = 100, message = "鍙傛暟閿悕闀垮害涓嶈兘瓒呰繃100涓瓧绗�") + public String getConfigKey() + { + return configKey; + } + + public void setConfigKey(String configKey) + { + this.configKey = configKey; + } + + @NotBlank(message = "鍙傛暟閿�间笉鑳戒负绌�") + @Size(min = 0, max = 500, message = "鍙傛暟閿�奸暱搴︿笉鑳借秴杩�500涓瓧绗�") + public String getConfigValue() + { + return configValue; + } + + public void setConfigValue(String configValue) + { + this.configValue = configValue; + } + + public String getConfigType() + { + return configType; + } + + public void setConfigType(String configType) + { + this.configType = configType; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("configId", getConfigId()) + .append("configName", getConfigName()) + .append("configKey", getConfigKey()) + .append("configValue", getConfigValue()) + .append("configType", getConfigType()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysMenu.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysMenu.java new file mode 100644 index 0000000..a22cecb --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysMenu.java @@ -0,0 +1,274 @@ +package com.se.system.domain; + +import java.util.ArrayList; +import java.util.List; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.se.common.core.web.domain.BaseEntity; + +/** + * 鑿滃崟鏉冮檺琛� sys_menu + * + * @author admin + */ +public class SysMenu extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 鑿滃崟ID */ + private Long menuId; + + /** 鑿滃崟鍚嶇О */ + private String menuName; + + /** 鐖惰彍鍗曞悕绉� */ + private String parentName; + + /** 鐖惰彍鍗旾D */ + private Long parentId; + + /** 鏄剧ず椤哄簭 */ + private Integer orderNum; + + /** 璺敱鍦板潃 */ + private String path; + + /** 缁勪欢璺緞 */ + private String component; + + /** 璺敱鍙傛暟 */ + private String query; + + /** 璺敱鍚嶇О锛岄粯璁ゅ拰璺敱鍦板潃鐩稿悓鐨勯┘宄版牸寮忥紙娉ㄦ剰锛氬洜涓簐ue3鐗堟湰鐨剅outer浼氬垹闄ゅ悕绉扮浉鍚岃矾鐢憋紝涓洪伩鍏嶅悕瀛楃殑鍐茬獊锛岀壒娈婃儏鍐靛彲浠ヨ嚜瀹氫箟锛� */ + private String routeName; + + /** 鏄惁涓哄閾撅紙0鏄� 1鍚︼級 */ + private String isFrame; + + /** 鏄惁缂撳瓨锛�0缂撳瓨 1涓嶇紦瀛橈級 */ + private String isCache; + + /** 绫诲瀷锛圡鐩綍 C鑿滃崟 F鎸夐挳锛� */ + private String menuType; + + /** 鏄剧ず鐘舵�侊紙0鏄剧ず 1闅愯棌锛� */ + private String visible; + + /** 鑿滃崟鐘舵�侊紙0姝e父 1鍋滅敤锛� */ + private String status; + + /** 鏉冮檺瀛楃涓� */ + private String perms; + + /** 鑿滃崟鍥炬爣 */ + private String icon; + + /** 瀛愯彍鍗� */ + private List<SysMenu> children = new ArrayList<SysMenu>(); + + public Long getMenuId() + { + return menuId; + } + + public void setMenuId(Long menuId) + { + this.menuId = menuId; + } + + @NotBlank(message = "鑿滃崟鍚嶇О涓嶈兘涓虹┖") + @Size(min = 0, max = 50, message = "鑿滃崟鍚嶇О闀垮害涓嶈兘瓒呰繃50涓瓧绗�") + public String getMenuName() + { + return menuName; + } + + public void setMenuName(String menuName) + { + this.menuName = menuName; + } + + public String getParentName() + { + return parentName; + } + + public void setParentName(String parentName) + { + this.parentName = parentName; + } + + public Long getParentId() + { + return parentId; + } + + public void setParentId(Long parentId) + { + this.parentId = parentId; + } + + @NotNull(message = "鏄剧ず椤哄簭涓嶈兘涓虹┖") + public Integer getOrderNum() + { + return orderNum; + } + + public void setOrderNum(Integer orderNum) + { + this.orderNum = orderNum; + } + + @Size(min = 0, max = 200, message = "璺敱鍦板潃涓嶈兘瓒呰繃200涓瓧绗�") + public String getPath() + { + return path; + } + + public void setPath(String path) + { + this.path = path; + } + + @Size(min = 0, max = 200, message = "缁勪欢璺緞涓嶈兘瓒呰繃255涓瓧绗�") + public String getComponent() + { + return component; + } + + public void setComponent(String component) + { + this.component = component; + } + + public String getQuery() + { + return query; + } + + public void setQuery(String query) + { + this.query = query; + } + + public String getRouteName() + { + return routeName; + } + + public void setRouteName(String routeName) + { + this.routeName = routeName; + } + + public String getIsFrame() + { + return isFrame; + } + + public void setIsFrame(String isFrame) + { + this.isFrame = isFrame; + } + + public String getIsCache() + { + return isCache; + } + + public void setIsCache(String isCache) + { + this.isCache = isCache; + } + + @NotBlank(message = "鑿滃崟绫诲瀷涓嶈兘涓虹┖") + public String getMenuType() + { + return menuType; + } + + public void setMenuType(String menuType) + { + this.menuType = menuType; + } + + public String getVisible() + { + return visible; + } + + public void setVisible(String visible) + { + this.visible = visible; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } + + @Size(min = 0, max = 100, message = "鏉冮檺鏍囪瘑闀垮害涓嶈兘瓒呰繃100涓瓧绗�") + public String getPerms() + { + return perms; + } + + public void setPerms(String perms) + { + this.perms = perms; + } + + public String getIcon() + { + return icon; + } + + public void setIcon(String icon) + { + this.icon = icon; + } + + public List<SysMenu> getChildren() + { + return children; + } + + public void setChildren(List<SysMenu> children) + { + this.children = children; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("menuId", getMenuId()) + .append("menuName", getMenuName()) + .append("parentId", getParentId()) + .append("orderNum", getOrderNum()) + .append("path", getPath()) + .append("component", getComponent()) + .append("query", getQuery()) + .append("routeName", getRouteName()) + .append("isFrame", getIsFrame()) + .append("IsCache", getIsCache()) + .append("menuType", getMenuType()) + .append("visible", getVisible()) + .append("status ", getStatus()) + .append("perms", getPerms()) + .append("icon", getIcon()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysNotice.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysNotice.java new file mode 100644 index 0000000..11c901a --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysNotice.java @@ -0,0 +1,102 @@ +package com.se.system.domain; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.se.common.core.web.domain.BaseEntity; +import com.se.common.core.xss.Xss; + +/** + * 閫氱煡鍏憡琛� sys_notice + * + * @author admin + */ +public class SysNotice extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 鍏憡ID */ + private Long noticeId; + + /** 鍏憡鏍囬 */ + private String noticeTitle; + + /** 鍏憡绫诲瀷锛�1閫氱煡 2鍏憡锛� */ + private String noticeType; + + /** 鍏憡鍐呭 */ + private String noticeContent; + + /** 鍏憡鐘舵�侊紙0姝e父 1鍏抽棴锛� */ + private String status; + + public Long getNoticeId() + { + return noticeId; + } + + public void setNoticeId(Long noticeId) + { + this.noticeId = noticeId; + } + + public void setNoticeTitle(String noticeTitle) + { + this.noticeTitle = noticeTitle; + } + + @Xss(message = "鍏憡鏍囬涓嶈兘鍖呭惈鑴氭湰瀛楃") + @NotBlank(message = "鍏憡鏍囬涓嶈兘涓虹┖") + @Size(min = 0, max = 50, message = "鍏憡鏍囬涓嶈兘瓒呰繃50涓瓧绗�") + public String getNoticeTitle() + { + return noticeTitle; + } + + public void setNoticeType(String noticeType) + { + this.noticeType = noticeType; + } + + public String getNoticeType() + { + return noticeType; + } + + public void setNoticeContent(String noticeContent) + { + this.noticeContent = noticeContent; + } + + public String getNoticeContent() + { + return noticeContent; + } + + public void setStatus(String status) + { + this.status = status; + } + + public String getStatus() + { + return status; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("noticeId", getNoticeId()) + .append("noticeTitle", getNoticeTitle()) + .append("noticeType", getNoticeType()) + .append("noticeContent", getNoticeContent()) + .append("status", getStatus()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysPost.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysPost.java new file mode 100644 index 0000000..d134f39 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysPost.java @@ -0,0 +1,124 @@ +package com.se.system.domain; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.se.common.core.annotation.Excel; +import com.se.common.core.annotation.Excel.ColumnType; +import com.se.common.core.web.domain.BaseEntity; + +/** + * 宀椾綅琛� sys_post + * + * @author admin + */ +public class SysPost extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 宀椾綅搴忓彿 */ + @Excel(name = "宀椾綅搴忓彿", cellType = ColumnType.NUMERIC) + private Long postId; + + /** 宀椾綅缂栫爜 */ + @Excel(name = "宀椾綅缂栫爜") + private String postCode; + + /** 宀椾綅鍚嶇О */ + @Excel(name = "宀椾綅鍚嶇О") + private String postName; + + /** 宀椾綅鎺掑簭 */ + @Excel(name = "宀椾綅鎺掑簭") + private Integer postSort; + + /** 鐘舵�侊紙0姝e父 1鍋滅敤锛� */ + @Excel(name = "鐘舵��", readConverterExp = "0=姝e父,1=鍋滅敤") + private String status; + + /** 鐢ㄦ埛鏄惁瀛樺湪姝ゅ矖浣嶆爣璇� 榛樿涓嶅瓨鍦� */ + private boolean flag = false; + + public Long getPostId() + { + return postId; + } + + public void setPostId(Long postId) + { + this.postId = postId; + } + + @NotBlank(message = "宀椾綅缂栫爜涓嶈兘涓虹┖") + @Size(min = 0, max = 64, message = "宀椾綅缂栫爜闀垮害涓嶈兘瓒呰繃64涓瓧绗�") + public String getPostCode() + { + return postCode; + } + + public void setPostCode(String postCode) + { + this.postCode = postCode; + } + + @NotBlank(message = "宀椾綅鍚嶇О涓嶈兘涓虹┖") + @Size(min = 0, max = 50, message = "宀椾綅鍚嶇О闀垮害涓嶈兘瓒呰繃50涓瓧绗�") + public String getPostName() + { + return postName; + } + + public void setPostName(String postName) + { + this.postName = postName; + } + + @NotNull(message = "鏄剧ず椤哄簭涓嶈兘涓虹┖") + public Integer getPostSort() + { + return postSort; + } + + public void setPostSort(Integer postSort) + { + this.postSort = postSort; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } + + public boolean isFlag() + { + return flag; + } + + public void setFlag(boolean flag) + { + this.flag = flag; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("postId", getPostId()) + .append("postCode", getPostCode()) + .append("postName", getPostName()) + .append("postSort", getPostSort()) + .append("status", getStatus()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysRoleDept.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysRoleDept.java new file mode 100644 index 0000000..cd6f339 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysRoleDept.java @@ -0,0 +1,46 @@ +package com.se.system.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 瑙掕壊鍜岄儴闂ㄥ叧鑱� sys_role_dept + * + * @author admin + */ +public class SysRoleDept +{ + /** 瑙掕壊ID */ + private Long roleId; + + /** 閮ㄩ棬ID */ + private Long deptId; + + public Long getRoleId() + { + return roleId; + } + + public void setRoleId(Long roleId) + { + this.roleId = roleId; + } + + public Long getDeptId() + { + return deptId; + } + + public void setDeptId(Long deptId) + { + this.deptId = deptId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("roleId", getRoleId()) + .append("deptId", getDeptId()) + .toString(); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysRoleMenu.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysRoleMenu.java new file mode 100644 index 0000000..5deac01 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysRoleMenu.java @@ -0,0 +1,46 @@ +package com.se.system.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 瑙掕壊鍜岃彍鍗曞叧鑱� sys_role_menu + * + * @author admin + */ +public class SysRoleMenu +{ + /** 瑙掕壊ID */ + private Long roleId; + + /** 鑿滃崟ID */ + private Long menuId; + + public Long getRoleId() + { + return roleId; + } + + public void setRoleId(Long roleId) + { + this.roleId = roleId; + } + + public Long getMenuId() + { + return menuId; + } + + public void setMenuId(Long menuId) + { + this.menuId = menuId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("roleId", getRoleId()) + .append("menuId", getMenuId()) + .toString(); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserOnline.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserOnline.java new file mode 100644 index 0000000..fa2d663 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserOnline.java @@ -0,0 +1,100 @@ +package com.se.system.domain; + +/** + * 褰撳墠鍦ㄧ嚎浼氳瘽 + * + * @author admin + */ +public class SysUserOnline +{ + /** 浼氳瘽缂栧彿 */ + private String tokenId; + + /** 鐢ㄦ埛鍚嶇О */ + private String userName; + + /** 鐧诲綍IP鍦板潃 */ + private String ipaddr; + + /** 鐧诲綍鍦板潃 */ + private String loginLocation; + + /** 娴忚鍣ㄧ被鍨� */ + private String browser; + + /** 鎿嶄綔绯荤粺 */ + private String os; + + /** 鐧诲綍鏃堕棿 */ + private Long loginTime; + + public String getTokenId() + { + return tokenId; + } + + public void setTokenId(String tokenId) + { + this.tokenId = tokenId; + } + + public String getUserName() + { + return userName; + } + + public void setUserName(String userName) + { + this.userName = userName; + } + + public String getIpaddr() + { + return ipaddr; + } + + public void setIpaddr(String ipaddr) + { + this.ipaddr = ipaddr; + } + + public String getLoginLocation() + { + return loginLocation; + } + + public void setLoginLocation(String loginLocation) + { + this.loginLocation = loginLocation; + } + + public String getBrowser() + { + return browser; + } + + public void setBrowser(String browser) + { + this.browser = browser; + } + + public String getOs() + { + return os; + } + + public void setOs(String os) + { + this.os = os; + } + + public Long getLoginTime() + { + return loginTime; + } + + public void setLoginTime(Long loginTime) + { + this.loginTime = loginTime; + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserPost.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserPost.java new file mode 100644 index 0000000..76e0197 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserPost.java @@ -0,0 +1,46 @@ +package com.se.system.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 鐢ㄦ埛鍜屽矖浣嶅叧鑱� sys_user_post + * + * @author admin + */ +public class SysUserPost +{ + /** 鐢ㄦ埛ID */ + private Long userId; + + /** 宀椾綅ID */ + private Long postId; + + public Long getUserId() + { + return userId; + } + + public void setUserId(Long userId) + { + this.userId = userId; + } + + public Long getPostId() + { + return postId; + } + + public void setPostId(Long postId) + { + this.postId = postId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("userId", getUserId()) + .append("postId", getPostId()) + .toString(); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserRole.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserRole.java new file mode 100644 index 0000000..261f12b --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserRole.java @@ -0,0 +1,46 @@ +package com.se.system.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 鐢ㄦ埛鍜岃鑹插叧鑱� sys_user_role + * + * @author admin + */ +public class SysUserRole +{ + /** 鐢ㄦ埛ID */ + private Long userId; + + /** 瑙掕壊ID */ + private Long roleId; + + public Long getUserId() + { + return userId; + } + + public void setUserId(Long userId) + { + this.userId = userId; + } + + public Long getRoleId() + { + return roleId; + } + + public void setRoleId(Long roleId) + { + this.roleId = roleId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("userId", getUserId()) + .append("roleId", getRoleId()) + .toString(); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/MetaVo.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/MetaVo.java new file mode 100644 index 0000000..b8e18a3 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/MetaVo.java @@ -0,0 +1,106 @@ +package com.se.system.domain.vo; + +import com.se.common.core.utils.StringUtils; + +/** + * 璺敱鏄剧ず淇℃伅 + * + * @author admin + */ +public class MetaVo +{ + /** + * 璁剧疆璇ヨ矾鐢卞湪渚ц竟鏍忓拰闈㈠寘灞戜腑灞曠ず鐨勫悕瀛� + */ + private String title; + + /** + * 璁剧疆璇ヨ矾鐢辩殑鍥炬爣锛屽搴旇矾寰剆rc/assets/icons/svg + */ + private String icon; + + /** + * 璁剧疆涓簍rue锛屽垯涓嶄細琚� <keep-alive>缂撳瓨 + */ + private boolean noCache; + + /** + * 鍐呴摼鍦板潃锛坔ttp(s)://寮�澶达級 + */ + private String link; + + public MetaVo() + { + } + + public MetaVo(String title, String icon) + { + this.title = title; + this.icon = icon; + } + + public MetaVo(String title, String icon, boolean noCache) + { + this.title = title; + this.icon = icon; + this.noCache = noCache; + } + + public MetaVo(String title, String icon, String link) + { + this.title = title; + this.icon = icon; + this.link = link; + } + + public MetaVo(String title, String icon, boolean noCache, String link) + { + this.title = title; + this.icon = icon; + this.noCache = noCache; + if (StringUtils.ishttp(link)) + { + this.link = link; + } + } + + public boolean isNoCache() + { + return noCache; + } + + public void setNoCache(boolean noCache) + { + this.noCache = noCache; + } + + public String getTitle() + { + return title; + } + + public void setTitle(String title) + { + this.title = title; + } + + public String getIcon() + { + return icon; + } + + public void setIcon(String icon) + { + this.icon = icon; + } + + public String getLink() + { + return link; + } + + public void setLink(String link) + { + this.link = link; + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/RouterVo.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/RouterVo.java new file mode 100644 index 0000000..6752f59 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/RouterVo.java @@ -0,0 +1,148 @@ +package com.se.system.domain.vo; + +import com.fasterxml.jackson.annotation.JsonInclude; +import java.util.List; + +/** + * 璺敱閰嶇疆淇℃伅 + * + * @author admin + */ +@JsonInclude(JsonInclude.Include.NON_EMPTY) +public class RouterVo +{ + /** + * 璺敱鍚嶅瓧 + */ + private String name; + + /** + * 璺敱鍦板潃 + */ + private String path; + + /** + * 鏄惁闅愯棌璺敱锛屽綋璁剧疆 true 鐨勬椂鍊欒璺敱涓嶄細鍐嶄晶杈规爮鍑虹幇 + */ + private boolean hidden; + + /** + * 閲嶅畾鍚戝湴鍧�锛屽綋璁剧疆 noRedirect 鐨勬椂鍊欒璺敱鍦ㄩ潰鍖呭睉瀵艰埅涓笉鍙鐐瑰嚮 + */ + private String redirect; + + /** + * 缁勪欢鍦板潃 + */ + private String component; + + /** + * 璺敱鍙傛暟锛氬 {"id": 1, "name": "ry"} + */ + private String query; + + /** + * 褰撲綘涓�涓矾鐢变笅闈㈢殑 children 澹版槑鐨勮矾鐢卞ぇ浜�1涓椂锛岃嚜鍔ㄤ細鍙樻垚宓屽鐨勬ā寮�--濡傜粍浠堕〉闈� + */ + private Boolean alwaysShow; + + /** + * 鍏朵粬鍏冪礌 + */ + private MetaVo meta; + + /** + * 瀛愯矾鐢� + */ + private List<RouterVo> children; + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + + public String getPath() + { + return path; + } + + public void setPath(String path) + { + this.path = path; + } + + public boolean getHidden() + { + return hidden; + } + + public void setHidden(boolean hidden) + { + this.hidden = hidden; + } + + public String getRedirect() + { + return redirect; + } + + public void setRedirect(String redirect) + { + this.redirect = redirect; + } + + public String getComponent() + { + return component; + } + + public void setComponent(String component) + { + this.component = component; + } + + public String getQuery() + { + return query; + } + + public void setQuery(String query) + { + this.query = query; + } + + public Boolean getAlwaysShow() + { + return alwaysShow; + } + + public void setAlwaysShow(Boolean alwaysShow) + { + this.alwaysShow = alwaysShow; + } + + public MetaVo getMeta() + { + return meta; + } + + public void setMeta(MetaVo meta) + { + this.meta = meta; + } + + public List<RouterVo> getChildren() + { + return children; + } + + public void setChildren(List<RouterVo> children) + { + this.children = children; + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/TreeSelect.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/TreeSelect.java new file mode 100644 index 0000000..3c9b631 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/TreeSelect.java @@ -0,0 +1,77 @@ +package com.se.system.domain.vo; + +import java.io.Serializable; +import java.util.List; +import java.util.stream.Collectors; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.se.system.api.domain.SysDept; +import com.se.system.domain.SysMenu; + +/** + * Treeselect鏍戠粨鏋勫疄浣撶被 + * + * @author admin + */ +public class TreeSelect implements Serializable +{ + private static final long serialVersionUID = 1L; + + /** 鑺傜偣ID */ + private Long id; + + /** 鑺傜偣鍚嶇О */ + private String label; + + /** 瀛愯妭鐐� */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List<TreeSelect> children; + + public TreeSelect() + { + + } + + public TreeSelect(SysDept dept) + { + this.id = dept.getDeptId(); + this.label = dept.getDeptName(); + this.children = dept.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); + } + + public TreeSelect(SysMenu menu) + { + this.id = menu.getMenuId(); + this.label = menu.getMenuName(); + this.children = menu.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); + } + + public Long getId() + { + return id; + } + + public void setId(Long id) + { + this.id = id; + } + + public String getLabel() + { + return label; + } + + public void setLabel(String label) + { + this.label = label; + } + + public List<TreeSelect> getChildren() + { + return children; + } + + public void setChildren(List<TreeSelect> children) + { + this.children = children; + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysConfigMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysConfigMapper.java new file mode 100644 index 0000000..a354cee --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysConfigMapper.java @@ -0,0 +1,76 @@ +package com.se.system.mapper; + +import java.util.List; +import com.se.system.domain.SysConfig; + +/** + * 鍙傛暟閰嶇疆 鏁版嵁灞� + * + * @author admin + */ +public interface SysConfigMapper +{ + /** + * 鏌ヨ鍙傛暟閰嶇疆淇℃伅 + * + * @param config 鍙傛暟閰嶇疆淇℃伅 + * @return 鍙傛暟閰嶇疆淇℃伅 + */ + public SysConfig selectConfig(SysConfig config); + + /** + * 閫氳繃ID鏌ヨ閰嶇疆 + * + * @param configId 鍙傛暟ID + * @return 鍙傛暟閰嶇疆淇℃伅 + */ + public SysConfig selectConfigById(Long configId); + + /** + * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃 + * + * @param config 鍙傛暟閰嶇疆淇℃伅 + * @return 鍙傛暟閰嶇疆闆嗗悎 + */ + public List<SysConfig> selectConfigList(SysConfig config); + + /** + * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅 + * + * @param configKey 鍙傛暟閿悕 + * @return 鍙傛暟閰嶇疆淇℃伅 + */ + public SysConfig checkConfigKeyUnique(String configKey); + + /** + * 鏂板鍙傛暟閰嶇疆 + * + * @param config 鍙傛暟閰嶇疆淇℃伅 + * @return 缁撴灉 + */ + public int insertConfig(SysConfig config); + + /** + * 淇敼鍙傛暟閰嶇疆 + * + * @param config 鍙傛暟閰嶇疆淇℃伅 + * @return 缁撴灉 + */ + public int updateConfig(SysConfig config); + + /** + * 鍒犻櫎鍙傛暟閰嶇疆 + * + * @param configId 鍙傛暟ID + * @return 缁撴灉 + */ + public int deleteConfigById(Long configId); + + /** + * 鎵归噺鍒犻櫎鍙傛暟淇℃伅 + * + * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID + * @return 缁撴灉 + */ + public int deleteConfigByIds(Long[] configIds); +} \ No newline at end of file diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDeptMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDeptMapper.java new file mode 100644 index 0000000..fe5e015 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDeptMapper.java @@ -0,0 +1,118 @@ +package com.se.system.mapper; + +import java.util.List; +import org.apache.ibatis.annotations.Param; +import com.se.system.api.domain.SysDept; + +/** + * 閮ㄩ棬绠$悊 鏁版嵁灞� + * + * @author admin + */ +public interface SysDeptMapper +{ + /** + * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁 + * + * @param dept 閮ㄩ棬淇℃伅 + * @return 閮ㄩ棬淇℃伅闆嗗悎 + */ + public List<SysDept> selectDeptList(SysDept dept); + + /** + * 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭� + * + * @param roleId 瑙掕壊ID + * @param deptCheckStrictly 閮ㄩ棬鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀� + * @return 閫変腑閮ㄩ棬鍒楄〃 + */ + public List<Long> selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly); + + /** + * 鏍规嵁閮ㄩ棬ID鏌ヨ淇℃伅 + * + * @param deptId 閮ㄩ棬ID + * @return 閮ㄩ棬淇℃伅 + */ + public SysDept selectDeptById(Long deptId); + + /** + * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬 + * + * @param deptId 閮ㄩ棬ID + * @return 閮ㄩ棬鍒楄〃 + */ + public List<SysDept> selectChildrenDeptById(Long deptId); + + /** + * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬锛堟甯哥姸鎬侊級 + * + * @param deptId 閮ㄩ棬ID + * @return 瀛愰儴闂ㄦ暟 + */ + public int selectNormalChildrenDeptById(Long deptId); + + /** + * 鏄惁瀛樺湪瀛愯妭鐐� + * + * @param deptId 閮ㄩ棬ID + * @return 缁撴灉 + */ + public int hasChildByDeptId(Long deptId); + + /** + * 鏌ヨ閮ㄩ棬鏄惁瀛樺湪鐢ㄦ埛 + * + * @param deptId 閮ㄩ棬ID + * @return 缁撴灉 + */ + public int checkDeptExistUser(Long deptId); + + /** + * 鏍¢獙閮ㄩ棬鍚嶇О鏄惁鍞竴 + * + * @param deptName 閮ㄩ棬鍚嶇О + * @param parentId 鐖堕儴闂↖D + * @return 缁撴灉 + */ + public SysDept checkDeptNameUnique(@Param("deptName") String deptName, @Param("parentId") Long parentId); + + /** + * 鏂板閮ㄩ棬淇℃伅 + * + * @param dept 閮ㄩ棬淇℃伅 + * @return 缁撴灉 + */ + public int insertDept(SysDept dept); + + /** + * 淇敼閮ㄩ棬淇℃伅 + * + * @param dept 閮ㄩ棬淇℃伅 + * @return 缁撴灉 + */ + public int updateDept(SysDept dept); + + /** + * 淇敼鎵�鍦ㄩ儴闂ㄦ甯哥姸鎬� + * + * @param deptIds 閮ㄩ棬ID缁� + */ + public void updateDeptStatusNormal(Long[] deptIds); + + /** + * 淇敼瀛愬厓绱犲叧绯� + * + * @param depts 瀛愬厓绱� + * @return 缁撴灉 + */ + public int updateDeptChildren(@Param("depts") List<SysDept> depts); + + /** + * 鍒犻櫎閮ㄩ棬绠$悊淇℃伅 + * + * @param deptId 閮ㄩ棬ID + * @return 缁撴灉 + */ + public int deleteDeptById(Long deptId); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDictDataMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDictDataMapper.java new file mode 100644 index 0000000..6b287b4 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDictDataMapper.java @@ -0,0 +1,95 @@ +package com.se.system.mapper; + +import java.util.List; +import org.apache.ibatis.annotations.Param; +import com.se.system.api.domain.SysDictData; + +/** + * 瀛楀吀琛� 鏁版嵁灞� + * + * @author admin + */ +public interface SysDictDataMapper +{ + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀鏁版嵁 + * + * @param dictData 瀛楀吀鏁版嵁淇℃伅 + * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅 + */ + public List<SysDictData> selectDictDataList(SysDictData dictData); + + /** + * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁 + * + * @param dictType 瀛楀吀绫诲瀷 + * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅 + */ + public List<SysDictData> selectDictDataByType(String dictType); + + /** + * 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏搁敭鍊兼煡璇㈠瓧鍏告暟鎹俊鎭� + * + * @param dictType 瀛楀吀绫诲瀷 + * @param dictValue 瀛楀吀閿�� + * @return 瀛楀吀鏍囩 + */ + public String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue); + + /** + * 鏍规嵁瀛楀吀鏁版嵁ID鏌ヨ淇℃伅 + * + * @param dictCode 瀛楀吀鏁版嵁ID + * @return 瀛楀吀鏁版嵁 + */ + public SysDictData selectDictDataById(Long dictCode); + + /** + * 鏌ヨ瀛楀吀鏁版嵁 + * + * @param dictType 瀛楀吀绫诲瀷 + * @return 瀛楀吀鏁版嵁 + */ + public int countDictDataByType(String dictType); + + /** + * 閫氳繃瀛楀吀ID鍒犻櫎瀛楀吀鏁版嵁淇℃伅 + * + * @param dictCode 瀛楀吀鏁版嵁ID + * @return 缁撴灉 + */ + public int deleteDictDataById(Long dictCode); + + /** + * 鎵归噺鍒犻櫎瀛楀吀鏁版嵁淇℃伅 + * + * @param dictCodes 闇�瑕佸垹闄ょ殑瀛楀吀鏁版嵁ID + * @return 缁撴灉 + */ + public int deleteDictDataByIds(Long[] dictCodes); + + /** + * 鏂板瀛楀吀鏁版嵁淇℃伅 + * + * @param dictData 瀛楀吀鏁版嵁淇℃伅 + * @return 缁撴灉 + */ + public int insertDictData(SysDictData dictData); + + /** + * 淇敼瀛楀吀鏁版嵁淇℃伅 + * + * @param dictData 瀛楀吀鏁版嵁淇℃伅 + * @return 缁撴灉 + */ + public int updateDictData(SysDictData dictData); + + /** + * 鍚屾淇敼瀛楀吀绫诲瀷 + * + * @param oldDictType 鏃у瓧鍏哥被鍨� + * @param newDictType 鏂版棫瀛楀吀绫诲瀷 + * @return 缁撴灉 + */ + public int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDictTypeMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDictTypeMapper.java new file mode 100644 index 0000000..463bc23 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDictTypeMapper.java @@ -0,0 +1,83 @@ +package com.se.system.mapper; + +import java.util.List; +import com.se.system.api.domain.SysDictType; + +/** + * 瀛楀吀琛� 鏁版嵁灞� + * + * @author admin + */ +public interface SysDictTypeMapper +{ + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀绫诲瀷 + * + * @param dictType 瀛楀吀绫诲瀷淇℃伅 + * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅 + */ + public List<SysDictType> selectDictTypeList(SysDictType dictType); + + /** + * 鏍规嵁鎵�鏈夊瓧鍏哥被鍨� + * + * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅 + */ + public List<SysDictType> selectDictTypeAll(); + + /** + * 鏍规嵁瀛楀吀绫诲瀷ID鏌ヨ淇℃伅 + * + * @param dictId 瀛楀吀绫诲瀷ID + * @return 瀛楀吀绫诲瀷 + */ + public SysDictType selectDictTypeById(Long dictId); + + /** + * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ淇℃伅 + * + * @param dictType 瀛楀吀绫诲瀷 + * @return 瀛楀吀绫诲瀷 + */ + public SysDictType selectDictTypeByType(String dictType); + + /** + * 閫氳繃瀛楀吀ID鍒犻櫎瀛楀吀淇℃伅 + * + * @param dictId 瀛楀吀ID + * @return 缁撴灉 + */ + public int deleteDictTypeById(Long dictId); + + /** + * 鎵归噺鍒犻櫎瀛楀吀绫诲瀷淇℃伅 + * + * @param dictIds 闇�瑕佸垹闄ょ殑瀛楀吀ID + * @return 缁撴灉 + */ + public int deleteDictTypeByIds(Long[] dictIds); + + /** + * 鏂板瀛楀吀绫诲瀷淇℃伅 + * + * @param dictType 瀛楀吀绫诲瀷淇℃伅 + * @return 缁撴灉 + */ + public int insertDictType(SysDictType dictType); + + /** + * 淇敼瀛楀吀绫诲瀷淇℃伅 + * + * @param dictType 瀛楀吀绫诲瀷淇℃伅 + * @return 缁撴灉 + */ + public int updateDictType(SysDictType dictType); + + /** + * 鏍¢獙瀛楀吀绫诲瀷绉版槸鍚﹀敮涓� + * + * @param dictType 瀛楀吀绫诲瀷 + * @return 缁撴灉 + */ + public SysDictType checkDictTypeUnique(String dictType); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysLogininforMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysLogininforMapper.java new file mode 100644 index 0000000..10c060f --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysLogininforMapper.java @@ -0,0 +1,42 @@ +package com.se.system.mapper; + +import java.util.List; +import com.se.system.api.domain.SysLogininfor; + +/** + * 绯荤粺璁块棶鏃ュ織鎯呭喌淇℃伅 鏁版嵁灞� + * + * @author admin + */ +public interface SysLogininforMapper +{ + /** + * 鏂板绯荤粺鐧诲綍鏃ュ織 + * + * @param logininfor 璁块棶鏃ュ織瀵硅薄 + */ + public int insertLogininfor(SysLogininfor logininfor); + + /** + * 鏌ヨ绯荤粺鐧诲綍鏃ュ織闆嗗悎 + * + * @param logininfor 璁块棶鏃ュ織瀵硅薄 + * @return 鐧诲綍璁板綍闆嗗悎 + */ + public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor); + + /** + * 鎵归噺鍒犻櫎绯荤粺鐧诲綍鏃ュ織 + * + * @param infoIds 闇�瑕佸垹闄ょ殑鐧诲綍鏃ュ織ID + * @return 缁撴灉 + */ + public int deleteLogininforByIds(Long[] infoIds); + + /** + * 娓呯┖绯荤粺鐧诲綍鏃ュ織 + * + * @return 缁撴灉 + */ + public int cleanLogininfor(); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysMenuMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysMenuMapper.java new file mode 100644 index 0000000..4df0242 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysMenuMapper.java @@ -0,0 +1,126 @@ +package com.se.system.mapper; + +import java.util.List; + +import com.se.system.domain.SysMenu; +import org.apache.ibatis.annotations.Param; + +/** + * 鑿滃崟琛� 鏁版嵁灞� + * + * @author admin + */ +public interface SysMenuMapper +{ + /** + * 鏌ヨ绯荤粺鑿滃崟鍒楄〃 + * + * @param menu 鑿滃崟淇℃伅 + * @return 鑿滃崟鍒楄〃 + */ + public List<SysMenu> selectMenuList(SysMenu menu); + + /** + * 鏍规嵁鐢ㄦ埛鎵�鏈夋潈闄� + * + * @return 鏉冮檺鍒楄〃 + */ + public List<String> selectMenuPerms(); + + /** + * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃 + * + * @param menu 鑿滃崟淇℃伅 + * @return 鑿滃崟鍒楄〃 + */ + public List<SysMenu> selectMenuListByUserId(SysMenu menu); + + /** + * 鏍规嵁瑙掕壊ID鏌ヨ鏉冮檺 + * + * @param roleId 瑙掕壊ID + * @return 鏉冮檺鍒楄〃 + */ + public List<String> selectMenuPermsByRoleId(Long roleId); + + /** + * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺 + * + * @param userId 鐢ㄦ埛ID + * @return 鏉冮檺鍒楄〃 + */ + public List<String> selectMenuPermsByUserId(Long userId); + + /** + * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟 + * + * @return 鑿滃崟鍒楄〃 + */ + public List<SysMenu> selectMenuTreeAll(); + + /** + * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟 + * + * @param userId 鐢ㄦ埛ID + * @return 鑿滃崟鍒楄〃 + */ + public List<SysMenu> selectMenuTreeByUserId(Long userId); + + /** + * 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鏍戜俊鎭� + * + * @param roleId 瑙掕壊ID + * @param menuCheckStrictly 鑿滃崟鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀� + * @return 閫変腑鑿滃崟鍒楄〃 + */ + public List<Long> selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly); + + /** + * 鏍规嵁鑿滃崟ID鏌ヨ淇℃伅 + * + * @param menuId 鑿滃崟ID + * @return 鑿滃崟淇℃伅 + */ + public SysMenu selectMenuById(Long menuId); + + /** + * 鏄惁瀛樺湪鑿滃崟瀛愯妭鐐� + * + * @param menuId 鑿滃崟ID + * @return 缁撴灉 + */ + public int hasChildByMenuId(Long menuId); + + /** + * 鏂板鑿滃崟淇℃伅 + * + * @param menu 鑿滃崟淇℃伅 + * @return 缁撴灉 + */ + public int insertMenu(SysMenu menu); + + /** + * 淇敼鑿滃崟淇℃伅 + * + * @param menu 鑿滃崟淇℃伅 + * @return 缁撴灉 + */ + public int updateMenu(SysMenu menu); + + /** + * 鍒犻櫎鑿滃崟绠$悊淇℃伅 + * + * @param menuId 鑿滃崟ID + * @return 缁撴灉 + */ + public int deleteMenuById(Long menuId); + + /** + * 鏍¢獙鑿滃崟鍚嶇О鏄惁鍞竴 + * + * @param menuName 鑿滃崟鍚嶇О + * @param parentId 鐖惰彍鍗旾D + * @return 缁撴灉 + */ + public SysMenu checkMenuNameUnique(@Param("menuName") String menuName, @Param("parentId") Long parentId); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysNoticeMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysNoticeMapper.java new file mode 100644 index 0000000..fa19fe8 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysNoticeMapper.java @@ -0,0 +1,60 @@ +package com.se.system.mapper; + +import java.util.List; +import com.se.system.domain.SysNotice; + +/** + * 閫氱煡鍏憡琛� 鏁版嵁灞� + * + * @author admin + */ +public interface SysNoticeMapper +{ + /** + * 鏌ヨ鍏憡淇℃伅 + * + * @param noticeId 鍏憡ID + * @return 鍏憡淇℃伅 + */ + public SysNotice selectNoticeById(Long noticeId); + + /** + * 鏌ヨ鍏憡鍒楄〃 + * + * @param notice 鍏憡淇℃伅 + * @return 鍏憡闆嗗悎 + */ + public List<SysNotice> selectNoticeList(SysNotice notice); + + /** + * 鏂板鍏憡 + * + * @param notice 鍏憡淇℃伅 + * @return 缁撴灉 + */ + public int insertNotice(SysNotice notice); + + /** + * 淇敼鍏憡 + * + * @param notice 鍏憡淇℃伅 + * @return 缁撴灉 + */ + public int updateNotice(SysNotice notice); + + /** + * 鎵归噺鍒犻櫎鍏憡 + * + * @param noticeId 鍏憡ID + * @return 缁撴灉 + */ + public int deleteNoticeById(Long noticeId); + + /** + * 鎵归噺鍒犻櫎鍏憡淇℃伅 + * + * @param noticeIds 闇�瑕佸垹闄ょ殑鍏憡ID + * @return 缁撴灉 + */ + public int deleteNoticeByIds(Long[] noticeIds); +} \ No newline at end of file diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysOperLogMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysOperLogMapper.java new file mode 100644 index 0000000..c0b255b --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysOperLogMapper.java @@ -0,0 +1,48 @@ +package com.se.system.mapper; + +import java.util.List; +import com.se.system.api.domain.SysOperLog; + +/** + * 鎿嶄綔鏃ュ織 鏁版嵁灞� + * + * @author admin + */ +public interface SysOperLogMapper +{ + /** + * 鏂板鎿嶄綔鏃ュ織 + * + * @param operLog 鎿嶄綔鏃ュ織瀵硅薄 + */ + public int insertOperlog(SysOperLog operLog); + + /** + * 鏌ヨ绯荤粺鎿嶄綔鏃ュ織闆嗗悎 + * + * @param operLog 鎿嶄綔鏃ュ織瀵硅薄 + * @return 鎿嶄綔鏃ュ織闆嗗悎 + */ + public List<SysOperLog> selectOperLogList(SysOperLog operLog); + + /** + * 鎵归噺鍒犻櫎绯荤粺鎿嶄綔鏃ュ織 + * + * @param operIds 闇�瑕佸垹闄ょ殑鎿嶄綔鏃ュ織ID + * @return 缁撴灉 + */ + public int deleteOperLogByIds(Long[] operIds); + + /** + * 鏌ヨ鎿嶄綔鏃ュ織璇︾粏 + * + * @param operId 鎿嶄綔ID + * @return 鎿嶄綔鏃ュ織瀵硅薄 + */ + public SysOperLog selectOperLogById(Long operId); + + /** + * 娓呯┖鎿嶄綔鏃ュ織 + */ + public void cleanOperLog(); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysPostMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysPostMapper.java new file mode 100644 index 0000000..af2f0b9 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysPostMapper.java @@ -0,0 +1,99 @@ +package com.se.system.mapper; + +import java.util.List; +import com.se.system.domain.SysPost; + +/** + * 宀椾綅淇℃伅 鏁版嵁灞� + * + * @author admin + */ +public interface SysPostMapper +{ + /** + * 鏌ヨ宀椾綅鏁版嵁闆嗗悎 + * + * @param post 宀椾綅淇℃伅 + * @return 宀椾綅鏁版嵁闆嗗悎 + */ + public List<SysPost> selectPostList(SysPost post); + + /** + * 鏌ヨ鎵�鏈夊矖浣� + * + * @return 宀椾綅鍒楄〃 + */ + public List<SysPost> selectPostAll(); + + /** + * 閫氳繃宀椾綅ID鏌ヨ宀椾綅淇℃伅 + * + * @param postId 宀椾綅ID + * @return 瑙掕壊瀵硅薄淇℃伅 + */ + public SysPost selectPostById(Long postId); + + /** + * 鏍规嵁鐢ㄦ埛ID鑾峰彇宀椾綅閫夋嫨妗嗗垪琛� + * + * @param userId 鐢ㄦ埛ID + * @return 閫変腑宀椾綅ID鍒楄〃 + */ + public List<Long> selectPostListByUserId(Long userId); + + /** + * 鏌ヨ鐢ㄦ埛鎵�灞炲矖浣嶇粍 + * + * @param userName 鐢ㄦ埛鍚� + * @return 缁撴灉 + */ + public List<SysPost> selectPostsByUserName(String userName); + + /** + * 鍒犻櫎宀椾綅淇℃伅 + * + * @param postId 宀椾綅ID + * @return 缁撴灉 + */ + public int deletePostById(Long postId); + + /** + * 鎵归噺鍒犻櫎宀椾綅淇℃伅 + * + * @param postIds 闇�瑕佸垹闄ょ殑宀椾綅ID + * @return 缁撴灉 + */ + public int deletePostByIds(Long[] postIds); + + /** + * 淇敼宀椾綅淇℃伅 + * + * @param post 宀椾綅淇℃伅 + * @return 缁撴灉 + */ + public int updatePost(SysPost post); + + /** + * 鏂板宀椾綅淇℃伅 + * + * @param post 宀椾綅淇℃伅 + * @return 缁撴灉 + */ + public int insertPost(SysPost post); + + /** + * 鏍¢獙宀椾綅鍚嶇О + * + * @param postName 宀椾綅鍚嶇О + * @return 缁撴灉 + */ + public SysPost checkPostNameUnique(String postName); + + /** + * 鏍¢獙宀椾綅缂栫爜 + * + * @param postCode 宀椾綅缂栫爜 + * @return 缁撴灉 + */ + public SysPost checkPostCodeUnique(String postCode); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleDeptMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleDeptMapper.java new file mode 100644 index 0000000..8004a5d --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleDeptMapper.java @@ -0,0 +1,44 @@ +package com.se.system.mapper; + +import java.util.List; +import com.se.system.domain.SysRoleDept; + +/** + * 瑙掕壊涓庨儴闂ㄥ叧鑱旇〃 鏁版嵁灞� + * + * @author admin + */ +public interface SysRoleDeptMapper +{ + /** + * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊鍜岄儴闂ㄥ叧鑱� + * + * @param roleId 瑙掕壊ID + * @return 缁撴灉 + */ + public int deleteRoleDeptByRoleId(Long roleId); + + /** + * 鎵归噺鍒犻櫎瑙掕壊閮ㄩ棬鍏宠仈淇℃伅 + * + * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID + * @return 缁撴灉 + */ + public int deleteRoleDept(Long[] ids); + + /** + * 鏌ヨ閮ㄩ棬浣跨敤鏁伴噺 + * + * @param deptId 閮ㄩ棬ID + * @return 缁撴灉 + */ + public int selectCountRoleDeptByDeptId(Long deptId); + + /** + * 鎵归噺鏂板瑙掕壊閮ㄩ棬淇℃伅 + * + * @param roleDeptList 瑙掕壊閮ㄩ棬鍒楄〃 + * @return 缁撴灉 + */ + public int batchRoleDept(List<SysRoleDept> roleDeptList); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleMapper.java new file mode 100644 index 0000000..09bddc7 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleMapper.java @@ -0,0 +1,107 @@ +package com.se.system.mapper; + +import java.util.List; +import com.se.system.api.domain.SysRole; + +/** + * 瑙掕壊琛� 鏁版嵁灞� + * + * @author admin + */ +public interface SysRoleMapper +{ + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瑙掕壊鏁版嵁 + * + * @param role 瑙掕壊淇℃伅 + * @return 瑙掕壊鏁版嵁闆嗗悎淇℃伅 + */ + public List<SysRole> selectRoleList(SysRole role); + + /** + * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊 + * + * @param userId 鐢ㄦ埛ID + * @return 瑙掕壊鍒楄〃 + */ + public List<SysRole> selectRolePermissionByUserId(Long userId); + + /** + * 鏌ヨ鎵�鏈夎鑹� + * + * @return 瑙掕壊鍒楄〃 + */ + public List<SysRole> selectRoleAll(); + + /** + * 鏍规嵁鐢ㄦ埛ID鑾峰彇瑙掕壊閫夋嫨妗嗗垪琛� + * + * @param userId 鐢ㄦ埛ID + * @return 閫変腑瑙掕壊ID鍒楄〃 + */ + public List<Long> selectRoleListByUserId(Long userId); + + /** + * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊 + * + * @param roleId 瑙掕壊ID + * @return 瑙掕壊瀵硅薄淇℃伅 + */ + public SysRole selectRoleById(Long roleId); + + /** + * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊 + * + * @param userName 鐢ㄦ埛鍚� + * @return 瑙掕壊鍒楄〃 + */ + public List<SysRole> selectRolesByUserName(String userName); + + /** + * 鏍¢獙瑙掕壊鍚嶇О鏄惁鍞竴 + * + * @param roleName 瑙掕壊鍚嶇О + * @return 瑙掕壊淇℃伅 + */ + public SysRole checkRoleNameUnique(String roleName); + + /** + * 鏍¢獙瑙掕壊鏉冮檺鏄惁鍞竴 + * + * @param roleKey 瑙掕壊鏉冮檺 + * @return 瑙掕壊淇℃伅 + */ + public SysRole checkRoleKeyUnique(String roleKey); + + /** + * 淇敼瑙掕壊淇℃伅 + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + public int updateRole(SysRole role); + + /** + * 鏂板瑙掕壊淇℃伅 + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + public int insertRole(SysRole role); + + /** + * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊 + * + * @param roleId 瑙掕壊ID + * @return 缁撴灉 + */ + public int deleteRoleById(Long roleId); + + /** + * 鎵归噺鍒犻櫎瑙掕壊淇℃伅 + * + * @param roleIds 闇�瑕佸垹闄ょ殑瑙掕壊ID + * @return 缁撴灉 + */ + public int deleteRoleByIds(Long[] roleIds); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleMenuMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleMenuMapper.java new file mode 100644 index 0000000..22cbef8 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleMenuMapper.java @@ -0,0 +1,44 @@ +package com.se.system.mapper; + +import java.util.List; +import com.se.system.domain.SysRoleMenu; + +/** + * 瑙掕壊涓庤彍鍗曞叧鑱旇〃 鏁版嵁灞� + * + * @author admin + */ +public interface SysRoleMenuMapper +{ + /** + * 鏌ヨ鑿滃崟浣跨敤鏁伴噺 + * + * @param menuId 鑿滃崟ID + * @return 缁撴灉 + */ + public int checkMenuExistRole(Long menuId); + + /** + * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊鍜岃彍鍗曞叧鑱� + * + * @param roleId 瑙掕壊ID + * @return 缁撴灉 + */ + public int deleteRoleMenuByRoleId(Long roleId); + + /** + * 鎵归噺鍒犻櫎瑙掕壊鑿滃崟鍏宠仈淇℃伅 + * + * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID + * @return 缁撴灉 + */ + public int deleteRoleMenu(Long[] ids); + + /** + * 鎵归噺鏂板瑙掕壊鑿滃崟淇℃伅 + * + * @param roleMenuList 瑙掕壊鑿滃崟鍒楄〃 + * @return 缁撴灉 + */ + public int batchRoleMenu(List<SysRoleMenu> roleMenuList); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserMapper.java new file mode 100644 index 0000000..00a7aff --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserMapper.java @@ -0,0 +1,127 @@ +package com.se.system.mapper; + +import java.util.List; +import org.apache.ibatis.annotations.Param; +import com.se.system.api.domain.SysUser; + +/** + * 鐢ㄦ埛琛� 鏁版嵁灞� + * + * @author admin + */ +public interface SysUserMapper +{ + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃 + * + * @param sysUser 鐢ㄦ埛淇℃伅 + * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 + */ + public List<SysUser> selectUserList(SysUser sysUser); + + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸查厤鐢ㄦ埛瑙掕壊鍒楄〃 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 + */ + public List<SysUser> selectAllocatedList(SysUser user); + + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛� + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 + */ + public List<SysUser> selectUnallocatedList(SysUser user); + + /** + * 閫氳繃鐢ㄦ埛鍚嶆煡璇㈢敤鎴� + * + * @param userName 鐢ㄦ埛鍚� + * @return 鐢ㄦ埛瀵硅薄淇℃伅 + */ + public SysUser selectUserByUserName(String userName); + + /** + * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛 + * + * @param userId 鐢ㄦ埛ID + * @return 鐢ㄦ埛瀵硅薄淇℃伅 + */ + public SysUser selectUserById(Long userId); + + /** + * 鏂板鐢ㄦ埛淇℃伅 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 缁撴灉 + */ + public int insertUser(SysUser user); + + /** + * 淇敼鐢ㄦ埛淇℃伅 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 缁撴灉 + */ + public int updateUser(SysUser user); + + /** + * 淇敼鐢ㄦ埛澶村儚 + * + * @param userName 鐢ㄦ埛鍚� + * @param avatar 澶村儚鍦板潃 + * @return 缁撴灉 + */ + public int updateUserAvatar(@Param("userName") String userName, @Param("avatar") String avatar); + + /** + * 閲嶇疆鐢ㄦ埛瀵嗙爜 + * + * @param userName 鐢ㄦ埛鍚� + * @param password 瀵嗙爜 + * @return 缁撴灉 + */ + public int resetUserPwd(@Param("userName") String userName, @Param("password") String password); + + /** + * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛 + * + * @param userId 鐢ㄦ埛ID + * @return 缁撴灉 + */ + public int deleteUserById(Long userId); + + /** + * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅 + * + * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛ID + * @return 缁撴灉 + */ + public int deleteUserByIds(Long[] userIds); + + /** + * 鏍¢獙鐢ㄦ埛鍚嶇О鏄惁鍞竴 + * + * @param userName 鐢ㄦ埛鍚嶇О + * @return 缁撴灉 + */ + public SysUser checkUserNameUnique(String userName); + + /** + * 鏍¢獙鎵嬫満鍙风爜鏄惁鍞竴 + * + * @param phonenumber 鎵嬫満鍙风爜 + * @return 缁撴灉 + */ + public SysUser checkPhoneUnique(String phonenumber); + + /** + * 鏍¢獙email鏄惁鍞竴 + * + * @param email 鐢ㄦ埛閭 + * @return 缁撴灉 + */ + public SysUser checkEmailUnique(String email); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserPostMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserPostMapper.java new file mode 100644 index 0000000..ebd6aaa --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserPostMapper.java @@ -0,0 +1,44 @@ +package com.se.system.mapper; + +import java.util.List; +import com.se.system.domain.SysUserPost; + +/** + * 鐢ㄦ埛涓庡矖浣嶅叧鑱旇〃 鏁版嵁灞� + * + * @author admin + */ +public interface SysUserPostMapper +{ + /** + * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛鍜屽矖浣嶅叧鑱� + * + * @param userId 鐢ㄦ埛ID + * @return 缁撴灉 + */ + public int deleteUserPostByUserId(Long userId); + + /** + * 閫氳繃宀椾綅ID鏌ヨ宀椾綅浣跨敤鏁伴噺 + * + * @param postId 宀椾綅ID + * @return 缁撴灉 + */ + public int countUserPostById(Long postId); + + /** + * 鎵归噺鍒犻櫎鐢ㄦ埛鍜屽矖浣嶅叧鑱� + * + * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID + * @return 缁撴灉 + */ + public int deleteUserPost(Long[] ids); + + /** + * 鎵归噺鏂板鐢ㄦ埛宀椾綅淇℃伅 + * + * @param userPostList 鐢ㄦ埛宀椾綅鍒楄〃 + * @return 缁撴灉 + */ + public int batchUserPost(List<SysUserPost> userPostList); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserRoleMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserRoleMapper.java new file mode 100644 index 0000000..6903274 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserRoleMapper.java @@ -0,0 +1,63 @@ +package com.se.system.mapper; + +import java.util.List; + +import com.se.system.domain.SysUserRole; +import org.apache.ibatis.annotations.Param; + +/** + * 鐢ㄦ埛涓庤鑹插叧鑱旇〃 鏁版嵁灞� + * + * @author admin + */ +public interface SysUserRoleMapper +{ + /** + * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛鍜岃鑹插叧鑱� + * + * @param userId 鐢ㄦ埛ID + * @return 缁撴灉 + */ + public int deleteUserRoleByUserId(Long userId); + + /** + * 鎵归噺鍒犻櫎鐢ㄦ埛鍜岃鑹插叧鑱� + * + * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID + * @return 缁撴灉 + */ + public int deleteUserRole(Long[] ids); + + /** + * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊浣跨敤鏁伴噺 + * + * @param roleId 瑙掕壊ID + * @return 缁撴灉 + */ + public int countUserRoleByRoleId(Long roleId); + + /** + * 鎵归噺鏂板鐢ㄦ埛瑙掕壊淇℃伅 + * + * @param userRoleList 鐢ㄦ埛瑙掕壊鍒楄〃 + * @return 缁撴灉 + */ + public int batchUserRole(List<SysUserRole> userRoleList); + + /** + * 鍒犻櫎鐢ㄦ埛鍜岃鑹插叧鑱斾俊鎭� + * + * @param userRole 鐢ㄦ埛鍜岃鑹插叧鑱斾俊鎭� + * @return 缁撴灉 + */ + public int deleteUserRoleInfo(SysUserRole userRole); + + /** + * 鎵归噺鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊 + * + * @param roleId 瑙掕壊ID + * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛鏁版嵁ID + * @return 缁撴灉 + */ + public int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") Long[] userIds); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysConfigService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysConfigService.java new file mode 100644 index 0000000..0bf126e --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysConfigService.java @@ -0,0 +1,82 @@ +package com.se.system.service; + +import java.util.List; +import com.se.system.domain.SysConfig; + +/** + * 鍙傛暟閰嶇疆 鏈嶅姟灞� + * + * @author admin + */ +public interface ISysConfigService +{ + /** + * 鏌ヨ鍙傛暟閰嶇疆淇℃伅 + * + * @param configId 鍙傛暟閰嶇疆ID + * @return 鍙傛暟閰嶇疆淇℃伅 + */ + public SysConfig selectConfigById(Long configId); + + /** + * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅 + * + * @param configKey 鍙傛暟閿悕 + * @return 鍙傛暟閿�� + */ + public String selectConfigByKey(String configKey); + + /** + * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃 + * + * @param config 鍙傛暟閰嶇疆淇℃伅 + * @return 鍙傛暟閰嶇疆闆嗗悎 + */ + public List<SysConfig> selectConfigList(SysConfig config); + + /** + * 鏂板鍙傛暟閰嶇疆 + * + * @param config 鍙傛暟閰嶇疆淇℃伅 + * @return 缁撴灉 + */ + public int insertConfig(SysConfig config); + + /** + * 淇敼鍙傛暟閰嶇疆 + * + * @param config 鍙傛暟閰嶇疆淇℃伅 + * @return 缁撴灉 + */ + public int updateConfig(SysConfig config); + + /** + * 鎵归噺鍒犻櫎鍙傛暟淇℃伅 + * + * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID + */ + public void deleteConfigByIds(Long[] configIds); + + /** + * 鍔犺浇鍙傛暟缂撳瓨鏁版嵁 + */ + public void loadingConfigCache(); + + /** + * 娓呯┖鍙傛暟缂撳瓨鏁版嵁 + */ + public void clearConfigCache(); + + /** + * 閲嶇疆鍙傛暟缂撳瓨鏁版嵁 + */ + public void resetConfigCache(); + + /** + * 鏍¢獙鍙傛暟閿悕鏄惁鍞竴 + * + * @param config 鍙傛暟淇℃伅 + * @return 缁撴灉 + */ + public boolean checkConfigKeyUnique(SysConfig config); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDeptService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDeptService.java new file mode 100644 index 0000000..29190a8 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDeptService.java @@ -0,0 +1,124 @@ +package com.se.system.service; + +import java.util.List; +import com.se.system.api.domain.SysDept; +import com.se.system.domain.vo.TreeSelect; + +/** + * 閮ㄩ棬绠$悊 鏈嶅姟灞� + * + * @author admin + */ +public interface ISysDeptService +{ + /** + * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁 + * + * @param dept 閮ㄩ棬淇℃伅 + * @return 閮ㄩ棬淇℃伅闆嗗悎 + */ + public List<SysDept> selectDeptList(SysDept dept); + + /** + * 鏌ヨ閮ㄩ棬鏍戠粨鏋勪俊鎭� + * + * @param dept 閮ㄩ棬淇℃伅 + * @return 閮ㄩ棬鏍戜俊鎭泦鍚� + */ + public List<TreeSelect> selectDeptTreeList(SysDept dept); + + /** + * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯 + * + * @param depts 閮ㄩ棬鍒楄〃 + * @return 鏍戠粨鏋勫垪琛� + */ + public List<SysDept> buildDeptTree(List<SysDept> depts); + + /** + * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯 + * + * @param depts 閮ㄩ棬鍒楄〃 + * @return 涓嬫媺鏍戠粨鏋勫垪琛� + */ + public List<TreeSelect> buildDeptTreeSelect(List<SysDept> depts); + + /** + * 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭� + * + * @param roleId 瑙掕壊ID + * @return 閫変腑閮ㄩ棬鍒楄〃 + */ + public List<Long> selectDeptListByRoleId(Long roleId); + + /** + * 鏍规嵁閮ㄩ棬ID鏌ヨ淇℃伅 + * + * @param deptId 閮ㄩ棬ID + * @return 閮ㄩ棬淇℃伅 + */ + public SysDept selectDeptById(Long deptId); + + /** + * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬锛堟甯哥姸鎬侊級 + * + * @param deptId 閮ㄩ棬ID + * @return 瀛愰儴闂ㄦ暟 + */ + public int selectNormalChildrenDeptById(Long deptId); + + /** + * 鏄惁瀛樺湪閮ㄩ棬瀛愯妭鐐� + * + * @param deptId 閮ㄩ棬ID + * @return 缁撴灉 + */ + public boolean hasChildByDeptId(Long deptId); + + /** + * 鏌ヨ閮ㄩ棬鏄惁瀛樺湪鐢ㄦ埛 + * + * @param deptId 閮ㄩ棬ID + * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦� + */ + public boolean checkDeptExistUser(Long deptId); + + /** + * 鏍¢獙閮ㄩ棬鍚嶇О鏄惁鍞竴 + * + * @param dept 閮ㄩ棬淇℃伅 + * @return 缁撴灉 + */ + public boolean checkDeptNameUnique(SysDept dept); + + /** + * 鏍¢獙閮ㄩ棬鏄惁鏈夋暟鎹潈闄� + * + * @param deptId 閮ㄩ棬id + */ + public void checkDeptDataScope(Long deptId); + + /** + * 鏂板淇濆瓨閮ㄩ棬淇℃伅 + * + * @param dept 閮ㄩ棬淇℃伅 + * @return 缁撴灉 + */ + public int insertDept(SysDept dept); + + /** + * 淇敼淇濆瓨閮ㄩ棬淇℃伅 + * + * @param dept 閮ㄩ棬淇℃伅 + * @return 缁撴灉 + */ + public int updateDept(SysDept dept); + + /** + * 鍒犻櫎閮ㄩ棬绠$悊淇℃伅 + * + * @param deptId 閮ㄩ棬ID + * @return 缁撴灉 + */ + public int deleteDeptById(Long deptId); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDictDataService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDictDataService.java new file mode 100644 index 0000000..1d9b1e6 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDictDataService.java @@ -0,0 +1,60 @@ +package com.se.system.service; + +import java.util.List; +import com.se.system.api.domain.SysDictData; + +/** + * 瀛楀吀 涓氬姟灞� + * + * @author admin + */ +public interface ISysDictDataService +{ + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀鏁版嵁 + * + * @param dictData 瀛楀吀鏁版嵁淇℃伅 + * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅 + */ + public List<SysDictData> selectDictDataList(SysDictData dictData); + + /** + * 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏搁敭鍊兼煡璇㈠瓧鍏告暟鎹俊鎭� + * + * @param dictType 瀛楀吀绫诲瀷 + * @param dictValue 瀛楀吀閿�� + * @return 瀛楀吀鏍囩 + */ + public String selectDictLabel(String dictType, String dictValue); + + /** + * 鏍规嵁瀛楀吀鏁版嵁ID鏌ヨ淇℃伅 + * + * @param dictCode 瀛楀吀鏁版嵁ID + * @return 瀛楀吀鏁版嵁 + */ + public SysDictData selectDictDataById(Long dictCode); + + /** + * 鎵归噺鍒犻櫎瀛楀吀鏁版嵁淇℃伅 + * + * @param dictCodes 闇�瑕佸垹闄ょ殑瀛楀吀鏁版嵁ID + */ + public void deleteDictDataByIds(Long[] dictCodes); + + /** + * 鏂板淇濆瓨瀛楀吀鏁版嵁淇℃伅 + * + * @param dictData 瀛楀吀鏁版嵁淇℃伅 + * @return 缁撴灉 + */ + public int insertDictData(SysDictData dictData); + + /** + * 淇敼淇濆瓨瀛楀吀鏁版嵁淇℃伅 + * + * @param dictData 瀛楀吀鏁版嵁淇℃伅 + * @return 缁撴灉 + */ + public int updateDictData(SysDictData dictData); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDictTypeService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDictTypeService.java new file mode 100644 index 0000000..2250161 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDictTypeService.java @@ -0,0 +1,98 @@ +package com.se.system.service; + +import java.util.List; +import com.se.system.api.domain.SysDictData; +import com.se.system.api.domain.SysDictType; + +/** + * 瀛楀吀 涓氬姟灞� + * + * @author admin + */ +public interface ISysDictTypeService +{ + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀绫诲瀷 + * + * @param dictType 瀛楀吀绫诲瀷淇℃伅 + * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅 + */ + public List<SysDictType> selectDictTypeList(SysDictType dictType); + + /** + * 鏍规嵁鎵�鏈夊瓧鍏哥被鍨� + * + * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅 + */ + public List<SysDictType> selectDictTypeAll(); + + /** + * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁 + * + * @param dictType 瀛楀吀绫诲瀷 + * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅 + */ + public List<SysDictData> selectDictDataByType(String dictType); + + /** + * 鏍规嵁瀛楀吀绫诲瀷ID鏌ヨ淇℃伅 + * + * @param dictId 瀛楀吀绫诲瀷ID + * @return 瀛楀吀绫诲瀷 + */ + public SysDictType selectDictTypeById(Long dictId); + + /** + * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ淇℃伅 + * + * @param dictType 瀛楀吀绫诲瀷 + * @return 瀛楀吀绫诲瀷 + */ + public SysDictType selectDictTypeByType(String dictType); + + /** + * 鎵归噺鍒犻櫎瀛楀吀淇℃伅 + * + * @param dictIds 闇�瑕佸垹闄ょ殑瀛楀吀ID + */ + public void deleteDictTypeByIds(Long[] dictIds); + + /** + * 鍔犺浇瀛楀吀缂撳瓨鏁版嵁 + */ + public void loadingDictCache(); + + /** + * 娓呯┖瀛楀吀缂撳瓨鏁版嵁 + */ + public void clearDictCache(); + + /** + * 閲嶇疆瀛楀吀缂撳瓨鏁版嵁 + */ + public void resetDictCache(); + + /** + * 鏂板淇濆瓨瀛楀吀绫诲瀷淇℃伅 + * + * @param dictType 瀛楀吀绫诲瀷淇℃伅 + * @return 缁撴灉 + */ + public int insertDictType(SysDictType dictType); + + /** + * 淇敼淇濆瓨瀛楀吀绫诲瀷淇℃伅 + * + * @param dictType 瀛楀吀绫诲瀷淇℃伅 + * @return 缁撴灉 + */ + public int updateDictType(SysDictType dictType); + + /** + * 鏍¢獙瀛楀吀绫诲瀷绉版槸鍚﹀敮涓� + * + * @param dictType 瀛楀吀绫诲瀷 + * @return 缁撴灉 + */ + public boolean checkDictTypeUnique(SysDictType dictType); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysLogininforService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysLogininforService.java new file mode 100644 index 0000000..2692266 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysLogininforService.java @@ -0,0 +1,40 @@ +package com.se.system.service; + +import java.util.List; +import com.se.system.api.domain.SysLogininfor; + +/** + * 绯荤粺璁块棶鏃ュ織鎯呭喌淇℃伅 鏈嶅姟灞� + * + * @author admin + */ +public interface ISysLogininforService +{ + /** + * 鏂板绯荤粺鐧诲綍鏃ュ織 + * + * @param logininfor 璁块棶鏃ュ織瀵硅薄 + */ + public int insertLogininfor(SysLogininfor logininfor); + + /** + * 鏌ヨ绯荤粺鐧诲綍鏃ュ織闆嗗悎 + * + * @param logininfor 璁块棶鏃ュ織瀵硅薄 + * @return 鐧诲綍璁板綍闆嗗悎 + */ + public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor); + + /** + * 鎵归噺鍒犻櫎绯荤粺鐧诲綍鏃ュ織 + * + * @param infoIds 闇�瑕佸垹闄ょ殑鐧诲綍鏃ュ織ID + * @return 缁撴灉 + */ + public int deleteLogininforByIds(Long[] infoIds); + + /** + * 娓呯┖绯荤粺鐧诲綍鏃ュ織 + */ + public void cleanLogininfor(); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysMenuService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysMenuService.java new file mode 100644 index 0000000..61746b0 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysMenuService.java @@ -0,0 +1,144 @@ +package com.se.system.service; + +import java.util.List; +import java.util.Set; +import com.se.system.domain.SysMenu; +import com.se.system.domain.vo.RouterVo; +import com.se.system.domain.vo.TreeSelect; + +/** + * 鑿滃崟 涓氬姟灞� + * + * @author admin + */ +public interface ISysMenuService +{ + /** + * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃 + * + * @param userId 鐢ㄦ埛ID + * @return 鑿滃崟鍒楄〃 + */ + public List<SysMenu> selectMenuList(Long userId); + + /** + * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃 + * + * @param menu 鑿滃崟淇℃伅 + * @param userId 鐢ㄦ埛ID + * @return 鑿滃崟鍒楄〃 + */ + public List<SysMenu> selectMenuList(SysMenu menu, Long userId); + + /** + * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺 + * + * @param userId 鐢ㄦ埛ID + * @return 鏉冮檺鍒楄〃 + */ + public Set<String> selectMenuPermsByUserId(Long userId); + + /** + * 鏍规嵁瑙掕壊ID鏌ヨ鏉冮檺 + * + * @param roleId 瑙掕壊ID + * @return 鏉冮檺鍒楄〃 + */ + public Set<String> selectMenuPermsByRoleId(Long roleId); + + /** + * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟鏍戜俊鎭� + * + * @param userId 鐢ㄦ埛ID + * @return 鑿滃崟鍒楄〃 + */ + public List<SysMenu> selectMenuTreeByUserId(Long userId); + + /** + * 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鏍戜俊鎭� + * + * @param roleId 瑙掕壊ID + * @return 閫変腑鑿滃崟鍒楄〃 + */ + public List<Long> selectMenuListByRoleId(Long roleId); + + /** + * 鏋勫缓鍓嶇璺敱鎵�闇�瑕佺殑鑿滃崟 + * + * @param menus 鑿滃崟鍒楄〃 + * @return 璺敱鍒楄〃 + */ + public List<RouterVo> buildMenus(List<SysMenu> menus); + + /** + * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯 + * + * @param menus 鑿滃崟鍒楄〃 + * @return 鏍戠粨鏋勫垪琛� + */ + public List<SysMenu> buildMenuTree(List<SysMenu> menus); + + /** + * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯 + * + * @param menus 鑿滃崟鍒楄〃 + * @return 涓嬫媺鏍戠粨鏋勫垪琛� + */ + public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus); + + /** + * 鏍规嵁鑿滃崟ID鏌ヨ淇℃伅 + * + * @param menuId 鑿滃崟ID + * @return 鑿滃崟淇℃伅 + */ + public SysMenu selectMenuById(Long menuId); + + /** + * 鏄惁瀛樺湪鑿滃崟瀛愯妭鐐� + * + * @param menuId 鑿滃崟ID + * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦� + */ + public boolean hasChildByMenuId(Long menuId); + + /** + * 鏌ヨ鑿滃崟鏄惁瀛樺湪瑙掕壊 + * + * @param menuId 鑿滃崟ID + * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦� + */ + public boolean checkMenuExistRole(Long menuId); + + /** + * 鏂板淇濆瓨鑿滃崟淇℃伅 + * + * @param menu 鑿滃崟淇℃伅 + * @return 缁撴灉 + */ + public int insertMenu(SysMenu menu); + + /** + * 淇敼淇濆瓨鑿滃崟淇℃伅 + * + * @param menu 鑿滃崟淇℃伅 + * @return 缁撴灉 + */ + public int updateMenu(SysMenu menu); + + /** + * 鍒犻櫎鑿滃崟绠$悊淇℃伅 + * + * @param menuId 鑿滃崟ID + * @return 缁撴灉 + */ + public int deleteMenuById(Long menuId); + + /** + * 鏍¢獙鑿滃崟鍚嶇О鏄惁鍞竴 + * + * @param menu 鑿滃崟淇℃伅 + * @return 缁撴灉 + */ + public boolean checkMenuNameUnique(SysMenu menu); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysNoticeService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysNoticeService.java new file mode 100644 index 0000000..675ae95 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysNoticeService.java @@ -0,0 +1,60 @@ +package com.se.system.service; + +import java.util.List; +import com.se.system.domain.SysNotice; + +/** + * 鍏憡 鏈嶅姟灞� + * + * @author admin + */ +public interface ISysNoticeService +{ + /** + * 鏌ヨ鍏憡淇℃伅 + * + * @param noticeId 鍏憡ID + * @return 鍏憡淇℃伅 + */ + public SysNotice selectNoticeById(Long noticeId); + + /** + * 鏌ヨ鍏憡鍒楄〃 + * + * @param notice 鍏憡淇℃伅 + * @return 鍏憡闆嗗悎 + */ + public List<SysNotice> selectNoticeList(SysNotice notice); + + /** + * 鏂板鍏憡 + * + * @param notice 鍏憡淇℃伅 + * @return 缁撴灉 + */ + public int insertNotice(SysNotice notice); + + /** + * 淇敼鍏憡 + * + * @param notice 鍏憡淇℃伅 + * @return 缁撴灉 + */ + public int updateNotice(SysNotice notice); + + /** + * 鍒犻櫎鍏憡淇℃伅 + * + * @param noticeId 鍏憡ID + * @return 缁撴灉 + */ + public int deleteNoticeById(Long noticeId); + + /** + * 鎵归噺鍒犻櫎鍏憡淇℃伅 + * + * @param noticeIds 闇�瑕佸垹闄ょ殑鍏憡ID + * @return 缁撴灉 + */ + public int deleteNoticeByIds(Long[] noticeIds); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysOperLogService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysOperLogService.java new file mode 100644 index 0000000..611f760 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysOperLogService.java @@ -0,0 +1,49 @@ +package com.se.system.service; + +import java.util.List; +import com.se.system.api.domain.SysOperLog; + +/** + * 鎿嶄綔鏃ュ織 鏈嶅姟灞� + * + * @author admin + */ +public interface ISysOperLogService +{ + /** + * 鏂板鎿嶄綔鏃ュ織 + * + * @param operLog 鎿嶄綔鏃ュ織瀵硅薄 + * @return 缁撴灉 + */ + public int insertOperlog(SysOperLog operLog); + + /** + * 鏌ヨ绯荤粺鎿嶄綔鏃ュ織闆嗗悎 + * + * @param operLog 鎿嶄綔鏃ュ織瀵硅薄 + * @return 鎿嶄綔鏃ュ織闆嗗悎 + */ + public List<SysOperLog> selectOperLogList(SysOperLog operLog); + + /** + * 鎵归噺鍒犻櫎绯荤粺鎿嶄綔鏃ュ織 + * + * @param operIds 闇�瑕佸垹闄ょ殑鎿嶄綔鏃ュ織ID + * @return 缁撴灉 + */ + public int deleteOperLogByIds(Long[] operIds); + + /** + * 鏌ヨ鎿嶄綔鏃ュ織璇︾粏 + * + * @param operId 鎿嶄綔ID + * @return 鎿嶄綔鏃ュ織瀵硅薄 + */ + public SysOperLog selectOperLogById(Long operId); + + /** + * 娓呯┖鎿嶄綔鏃ュ織 + */ + public void cleanOperLog(); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysPermissionService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysPermissionService.java new file mode 100644 index 0000000..e2fe76f --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysPermissionService.java @@ -0,0 +1,29 @@ +package com.se.system.service; + +import java.util.Set; + +import com.se.system.api.domain.SysUser; + +/** + * 鏉冮檺淇℃伅 鏈嶅姟灞� + * + * @author admin + */ +public interface ISysPermissionService +{ + /** + * 鑾峰彇瑙掕壊鏁版嵁鏉冮檺 + * + * @param userId 鐢ㄦ埛Id + * @return 瑙掕壊鏉冮檺淇℃伅 + */ + public Set<String> getRolePermission(SysUser user); + + /** + * 鑾峰彇鑿滃崟鏁版嵁鏉冮檺 + * + * @param userId 鐢ㄦ埛Id + * @return 鑿滃崟鏉冮檺淇℃伅 + */ + public Set<String> getMenuPermission(SysUser user); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysPostService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysPostService.java new file mode 100644 index 0000000..c513bf5 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysPostService.java @@ -0,0 +1,99 @@ +package com.se.system.service; + +import java.util.List; +import com.se.system.domain.SysPost; + +/** + * 宀椾綅淇℃伅 鏈嶅姟灞� + * + * @author admin + */ +public interface ISysPostService +{ + /** + * 鏌ヨ宀椾綅淇℃伅闆嗗悎 + * + * @param post 宀椾綅淇℃伅 + * @return 宀椾綅鍒楄〃 + */ + public List<SysPost> selectPostList(SysPost post); + + /** + * 鏌ヨ鎵�鏈夊矖浣� + * + * @return 宀椾綅鍒楄〃 + */ + public List<SysPost> selectPostAll(); + + /** + * 閫氳繃宀椾綅ID鏌ヨ宀椾綅淇℃伅 + * + * @param postId 宀椾綅ID + * @return 瑙掕壊瀵硅薄淇℃伅 + */ + public SysPost selectPostById(Long postId); + + /** + * 鏍规嵁鐢ㄦ埛ID鑾峰彇宀椾綅閫夋嫨妗嗗垪琛� + * + * @param userId 鐢ㄦ埛ID + * @return 閫変腑宀椾綅ID鍒楄〃 + */ + public List<Long> selectPostListByUserId(Long userId); + + /** + * 鏍¢獙宀椾綅鍚嶇О + * + * @param post 宀椾綅淇℃伅 + * @return 缁撴灉 + */ + public boolean checkPostNameUnique(SysPost post); + + /** + * 鏍¢獙宀椾綅缂栫爜 + * + * @param post 宀椾綅淇℃伅 + * @return 缁撴灉 + */ + public boolean checkPostCodeUnique(SysPost post); + + /** + * 閫氳繃宀椾綅ID鏌ヨ宀椾綅浣跨敤鏁伴噺 + * + * @param postId 宀椾綅ID + * @return 缁撴灉 + */ + public int countUserPostById(Long postId); + + /** + * 鍒犻櫎宀椾綅淇℃伅 + * + * @param postId 宀椾綅ID + * @return 缁撴灉 + */ + public int deletePostById(Long postId); + + /** + * 鎵归噺鍒犻櫎宀椾綅淇℃伅 + * + * @param postIds 闇�瑕佸垹闄ょ殑宀椾綅ID + * @return 缁撴灉 + */ + public int deletePostByIds(Long[] postIds); + + /** + * 鏂板淇濆瓨宀椾綅淇℃伅 + * + * @param post 宀椾綅淇℃伅 + * @return 缁撴灉 + */ + public int insertPost(SysPost post); + + /** + * 淇敼淇濆瓨宀椾綅淇℃伅 + * + * @param post 宀椾綅淇℃伅 + * @return 缁撴灉 + */ + public int updatePost(SysPost post); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysRoleService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysRoleService.java new file mode 100644 index 0000000..659ba56 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysRoleService.java @@ -0,0 +1,173 @@ +package com.se.system.service; + +import java.util.List; +import java.util.Set; +import com.se.system.api.domain.SysRole; +import com.se.system.domain.SysUserRole; + +/** + * 瑙掕壊涓氬姟灞� + * + * @author admin + */ +public interface ISysRoleService +{ + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瑙掕壊鏁版嵁 + * + * @param role 瑙掕壊淇℃伅 + * @return 瑙掕壊鏁版嵁闆嗗悎淇℃伅 + */ + public List<SysRole> selectRoleList(SysRole role); + + /** + * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊鍒楄〃 + * + * @param userId 鐢ㄦ埛ID + * @return 瑙掕壊鍒楄〃 + */ + public List<SysRole> selectRolesByUserId(Long userId); + + /** + * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊鏉冮檺 + * + * @param userId 鐢ㄦ埛ID + * @return 鏉冮檺鍒楄〃 + */ + public Set<String> selectRolePermissionByUserId(Long userId); + + /** + * 鏌ヨ鎵�鏈夎鑹� + * + * @return 瑙掕壊鍒楄〃 + */ + public List<SysRole> selectRoleAll(); + + /** + * 鏍规嵁鐢ㄦ埛ID鑾峰彇瑙掕壊閫夋嫨妗嗗垪琛� + * + * @param userId 鐢ㄦ埛ID + * @return 閫変腑瑙掕壊ID鍒楄〃 + */ + public List<Long> selectRoleListByUserId(Long userId); + + /** + * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊 + * + * @param roleId 瑙掕壊ID + * @return 瑙掕壊瀵硅薄淇℃伅 + */ + public SysRole selectRoleById(Long roleId); + + /** + * 鏍¢獙瑙掕壊鍚嶇О鏄惁鍞竴 + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + public boolean checkRoleNameUnique(SysRole role); + + /** + * 鏍¢獙瑙掕壊鏉冮檺鏄惁鍞竴 + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + public boolean checkRoleKeyUnique(SysRole role); + + /** + * 鏍¢獙瑙掕壊鏄惁鍏佽鎿嶄綔 + * + * @param role 瑙掕壊淇℃伅 + */ + public void checkRoleAllowed(SysRole role); + + /** + * 鏍¢獙瑙掕壊鏄惁鏈夋暟鎹潈闄� + * + * @param roleIds 瑙掕壊id + */ + public void checkRoleDataScope(Long... roleIds); + + /** + * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊浣跨敤鏁伴噺 + * + * @param roleId 瑙掕壊ID + * @return 缁撴灉 + */ + public int countUserRoleByRoleId(Long roleId); + + /** + * 鏂板淇濆瓨瑙掕壊淇℃伅 + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + public int insertRole(SysRole role); + + /** + * 淇敼淇濆瓨瑙掕壊淇℃伅 + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + public int updateRole(SysRole role); + + /** + * 淇敼瑙掕壊鐘舵�� + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + public int updateRoleStatus(SysRole role); + + /** + * 淇敼鏁版嵁鏉冮檺淇℃伅 + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + public int authDataScope(SysRole role); + + /** + * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊 + * + * @param roleId 瑙掕壊ID + * @return 缁撴灉 + */ + public int deleteRoleById(Long roleId); + + /** + * 鎵归噺鍒犻櫎瑙掕壊淇℃伅 + * + * @param roleIds 闇�瑕佸垹闄ょ殑瑙掕壊ID + * @return 缁撴灉 + */ + public int deleteRoleByIds(Long[] roleIds); + + /** + * 鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊 + * + * @param userRole 鐢ㄦ埛鍜岃鑹插叧鑱斾俊鎭� + * @return 缁撴灉 + */ + public int deleteAuthUser(SysUserRole userRole); + + /** + * 鎵归噺鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊 + * + * @param roleId 瑙掕壊ID + * @param userIds 闇�瑕佸彇娑堟巿鏉冪殑鐢ㄦ埛鏁版嵁ID + * @return 缁撴灉 + */ + public int deleteAuthUsers(Long roleId, Long[] userIds); + + /** + * 鎵归噺閫夋嫨鎺堟潈鐢ㄦ埛瑙掕壊 + * + * @param roleId 瑙掕壊ID + * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛鏁版嵁ID + * @return 缁撴灉 + */ + public int insertAuthUsers(Long roleId, Long[] userIds); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysUserOnlineService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysUserOnlineService.java new file mode 100644 index 0000000..6b0706a --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysUserOnlineService.java @@ -0,0 +1,48 @@ +package com.se.system.service; + +import com.se.system.api.model.LoginUser; +import com.se.system.domain.SysUserOnline; + +/** + * 鍦ㄧ嚎鐢ㄦ埛 鏈嶅姟灞� + * + * @author admin + */ +public interface ISysUserOnlineService +{ + /** + * 閫氳繃鐧诲綍鍦板潃鏌ヨ淇℃伅 + * + * @param ipaddr 鐧诲綍鍦板潃 + * @param user 鐢ㄦ埛淇℃伅 + * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅 + */ + public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user); + + /** + * 閫氳繃鐢ㄦ埛鍚嶇О鏌ヨ淇℃伅 + * + * @param userName 鐢ㄦ埛鍚嶇О + * @param user 鐢ㄦ埛淇℃伅 + * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅 + */ + public SysUserOnline selectOnlineByUserName(String userName, LoginUser user); + + /** + * 閫氳繃鐧诲綍鍦板潃/鐢ㄦ埛鍚嶇О鏌ヨ淇℃伅 + * + * @param ipaddr 鐧诲綍鍦板潃 + * @param userName 鐢ㄦ埛鍚嶇О + * @param user 鐢ㄦ埛淇℃伅 + * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅 + */ + public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user); + + /** + * 璁剧疆鍦ㄧ嚎鐢ㄦ埛淇℃伅 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 鍦ㄧ嚎鐢ㄦ埛 + */ + public SysUserOnline loginUserToUserOnline(LoginUser user); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysUserService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysUserService.java new file mode 100644 index 0000000..1e54c8d --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysUserService.java @@ -0,0 +1,206 @@ +package com.se.system.service; + +import java.util.List; +import com.se.system.api.domain.SysUser; + +/** + * 鐢ㄦ埛 涓氬姟灞� + * + * @author admin + */ +public interface ISysUserService +{ + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 + */ + public List<SysUser> selectUserList(SysUser user); + + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛� + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 + */ + public List<SysUser> selectAllocatedList(SysUser user); + + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛� + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 + */ + public List<SysUser> selectUnallocatedList(SysUser user); + + /** + * 閫氳繃鐢ㄦ埛鍚嶆煡璇㈢敤鎴� + * + * @param userName 鐢ㄦ埛鍚� + * @return 鐢ㄦ埛瀵硅薄淇℃伅 + */ + public SysUser selectUserByUserName(String userName); + + /** + * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛 + * + * @param userId 鐢ㄦ埛ID + * @return 鐢ㄦ埛瀵硅薄淇℃伅 + */ + public SysUser selectUserById(Long userId); + + /** + * 鏍规嵁鐢ㄦ埛ID鏌ヨ鐢ㄦ埛鎵�灞炶鑹茬粍 + * + * @param userName 鐢ㄦ埛鍚� + * @return 缁撴灉 + */ + public String selectUserRoleGroup(String userName); + + /** + * 鏍规嵁鐢ㄦ埛ID鏌ヨ鐢ㄦ埛鎵�灞炲矖浣嶇粍 + * + * @param userName 鐢ㄦ埛鍚� + * @return 缁撴灉 + */ + public String selectUserPostGroup(String userName); + + /** + * 鏍¢獙鐢ㄦ埛鍚嶇О鏄惁鍞竴 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 缁撴灉 + */ + public boolean checkUserNameUnique(SysUser user); + + /** + * 鏍¢獙鎵嬫満鍙风爜鏄惁鍞竴 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 缁撴灉 + */ + public boolean checkPhoneUnique(SysUser user); + + /** + * 鏍¢獙email鏄惁鍞竴 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 缁撴灉 + */ + public boolean checkEmailUnique(SysUser user); + + /** + * 鏍¢獙鐢ㄦ埛鏄惁鍏佽鎿嶄綔 + * + * @param user 鐢ㄦ埛淇℃伅 + */ + public void checkUserAllowed(SysUser user); + + /** + * 鏍¢獙鐢ㄦ埛鏄惁鏈夋暟鎹潈闄� + * + * @param userId 鐢ㄦ埛id + */ + public void checkUserDataScope(Long userId); + + /** + * 鏂板鐢ㄦ埛淇℃伅 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 缁撴灉 + */ + public int insertUser(SysUser user); + + /** + * 娉ㄥ唽鐢ㄦ埛淇℃伅 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 缁撴灉 + */ + public boolean registerUser(SysUser user); + + /** + * 淇敼鐢ㄦ埛淇℃伅 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 缁撴灉 + */ + public int updateUser(SysUser user); + + /** + * 鐢ㄦ埛鎺堟潈瑙掕壊 + * + * @param userId 鐢ㄦ埛ID + * @param roleIds 瑙掕壊缁� + */ + public void insertUserAuth(Long userId, Long[] roleIds); + + /** + * 淇敼鐢ㄦ埛鐘舵�� + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 缁撴灉 + */ + public int updateUserStatus(SysUser user); + + /** + * 淇敼鐢ㄦ埛鍩烘湰淇℃伅 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 缁撴灉 + */ + public boolean updateUserProfile(SysUser user); + + /** + * 淇敼鐢ㄦ埛澶村儚 + * + * @param userName 鐢ㄦ埛鍚� + * @param avatar 澶村儚鍦板潃 + * @return 缁撴灉 + */ + public boolean updateUserAvatar(String userName, String avatar); + + /** + * 閲嶇疆鐢ㄦ埛瀵嗙爜 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 缁撴灉 + */ + public int resetPwd(SysUser user); + + /** + * 閲嶇疆鐢ㄦ埛瀵嗙爜 + * + * @param userName 鐢ㄦ埛鍚� + * @param password 瀵嗙爜 + * @return 缁撴灉 + */ + public int resetUserPwd(String userName, String password); + + /** + * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛 + * + * @param userId 鐢ㄦ埛ID + * @return 缁撴灉 + */ + public int deleteUserById(Long userId); + + /** + * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅 + * + * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛ID + * @return 缁撴灉 + */ + public int deleteUserByIds(Long[] userIds); + + /** + * 瀵煎叆鐢ㄦ埛鏁版嵁 + * + * @param userList 鐢ㄦ埛鏁版嵁鍒楄〃 + * @param isUpdateSupport 鏄惁鏇存柊鏀寔锛屽鏋滃凡瀛樺湪锛屽垯杩涜鏇存柊鏁版嵁 + * @param operName 鎿嶄綔鐢ㄦ埛 + * @return 缁撴灉 + */ + public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName); +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysConfigServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysConfigServiceImpl.java new file mode 100644 index 0000000..a2d95e4 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysConfigServiceImpl.java @@ -0,0 +1,214 @@ +package com.se.system.service.impl; + +import java.util.Collection; +import java.util.List; +import javax.annotation.PostConstruct; + +import com.se.system.domain.SysConfig; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.se.common.core.constant.CacheConstants; +import com.se.common.core.constant.UserConstants; +import com.se.common.core.exception.ServiceException; +import com.se.common.core.text.Convert; +import com.se.common.core.utils.StringUtils; +import com.se.common.redis.service.RedisService; +import com.se.system.mapper.SysConfigMapper; +import com.se.system.service.ISysConfigService; + +/** + * 鍙傛暟閰嶇疆 鏈嶅姟灞傚疄鐜� + * + * @author admin + */ +@Service +public class SysConfigServiceImpl implements ISysConfigService +{ + @Autowired + private SysConfigMapper configMapper; + + @Autowired + private RedisService redisService; + + /** + * 椤圭洰鍚姩鏃讹紝鍒濆鍖栧弬鏁板埌缂撳瓨 + */ + @PostConstruct + public void init() + { + loadingConfigCache(); + } + + /** + * 鏌ヨ鍙傛暟閰嶇疆淇℃伅 + * + * @param configId 鍙傛暟閰嶇疆ID + * @return 鍙傛暟閰嶇疆淇℃伅 + */ + @Override + public SysConfig selectConfigById(Long configId) + { + SysConfig config = new SysConfig(); + config.setConfigId(configId); + return configMapper.selectConfig(config); + } + + /** + * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅 + * + * @param configKey 鍙傛暟key + * @return 鍙傛暟閿�� + */ + @Override + public String selectConfigByKey(String configKey) + { + String configValue = Convert.toStr(redisService.getCacheObject(getCacheKey(configKey))); + if (StringUtils.isNotEmpty(configValue)) + { + return configValue; + } + SysConfig config = new SysConfig(); + config.setConfigKey(configKey); + SysConfig retConfig = configMapper.selectConfig(config); + if (StringUtils.isNotNull(retConfig)) + { + redisService.setCacheObject(getCacheKey(configKey), retConfig.getConfigValue()); + return retConfig.getConfigValue(); + } + return StringUtils.EMPTY; + } + + /** + * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃 + * + * @param config 鍙傛暟閰嶇疆淇℃伅 + * @return 鍙傛暟閰嶇疆闆嗗悎 + */ + @Override + public List<SysConfig> selectConfigList(SysConfig config) + { + return configMapper.selectConfigList(config); + } + + /** + * 鏂板鍙傛暟閰嶇疆 + * + * @param config 鍙傛暟閰嶇疆淇℃伅 + * @return 缁撴灉 + */ + @Override + public int insertConfig(SysConfig config) + { + int row = configMapper.insertConfig(config); + if (row > 0) + { + redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue()); + } + return row; + } + + /** + * 淇敼鍙傛暟閰嶇疆 + * + * @param config 鍙傛暟閰嶇疆淇℃伅 + * @return 缁撴灉 + */ + @Override + public int updateConfig(SysConfig config) + { + SysConfig temp = configMapper.selectConfigById(config.getConfigId()); + if (!StringUtils.equals(temp.getConfigKey(), config.getConfigKey())) + { + redisService.deleteObject(getCacheKey(temp.getConfigKey())); + } + + int row = configMapper.updateConfig(config); + if (row > 0) + { + redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue()); + } + return row; + } + + /** + * 鎵归噺鍒犻櫎鍙傛暟淇℃伅 + * + * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID + */ + @Override + public void deleteConfigByIds(Long[] configIds) + { + for (Long configId : configIds) + { + SysConfig config = selectConfigById(configId); + if (StringUtils.equals(UserConstants.YES, config.getConfigType())) + { + throw new ServiceException(String.format("鍐呯疆鍙傛暟銆�%1$s銆戜笉鑳藉垹闄� ", config.getConfigKey())); + } + configMapper.deleteConfigById(configId); + redisService.deleteObject(getCacheKey(config.getConfigKey())); + } + } + + /** + * 鍔犺浇鍙傛暟缂撳瓨鏁版嵁 + */ + @Override + public void loadingConfigCache() + { + List<SysConfig> configsList = configMapper.selectConfigList(new SysConfig()); + for (SysConfig config : configsList) + { + redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue()); + } + } + + /** + * 娓呯┖鍙傛暟缂撳瓨鏁版嵁 + */ + @Override + public void clearConfigCache() + { + Collection<String> keys = redisService.keys(CacheConstants.SYS_CONFIG_KEY + "*"); + redisService.deleteObject(keys); + } + + /** + * 閲嶇疆鍙傛暟缂撳瓨鏁版嵁 + */ + @Override + public void resetConfigCache() + { + clearConfigCache(); + loadingConfigCache(); + } + + /** + * 鏍¢獙鍙傛暟閿悕鏄惁鍞竴 + * + * @param config 鍙傛暟閰嶇疆淇℃伅 + * @return 缁撴灉 + */ + @Override + public boolean checkConfigKeyUnique(SysConfig config) + { + Long configId = StringUtils.isNull(config.getConfigId()) ? -1L : config.getConfigId(); + SysConfig info = configMapper.checkConfigKeyUnique(config.getConfigKey()); + if (StringUtils.isNotNull(info) && info.getConfigId().longValue() != configId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 璁剧疆cache key + * + * @param configKey 鍙傛暟閿� + * @return 缂撳瓨閿甼ey + */ + private String getCacheKey(String configKey) + { + return CacheConstants.SYS_CONFIG_KEY + configKey; + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDeptServiceImpl.java new file mode 100644 index 0000000..03acb77 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDeptServiceImpl.java @@ -0,0 +1,338 @@ +package com.se.system.service.impl; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.stream.Collectors; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.se.common.core.constant.UserConstants; +import com.se.common.core.exception.ServiceException; +import com.se.common.core.text.Convert; +import com.se.common.core.utils.SpringUtils; +import com.se.common.core.utils.StringUtils; +import com.se.common.datascope.annotation.DataScope; +import com.se.common.security.utils.SecurityUtils; +import com.se.system.api.domain.SysDept; +import com.se.system.api.domain.SysRole; +import com.se.system.api.domain.SysUser; +import com.se.system.domain.vo.TreeSelect; +import com.se.system.mapper.SysDeptMapper; +import com.se.system.mapper.SysRoleMapper; +import com.se.system.service.ISysDeptService; + +/** + * 閮ㄩ棬绠$悊 鏈嶅姟瀹炵幇 + * + * @author admin + */ +@Service +public class SysDeptServiceImpl implements ISysDeptService +{ + @Autowired + private SysDeptMapper deptMapper; + + @Autowired + private SysRoleMapper roleMapper; + + /** + * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁 + * + * @param dept 閮ㄩ棬淇℃伅 + * @return 閮ㄩ棬淇℃伅闆嗗悎 + */ + @Override + @DataScope(deptAlias = "d") + public List<SysDept> selectDeptList(SysDept dept) + { + return deptMapper.selectDeptList(dept); + } + + /** + * 鏌ヨ閮ㄩ棬鏍戠粨鏋勪俊鎭� + * + * @param dept 閮ㄩ棬淇℃伅 + * @return 閮ㄩ棬鏍戜俊鎭泦鍚� + */ + @Override + public List<TreeSelect> selectDeptTreeList(SysDept dept) + { + List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept); + return buildDeptTreeSelect(depts); + } + + /** + * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯 + * + * @param depts 閮ㄩ棬鍒楄〃 + * @return 鏍戠粨鏋勫垪琛� + */ + @Override + public List<SysDept> buildDeptTree(List<SysDept> depts) + { + List<SysDept> returnList = new ArrayList<SysDept>(); + List<Long> tempList = depts.stream().map(SysDept::getDeptId).collect(Collectors.toList()); + for (SysDept dept : depts) + { + // 濡傛灉鏄《绾ц妭鐐�, 閬嶅巻璇ョ埗鑺傜偣鐨勬墍鏈夊瓙鑺傜偣 + if (!tempList.contains(dept.getParentId())) + { + recursionFn(depts, dept); + returnList.add(dept); + } + } + if (returnList.isEmpty()) + { + returnList = depts; + } + return returnList; + } + + /** + * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯 + * + * @param depts 閮ㄩ棬鍒楄〃 + * @return 涓嬫媺鏍戠粨鏋勫垪琛� + */ + @Override + public List<TreeSelect> buildDeptTreeSelect(List<SysDept> depts) + { + List<SysDept> deptTrees = buildDeptTree(depts); + return deptTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); + } + + /** + * 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭� + * + * @param roleId 瑙掕壊ID + * @return 閫変腑閮ㄩ棬鍒楄〃 + */ + @Override + public List<Long> selectDeptListByRoleId(Long roleId) + { + SysRole role = roleMapper.selectRoleById(roleId); + return deptMapper.selectDeptListByRoleId(roleId, role.isDeptCheckStrictly()); + } + + /** + * 鏍规嵁閮ㄩ棬ID鏌ヨ淇℃伅 + * + * @param deptId 閮ㄩ棬ID + * @return 閮ㄩ棬淇℃伅 + */ + @Override + public SysDept selectDeptById(Long deptId) + { + return deptMapper.selectDeptById(deptId); + } + + /** + * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬锛堟甯哥姸鎬侊級 + * + * @param deptId 閮ㄩ棬ID + * @return 瀛愰儴闂ㄦ暟 + */ + @Override + public int selectNormalChildrenDeptById(Long deptId) + { + return deptMapper.selectNormalChildrenDeptById(deptId); + } + + /** + * 鏄惁瀛樺湪瀛愯妭鐐� + * + * @param deptId 閮ㄩ棬ID + * @return 缁撴灉 + */ + @Override + public boolean hasChildByDeptId(Long deptId) + { + int result = deptMapper.hasChildByDeptId(deptId); + return result > 0; + } + + /** + * 鏌ヨ閮ㄩ棬鏄惁瀛樺湪鐢ㄦ埛 + * + * @param deptId 閮ㄩ棬ID + * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦� + */ + @Override + public boolean checkDeptExistUser(Long deptId) + { + int result = deptMapper.checkDeptExistUser(deptId); + return result > 0; + } + + /** + * 鏍¢獙閮ㄩ棬鍚嶇О鏄惁鍞竴 + * + * @param dept 閮ㄩ棬淇℃伅 + * @return 缁撴灉 + */ + @Override + public boolean checkDeptNameUnique(SysDept dept) + { + Long deptId = StringUtils.isNull(dept.getDeptId()) ? -1L : dept.getDeptId(); + SysDept info = deptMapper.checkDeptNameUnique(dept.getDeptName(), dept.getParentId()); + if (StringUtils.isNotNull(info) && info.getDeptId().longValue() != deptId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 鏍¢獙閮ㄩ棬鏄惁鏈夋暟鎹潈闄� + * + * @param deptId 閮ㄩ棬id + */ + @Override + public void checkDeptDataScope(Long deptId) + { + if (!SysUser.isAdmin(SecurityUtils.getUserId()) && StringUtils.isNotNull(deptId)) + { + SysDept dept = new SysDept(); + dept.setDeptId(deptId); + List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept); + if (StringUtils.isEmpty(depts)) + { + throw new ServiceException("娌℃湁鏉冮檺璁块棶閮ㄩ棬鏁版嵁锛�"); + } + } + } + + /** + * 鏂板淇濆瓨閮ㄩ棬淇℃伅 + * + * @param dept 閮ㄩ棬淇℃伅 + * @return 缁撴灉 + */ + @Override + public int insertDept(SysDept dept) + { + SysDept info = deptMapper.selectDeptById(dept.getParentId()); + // 濡傛灉鐖惰妭鐐逛笉涓烘甯哥姸鎬�,鍒欎笉鍏佽鏂板瀛愯妭鐐� + if (!UserConstants.DEPT_NORMAL.equals(info.getStatus())) + { + throw new ServiceException("閮ㄩ棬鍋滅敤锛屼笉鍏佽鏂板"); + } + dept.setAncestors(info.getAncestors() + "," + dept.getParentId()); + return deptMapper.insertDept(dept); + } + + /** + * 淇敼淇濆瓨閮ㄩ棬淇℃伅 + * + * @param dept 閮ㄩ棬淇℃伅 + * @return 缁撴灉 + */ + @Override + public int updateDept(SysDept dept) + { + SysDept newParentDept = deptMapper.selectDeptById(dept.getParentId()); + SysDept oldDept = deptMapper.selectDeptById(dept.getDeptId()); + if (StringUtils.isNotNull(newParentDept) && StringUtils.isNotNull(oldDept)) + { + String newAncestors = newParentDept.getAncestors() + "," + newParentDept.getDeptId(); + String oldAncestors = oldDept.getAncestors(); + dept.setAncestors(newAncestors); + updateDeptChildren(dept.getDeptId(), newAncestors, oldAncestors); + } + int result = deptMapper.updateDept(dept); + if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors()) + && !StringUtils.equals("0", dept.getAncestors())) + { + // 濡傛灉璇ラ儴闂ㄦ槸鍚敤鐘舵�侊紝鍒欏惎鐢ㄨ閮ㄩ棬鐨勬墍鏈変笂绾ч儴闂� + updateParentDeptStatusNormal(dept); + } + return result; + } + + /** + * 淇敼璇ラ儴闂ㄧ殑鐖剁骇閮ㄩ棬鐘舵�� + * + * @param dept 褰撳墠閮ㄩ棬 + */ + private void updateParentDeptStatusNormal(SysDept dept) + { + String ancestors = dept.getAncestors(); + Long[] deptIds = Convert.toLongArray(ancestors); + deptMapper.updateDeptStatusNormal(deptIds); + } + + /** + * 淇敼瀛愬厓绱犲叧绯� + * + * @param deptId 琚慨鏀圭殑閮ㄩ棬ID + * @param newAncestors 鏂扮殑鐖禝D闆嗗悎 + * @param oldAncestors 鏃х殑鐖禝D闆嗗悎 + */ + public void updateDeptChildren(Long deptId, String newAncestors, String oldAncestors) + { + List<SysDept> children = deptMapper.selectChildrenDeptById(deptId); + for (SysDept child : children) + { + child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors)); + } + if (children.size() > 0) + { + deptMapper.updateDeptChildren(children); + } + } + + /** + * 鍒犻櫎閮ㄩ棬绠$悊淇℃伅 + * + * @param deptId 閮ㄩ棬ID + * @return 缁撴灉 + */ + @Override + public int deleteDeptById(Long deptId) + { + return deptMapper.deleteDeptById(deptId); + } + + /** + * 閫掑綊鍒楄〃 + */ + private void recursionFn(List<SysDept> list, SysDept t) + { + // 寰楀埌瀛愯妭鐐瑰垪琛� + List<SysDept> childList = getChildList(list, t); + t.setChildren(childList); + for (SysDept tChild : childList) + { + if (hasChild(list, tChild)) + { + recursionFn(list, tChild); + } + } + } + + /** + * 寰楀埌瀛愯妭鐐瑰垪琛� + */ + private List<SysDept> getChildList(List<SysDept> list, SysDept t) + { + List<SysDept> tlist = new ArrayList<SysDept>(); + Iterator<SysDept> it = list.iterator(); + while (it.hasNext()) + { + SysDept n = (SysDept) it.next(); + if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue()) + { + tlist.add(n); + } + } + return tlist; + } + + /** + * 鍒ゆ柇鏄惁鏈夊瓙鑺傜偣 + */ + private boolean hasChild(List<SysDept> list, SysDept t) + { + return getChildList(list, t).size() > 0 ? true : false; + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDictDataServiceImpl.java new file mode 100644 index 0000000..68d61e5 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDictDataServiceImpl.java @@ -0,0 +1,111 @@ +package com.se.system.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.se.common.security.utils.DictUtils; +import com.se.system.api.domain.SysDictData; +import com.se.system.mapper.SysDictDataMapper; +import com.se.system.service.ISysDictDataService; + +/** + * 瀛楀吀 涓氬姟灞傚鐞� + * + * @author admin + */ +@Service +public class SysDictDataServiceImpl implements ISysDictDataService +{ + @Autowired + private SysDictDataMapper dictDataMapper; + + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀鏁版嵁 + * + * @param dictData 瀛楀吀鏁版嵁淇℃伅 + * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅 + */ + @Override + public List<SysDictData> selectDictDataList(SysDictData dictData) + { + return dictDataMapper.selectDictDataList(dictData); + } + + /** + * 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏搁敭鍊兼煡璇㈠瓧鍏告暟鎹俊鎭� + * + * @param dictType 瀛楀吀绫诲瀷 + * @param dictValue 瀛楀吀閿�� + * @return 瀛楀吀鏍囩 + */ + @Override + public String selectDictLabel(String dictType, String dictValue) + { + return dictDataMapper.selectDictLabel(dictType, dictValue); + } + + /** + * 鏍规嵁瀛楀吀鏁版嵁ID鏌ヨ淇℃伅 + * + * @param dictCode 瀛楀吀鏁版嵁ID + * @return 瀛楀吀鏁版嵁 + */ + @Override + public SysDictData selectDictDataById(Long dictCode) + { + return dictDataMapper.selectDictDataById(dictCode); + } + + /** + * 鎵归噺鍒犻櫎瀛楀吀鏁版嵁淇℃伅 + * + * @param dictCodes 闇�瑕佸垹闄ょ殑瀛楀吀鏁版嵁ID + */ + @Override + public void deleteDictDataByIds(Long[] dictCodes) + { + for (Long dictCode : dictCodes) + { + SysDictData data = selectDictDataById(dictCode); + dictDataMapper.deleteDictDataById(dictCode); + List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); + } + } + + /** + * 鏂板淇濆瓨瀛楀吀鏁版嵁淇℃伅 + * + * @param data 瀛楀吀鏁版嵁淇℃伅 + * @return 缁撴灉 + */ + @Override + public int insertDictData(SysDictData data) + { + int row = dictDataMapper.insertDictData(data); + if (row > 0) + { + List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); + } + return row; + } + + /** + * 淇敼淇濆瓨瀛楀吀鏁版嵁淇℃伅 + * + * @param data 瀛楀吀鏁版嵁淇℃伅 + * @return 缁撴灉 + */ + @Override + public int updateDictData(SysDictData data) + { + int row = dictDataMapper.updateDictData(data); + if (row > 0) + { + List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); + } + return row; + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDictTypeServiceImpl.java new file mode 100644 index 0000000..127192d --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDictTypeServiceImpl.java @@ -0,0 +1,223 @@ +package com.se.system.service.impl; + +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import javax.annotation.PostConstruct; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import com.se.common.core.constant.UserConstants; +import com.se.common.core.exception.ServiceException; +import com.se.common.core.utils.StringUtils; +import com.se.common.security.utils.DictUtils; +import com.se.system.api.domain.SysDictData; +import com.se.system.api.domain.SysDictType; +import com.se.system.mapper.SysDictDataMapper; +import com.se.system.mapper.SysDictTypeMapper; +import com.se.system.service.ISysDictTypeService; + +/** + * 瀛楀吀 涓氬姟灞傚鐞� + * + * @author admin + */ +@Service +public class SysDictTypeServiceImpl implements ISysDictTypeService +{ + @Autowired + private SysDictTypeMapper dictTypeMapper; + + @Autowired + private SysDictDataMapper dictDataMapper; + + /** + * 椤圭洰鍚姩鏃讹紝鍒濆鍖栧瓧鍏稿埌缂撳瓨 + */ + @PostConstruct + public void init() + { + loadingDictCache(); + } + + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀绫诲瀷 + * + * @param dictType 瀛楀吀绫诲瀷淇℃伅 + * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅 + */ + @Override + public List<SysDictType> selectDictTypeList(SysDictType dictType) + { + return dictTypeMapper.selectDictTypeList(dictType); + } + + /** + * 鏍规嵁鎵�鏈夊瓧鍏哥被鍨� + * + * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅 + */ + @Override + public List<SysDictType> selectDictTypeAll() + { + return dictTypeMapper.selectDictTypeAll(); + } + + /** + * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁 + * + * @param dictType 瀛楀吀绫诲瀷 + * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅 + */ + @Override + public List<SysDictData> selectDictDataByType(String dictType) + { + List<SysDictData> dictDatas = DictUtils.getDictCache(dictType); + if (StringUtils.isNotEmpty(dictDatas)) + { + return dictDatas; + } + dictDatas = dictDataMapper.selectDictDataByType(dictType); + if (StringUtils.isNotEmpty(dictDatas)) + { + DictUtils.setDictCache(dictType, dictDatas); + return dictDatas; + } + return null; + } + + /** + * 鏍规嵁瀛楀吀绫诲瀷ID鏌ヨ淇℃伅 + * + * @param dictId 瀛楀吀绫诲瀷ID + * @return 瀛楀吀绫诲瀷 + */ + @Override + public SysDictType selectDictTypeById(Long dictId) + { + return dictTypeMapper.selectDictTypeById(dictId); + } + + /** + * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ淇℃伅 + * + * @param dictType 瀛楀吀绫诲瀷 + * @return 瀛楀吀绫诲瀷 + */ + @Override + public SysDictType selectDictTypeByType(String dictType) + { + return dictTypeMapper.selectDictTypeByType(dictType); + } + + /** + * 鎵归噺鍒犻櫎瀛楀吀绫诲瀷淇℃伅 + * + * @param dictIds 闇�瑕佸垹闄ょ殑瀛楀吀ID + */ + @Override + public void deleteDictTypeByIds(Long[] dictIds) + { + for (Long dictId : dictIds) + { + SysDictType dictType = selectDictTypeById(dictId); + if (dictDataMapper.countDictDataByType(dictType.getDictType()) > 0) + { + throw new ServiceException(String.format("%1$s宸插垎閰�,涓嶈兘鍒犻櫎", dictType.getDictName())); + } + dictTypeMapper.deleteDictTypeById(dictId); + DictUtils.removeDictCache(dictType.getDictType()); + } + } + + /** + * 鍔犺浇瀛楀吀缂撳瓨鏁版嵁 + */ + @Override + public void loadingDictCache() + { + SysDictData dictData = new SysDictData(); + dictData.setStatus("0"); + Map<String, List<SysDictData>> dictDataMap = dictDataMapper.selectDictDataList(dictData).stream().collect(Collectors.groupingBy(SysDictData::getDictType)); + for (Map.Entry<String, List<SysDictData>> entry : dictDataMap.entrySet()) + { + DictUtils.setDictCache(entry.getKey(), entry.getValue().stream().sorted(Comparator.comparing(SysDictData::getDictSort)).collect(Collectors.toList())); + } + } + + /** + * 娓呯┖瀛楀吀缂撳瓨鏁版嵁 + */ + @Override + public void clearDictCache() + { + DictUtils.clearDictCache(); + } + + /** + * 閲嶇疆瀛楀吀缂撳瓨鏁版嵁 + */ + @Override + public void resetDictCache() + { + clearDictCache(); + loadingDictCache(); + } + + /** + * 鏂板淇濆瓨瀛楀吀绫诲瀷淇℃伅 + * + * @param dict 瀛楀吀绫诲瀷淇℃伅 + * @return 缁撴灉 + */ + @Override + public int insertDictType(SysDictType dict) + { + int row = dictTypeMapper.insertDictType(dict); + if (row > 0) + { + DictUtils.setDictCache(dict.getDictType(), null); + } + return row; + } + + /** + * 淇敼淇濆瓨瀛楀吀绫诲瀷淇℃伅 + * + * @param dict 瀛楀吀绫诲瀷淇℃伅 + * @return 缁撴灉 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int updateDictType(SysDictType dict) + { + SysDictType oldDict = dictTypeMapper.selectDictTypeById(dict.getDictId()); + dictDataMapper.updateDictDataType(oldDict.getDictType(), dict.getDictType()); + int row = dictTypeMapper.updateDictType(dict); + if (row > 0) + { + List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(dict.getDictType()); + DictUtils.setDictCache(dict.getDictType(), dictDatas); + } + return row; + } + + /** + * 鏍¢獙瀛楀吀绫诲瀷绉版槸鍚﹀敮涓� + * + * @param dict 瀛楀吀绫诲瀷 + * @return 缁撴灉 + */ + @Override + public boolean checkDictTypeUnique(SysDictType dict) + { + Long dictId = StringUtils.isNull(dict.getDictId()) ? -1L : dict.getDictId(); + SysDictType dictType = dictTypeMapper.checkDictTypeUnique(dict.getDictType()); + if (StringUtils.isNotNull(dictType) && dictType.getDictId().longValue() != dictId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysLogininforServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysLogininforServiceImpl.java new file mode 100644 index 0000000..19a6e57 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysLogininforServiceImpl.java @@ -0,0 +1,65 @@ +package com.se.system.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.se.system.api.domain.SysLogininfor; +import com.se.system.mapper.SysLogininforMapper; +import com.se.system.service.ISysLogininforService; + +/** + * 绯荤粺璁块棶鏃ュ織鎯呭喌淇℃伅 鏈嶅姟灞傚鐞� + * + * @author admin + */ +@Service +public class SysLogininforServiceImpl implements ISysLogininforService +{ + + @Autowired + private SysLogininforMapper logininforMapper; + + /** + * 鏂板绯荤粺鐧诲綍鏃ュ織 + * + * @param logininfor 璁块棶鏃ュ織瀵硅薄 + */ + @Override + public int insertLogininfor(SysLogininfor logininfor) + { + return logininforMapper.insertLogininfor(logininfor); + } + + /** + * 鏌ヨ绯荤粺鐧诲綍鏃ュ織闆嗗悎 + * + * @param logininfor 璁块棶鏃ュ織瀵硅薄 + * @return 鐧诲綍璁板綍闆嗗悎 + */ + @Override + public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor) + { + return logininforMapper.selectLogininforList(logininfor); + } + + /** + * 鎵归噺鍒犻櫎绯荤粺鐧诲綍鏃ュ織 + * + * @param infoIds 闇�瑕佸垹闄ょ殑鐧诲綍鏃ュ織ID + * @return 缁撴灉 + */ + @Override + public int deleteLogininforByIds(Long[] infoIds) + { + return logininforMapper.deleteLogininforByIds(infoIds); + } + + /** + * 娓呯┖绯荤粺鐧诲綍鏃ュ織 + */ + @Override + public void cleanLogininfor() + { + logininforMapper.cleanLogininfor(); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysMenuServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysMenuServiceImpl.java new file mode 100644 index 0000000..6dcb451 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysMenuServiceImpl.java @@ -0,0 +1,544 @@ +package com.se.system.service.impl; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import com.se.system.domain.SysMenu; +import com.se.system.domain.vo.MetaVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.se.common.core.constant.Constants; +import com.se.common.core.constant.UserConstants; +import com.se.common.core.utils.StringUtils; +import com.se.common.security.utils.SecurityUtils; +import com.se.system.api.domain.SysRole; +import com.se.system.api.domain.SysUser; +import com.se.system.domain.vo.RouterVo; +import com.se.system.domain.vo.TreeSelect; +import com.se.system.mapper.SysMenuMapper; +import com.se.system.mapper.SysRoleMapper; +import com.se.system.mapper.SysRoleMenuMapper; +import com.se.system.service.ISysMenuService; + +/** + * 鑿滃崟 涓氬姟灞傚鐞� + * + * @author admin + */ +@Service +public class SysMenuServiceImpl implements ISysMenuService +{ + public static final String PREMISSION_STRING = "perms[\"{0}\"]"; + + @Autowired + private SysMenuMapper menuMapper; + + @Autowired + private SysRoleMapper roleMapper; + + @Autowired + private SysRoleMenuMapper roleMenuMapper; + + /** + * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃 + * + * @param userId 鐢ㄦ埛ID + * @return 鑿滃崟鍒楄〃 + */ + @Override + public List<SysMenu> selectMenuList(Long userId) + { + return selectMenuList(new SysMenu(), userId); + } + + /** + * 鏌ヨ绯荤粺鑿滃崟鍒楄〃 + * + * @param menu 鑿滃崟淇℃伅 + * @return 鑿滃崟鍒楄〃 + */ + @Override + public List<SysMenu> selectMenuList(SysMenu menu, Long userId) + { + List<SysMenu> menuList = null; + // 绠$悊鍛樻樉绀烘墍鏈夎彍鍗曚俊鎭� + if (SysUser.isAdmin(userId)) + { + menuList = menuMapper.selectMenuList(menu); + } + else + { + menu.getParams().put("userId", userId); + menuList = menuMapper.selectMenuListByUserId(menu); + } + return menuList; + } + + /** + * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺 + * + * @param userId 鐢ㄦ埛ID + * @return 鏉冮檺鍒楄〃 + */ + @Override + public Set<String> selectMenuPermsByUserId(Long userId) + { + List<String> perms = menuMapper.selectMenuPermsByUserId(userId); + Set<String> permsSet = new HashSet<>(); + for (String perm : perms) + { + if (StringUtils.isNotEmpty(perm)) + { + permsSet.addAll(Arrays.asList(perm.trim().split(","))); + } + } + return permsSet; + } + + /** + * 鏍规嵁瑙掕壊ID鏌ヨ鏉冮檺 + * + * @param roleId 瑙掕壊ID + * @return 鏉冮檺鍒楄〃 + */ + @Override + public Set<String> selectMenuPermsByRoleId(Long roleId) + { + List<String> perms = menuMapper.selectMenuPermsByRoleId(roleId); + Set<String> permsSet = new HashSet<>(); + for (String perm : perms) + { + if (StringUtils.isNotEmpty(perm)) + { + permsSet.addAll(Arrays.asList(perm.trim().split(","))); + } + } + return permsSet; + } + + /** + * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟 + * + * @param userId 鐢ㄦ埛鍚嶇О + * @return 鑿滃崟鍒楄〃 + */ + @Override + public List<SysMenu> selectMenuTreeByUserId(Long userId) + { + List<SysMenu> menus = null; + if (SecurityUtils.isAdmin(userId)) + { + menus = menuMapper.selectMenuTreeAll(); + } + else + { + menus = menuMapper.selectMenuTreeByUserId(userId); + } + return getChildPerms(menus, 0); + } + + /** + * 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鏍戜俊鎭� + * + * @param roleId 瑙掕壊ID + * @return 閫変腑鑿滃崟鍒楄〃 + */ + @Override + public List<Long> selectMenuListByRoleId(Long roleId) + { + SysRole role = roleMapper.selectRoleById(roleId); + return menuMapper.selectMenuListByRoleId(roleId, role.isMenuCheckStrictly()); + } + + /** + * 鏋勫缓鍓嶇璺敱鎵�闇�瑕佺殑鑿滃崟 + * + * @param menus 鑿滃崟鍒楄〃 + * @return 璺敱鍒楄〃 + */ + @Override + public List<RouterVo> buildMenus(List<SysMenu> menus) + { + List<RouterVo> routers = new LinkedList<RouterVo>(); + for (SysMenu menu : menus) + { + RouterVo router = new RouterVo(); + router.setHidden("1".equals(menu.getVisible())); + router.setName(getRouteName(menu)); + router.setPath(getRouterPath(menu)); + router.setComponent(getComponent(menu)); + router.setQuery(menu.getQuery()); + router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath())); + List<SysMenu> cMenus = menu.getChildren(); + if (StringUtils.isNotEmpty(cMenus) && UserConstants.TYPE_DIR.equals(menu.getMenuType())) + { + router.setAlwaysShow(true); + router.setRedirect("noRedirect"); + router.setChildren(buildMenus(cMenus)); + } + else if (isMenuFrame(menu)) + { + router.setMeta(null); + List<RouterVo> childrenList = new ArrayList<RouterVo>(); + RouterVo children = new RouterVo(); + children.setPath(menu.getPath()); + children.setComponent(menu.getComponent()); + children.setName(getRouteName(menu.getRouteName(), menu.getPath())); + children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath())); + children.setQuery(menu.getQuery()); + childrenList.add(children); + router.setChildren(childrenList); + } + else if (menu.getParentId().intValue() == 0 && isInnerLink(menu)) + { + router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon())); + router.setPath("/"); + List<RouterVo> childrenList = new ArrayList<RouterVo>(); + RouterVo children = new RouterVo(); + String routerPath = innerLinkReplaceEach(menu.getPath()); + children.setPath(routerPath); + children.setComponent(UserConstants.INNER_LINK); + children.setName(getRouteName(menu.getRouteName(), routerPath)); + children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), menu.getPath())); + childrenList.add(children); + router.setChildren(childrenList); + } + routers.add(router); + } + return routers; + } + + /** + * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯 + * + * @param menus 鑿滃崟鍒楄〃 + * @return 鏍戠粨鏋勫垪琛� + */ + @Override + public List<SysMenu> buildMenuTree(List<SysMenu> menus) + { + List<SysMenu> returnList = new ArrayList<SysMenu>(); + List<Long> tempList = menus.stream().map(SysMenu::getMenuId).collect(Collectors.toList()); + for (Iterator<SysMenu> iterator = menus.iterator(); iterator.hasNext();) + { + SysMenu menu = (SysMenu) iterator.next(); + // 濡傛灉鏄《绾ц妭鐐�, 閬嶅巻璇ョ埗鑺傜偣鐨勬墍鏈夊瓙鑺傜偣 + if (!tempList.contains(menu.getParentId())) + { + recursionFn(menus, menu); + returnList.add(menu); + } + } + if (returnList.isEmpty()) + { + returnList = menus; + } + return returnList; + } + + /** + * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯 + * + * @param menus 鑿滃崟鍒楄〃 + * @return 涓嬫媺鏍戠粨鏋勫垪琛� + */ + @Override + public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus) + { + List<SysMenu> menuTrees = buildMenuTree(menus); + return menuTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); + } + + /** + * 鏍规嵁鑿滃崟ID鏌ヨ淇℃伅 + * + * @param menuId 鑿滃崟ID + * @return 鑿滃崟淇℃伅 + */ + @Override + public SysMenu selectMenuById(Long menuId) + { + return menuMapper.selectMenuById(menuId); + } + + /** + * 鏄惁瀛樺湪鑿滃崟瀛愯妭鐐� + * + * @param menuId 鑿滃崟ID + * @return 缁撴灉 + */ + @Override + public boolean hasChildByMenuId(Long menuId) + { + int result = menuMapper.hasChildByMenuId(menuId); + return result > 0; + } + + /** + * 鏌ヨ鑿滃崟浣跨敤鏁伴噺 + * + * @param menuId 鑿滃崟ID + * @return 缁撴灉 + */ + @Override + public boolean checkMenuExistRole(Long menuId) + { + int result = roleMenuMapper.checkMenuExistRole(menuId); + return result > 0; + } + + /** + * 鏂板淇濆瓨鑿滃崟淇℃伅 + * + * @param menu 鑿滃崟淇℃伅 + * @return 缁撴灉 + */ + @Override + public int insertMenu(SysMenu menu) + { + return menuMapper.insertMenu(menu); + } + + /** + * 淇敼淇濆瓨鑿滃崟淇℃伅 + * + * @param menu 鑿滃崟淇℃伅 + * @return 缁撴灉 + */ + @Override + public int updateMenu(SysMenu menu) + { + return menuMapper.updateMenu(menu); + } + + /** + * 鍒犻櫎鑿滃崟绠$悊淇℃伅 + * + * @param menuId 鑿滃崟ID + * @return 缁撴灉 + */ + @Override + public int deleteMenuById(Long menuId) + { + return menuMapper.deleteMenuById(menuId); + } + + /** + * 鏍¢獙鑿滃崟鍚嶇О鏄惁鍞竴 + * + * @param menu 鑿滃崟淇℃伅 + * @return 缁撴灉 + */ + @Override + public boolean checkMenuNameUnique(SysMenu menu) + { + Long menuId = StringUtils.isNull(menu.getMenuId()) ? -1L : menu.getMenuId(); + SysMenu info = menuMapper.checkMenuNameUnique(menu.getMenuName(), menu.getParentId()); + if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 鑾峰彇璺敱鍚嶇О + * + * @param menu 鑿滃崟淇℃伅 + * @return 璺敱鍚嶇О + */ + public String getRouteName(SysMenu menu) + { + // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓虹洰褰曪級 + if (isMenuFrame(menu)) + { + return StringUtils.EMPTY; + } + return getRouteName(menu.getRouteName(), menu.getPath()); + } + + /** + * 鑾峰彇璺敱鍚嶇О锛屽娌℃湁閰嶇疆璺敱鍚嶇О鍒欏彇璺敱鍦板潃 + * + * @param routerName 璺敱鍚嶇О + * @param path 璺敱鍦板潃 + * @return 璺敱鍚嶇О锛堥┘宄版牸寮忥級 + */ + public String getRouteName(String name, String path) + { + String routerName = StringUtils.isNotEmpty(name) ? name : path; + return StringUtils.capitalize(routerName); + } + + /** + * 鑾峰彇璺敱鍦板潃 + * + * @param menu 鑿滃崟淇℃伅 + * @return 璺敱鍦板潃 + */ + public String getRouterPath(SysMenu menu) + { + String routerPath = menu.getPath(); + // 鍐呴摼鎵撳紑澶栫綉鏂瑰紡 + if (menu.getParentId().intValue() != 0 && isInnerLink(menu)) + { + routerPath = innerLinkReplaceEach(routerPath); + } + // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓虹洰褰曪級 + if (0 == menu.getParentId().intValue() && UserConstants.TYPE_DIR.equals(menu.getMenuType()) + && UserConstants.NO_FRAME.equals(menu.getIsFrame())) + { + routerPath = "/" + menu.getPath(); + } + // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓鸿彍鍗曪級 + else if (isMenuFrame(menu)) + { + routerPath = "/"; + } + return routerPath; + } + + /** + * 鑾峰彇缁勪欢淇℃伅 + * + * @param menu 鑿滃崟淇℃伅 + * @return 缁勪欢淇℃伅 + */ + public String getComponent(SysMenu menu) + { + String component = UserConstants.LAYOUT; + if (StringUtils.isNotEmpty(menu.getComponent()) && !isMenuFrame(menu)) + { + component = menu.getComponent(); + } + else if (StringUtils.isEmpty(menu.getComponent()) && menu.getParentId().intValue() != 0 && isInnerLink(menu)) + { + component = UserConstants.INNER_LINK; + } + else if (StringUtils.isEmpty(menu.getComponent()) && isParentView(menu)) + { + component = UserConstants.PARENT_VIEW; + } + return component; + } + + /** + * 鏄惁涓鸿彍鍗曞唴閮ㄨ烦杞� + * + * @param menu 鑿滃崟淇℃伅 + * @return 缁撴灉 + */ + public boolean isMenuFrame(SysMenu menu) + { + return menu.getParentId().intValue() == 0 && UserConstants.TYPE_MENU.equals(menu.getMenuType()) + && menu.getIsFrame().equals(UserConstants.NO_FRAME); + } + + /** + * 鏄惁涓哄唴閾剧粍浠� + * + * @param menu 鑿滃崟淇℃伅 + * @return 缁撴灉 + */ + public boolean isInnerLink(SysMenu menu) + { + return menu.getIsFrame().equals(UserConstants.NO_FRAME) && StringUtils.ishttp(menu.getPath()); + } + + /** + * 鏄惁涓簆arent_view缁勪欢 + * + * @param menu 鑿滃崟淇℃伅 + * @return 缁撴灉 + */ + public boolean isParentView(SysMenu menu) + { + return menu.getParentId().intValue() != 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType()); + } + + /** + * 鏍规嵁鐖惰妭鐐圭殑ID鑾峰彇鎵�鏈夊瓙鑺傜偣 + * + * @param list 鍒嗙被琛� + * @param parentId 浼犲叆鐨勭埗鑺傜偣ID + * @return String + */ + public List<SysMenu> getChildPerms(List<SysMenu> list, int parentId) + { + List<SysMenu> returnList = new ArrayList<SysMenu>(); + for (Iterator<SysMenu> iterator = list.iterator(); iterator.hasNext();) + { + SysMenu t = (SysMenu) iterator.next(); + // 涓�銆佹牴鎹紶鍏ョ殑鏌愪釜鐖惰妭鐐笽D,閬嶅巻璇ョ埗鑺傜偣鐨勬墍鏈夊瓙鑺傜偣 + if (t.getParentId() == parentId) + { + recursionFn(list, t); + returnList.add(t); + } + } + return returnList; + } + + /** + * 閫掑綊鍒楄〃 + * + * @param list 鍒嗙被琛� + * @param t 瀛愯妭鐐� + */ + private void recursionFn(List<SysMenu> list, SysMenu t) + { + // 寰楀埌瀛愯妭鐐瑰垪琛� + List<SysMenu> childList = getChildList(list, t); + t.setChildren(childList); + for (SysMenu tChild : childList) + { + if (hasChild(list, tChild)) + { + recursionFn(list, tChild); + } + } + } + + /** + * 寰楀埌瀛愯妭鐐瑰垪琛� + */ + private List<SysMenu> getChildList(List<SysMenu> list, SysMenu t) + { + List<SysMenu> tlist = new ArrayList<SysMenu>(); + Iterator<SysMenu> it = list.iterator(); + while (it.hasNext()) + { + SysMenu n = (SysMenu) it.next(); + if (n.getParentId().longValue() == t.getMenuId().longValue()) + { + tlist.add(n); + } + } + return tlist; + } + + /** + * 鍒ゆ柇鏄惁鏈夊瓙鑺傜偣 + */ + private boolean hasChild(List<SysMenu> list, SysMenu t) + { + return getChildList(list, t).size() > 0; + } + + /** + * 鍐呴摼鍩熷悕鐗规畩瀛楃鏇挎崲 + * + * @return 鏇挎崲鍚庣殑鍐呴摼鍩熷悕 + */ + public String innerLinkReplaceEach(String path) + { + return StringUtils.replaceEach(path, new String[] { Constants.HTTP, Constants.HTTPS, Constants.WWW, ".", ":" }, + new String[] { "", "", "", "/", "/" }); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysNoticeServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysNoticeServiceImpl.java new file mode 100644 index 0000000..cd0d37b --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysNoticeServiceImpl.java @@ -0,0 +1,93 @@ +package com.se.system.service.impl; + +import java.util.List; + +import com.se.system.domain.SysNotice; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.se.system.mapper.SysNoticeMapper; +import com.se.system.service.ISysNoticeService; + +/** + * 鍏憡 鏈嶅姟灞傚疄鐜� + * + * @author admin + */ +@Service +public class SysNoticeServiceImpl implements ISysNoticeService +{ + @Autowired + private SysNoticeMapper noticeMapper; + + /** + * 鏌ヨ鍏憡淇℃伅 + * + * @param noticeId 鍏憡ID + * @return 鍏憡淇℃伅 + */ + @Override + public SysNotice selectNoticeById(Long noticeId) + { + return noticeMapper.selectNoticeById(noticeId); + } + + /** + * 鏌ヨ鍏憡鍒楄〃 + * + * @param notice 鍏憡淇℃伅 + * @return 鍏憡闆嗗悎 + */ + @Override + public List<SysNotice> selectNoticeList(SysNotice notice) + { + return noticeMapper.selectNoticeList(notice); + } + + /** + * 鏂板鍏憡 + * + * @param notice 鍏憡淇℃伅 + * @return 缁撴灉 + */ + @Override + public int insertNotice(SysNotice notice) + { + return noticeMapper.insertNotice(notice); + } + + /** + * 淇敼鍏憡 + * + * @param notice 鍏憡淇℃伅 + * @return 缁撴灉 + */ + @Override + public int updateNotice(SysNotice notice) + { + return noticeMapper.updateNotice(notice); + } + + /** + * 鍒犻櫎鍏憡瀵硅薄 + * + * @param noticeId 鍏憡ID + * @return 缁撴灉 + */ + @Override + public int deleteNoticeById(Long noticeId) + { + return noticeMapper.deleteNoticeById(noticeId); + } + + /** + * 鎵归噺鍒犻櫎鍏憡淇℃伅 + * + * @param noticeIds 闇�瑕佸垹闄ょ殑鍏憡ID + * @return 缁撴灉 + */ + @Override + public int deleteNoticeByIds(Long[] noticeIds) + { + return noticeMapper.deleteNoticeByIds(noticeIds); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysOperLogServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysOperLogServiceImpl.java new file mode 100644 index 0000000..cbc296f --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysOperLogServiceImpl.java @@ -0,0 +1,77 @@ +package com.se.system.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.se.system.api.domain.SysOperLog; +import com.se.system.mapper.SysOperLogMapper; +import com.se.system.service.ISysOperLogService; + +/** + * 鎿嶄綔鏃ュ織 鏈嶅姟灞傚鐞� + * + * @author admin + */ +@Service +public class SysOperLogServiceImpl implements ISysOperLogService +{ + @Autowired + private SysOperLogMapper operLogMapper; + + /** + * 鏂板鎿嶄綔鏃ュ織 + * + * @param operLog 鎿嶄綔鏃ュ織瀵硅薄 + * @return 缁撴灉 + */ + @Override + public int insertOperlog(SysOperLog operLog) + { + return operLogMapper.insertOperlog(operLog); + } + + /** + * 鏌ヨ绯荤粺鎿嶄綔鏃ュ織闆嗗悎 + * + * @param operLog 鎿嶄綔鏃ュ織瀵硅薄 + * @return 鎿嶄綔鏃ュ織闆嗗悎 + */ + @Override + public List<SysOperLog> selectOperLogList(SysOperLog operLog) + { + return operLogMapper.selectOperLogList(operLog); + } + + /** + * 鎵归噺鍒犻櫎绯荤粺鎿嶄綔鏃ュ織 + * + * @param operIds 闇�瑕佸垹闄ょ殑鎿嶄綔鏃ュ織ID + * @return 缁撴灉 + */ + @Override + public int deleteOperLogByIds(Long[] operIds) + { + return operLogMapper.deleteOperLogByIds(operIds); + } + + /** + * 鏌ヨ鎿嶄綔鏃ュ織璇︾粏 + * + * @param operId 鎿嶄綔ID + * @return 鎿嶄綔鏃ュ織瀵硅薄 + */ + @Override + public SysOperLog selectOperLogById(Long operId) + { + return operLogMapper.selectOperLogById(operId); + } + + /** + * 娓呯┖鎿嶄綔鏃ュ織 + */ + @Override + public void cleanOperLog() + { + operLogMapper.cleanOperLog(); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysPermissionServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysPermissionServiceImpl.java new file mode 100644 index 0000000..3950578 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysPermissionServiceImpl.java @@ -0,0 +1,86 @@ +package com.se.system.service.impl; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import com.se.system.api.domain.SysRole; +import com.se.system.api.domain.SysUser; +import com.se.system.service.ISysMenuService; +import com.se.system.service.ISysPermissionService; +import com.se.system.service.ISysRoleService; + +/** + * 鐢ㄦ埛鏉冮檺澶勭悊 + * + * @author admin + */ +@Service +public class SysPermissionServiceImpl implements ISysPermissionService +{ + @Autowired + private ISysRoleService roleService; + + @Autowired + private ISysMenuService menuService; + + /** + * 鑾峰彇瑙掕壊鏁版嵁鏉冮檺 + * + * @param userId 鐢ㄦ埛Id + * @return 瑙掕壊鏉冮檺淇℃伅 + */ + @Override + public Set<String> getRolePermission(SysUser user) + { + Set<String> roles = new HashSet<String>(); + // 绠$悊鍛樻嫢鏈夋墍鏈夋潈闄� + if (user.isAdmin()) + { + roles.add("admin"); + } + else + { + roles.addAll(roleService.selectRolePermissionByUserId(user.getUserId())); + } + return roles; + } + + /** + * 鑾峰彇鑿滃崟鏁版嵁鏉冮檺 + * + * @param userId 鐢ㄦ埛Id + * @return 鑿滃崟鏉冮檺淇℃伅 + */ + @Override + public Set<String> getMenuPermission(SysUser user) + { + Set<String> perms = new HashSet<String>(); + // 绠$悊鍛樻嫢鏈夋墍鏈夋潈闄� + if (user.isAdmin()) + { + perms.add("*:*:*"); + } + else + { + List<SysRole> roles = user.getRoles(); + if (!CollectionUtils.isEmpty(roles)) + { + // 澶氳鑹茶缃畃ermissions灞炴�э紝浠ヤ究鏁版嵁鏉冮檺鍖归厤鏉冮檺 + for (SysRole role : roles) + { + Set<String> rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId()); + role.setPermissions(rolePerms); + perms.addAll(rolePerms); + } + } + else + { + perms.addAll(menuService.selectMenuPermsByUserId(user.getUserId())); + } + } + return perms; + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysPostServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysPostServiceImpl.java new file mode 100644 index 0000000..1a5d310 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysPostServiceImpl.java @@ -0,0 +1,179 @@ +package com.se.system.service.impl; + +import java.util.List; + +import com.se.system.domain.SysPost; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.se.common.core.constant.UserConstants; +import com.se.common.core.exception.ServiceException; +import com.se.common.core.utils.StringUtils; +import com.se.system.mapper.SysPostMapper; +import com.se.system.mapper.SysUserPostMapper; +import com.se.system.service.ISysPostService; + +/** + * 宀椾綅淇℃伅 鏈嶅姟灞傚鐞� + * + * @author admin + */ +@Service +public class SysPostServiceImpl implements ISysPostService +{ + @Autowired + private SysPostMapper postMapper; + + @Autowired + private SysUserPostMapper userPostMapper; + + /** + * 鏌ヨ宀椾綅淇℃伅闆嗗悎 + * + * @param post 宀椾綅淇℃伅 + * @return 宀椾綅淇℃伅闆嗗悎 + */ + @Override + public List<SysPost> selectPostList(SysPost post) + { + return postMapper.selectPostList(post); + } + + /** + * 鏌ヨ鎵�鏈夊矖浣� + * + * @return 宀椾綅鍒楄〃 + */ + @Override + public List<SysPost> selectPostAll() + { + return postMapper.selectPostAll(); + } + + /** + * 閫氳繃宀椾綅ID鏌ヨ宀椾綅淇℃伅 + * + * @param postId 宀椾綅ID + * @return 瑙掕壊瀵硅薄淇℃伅 + */ + @Override + public SysPost selectPostById(Long postId) + { + return postMapper.selectPostById(postId); + } + + /** + * 鏍规嵁鐢ㄦ埛ID鑾峰彇宀椾綅閫夋嫨妗嗗垪琛� + * + * @param userId 鐢ㄦ埛ID + * @return 閫変腑宀椾綅ID鍒楄〃 + */ + @Override + public List<Long> selectPostListByUserId(Long userId) + { + return postMapper.selectPostListByUserId(userId); + } + + /** + * 鏍¢獙宀椾綅鍚嶇О鏄惁鍞竴 + * + * @param post 宀椾綅淇℃伅 + * @return 缁撴灉 + */ + @Override + public boolean checkPostNameUnique(SysPost post) + { + Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId(); + SysPost info = postMapper.checkPostNameUnique(post.getPostName()); + if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 鏍¢獙宀椾綅缂栫爜鏄惁鍞竴 + * + * @param post 宀椾綅淇℃伅 + * @return 缁撴灉 + */ + @Override + public boolean checkPostCodeUnique(SysPost post) + { + Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId(); + SysPost info = postMapper.checkPostCodeUnique(post.getPostCode()); + if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 閫氳繃宀椾綅ID鏌ヨ宀椾綅浣跨敤鏁伴噺 + * + * @param postId 宀椾綅ID + * @return 缁撴灉 + */ + @Override + public int countUserPostById(Long postId) + { + return userPostMapper.countUserPostById(postId); + } + + /** + * 鍒犻櫎宀椾綅淇℃伅 + * + * @param postId 宀椾綅ID + * @return 缁撴灉 + */ + @Override + public int deletePostById(Long postId) + { + return postMapper.deletePostById(postId); + } + + /** + * 鎵归噺鍒犻櫎宀椾綅淇℃伅 + * + * @param postIds 闇�瑕佸垹闄ょ殑宀椾綅ID + * @return 缁撴灉 + */ + @Override + public int deletePostByIds(Long[] postIds) + { + for (Long postId : postIds) + { + SysPost post = selectPostById(postId); + if (countUserPostById(postId) > 0) + { + throw new ServiceException(String.format("%1$s宸插垎閰�,涓嶈兘鍒犻櫎", post.getPostName())); + } + } + return postMapper.deletePostByIds(postIds); + } + + /** + * 鏂板淇濆瓨宀椾綅淇℃伅 + * + * @param post 宀椾綅淇℃伅 + * @return 缁撴灉 + */ + @Override + public int insertPost(SysPost post) + { + return postMapper.insertPost(post); + } + + /** + * 淇敼淇濆瓨宀椾綅淇℃伅 + * + * @param post 宀椾綅淇℃伅 + * @return 缁撴灉 + */ + @Override + public int updatePost(SysPost post) + { + return postMapper.updatePost(post); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysRoleServiceImpl.java new file mode 100644 index 0000000..f27fb07 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysRoleServiceImpl.java @@ -0,0 +1,428 @@ +package com.se.system.service.impl; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import com.se.system.domain.SysRoleDept; +import com.se.system.domain.SysRoleMenu; +import com.se.system.domain.SysUserRole; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import com.se.common.core.constant.UserConstants; +import com.se.common.core.exception.ServiceException; +import com.se.common.core.utils.SpringUtils; +import com.se.common.core.utils.StringUtils; +import com.se.common.datascope.annotation.DataScope; +import com.se.common.security.utils.SecurityUtils; +import com.se.system.api.domain.SysRole; +import com.se.system.api.domain.SysUser; +import com.se.system.mapper.SysRoleDeptMapper; +import com.se.system.mapper.SysRoleMapper; +import com.se.system.mapper.SysRoleMenuMapper; +import com.se.system.mapper.SysUserRoleMapper; +import com.se.system.service.ISysRoleService; + +/** + * 瑙掕壊 涓氬姟灞傚鐞� + * + * @author admin + */ +@Service +public class SysRoleServiceImpl implements ISysRoleService +{ + @Autowired + private SysRoleMapper roleMapper; + + @Autowired + private SysRoleMenuMapper roleMenuMapper; + + @Autowired + private SysUserRoleMapper userRoleMapper; + + @Autowired + private SysRoleDeptMapper roleDeptMapper; + + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瑙掕壊鏁版嵁 + * + * @param role 瑙掕壊淇℃伅 + * @return 瑙掕壊鏁版嵁闆嗗悎淇℃伅 + */ + @Override + @DataScope(deptAlias = "d") + public List<SysRole> selectRoleList(SysRole role) + { + return roleMapper.selectRoleList(role); + } + + /** + * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊 + * + * @param userId 鐢ㄦ埛ID + * @return 瑙掕壊鍒楄〃 + */ + @Override + public List<SysRole> selectRolesByUserId(Long userId) + { + List<SysRole> userRoles = roleMapper.selectRolePermissionByUserId(userId); + List<SysRole> roles = selectRoleAll(); + for (SysRole role : roles) + { + for (SysRole userRole : userRoles) + { + if (role.getRoleId().longValue() == userRole.getRoleId().longValue()) + { + role.setFlag(true); + break; + } + } + } + return roles; + } + + /** + * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺 + * + * @param userId 鐢ㄦ埛ID + * @return 鏉冮檺鍒楄〃 + */ + @Override + public Set<String> selectRolePermissionByUserId(Long userId) + { + List<SysRole> perms = roleMapper.selectRolePermissionByUserId(userId); + Set<String> permsSet = new HashSet<>(); + for (SysRole perm : perms) + { + if (StringUtils.isNotNull(perm)) + { + permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(","))); + } + } + return permsSet; + } + + /** + * 鏌ヨ鎵�鏈夎鑹� + * + * @return 瑙掕壊鍒楄〃 + */ + @Override + public List<SysRole> selectRoleAll() + { + return SpringUtils.getAopProxy(this).selectRoleList(new SysRole()); + } + + /** + * 鏍规嵁鐢ㄦ埛ID鑾峰彇瑙掕壊閫夋嫨妗嗗垪琛� + * + * @param userId 鐢ㄦ埛ID + * @return 閫変腑瑙掕壊ID鍒楄〃 + */ + @Override + public List<Long> selectRoleListByUserId(Long userId) + { + return roleMapper.selectRoleListByUserId(userId); + } + + /** + * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊 + * + * @param roleId 瑙掕壊ID + * @return 瑙掕壊瀵硅薄淇℃伅 + */ + @Override + public SysRole selectRoleById(Long roleId) + { + return roleMapper.selectRoleById(roleId); + } + + /** + * 鏍¢獙瑙掕壊鍚嶇О鏄惁鍞竴 + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + @Override + public boolean checkRoleNameUnique(SysRole role) + { + Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId(); + SysRole info = roleMapper.checkRoleNameUnique(role.getRoleName()); + if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 鏍¢獙瑙掕壊鏉冮檺鏄惁鍞竴 + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + @Override + public boolean checkRoleKeyUnique(SysRole role) + { + Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId(); + SysRole info = roleMapper.checkRoleKeyUnique(role.getRoleKey()); + if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 鏍¢獙瑙掕壊鏄惁鍏佽鎿嶄綔 + * + * @param role 瑙掕壊淇℃伅 + */ + @Override + public void checkRoleAllowed(SysRole role) + { + if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin()) + { + throw new ServiceException("涓嶅厑璁告搷浣滆秴绾х鐞嗗憳瑙掕壊"); + } + } + + /** + * 鏍¢獙瑙掕壊鏄惁鏈夋暟鎹潈闄� + * + * @param roleIds 瑙掕壊id + */ + @Override + public void checkRoleDataScope(Long... roleIds) + { + if (!SysUser.isAdmin(SecurityUtils.getUserId())) + { + for (Long roleId : roleIds) + { + SysRole role = new SysRole(); + role.setRoleId(roleId); + List<SysRole> roles = SpringUtils.getAopProxy(this).selectRoleList(role); + if (StringUtils.isEmpty(roles)) + { + throw new ServiceException("娌℃湁鏉冮檺璁块棶瑙掕壊鏁版嵁锛�"); + } + } + } + } + + /** + * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊浣跨敤鏁伴噺 + * + * @param roleId 瑙掕壊ID + * @return 缁撴灉 + */ + @Override + public int countUserRoleByRoleId(Long roleId) + { + return userRoleMapper.countUserRoleByRoleId(roleId); + } + + /** + * 鏂板淇濆瓨瑙掕壊淇℃伅 + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int insertRole(SysRole role) + { + // 鏂板瑙掕壊淇℃伅 + roleMapper.insertRole(role); + return insertRoleMenu(role); + } + + /** + * 淇敼淇濆瓨瑙掕壊淇℃伅 + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int updateRole(SysRole role) + { + // 淇敼瑙掕壊淇℃伅 + roleMapper.updateRole(role); + // 鍒犻櫎瑙掕壊涓庤彍鍗曞叧鑱� + roleMenuMapper.deleteRoleMenuByRoleId(role.getRoleId()); + return insertRoleMenu(role); + } + + /** + * 淇敼瑙掕壊鐘舵�� + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + @Override + public int updateRoleStatus(SysRole role) + { + return roleMapper.updateRole(role); + } + + /** + * 淇敼鏁版嵁鏉冮檺淇℃伅 + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int authDataScope(SysRole role) + { + // 淇敼瑙掕壊淇℃伅 + roleMapper.updateRole(role); + // 鍒犻櫎瑙掕壊涓庨儴闂ㄥ叧鑱� + roleDeptMapper.deleteRoleDeptByRoleId(role.getRoleId()); + // 鏂板瑙掕壊鍜岄儴闂ㄤ俊鎭紙鏁版嵁鏉冮檺锛� + return insertRoleDept(role); + } + + /** + * 鏂板瑙掕壊鑿滃崟淇℃伅 + * + * @param role 瑙掕壊瀵硅薄 + */ + public int insertRoleMenu(SysRole role) + { + int rows = 1; + // 鏂板鐢ㄦ埛涓庤鑹茬鐞� + List<SysRoleMenu> list = new ArrayList<SysRoleMenu>(); + for (Long menuId : role.getMenuIds()) + { + SysRoleMenu rm = new SysRoleMenu(); + rm.setRoleId(role.getRoleId()); + rm.setMenuId(menuId); + list.add(rm); + } + if (list.size() > 0) + { + rows = roleMenuMapper.batchRoleMenu(list); + } + return rows; + } + + /** + * 鏂板瑙掕壊閮ㄩ棬淇℃伅(鏁版嵁鏉冮檺) + * + * @param role 瑙掕壊瀵硅薄 + */ + public int insertRoleDept(SysRole role) + { + int rows = 1; + // 鏂板瑙掕壊涓庨儴闂紙鏁版嵁鏉冮檺锛夌鐞� + List<SysRoleDept> list = new ArrayList<SysRoleDept>(); + for (Long deptId : role.getDeptIds()) + { + SysRoleDept rd = new SysRoleDept(); + rd.setRoleId(role.getRoleId()); + rd.setDeptId(deptId); + list.add(rd); + } + if (list.size() > 0) + { + rows = roleDeptMapper.batchRoleDept(list); + } + return rows; + } + + /** + * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊 + * + * @param roleId 瑙掕壊ID + * @return 缁撴灉 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int deleteRoleById(Long roleId) + { + // 鍒犻櫎瑙掕壊涓庤彍鍗曞叧鑱� + roleMenuMapper.deleteRoleMenuByRoleId(roleId); + // 鍒犻櫎瑙掕壊涓庨儴闂ㄥ叧鑱� + roleDeptMapper.deleteRoleDeptByRoleId(roleId); + return roleMapper.deleteRoleById(roleId); + } + + /** + * 鎵归噺鍒犻櫎瑙掕壊淇℃伅 + * + * @param roleIds 闇�瑕佸垹闄ょ殑瑙掕壊ID + * @return 缁撴灉 + */ + @Override + @Transactional(rollbackFor = Exception.class) + 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())); + } + } + // 鍒犻櫎瑙掕壊涓庤彍鍗曞叧鑱� + roleMenuMapper.deleteRoleMenu(roleIds); + // 鍒犻櫎瑙掕壊涓庨儴闂ㄥ叧鑱� + roleDeptMapper.deleteRoleDept(roleIds); + return roleMapper.deleteRoleByIds(roleIds); + } + + /** + * 鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊 + * + * @param userRole 鐢ㄦ埛鍜岃鑹插叧鑱斾俊鎭� + * @return 缁撴灉 + */ + @Override + public int deleteAuthUser(SysUserRole userRole) + { + return userRoleMapper.deleteUserRoleInfo(userRole); + } + + /** + * 鎵归噺鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊 + * + * @param roleId 瑙掕壊ID + * @param userIds 闇�瑕佸彇娑堟巿鏉冪殑鐢ㄦ埛鏁版嵁ID + * @return 缁撴灉 + */ + @Override + public int deleteAuthUsers(Long roleId, Long[] userIds) + { + return userRoleMapper.deleteUserRoleInfos(roleId, userIds); + } + + /** + * 鎵归噺閫夋嫨鎺堟潈鐢ㄦ埛瑙掕壊 + * + * @param roleId 瑙掕壊ID + * @param userIds 闇�瑕佹巿鏉冪殑鐢ㄦ埛鏁版嵁ID + * @return 缁撴灉 + */ + @Override + public int insertAuthUsers(Long roleId, Long[] userIds) + { + // 鏂板鐢ㄦ埛涓庤鑹茬鐞� + List<SysUserRole> list = new ArrayList<SysUserRole>(); + for (Long userId : userIds) + { + SysUserRole ur = new SysUserRole(); + ur.setUserId(userId); + ur.setRoleId(roleId); + list.add(ur); + } + return userRoleMapper.batchUserRole(list); + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysUserOnlineServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysUserOnlineServiceImpl.java new file mode 100644 index 0000000..ad66af2 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysUserOnlineServiceImpl.java @@ -0,0 +1,89 @@ +package com.se.system.service.impl; + +import com.se.system.domain.SysUserOnline; +import org.springframework.stereotype.Service; +import com.se.common.core.utils.StringUtils; +import com.se.system.api.model.LoginUser; +import com.se.system.service.ISysUserOnlineService; + +/** + * 鍦ㄧ嚎鐢ㄦ埛 鏈嶅姟灞傚鐞� + * + * @author admin + */ +@Service +public class SysUserOnlineServiceImpl implements ISysUserOnlineService +{ + /** + * 閫氳繃鐧诲綍鍦板潃鏌ヨ淇℃伅 + * + * @param ipaddr 鐧诲綍鍦板潃 + * @param user 鐢ㄦ埛淇℃伅 + * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅 + */ + @Override + public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user) + { + if (StringUtils.equals(ipaddr, user.getIpaddr())) + { + return loginUserToUserOnline(user); + } + return null; + } + + /** + * 閫氳繃鐢ㄦ埛鍚嶇О鏌ヨ淇℃伅 + * + * @param userName 鐢ㄦ埛鍚嶇О + * @param user 鐢ㄦ埛淇℃伅 + * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅 + */ + @Override + public SysUserOnline selectOnlineByUserName(String userName, LoginUser user) + { + if (StringUtils.equals(userName, user.getUsername())) + { + return loginUserToUserOnline(user); + } + return null; + } + + /** + * 閫氳繃鐧诲綍鍦板潃/鐢ㄦ埛鍚嶇О鏌ヨ淇℃伅 + * + * @param ipaddr 鐧诲綍鍦板潃 + * @param userName 鐢ㄦ埛鍚嶇О + * @param user 鐢ㄦ埛淇℃伅 + * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅 + */ + @Override + public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user) + { + if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername())) + { + return loginUserToUserOnline(user); + } + return null; + } + + /** + * 璁剧疆鍦ㄧ嚎鐢ㄦ埛淇℃伅 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 鍦ㄧ嚎鐢ㄦ埛 + */ + @Override + public SysUserOnline loginUserToUserOnline(LoginUser user) + { + if (StringUtils.isNull(user)) + { + return null; + } + SysUserOnline sysUserOnline = new SysUserOnline(); + sysUserOnline.setTokenId(user.getToken()); + sysUserOnline.setUserName(user.getUsername()); + sysUserOnline.setIpaddr(user.getIpaddr()); + sysUserOnline.setLoginTime(user.getLoginTime()); + return sysUserOnline; + } +} diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysUserServiceImpl.java new file mode 100644 index 0000000..54fc967 --- /dev/null +++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysUserServiceImpl.java @@ -0,0 +1,552 @@ +package com.se.system.service.impl; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import javax.validation.Validator; + +import com.se.system.domain.SysPost; +import com.se.system.domain.SysUserPost; +import com.se.system.domain.SysUserRole; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import com.se.common.core.constant.UserConstants; +import com.se.common.core.exception.ServiceException; +import com.se.common.core.utils.SpringUtils; +import com.se.common.core.utils.StringUtils; +import com.se.common.core.utils.bean.BeanValidators; +import com.se.common.datascope.annotation.DataScope; +import com.se.common.security.utils.SecurityUtils; +import com.se.system.api.domain.SysRole; +import com.se.system.api.domain.SysUser; +import com.se.system.mapper.SysPostMapper; +import com.se.system.mapper.SysRoleMapper; +import com.se.system.mapper.SysUserMapper; +import com.se.system.mapper.SysUserPostMapper; +import com.se.system.mapper.SysUserRoleMapper; +import com.se.system.service.ISysConfigService; +import com.se.system.service.ISysDeptService; +import com.se.system.service.ISysUserService; + +/** + * 鐢ㄦ埛 涓氬姟灞傚鐞� + * + * @author admin + */ +@Service +public class SysUserServiceImpl implements ISysUserService +{ + private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class); + + @Autowired + private SysUserMapper userMapper; + + @Autowired + private SysRoleMapper roleMapper; + + @Autowired + private SysPostMapper postMapper; + + @Autowired + private SysUserRoleMapper userRoleMapper; + + @Autowired + private SysUserPostMapper userPostMapper; + + @Autowired + private ISysConfigService configService; + + @Autowired + private ISysDeptService deptService; + + @Autowired + protected Validator validator; + + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 + */ + @Override + @DataScope(deptAlias = "d", userAlias = "u") + public List<SysUser> selectUserList(SysUser user) + { + return userMapper.selectUserList(user); + } + + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛� + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 + */ + @Override + @DataScope(deptAlias = "d", userAlias = "u") + public List<SysUser> selectAllocatedList(SysUser user) + { + return userMapper.selectAllocatedList(user); + } + + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛� + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅 + */ + @Override + @DataScope(deptAlias = "d", userAlias = "u") + public List<SysUser> selectUnallocatedList(SysUser user) + { + return userMapper.selectUnallocatedList(user); + } + + /** + * 閫氳繃鐢ㄦ埛鍚嶆煡璇㈢敤鎴� + * + * @param userName 鐢ㄦ埛鍚� + * @return 鐢ㄦ埛瀵硅薄淇℃伅 + */ + @Override + public SysUser selectUserByUserName(String userName) + { + return userMapper.selectUserByUserName(userName); + } + + /** + * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛 + * + * @param userId 鐢ㄦ埛ID + * @return 鐢ㄦ埛瀵硅薄淇℃伅 + */ + @Override + public SysUser selectUserById(Long userId) + { + return userMapper.selectUserById(userId); + } + + /** + * 鏌ヨ鐢ㄦ埛鎵�灞炶鑹茬粍 + * + * @param userName 鐢ㄦ埛鍚� + * @return 缁撴灉 + */ + @Override + public String selectUserRoleGroup(String userName) + { + List<SysRole> list = roleMapper.selectRolesByUserName(userName); + if (CollectionUtils.isEmpty(list)) + { + return StringUtils.EMPTY; + } + return list.stream().map(SysRole::getRoleName).collect(Collectors.joining(",")); + } + + /** + * 鏌ヨ鐢ㄦ埛鎵�灞炲矖浣嶇粍 + * + * @param userName 鐢ㄦ埛鍚� + * @return 缁撴灉 + */ + @Override + public String selectUserPostGroup(String userName) + { + List<SysPost> list = postMapper.selectPostsByUserName(userName); + if (CollectionUtils.isEmpty(list)) + { + return StringUtils.EMPTY; + } + return list.stream().map(SysPost::getPostName).collect(Collectors.joining(",")); + } + + /** + * 鏍¢獙鐢ㄦ埛鍚嶇О鏄惁鍞竴 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 缁撴灉 + */ + @Override + public boolean checkUserNameUnique(SysUser user) + { + Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); + SysUser info = userMapper.checkUserNameUnique(user.getUserName()); + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 鏍¢獙鎵嬫満鍙风爜鏄惁鍞竴 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return + */ + @Override + public boolean checkPhoneUnique(SysUser user) + { + Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); + SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber()); + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 鏍¢獙email鏄惁鍞竴 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return + */ + @Override + public boolean checkEmailUnique(SysUser user) + { + Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); + SysUser info = userMapper.checkEmailUnique(user.getEmail()); + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 鏍¢獙鐢ㄦ埛鏄惁鍏佽鎿嶄綔 + * + * @param user 鐢ㄦ埛淇℃伅 + */ + @Override + public void checkUserAllowed(SysUser user) + { + if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) + { + throw new ServiceException("涓嶅厑璁告搷浣滆秴绾х鐞嗗憳鐢ㄦ埛"); + } + } + + /** + * 鏍¢獙鐢ㄦ埛鏄惁鏈夋暟鎹潈闄� + * + * @param userId 鐢ㄦ埛id + */ + @Override + public void checkUserDataScope(Long userId) + { + if (!SysUser.isAdmin(SecurityUtils.getUserId())) + { + SysUser user = new SysUser(); + user.setUserId(userId); + List<SysUser> users = SpringUtils.getAopProxy(this).selectUserList(user); + if (StringUtils.isEmpty(users)) + { + throw new ServiceException("娌℃湁鏉冮檺璁块棶鐢ㄦ埛鏁版嵁锛�"); + } + } + } + + /** + * 鏂板淇濆瓨鐢ㄦ埛淇℃伅 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 缁撴灉 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int insertUser(SysUser user) + { + // 鏂板鐢ㄦ埛淇℃伅 + int rows = userMapper.insertUser(user); + // 鏂板鐢ㄦ埛宀椾綅鍏宠仈 + insertUserPost(user); + // 鏂板鐢ㄦ埛涓庤鑹茬鐞� + insertUserRole(user); + return rows; + } + + /** + * 娉ㄥ唽鐢ㄦ埛淇℃伅 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 缁撴灉 + */ + @Override + public boolean registerUser(SysUser user) + { + return userMapper.insertUser(user) > 0; + } + + /** + * 淇敼淇濆瓨鐢ㄦ埛淇℃伅 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 缁撴灉 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int updateUser(SysUser user) + { + Long userId = user.getUserId(); + // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱� + userRoleMapper.deleteUserRoleByUserId(userId); + // 鏂板鐢ㄦ埛涓庤鑹茬鐞� + insertUserRole(user); + // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶅叧鑱� + userPostMapper.deleteUserPostByUserId(userId); + // 鏂板鐢ㄦ埛涓庡矖浣嶇鐞� + insertUserPost(user); + return userMapper.updateUser(user); + } + + /** + * 鐢ㄦ埛鎺堟潈瑙掕壊 + * + * @param userId 鐢ㄦ埛ID + * @param roleIds 瑙掕壊缁� + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void insertUserAuth(Long userId, Long[] roleIds) + { + userRoleMapper.deleteUserRoleByUserId(userId); + insertUserRole(userId, roleIds); + } + + /** + * 淇敼鐢ㄦ埛鐘舵�� + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 缁撴灉 + */ + @Override + public int updateUserStatus(SysUser user) + { + return userMapper.updateUser(user); + } + + /** + * 淇敼鐢ㄦ埛鍩烘湰淇℃伅 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 缁撴灉 + */ + @Override + public boolean updateUserProfile(SysUser user) + { + return userMapper.updateUser(user) > 0; + } + + /** + * 淇敼鐢ㄦ埛澶村儚 + * + * @param userName 鐢ㄦ埛鍚� + * @param avatar 澶村儚鍦板潃 + * @return 缁撴灉 + */ + @Override + public boolean updateUserAvatar(String userName, String avatar) + { + return userMapper.updateUserAvatar(userName, avatar) > 0; + } + + /** + * 閲嶇疆鐢ㄦ埛瀵嗙爜 + * + * @param user 鐢ㄦ埛淇℃伅 + * @return 缁撴灉 + */ + @Override + public int resetPwd(SysUser user) + { + return userMapper.updateUser(user); + } + + /** + * 閲嶇疆鐢ㄦ埛瀵嗙爜 + * + * @param userName 鐢ㄦ埛鍚� + * @param password 瀵嗙爜 + * @return 缁撴灉 + */ + @Override + public int resetUserPwd(String userName, String password) + { + return userMapper.resetUserPwd(userName, password); + } + + /** + * 鏂板鐢ㄦ埛瑙掕壊淇℃伅 + * + * @param user 鐢ㄦ埛瀵硅薄 + */ + public void insertUserRole(SysUser user) + { + this.insertUserRole(user.getUserId(), user.getRoleIds()); + } + + /** + * 鏂板鐢ㄦ埛宀椾綅淇℃伅 + * + * @param user 鐢ㄦ埛瀵硅薄 + */ + public void insertUserPost(SysUser user) + { + Long[] posts = user.getPostIds(); + if (StringUtils.isNotEmpty(posts)) + { + // 鏂板鐢ㄦ埛涓庡矖浣嶇鐞� + List<SysUserPost> list = new ArrayList<SysUserPost>(); + for (Long postId : posts) + { + SysUserPost up = new SysUserPost(); + up.setUserId(user.getUserId()); + up.setPostId(postId); + list.add(up); + } + userPostMapper.batchUserPost(list); + } + } + + /** + * 鏂板鐢ㄦ埛瑙掕壊淇℃伅 + * + * @param userId 鐢ㄦ埛ID + * @param roleIds 瑙掕壊缁� + */ + public void insertUserRole(Long userId, Long[] roleIds) + { + if (StringUtils.isNotEmpty(roleIds)) + { + // 鏂板鐢ㄦ埛涓庤鑹茬鐞� + List<SysUserRole> list = new ArrayList<SysUserRole>(); + for (Long roleId : roleIds) + { + SysUserRole ur = new SysUserRole(); + ur.setUserId(userId); + ur.setRoleId(roleId); + list.add(ur); + } + userRoleMapper.batchUserRole(list); + } + } + + /** + * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛 + * + * @param userId 鐢ㄦ埛ID + * @return 缁撴灉 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int deleteUserById(Long userId) + { + // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱� + userRoleMapper.deleteUserRoleByUserId(userId); + // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶈〃 + userPostMapper.deleteUserPostByUserId(userId); + return userMapper.deleteUserById(userId); + } + + /** + * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅 + * + * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛ID + * @return 缁撴灉 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int deleteUserByIds(Long[] userIds) + { + for (Long userId : userIds) + { + checkUserAllowed(new SysUser(userId)); + checkUserDataScope(userId); + } + // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱� + userRoleMapper.deleteUserRole(userIds); + // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶅叧鑱� + userPostMapper.deleteUserPost(userIds); + return userMapper.deleteUserByIds(userIds); + } + + /** + * 瀵煎叆鐢ㄦ埛鏁版嵁 + * + * @param userList 鐢ㄦ埛鏁版嵁鍒楄〃 + * @param isUpdateSupport 鏄惁鏇存柊鏀寔锛屽鏋滃凡瀛樺湪锛屽垯杩涜鏇存柊鏁版嵁 + * @param operName 鎿嶄綔鐢ㄦ埛 + * @return 缁撴灉 + */ + @Override + public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName) + { + if (StringUtils.isNull(userList) || userList.size() == 0) + { + throw new ServiceException("瀵煎叆鐢ㄦ埛鏁版嵁涓嶈兘涓虹┖锛�"); + } + int successNum = 0; + int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + for (SysUser user : userList) + { + try + { + // 楠岃瘉鏄惁瀛樺湪杩欎釜鐢ㄦ埛 + SysUser u = userMapper.selectUserByUserName(user.getUserName()); + if (StringUtils.isNull(u)) + { + BeanValidators.validateWithException(validator, user); + deptService.checkDeptDataScope(user.getDeptId()); + String password = configService.selectConfigByKey("sys.user.initPassword"); + user.setPassword(SecurityUtils.encryptPassword(password)); + user.setCreateBy(operName); + userMapper.insertUser(user); + successNum++; + successMsg.append("<br/>" + successNum + "銆佽处鍙� " + user.getUserName() + " 瀵煎叆鎴愬姛"); + } + else if (isUpdateSupport) + { + BeanValidators.validateWithException(validator, user); + checkUserAllowed(u); + checkUserDataScope(u.getUserId()); + deptService.checkDeptDataScope(user.getDeptId()); + user.setUserId(u.getUserId()); + user.setUpdateBy(operName); + userMapper.updateUser(user); + successNum++; + successMsg.append("<br/>" + successNum + "銆佽处鍙� " + user.getUserName() + " 鏇存柊鎴愬姛"); + } + else + { + failureNum++; + failureMsg.append("<br/>" + failureNum + "銆佽处鍙� " + user.getUserName() + " 宸插瓨鍦�"); + } + } + catch (Exception e) + { + failureNum++; + String msg = "<br/>" + failureNum + "銆佽处鍙� " + user.getUserName() + " 瀵煎叆澶辫触锛�"; + failureMsg.append(msg + e.getMessage()); + log.error(msg, e); + } + } + if (failureNum > 0) + { + failureMsg.insert(0, "寰堟姳姝夛紝瀵煎叆澶辫触锛佸叡 " + failureNum + " 鏉℃暟鎹牸寮忎笉姝g‘锛岄敊璇涓嬶細"); + throw new ServiceException(failureMsg.toString()); + } + else + { + successMsg.insert(0, "鎭枩鎮紝鏁版嵁宸插叏閮ㄥ鍏ユ垚鍔燂紒鍏� " + successNum + " 鏉★紝鏁版嵁濡備笅锛�"); + } + return successMsg.toString(); + } + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/banner.txt b/ruoyi-modules/se-system/src/main/resources/banner.txt similarity index 100% rename from ruoyi-modules/ruoyi-system/src/main/resources/banner.txt rename to ruoyi-modules/se-system/src/main/resources/banner.txt diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml b/ruoyi-modules/se-system/src/main/resources/bootstrap.yml similarity index 100% rename from ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml rename to ruoyi-modules/se-system/src/main/resources/bootstrap.yml diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/logback.xml b/ruoyi-modules/se-system/src/main/resources/logback.xml similarity index 100% rename from ruoyi-modules/ruoyi-system/src/main/resources/logback.xml rename to ruoyi-modules/se-system/src/main/resources/logback.xml diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysConfigMapper.xml similarity index 100% rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysConfigMapper.xml diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysDeptMapper.xml similarity index 100% rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysDeptMapper.xml diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysDictDataMapper.xml similarity index 100% rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysDictDataMapper.xml diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysDictTypeMapper.xml similarity index 100% rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysDictTypeMapper.xml diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysLogininforMapper.xml similarity index 100% rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysLogininforMapper.xml diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysMenuMapper.xml similarity index 100% rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysMenuMapper.xml diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysNoticeMapper.xml similarity index 100% rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysNoticeMapper.xml diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysOperLogMapper.xml similarity index 100% rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysOperLogMapper.xml diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysPostMapper.xml similarity index 100% rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysPostMapper.xml diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml similarity index 100% rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysRoleMapper.xml similarity index 100% rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysRoleMapper.xml diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml similarity index 100% rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysUserMapper.xml similarity index 100% rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysUserMapper.xml diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysUserPostMapper.xml similarity index 100% rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysUserPostMapper.xml diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysUserRoleMapper.xml similarity index 100% rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysUserRoleMapper.xml diff --git a/se-api/ruoyi-api-system/pom.xml b/se-api/ruoyi-api-system/pom.xml deleted file mode 100644 index 9fd70d6..0000000 --- a/se-api/ruoyi-api-system/pom.xml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="http://maven.apache.org/POM/4.0.0" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-api</artifactId> - <version>3.6.4</version> - </parent> - <modelVersion>4.0.0</modelVersion> - - <artifactId>ruoyi-api-system</artifactId> - - <description> - ruoyi-api-system绯荤粺鎺ュ彛妯″潡 - </description> - - <dependencies> - - <!-- RuoYi Common Core--> - <dependency> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common-core</artifactId> - </dependency> - - </dependencies> - -</project> \ No newline at end of file diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteFileService.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteFileService.java deleted file mode 100644 index ed49e2c..0000000 --- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteFileService.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.ruoyi.system.api; - -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestPart; -import org.springframework.web.multipart.MultipartFile; -import com.ruoyi.common.core.constant.ServiceNameConstants; -import com.ruoyi.common.core.domain.R; -import com.ruoyi.system.api.domain.SysFile; -import com.ruoyi.system.api.factory.RemoteFileFallbackFactory; - -/** - * 鏂囦欢鏈嶅姟 - * - * @author ruoyi - */ -@FeignClient(contextId = "remoteFileService", value = ServiceNameConstants.FILE_SERVICE, fallbackFactory = RemoteFileFallbackFactory.class) -public interface RemoteFileService -{ - /** - * 涓婁紶鏂囦欢 - * - * @param file 鏂囦欢淇℃伅 - * @return 缁撴灉 - */ - @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - public R<SysFile> upload(@RequestPart(value = "file") MultipartFile file); -} diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteLogService.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteLogService.java deleted file mode 100644 index 525eda3..0000000 --- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteLogService.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.ruoyi.system.api; - -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestHeader; -import com.ruoyi.common.core.constant.SecurityConstants; -import com.ruoyi.common.core.constant.ServiceNameConstants; -import com.ruoyi.common.core.domain.R; -import com.ruoyi.system.api.domain.SysLogininfor; -import com.ruoyi.system.api.domain.SysOperLog; -import com.ruoyi.system.api.factory.RemoteLogFallbackFactory; - -/** - * 鏃ュ織鏈嶅姟 - * - * @author ruoyi - */ -@FeignClient(contextId = "remoteLogService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteLogFallbackFactory.class) -public interface RemoteLogService -{ - /** - * 淇濆瓨绯荤粺鏃ュ織 - * - * @param sysOperLog 鏃ュ織瀹炰綋 - * @param source 璇锋眰鏉ユ簮 - * @return 缁撴灉 - */ - @PostMapping("/operlog") - public R<Boolean> saveLog(@RequestBody SysOperLog sysOperLog, @RequestHeader(SecurityConstants.FROM_SOURCE) String source) throws Exception; - - /** - * 淇濆瓨璁块棶璁板綍 - * - * @param sysLogininfor 璁块棶瀹炰綋 - * @param source 璇锋眰鏉ユ簮 - * @return 缁撴灉 - */ - @PostMapping("/logininfor") - public R<Boolean> saveLogininfor(@RequestBody SysLogininfor sysLogininfor, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); -} diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java deleted file mode 100644 index 95cb91d..0000000 --- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.ruoyi.system.api; - -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestHeader; -import com.ruoyi.common.core.constant.SecurityConstants; -import com.ruoyi.common.core.constant.ServiceNameConstants; -import com.ruoyi.common.core.domain.R; -import com.ruoyi.system.api.domain.SysUser; -import com.ruoyi.system.api.factory.RemoteUserFallbackFactory; -import com.ruoyi.system.api.model.LoginUser; - -/** - * 鐢ㄦ埛鏈嶅姟 - * - * @author ruoyi - */ -@FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class) -public interface RemoteUserService -{ - /** - * 閫氳繃鐢ㄦ埛鍚嶆煡璇㈢敤鎴蜂俊鎭� - * - * @param username 鐢ㄦ埛鍚� - * @param source 璇锋眰鏉ユ簮 - * @return 缁撴灉 - */ - @GetMapping("/user/info/{username}") - public R<LoginUser> getUserInfo(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); - - /** - * 娉ㄥ唽鐢ㄦ埛淇℃伅 - * - * @param sysUser 鐢ㄦ埛淇℃伅 - * @param source 璇锋眰鏉ユ簮 - * @return 缁撴灉 - */ - @PostMapping("/user/register") - public R<Boolean> registerUserInfo(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); - - /** - * 璁板綍鐢ㄦ埛鐧诲綍IP鍦板潃鍜岀櫥褰曟椂闂� - * - * @param sysUser 鐢ㄦ埛淇℃伅 - * @param source 璇锋眰鏉ユ簮 - * @return 缁撴灉 - */ - @PutMapping("/user/recordlogin") - public R<Boolean> recordUserLogin(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); -} diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDept.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDept.java deleted file mode 100644 index 91173f0..0000000 --- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDept.java +++ /dev/null @@ -1,203 +0,0 @@ -package com.ruoyi.system.api.domain; - -import java.util.ArrayList; -import java.util.List; -import javax.validation.constraints.Email; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; -import com.ruoyi.common.core.web.domain.BaseEntity; - -/** - * 閮ㄩ棬琛� sys_dept - * - * @author ruoyi - */ -public class SysDept extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 閮ㄩ棬ID */ - private Long deptId; - - /** 鐖堕儴闂↖D */ - private Long parentId; - - /** 绁栫骇鍒楄〃 */ - private String ancestors; - - /** 閮ㄩ棬鍚嶇О */ - private String deptName; - - /** 鏄剧ず椤哄簭 */ - private Integer orderNum; - - /** 璐熻矗浜� */ - private String leader; - - /** 鑱旂郴鐢佃瘽 */ - private String phone; - - /** 閭 */ - private String email; - - /** 閮ㄩ棬鐘舵��:0姝e父,1鍋滅敤 */ - private String status; - - /** 鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛� */ - private String delFlag; - - /** 鐖堕儴闂ㄥ悕绉� */ - private String parentName; - - /** 瀛愰儴闂� */ - private List<SysDept> children = new ArrayList<SysDept>(); - - public Long getDeptId() - { - return deptId; - } - - public void setDeptId(Long deptId) - { - this.deptId = deptId; - } - - public Long getParentId() - { - return parentId; - } - - public void setParentId(Long parentId) - { - this.parentId = parentId; - } - - public String getAncestors() - { - return ancestors; - } - - public void setAncestors(String ancestors) - { - this.ancestors = ancestors; - } - - @NotBlank(message = "閮ㄩ棬鍚嶇О涓嶈兘涓虹┖") - @Size(min = 0, max = 30, message = "閮ㄩ棬鍚嶇О闀垮害涓嶈兘瓒呰繃30涓瓧绗�") - public String getDeptName() - { - return deptName; - } - - public void setDeptName(String deptName) - { - this.deptName = deptName; - } - - @NotNull(message = "鏄剧ず椤哄簭涓嶈兘涓虹┖") - public Integer getOrderNum() - { - return orderNum; - } - - public void setOrderNum(Integer orderNum) - { - this.orderNum = orderNum; - } - - public String getLeader() - { - return leader; - } - - public void setLeader(String leader) - { - this.leader = leader; - } - - @Size(min = 0, max = 11, message = "鑱旂郴鐢佃瘽闀垮害涓嶈兘瓒呰繃11涓瓧绗�") - public String getPhone() - { - return phone; - } - - public void setPhone(String phone) - { - this.phone = phone; - } - - @Email(message = "閭鏍煎紡涓嶆纭�") - @Size(min = 0, max = 50, message = "閭闀垮害涓嶈兘瓒呰繃50涓瓧绗�") - public String getEmail() - { - return email; - } - - public void setEmail(String email) - { - this.email = email; - } - - public String getStatus() - { - return status; - } - - public void setStatus(String status) - { - this.status = status; - } - - public String getDelFlag() - { - return delFlag; - } - - public void setDelFlag(String delFlag) - { - this.delFlag = delFlag; - } - - public String getParentName() - { - return parentName; - } - - public void setParentName(String parentName) - { - this.parentName = parentName; - } - - public List<SysDept> getChildren() - { - return children; - } - - public void setChildren(List<SysDept> children) - { - this.children = children; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("deptId", getDeptId()) - .append("parentId", getParentId()) - .append("ancestors", getAncestors()) - .append("deptName", getDeptName()) - .append("orderNum", getOrderNum()) - .append("leader", getLeader()) - .append("phone", getPhone()) - .append("email", getEmail()) - .append("status", getStatus()) - .append("delFlag", getDelFlag()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .toString(); - } -} diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictData.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictData.java deleted file mode 100644 index e0c4a17..0000000 --- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictData.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.ruoyi.system.api.domain; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Size; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; -import com.ruoyi.common.core.annotation.Excel; -import com.ruoyi.common.core.annotation.Excel.ColumnType; -import com.ruoyi.common.core.constant.UserConstants; -import com.ruoyi.common.core.web.domain.BaseEntity; - -/** - * 瀛楀吀鏁版嵁琛� sys_dict_data - * - * @author ruoyi - */ -public class SysDictData extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 瀛楀吀缂栫爜 */ - @Excel(name = "瀛楀吀缂栫爜", cellType = ColumnType.NUMERIC) - private Long dictCode; - - /** 瀛楀吀鎺掑簭 */ - @Excel(name = "瀛楀吀鎺掑簭", cellType = ColumnType.NUMERIC) - private Long dictSort; - - /** 瀛楀吀鏍囩 */ - @Excel(name = "瀛楀吀鏍囩") - private String dictLabel; - - /** 瀛楀吀閿�� */ - @Excel(name = "瀛楀吀閿��") - private String dictValue; - - /** 瀛楀吀绫诲瀷 */ - @Excel(name = "瀛楀吀绫诲瀷") - private String dictType; - - /** 鏍峰紡灞炴�э紙鍏朵粬鏍峰紡鎵╁睍锛� */ - private String cssClass; - - /** 琛ㄦ牸瀛楀吀鏍峰紡 */ - private String listClass; - - /** 鏄惁榛樿锛圷鏄� N鍚︼級 */ - @Excel(name = "鏄惁榛樿", readConverterExp = "Y=鏄�,N=鍚�") - private String isDefault; - - /** 鐘舵�侊紙0姝e父 1鍋滅敤锛� */ - @Excel(name = "鐘舵��", readConverterExp = "0=姝e父,1=鍋滅敤") - private String status; - - public Long getDictCode() - { - return dictCode; - } - - public void setDictCode(Long dictCode) - { - this.dictCode = dictCode; - } - - public Long getDictSort() - { - return dictSort; - } - - public void setDictSort(Long dictSort) - { - this.dictSort = dictSort; - } - - @NotBlank(message = "瀛楀吀鏍囩涓嶈兘涓虹┖") - @Size(min = 0, max = 100, message = "瀛楀吀鏍囩闀垮害涓嶈兘瓒呰繃100涓瓧绗�") - public String getDictLabel() - { - return dictLabel; - } - - public void setDictLabel(String dictLabel) - { - this.dictLabel = dictLabel; - } - - @NotBlank(message = "瀛楀吀閿�间笉鑳戒负绌�") - @Size(min = 0, max = 100, message = "瀛楀吀閿�奸暱搴︿笉鑳借秴杩�100涓瓧绗�") - public String getDictValue() - { - return dictValue; - } - - public void setDictValue(String dictValue) - { - this.dictValue = dictValue; - } - - @NotBlank(message = "瀛楀吀绫诲瀷涓嶈兘涓虹┖") - @Size(min = 0, max = 100, message = "瀛楀吀绫诲瀷闀垮害涓嶈兘瓒呰繃100涓瓧绗�") - public String getDictType() - { - return dictType; - } - - public void setDictType(String dictType) - { - this.dictType = dictType; - } - - @Size(min = 0, max = 100, message = "鏍峰紡灞炴�ч暱搴︿笉鑳借秴杩�100涓瓧绗�") - public String getCssClass() - { - return cssClass; - } - - public void setCssClass(String cssClass) - { - this.cssClass = cssClass; - } - - public String getListClass() - { - return listClass; - } - - public void setListClass(String listClass) - { - this.listClass = listClass; - } - - public boolean getDefault() - { - return UserConstants.YES.equals(this.isDefault); - } - - public String getIsDefault() - { - return isDefault; - } - - public void setIsDefault(String isDefault) - { - this.isDefault = isDefault; - } - - public String getStatus() - { - return status; - } - - public void setStatus(String status) - { - this.status = status; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("dictCode", getDictCode()) - .append("dictSort", getDictSort()) - .append("dictLabel", getDictLabel()) - .append("dictValue", getDictValue()) - .append("dictType", getDictType()) - .append("cssClass", getCssClass()) - .append("listClass", getListClass()) - .append("isDefault", getIsDefault()) - .append("status", getStatus()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("remark", getRemark()) - .toString(); - } -} diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictType.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictType.java deleted file mode 100644 index c51a48d..0000000 --- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictType.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.ruoyi.system.api.domain; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Pattern; -import javax.validation.constraints.Size; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; -import com.ruoyi.common.core.annotation.Excel; -import com.ruoyi.common.core.annotation.Excel.ColumnType; -import com.ruoyi.common.core.web.domain.BaseEntity; - -/** - * 瀛楀吀绫诲瀷琛� sys_dict_type - * - * @author ruoyi - */ -public class SysDictType extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 瀛楀吀涓婚敭 */ - @Excel(name = "瀛楀吀涓婚敭", cellType = ColumnType.NUMERIC) - private Long dictId; - - /** 瀛楀吀鍚嶇О */ - @Excel(name = "瀛楀吀鍚嶇О") - private String dictName; - - /** 瀛楀吀绫诲瀷 */ - @Excel(name = "瀛楀吀绫诲瀷") - private String dictType; - - /** 鐘舵�侊紙0姝e父 1鍋滅敤锛� */ - @Excel(name = "鐘舵��", readConverterExp = "0=姝e父,1=鍋滅敤") - private String status; - - public Long getDictId() - { - return dictId; - } - - public void setDictId(Long dictId) - { - this.dictId = dictId; - } - - @NotBlank(message = "瀛楀吀鍚嶇О涓嶈兘涓虹┖") - @Size(min = 0, max = 100, message = "瀛楀吀绫诲瀷鍚嶇О闀垮害涓嶈兘瓒呰繃100涓瓧绗�") - public String getDictName() - { - return dictName; - } - - public void setDictName(String dictName) - { - this.dictName = dictName; - } - - @NotBlank(message = "瀛楀吀绫诲瀷涓嶈兘涓虹┖") - @Size(min = 0, max = 100, message = "瀛楀吀绫诲瀷绫诲瀷闀垮害涓嶈兘瓒呰繃100涓瓧绗�") - @Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "瀛楀吀绫诲瀷蹇呴』浠ュ瓧姣嶅紑澶达紝涓斿彧鑳戒负锛堝皬鍐欏瓧姣嶏紝鏁板瓧锛屼笅婊戠嚎锛�") - public String getDictType() - { - return dictType; - } - - public void setDictType(String dictType) - { - this.dictType = dictType; - } - - public String getStatus() - { - return status; - } - - public void setStatus(String status) - { - this.status = status; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("dictId", getDictId()) - .append("dictName", getDictName()) - .append("dictType", getDictType()) - .append("status", getStatus()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("remark", getRemark()) - .toString(); - } -} diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysFile.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysFile.java deleted file mode 100644 index c953b19..0000000 --- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysFile.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.ruoyi.system.api.domain; - -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - -/** - * 鏂囦欢淇℃伅 - * - * @author ruoyi - */ -public class SysFile -{ - /** - * 鏂囦欢鍚嶇О - */ - private String name; - - /** - * 鏂囦欢鍦板潃 - */ - private String url; - - public String getName() - { - return name; - } - - public void setName(String name) - { - this.name = name; - } - - public String getUrl() - { - return url; - } - - public void setUrl(String url) - { - this.url = url; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("name", getName()) - .append("url", getUrl()) - .toString(); - } -} diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysLogininfor.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysLogininfor.java deleted file mode 100644 index cd3be58..0000000 --- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysLogininfor.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.ruoyi.system.api.domain; - -import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.ruoyi.common.core.annotation.Excel; -import com.ruoyi.common.core.annotation.Excel.ColumnType; -import com.ruoyi.common.core.web.domain.BaseEntity; - -/** - * 绯荤粺璁块棶璁板綍琛� sys_logininfor - * - * @author ruoyi - */ -public class SysLogininfor extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** ID */ - @Excel(name = "搴忓彿", cellType = ColumnType.NUMERIC) - private Long infoId; - - /** 鐢ㄦ埛璐﹀彿 */ - @Excel(name = "鐢ㄦ埛璐﹀彿") - private String userName; - - /** 鐘舵�� 0鎴愬姛 1澶辫触 */ - @Excel(name = "鐘舵��", readConverterExp = "0=鎴愬姛,1=澶辫触") - private String status; - - /** 鍦板潃 */ - @Excel(name = "鍦板潃") - private String ipaddr; - - /** 鎻忚堪 */ - @Excel(name = "鎻忚堪") - private String msg; - - /** 璁块棶鏃堕棿 */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @Excel(name = "璁块棶鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") - private Date accessTime; - - public Long getInfoId() - { - return infoId; - } - - public void setInfoId(Long infoId) - { - this.infoId = infoId; - } - - public String getUserName() - { - return userName; - } - - public void setUserName(String userName) - { - this.userName = userName; - } - - public String getStatus() - { - return status; - } - - public void setStatus(String status) - { - this.status = status; - } - - public String getIpaddr() - { - return ipaddr; - } - - public void setIpaddr(String ipaddr) - { - this.ipaddr = ipaddr; - } - - public String getMsg() - { - return msg; - } - - public void setMsg(String msg) - { - this.msg = msg; - } - - public Date getAccessTime() - { - return accessTime; - } - - public void setAccessTime(Date accessTime) - { - this.accessTime = accessTime; - } -} \ No newline at end of file diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java deleted file mode 100644 index a3c350f..0000000 --- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java +++ /dev/null @@ -1,255 +0,0 @@ -package com.ruoyi.system.api.domain; - -import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.ruoyi.common.core.annotation.Excel; -import com.ruoyi.common.core.annotation.Excel.ColumnType; -import com.ruoyi.common.core.web.domain.BaseEntity; - -/** - * 鎿嶄綔鏃ュ織璁板綍琛� oper_log - * - * @author ruoyi - */ -public class SysOperLog extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 鏃ュ織涓婚敭 */ - @Excel(name = "鎿嶄綔搴忓彿", cellType = ColumnType.NUMERIC) - private Long operId; - - /** 鎿嶄綔妯″潡 */ - @Excel(name = "鎿嶄綔妯″潡") - private String title; - - /** 涓氬姟绫诲瀷锛�0鍏跺畠 1鏂板 2淇敼 3鍒犻櫎锛� */ - @Excel(name = "涓氬姟绫诲瀷", readConverterExp = "0=鍏跺畠,1=鏂板,2=淇敼,3=鍒犻櫎,4=鎺堟潈,5=瀵煎嚭,6=瀵煎叆,7=寮洪��,8=鐢熸垚浠g爜,9=娓呯┖鏁版嵁") - private Integer businessType; - - /** 涓氬姟绫诲瀷鏁扮粍 */ - private Integer[] businessTypes; - - /** 璇锋眰鏂规硶 */ - @Excel(name = "璇锋眰鏂规硶") - private String method; - - /** 璇锋眰鏂瑰紡 */ - @Excel(name = "璇锋眰鏂瑰紡") - private String requestMethod; - - /** 鎿嶄綔绫诲埆锛�0鍏跺畠 1鍚庡彴鐢ㄦ埛 2鎵嬫満绔敤鎴凤級 */ - @Excel(name = "鎿嶄綔绫诲埆", readConverterExp = "0=鍏跺畠,1=鍚庡彴鐢ㄦ埛,2=鎵嬫満绔敤鎴�") - private Integer operatorType; - - /** 鎿嶄綔浜哄憳 */ - @Excel(name = "鎿嶄綔浜哄憳") - private String operName; - - /** 閮ㄩ棬鍚嶇О */ - @Excel(name = "閮ㄩ棬鍚嶇О") - private String deptName; - - /** 璇锋眰url */ - @Excel(name = "璇锋眰鍦板潃") - private String operUrl; - - /** 鎿嶄綔鍦板潃 */ - @Excel(name = "鎿嶄綔鍦板潃") - private String operIp; - - /** 璇锋眰鍙傛暟 */ - @Excel(name = "璇锋眰鍙傛暟") - private String operParam; - - /** 杩斿洖鍙傛暟 */ - @Excel(name = "杩斿洖鍙傛暟") - private String jsonResult; - - /** 鎿嶄綔鐘舵�侊紙0姝e父 1寮傚父锛� */ - @Excel(name = "鐘舵��", readConverterExp = "0=姝e父,1=寮傚父") - private Integer status; - - /** 閿欒娑堟伅 */ - @Excel(name = "閿欒娑堟伅") - private String errorMsg; - - /** 鎿嶄綔鏃堕棿 */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @Excel(name = "鎿嶄綔鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") - private Date operTime; - - /** 娑堣�楁椂闂� */ - @Excel(name = "娑堣�楁椂闂�", suffix = "姣") - private Long costTime; - - public Long getOperId() - { - return operId; - } - - public void setOperId(Long operId) - { - this.operId = operId; - } - - public String getTitle() - { - return title; - } - - public void setTitle(String title) - { - this.title = title; - } - - public Integer getBusinessType() - { - return businessType; - } - - public void setBusinessType(Integer businessType) - { - this.businessType = businessType; - } - - public Integer[] getBusinessTypes() - { - return businessTypes; - } - - public void setBusinessTypes(Integer[] businessTypes) - { - this.businessTypes = businessTypes; - } - - public String getMethod() - { - return method; - } - - public void setMethod(String method) - { - this.method = method; - } - - public String getRequestMethod() - { - return requestMethod; - } - - public void setRequestMethod(String requestMethod) - { - this.requestMethod = requestMethod; - } - - public Integer getOperatorType() - { - return operatorType; - } - - public void setOperatorType(Integer operatorType) - { - this.operatorType = operatorType; - } - - public String getOperName() - { - return operName; - } - - public void setOperName(String operName) - { - this.operName = operName; - } - - public String getDeptName() - { - return deptName; - } - - public void setDeptName(String deptName) - { - this.deptName = deptName; - } - - public String getOperUrl() - { - return operUrl; - } - - public void setOperUrl(String operUrl) - { - this.operUrl = operUrl; - } - - public String getOperIp() - { - return operIp; - } - - public void setOperIp(String operIp) - { - this.operIp = operIp; - } - - public String getOperParam() - { - return operParam; - } - - public void setOperParam(String operParam) - { - this.operParam = operParam; - } - - public String getJsonResult() - { - return jsonResult; - } - - public void setJsonResult(String jsonResult) - { - this.jsonResult = jsonResult; - } - - public Integer getStatus() - { - return status; - } - - public void setStatus(Integer status) - { - this.status = status; - } - - public String getErrorMsg() - { - return errorMsg; - } - - public void setErrorMsg(String errorMsg) - { - this.errorMsg = errorMsg; - } - - public Date getOperTime() - { - return operTime; - } - - public void setOperTime(Date operTime) - { - this.operTime = operTime; - } - - public Long getCostTime() - { - return costTime; - } - - public void setCostTime(Long costTime) - { - this.costTime = costTime; - } -} diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java deleted file mode 100644 index 62df8b5..0000000 --- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.ruoyi.system.api.domain; - -import java.util.Set; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; -import com.ruoyi.common.core.annotation.Excel; -import com.ruoyi.common.core.annotation.Excel.ColumnType; -import com.ruoyi.common.core.web.domain.BaseEntity; - -/** - * 瑙掕壊琛� sys_role - * - * @author ruoyi - */ -public class SysRole extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 瑙掕壊ID */ - @Excel(name = "瑙掕壊搴忓彿", cellType = ColumnType.NUMERIC) - private Long roleId; - - /** 瑙掕壊鍚嶇О */ - @Excel(name = "瑙掕壊鍚嶇О") - private String roleName; - - /** 瑙掕壊鏉冮檺 */ - @Excel(name = "瑙掕壊鏉冮檺") - private String roleKey; - - /** 瑙掕壊鎺掑簭 */ - @Excel(name = "瑙掕壊鎺掑簭") - private Integer roleSort; - - /** 鏁版嵁鑼冨洿锛�1锛氭墍鏈夋暟鎹潈闄愶紱2锛氳嚜瀹氫箟鏁版嵁鏉冮檺锛�3锛氭湰閮ㄩ棬鏁版嵁鏉冮檺锛�4锛氭湰閮ㄩ棬鍙婁互涓嬫暟鎹潈闄愶紱5锛氫粎鏈汉鏁版嵁鏉冮檺锛� */ - @Excel(name = "鏁版嵁鑼冨洿", readConverterExp = "1=鎵�鏈夋暟鎹潈闄�,2=鑷畾涔夋暟鎹潈闄�,3=鏈儴闂ㄦ暟鎹潈闄�,4=鏈儴闂ㄥ強浠ヤ笅鏁版嵁鏉冮檺,5=浠呮湰浜烘暟鎹潈闄�") - private String dataScope; - - /** 鑿滃崟鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀猴紙 0锛氱埗瀛愪笉浜掔浉鍏宠仈鏄剧ず 1锛氱埗瀛愪簰鐩稿叧鑱旀樉绀猴級 */ - private boolean menuCheckStrictly; - - /** 閮ㄩ棬鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀猴紙0锛氱埗瀛愪笉浜掔浉鍏宠仈鏄剧ず 1锛氱埗瀛愪簰鐩稿叧鑱旀樉绀� 锛� */ - private boolean deptCheckStrictly; - - /** 瑙掕壊鐘舵�侊紙0姝e父 1鍋滅敤锛� */ - @Excel(name = "瑙掕壊鐘舵��", readConverterExp = "0=姝e父,1=鍋滅敤") - private String status; - - /** 鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛� */ - private String delFlag; - - /** 鐢ㄦ埛鏄惁瀛樺湪姝よ鑹叉爣璇� 榛樿涓嶅瓨鍦� */ - private boolean flag = false; - - /** 鑿滃崟缁� */ - private Long[] menuIds; - - /** 閮ㄩ棬缁勶紙鏁版嵁鏉冮檺锛� */ - private Long[] deptIds; - - /** 瑙掕壊鑿滃崟鏉冮檺 */ - private Set<String> permissions; - - public SysRole() - { - - } - - public SysRole(Long roleId) - { - this.roleId = roleId; - } - - public Long getRoleId() - { - return roleId; - } - - public void setRoleId(Long roleId) - { - this.roleId = roleId; - } - - public boolean isAdmin() - { - return isAdmin(this.roleId); - } - - public static boolean isAdmin(Long roleId) - { - return roleId != null && 1L == roleId; - } - - @NotBlank(message = "瑙掕壊鍚嶇О涓嶈兘涓虹┖") - @Size(min = 0, max = 30, message = "瑙掕壊鍚嶇О闀垮害涓嶈兘瓒呰繃30涓瓧绗�") - public String getRoleName() - { - return roleName; - } - - public void setRoleName(String roleName) - { - this.roleName = roleName; - } - - @NotBlank(message = "鏉冮檺瀛楃涓嶈兘涓虹┖") - @Size(min = 0, max = 100, message = "鏉冮檺瀛楃闀垮害涓嶈兘瓒呰繃100涓瓧绗�") - public String getRoleKey() - { - return roleKey; - } - - public void setRoleKey(String roleKey) - { - this.roleKey = roleKey; - } - - @NotNull(message = "鏄剧ず椤哄簭涓嶈兘涓虹┖") - public Integer getRoleSort() - { - return roleSort; - } - - public void setRoleSort(Integer roleSort) - { - this.roleSort = roleSort; - } - - public String getDataScope() - { - return dataScope; - } - - public void setDataScope(String dataScope) - { - this.dataScope = dataScope; - } - - public boolean isMenuCheckStrictly() - { - return menuCheckStrictly; - } - - public void setMenuCheckStrictly(boolean menuCheckStrictly) - { - this.menuCheckStrictly = menuCheckStrictly; - } - - public boolean isDeptCheckStrictly() - { - return deptCheckStrictly; - } - - public void setDeptCheckStrictly(boolean deptCheckStrictly) - { - this.deptCheckStrictly = deptCheckStrictly; - } - - public String getStatus() - { - return status; - } - - public void setStatus(String status) - { - this.status = status; - } - - public String getDelFlag() - { - return delFlag; - } - - public void setDelFlag(String delFlag) - { - this.delFlag = delFlag; - } - - public boolean isFlag() - { - return flag; - } - - public void setFlag(boolean flag) - { - this.flag = flag; - } - - public Long[] getMenuIds() - { - return menuIds; - } - - public void setMenuIds(Long[] menuIds) - { - this.menuIds = menuIds; - } - - public Long[] getDeptIds() - { - return deptIds; - } - - public void setDeptIds(Long[] deptIds) - { - this.deptIds = deptIds; - } - - public Set<String> getPermissions() - { - return permissions; - } - - public void setPermissions(Set<String> permissions) - { - this.permissions = permissions; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("roleId", getRoleId()) - .append("roleName", getRoleName()) - .append("roleKey", getRoleKey()) - .append("roleSort", getRoleSort()) - .append("dataScope", getDataScope()) - .append("menuCheckStrictly", isMenuCheckStrictly()) - .append("deptCheckStrictly", isDeptCheckStrictly()) - .append("status", getStatus()) - .append("delFlag", getDelFlag()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("remark", getRemark()) - .toString(); - } -} diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java deleted file mode 100644 index 43625ea..0000000 --- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java +++ /dev/null @@ -1,323 +0,0 @@ -package com.ruoyi.system.api.domain; - -import java.util.Date; -import java.util.List; -import javax.validation.constraints.*; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; -import com.ruoyi.common.core.annotation.Excel; -import com.ruoyi.common.core.annotation.Excel.ColumnType; -import com.ruoyi.common.core.annotation.Excel.Type; -import com.ruoyi.common.core.annotation.Excels; -import com.ruoyi.common.core.web.domain.BaseEntity; -import com.ruoyi.common.core.xss.Xss; - -/** - * 鐢ㄦ埛瀵硅薄 sys_user - * - * @author ruoyi - */ -public class SysUser extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 鐢ㄦ埛ID */ - @Excel(name = "鐢ㄦ埛搴忓彿", type = Type.EXPORT, cellType = ColumnType.NUMERIC, prompt = "鐢ㄦ埛缂栧彿") - private Long userId; - - /** 閮ㄩ棬ID */ - @Excel(name = "閮ㄩ棬缂栧彿", type = Type.IMPORT) - private Long deptId; - - /** 鐢ㄦ埛璐﹀彿 */ - @Excel(name = "鐧诲綍鍚嶇О") - private String userName; - - /** 鐢ㄦ埛鏄电О */ - @Excel(name = "鐢ㄦ埛鍚嶇О") - private String nickName; - - /** 鐢ㄦ埛閭 */ - @Excel(name = "鐢ㄦ埛閭") - private String email; - - /** 鎵嬫満鍙风爜 */ - @Excel(name = "鎵嬫満鍙风爜", cellType = ColumnType.TEXT) - private String phonenumber; - - /** 鐢ㄦ埛鎬у埆 */ - @Excel(name = "鐢ㄦ埛鎬у埆", readConverterExp = "0=鐢�,1=濂�,2=鏈煡") - private String sex; - - /** 鐢ㄦ埛澶村儚 */ - private String avatar; - - /** 瀵嗙爜 */ - private String password; - - /** 甯愬彿鐘舵�侊紙0姝e父 1鍋滅敤锛� */ - @Excel(name = "甯愬彿鐘舵��", readConverterExp = "0=姝e父,1=鍋滅敤") - private String status; - - /** 鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛� */ - private String delFlag; - - /** 鏈�鍚庣櫥褰旾P */ - @Excel(name = "鏈�鍚庣櫥褰旾P", type = Type.EXPORT) - private String loginIp; - - /** 鏈�鍚庣櫥褰曟椂闂� */ - @Excel(name = "鏈�鍚庣櫥褰曟椂闂�", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT) - private Date loginDate; - - /** 閮ㄩ棬瀵硅薄 */ - @Excels({ - @Excel(name = "閮ㄩ棬鍚嶇О", targetAttr = "deptName", type = Type.EXPORT), - @Excel(name = "閮ㄩ棬璐熻矗浜�", targetAttr = "leader", type = Type.EXPORT) - }) - private SysDept dept; - - /** 瑙掕壊瀵硅薄 */ - private List<SysRole> roles; - - /** 瑙掕壊缁� */ - private Long[] roleIds; - - /** 宀椾綅缁� */ - private Long[] postIds; - - /** 瑙掕壊ID */ - private Long roleId; - - public SysUser() - { - - } - - public SysUser(Long userId) - { - this.userId = userId; - } - - public Long getUserId() - { - return userId; - } - - public void setUserId(Long userId) - { - this.userId = userId; - } - - public boolean isAdmin() - { - return isAdmin(this.userId); - } - - public static boolean isAdmin(Long userId) - { - return userId != null && 1L == userId; - } - - public Long getDeptId() - { - return deptId; - } - - public void setDeptId(Long deptId) - { - this.deptId = deptId; - } - - @Xss(message = "鐢ㄦ埛鏄电О涓嶈兘鍖呭惈鑴氭湰瀛楃") - @Size(min = 0, max = 30, message = "鐢ㄦ埛鏄电О闀垮害涓嶈兘瓒呰繃30涓瓧绗�") - public String getNickName() - { - return nickName; - } - - public void setNickName(String nickName) - { - this.nickName = nickName; - } - - @Xss(message = "鐢ㄦ埛璐﹀彿涓嶈兘鍖呭惈鑴氭湰瀛楃") - @NotBlank(message = "鐢ㄦ埛璐﹀彿涓嶈兘涓虹┖") - @Size(min = 0, max = 30, message = "鐢ㄦ埛璐﹀彿闀垮害涓嶈兘瓒呰繃30涓瓧绗�") - public String getUserName() - { - return userName; - } - - public void setUserName(String userName) - { - this.userName = userName; - } - - @Email(message = "閭鏍煎紡涓嶆纭�") - @Size(min = 0, max = 50, message = "閭闀垮害涓嶈兘瓒呰繃50涓瓧绗�") - public String getEmail() - { - return email; - } - - public void setEmail(String email) - { - this.email = email; - } - - @Size(min = 0, max = 11, message = "鎵嬫満鍙风爜闀垮害涓嶈兘瓒呰繃11涓瓧绗�") - public String getPhonenumber() - { - return phonenumber; - } - - public void setPhonenumber(String phonenumber) - { - this.phonenumber = phonenumber; - } - - public String getSex() - { - return sex; - } - - public void setSex(String sex) - { - this.sex = sex; - } - - public String getAvatar() - { - return avatar; - } - - public void setAvatar(String avatar) - { - this.avatar = avatar; - } - - public String getPassword() - { - return password; - } - - public void setPassword(String password) - { - this.password = password; - } - - public String getStatus() - { - return status; - } - - public void setStatus(String status) - { - this.status = status; - } - - public String getDelFlag() - { - return delFlag; - } - - public void setDelFlag(String delFlag) - { - this.delFlag = delFlag; - } - - public String getLoginIp() - { - return loginIp; - } - - public void setLoginIp(String loginIp) - { - this.loginIp = loginIp; - } - - public Date getLoginDate() - { - return loginDate; - } - - public void setLoginDate(Date loginDate) - { - this.loginDate = loginDate; - } - - public SysDept getDept() - { - return dept; - } - - public void setDept(SysDept dept) - { - this.dept = dept; - } - - public List<SysRole> getRoles() - { - return roles; - } - - public void setRoles(List<SysRole> roles) - { - this.roles = roles; - } - - public Long[] getRoleIds() - { - return roleIds; - } - - public void setRoleIds(Long[] roleIds) - { - this.roleIds = roleIds; - } - - public Long[] getPostIds() - { - return postIds; - } - - public void setPostIds(Long[] postIds) - { - this.postIds = postIds; - } - - public Long getRoleId() - { - return roleId; - } - - public void setRoleId(Long roleId) - { - this.roleId = roleId; - } - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("userId", getUserId()) - .append("deptId", getDeptId()) - .append("userName", getUserName()) - .append("nickName", getNickName()) - .append("email", getEmail()) - .append("phonenumber", getPhonenumber()) - .append("sex", getSex()) - .append("avatar", getAvatar()) - .append("password", getPassword()) - .append("status", getStatus()) - .append("delFlag", getDelFlag()) - .append("loginIp", getLoginIp()) - .append("loginDate", getLoginDate()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("remark", getRemark()) - .append("dept", getDept()) - .toString(); - } -} diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java deleted file mode 100644 index 41def87..0000000 --- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.ruoyi.system.api.factory; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.cloud.openfeign.FallbackFactory; -import org.springframework.stereotype.Component; -import org.springframework.web.multipart.MultipartFile; -import com.ruoyi.common.core.domain.R; -import com.ruoyi.system.api.RemoteFileService; -import com.ruoyi.system.api.domain.SysFile; - -/** - * 鏂囦欢鏈嶅姟闄嶇骇澶勭悊 - * - * @author ruoyi - */ -@Component -public class RemoteFileFallbackFactory implements FallbackFactory<RemoteFileService> -{ - private static final Logger log = LoggerFactory.getLogger(RemoteFileFallbackFactory.class); - - @Override - public RemoteFileService create(Throwable throwable) - { - log.error("鏂囦欢鏈嶅姟璋冪敤澶辫触:{}", throwable.getMessage()); - return new RemoteFileService() - { - @Override - public R<SysFile> upload(MultipartFile file) - { - return R.fail("涓婁紶鏂囦欢澶辫触:" + throwable.getMessage()); - } - }; - } -} diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java deleted file mode 100644 index f2c0422..0000000 --- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.ruoyi.system.api.factory; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.cloud.openfeign.FallbackFactory; -import org.springframework.stereotype.Component; -import com.ruoyi.common.core.domain.R; -import com.ruoyi.system.api.RemoteLogService; -import com.ruoyi.system.api.domain.SysLogininfor; -import com.ruoyi.system.api.domain.SysOperLog; - -/** - * 鏃ュ織鏈嶅姟闄嶇骇澶勭悊 - * - * @author ruoyi - */ -@Component -public class RemoteLogFallbackFactory implements FallbackFactory<RemoteLogService> -{ - private static final Logger log = LoggerFactory.getLogger(RemoteLogFallbackFactory.class); - - @Override - public RemoteLogService create(Throwable throwable) - { - log.error("鏃ュ織鏈嶅姟璋冪敤澶辫触:{}", throwable.getMessage()); - return new RemoteLogService() - { - @Override - public R<Boolean> saveLog(SysOperLog sysOperLog, String source) - { - return R.fail("淇濆瓨鎿嶄綔鏃ュ織澶辫触:" + throwable.getMessage()); - } - - @Override - public R<Boolean> saveLogininfor(SysLogininfor sysLogininfor, String source) - { - return R.fail("淇濆瓨鐧诲綍鏃ュ織澶辫触:" + throwable.getMessage()); - } - }; - - } -} diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java deleted file mode 100644 index 5972b3f..0000000 --- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.ruoyi.system.api.factory; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.cloud.openfeign.FallbackFactory; -import org.springframework.stereotype.Component; -import com.ruoyi.common.core.domain.R; -import com.ruoyi.system.api.RemoteUserService; -import com.ruoyi.system.api.domain.SysUser; -import com.ruoyi.system.api.model.LoginUser; - -/** - * 鐢ㄦ埛鏈嶅姟闄嶇骇澶勭悊 - * - * @author ruoyi - */ -@Component -public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserService> -{ - private static final Logger log = LoggerFactory.getLogger(RemoteUserFallbackFactory.class); - - @Override - public RemoteUserService create(Throwable throwable) - { - log.error("鐢ㄦ埛鏈嶅姟璋冪敤澶辫触:{}", throwable.getMessage()); - return new RemoteUserService() - { - @Override - public R<LoginUser> getUserInfo(String username, String source) - { - return R.fail("鑾峰彇鐢ㄦ埛澶辫触:" + throwable.getMessage()); - } - - @Override - public R<Boolean> registerUserInfo(SysUser sysUser, String source) - { - return R.fail("娉ㄥ唽鐢ㄦ埛澶辫触:" + throwable.getMessage()); - } - - @Override - public R<Boolean> recordUserLogin(SysUser sysUser, String source) - { - return R.fail("璁板綍鐢ㄦ埛鐧诲綍淇℃伅澶辫触:" + throwable.getMessage()); - } - }; - } -} diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java deleted file mode 100644 index ef266a0..0000000 --- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.ruoyi.system.api.model; - -import java.io.Serializable; -import java.util.Set; -import com.ruoyi.system.api.domain.SysUser; - -/** - * 鐢ㄦ埛淇℃伅 - * - * @author ruoyi - */ -public class LoginUser implements Serializable -{ - private static final long serialVersionUID = 1L; - - /** - * 鐢ㄦ埛鍞竴鏍囪瘑 - */ - private String token; - - /** - * 鐢ㄦ埛鍚峣d - */ - private Long userid; - - /** - * 鐢ㄦ埛鍚� - */ - private String username; - - /** - * 鐧诲綍鏃堕棿 - */ - private Long loginTime; - - /** - * 杩囨湡鏃堕棿 - */ - private Long expireTime; - - /** - * 鐧诲綍IP鍦板潃 - */ - private String ipaddr; - - /** - * 鏉冮檺鍒楄〃 - */ - private Set<String> permissions; - - /** - * 瑙掕壊鍒楄〃 - */ - private Set<String> roles; - - /** - * 鐢ㄦ埛淇℃伅 - */ - private SysUser sysUser; - - public String getToken() - { - return token; - } - - public void setToken(String token) - { - this.token = token; - } - - public Long getUserid() - { - return userid; - } - - public void setUserid(Long userid) - { - this.userid = userid; - } - - public String getUsername() - { - return username; - } - - public void setUsername(String username) - { - this.username = username; - } - - public Long getLoginTime() - { - return loginTime; - } - - public void setLoginTime(Long loginTime) - { - this.loginTime = loginTime; - } - - public Long getExpireTime() - { - return expireTime; - } - - public void setExpireTime(Long expireTime) - { - this.expireTime = expireTime; - } - - public String getIpaddr() - { - return ipaddr; - } - - public void setIpaddr(String ipaddr) - { - this.ipaddr = ipaddr; - } - - public Set<String> getPermissions() - { - return permissions; - } - - public void setPermissions(Set<String> permissions) - { - this.permissions = permissions; - } - - public Set<String> getRoles() - { - return roles; - } - - public void setRoles(Set<String> roles) - { - this.roles = roles; - } - - public SysUser getSysUser() - { - return sysUser; - } - - public void setSysUser(SysUser sysUser) - { - this.sysUser = sysUser; - } -} diff --git a/se-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/se-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index 0a60da5..0000000 --- a/se-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1,3 +0,0 @@ -com.ruoyi.system.api.factory.RemoteUserFallbackFactory -com.ruoyi.system.api.factory.RemoteLogFallbackFactory -com.ruoyi.system.api.factory.RemoteFileFallbackFactory diff --git a/ruoyi-auth/pom.xml b/se-auth/pom.xml similarity index 100% rename from ruoyi-auth/pom.xml rename to se-auth/pom.xml diff --git a/se-auth/src/main/java/com/se/auth/SeAuthApplication.java b/se-auth/src/main/java/com/se/auth/SeAuthApplication.java new file mode 100644 index 0000000..a584b9f --- /dev/null +++ b/se-auth/src/main/java/com/se/auth/SeAuthApplication.java @@ -0,0 +1,22 @@ +package com.se.auth; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import com.se.common.security.annotation.EnableRyFeignClients; + +/** + * 璁よ瘉鎺堟潈涓績 + * + * @author admin + */ +@EnableRyFeignClients +@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class }) +public class SeAuthApplication +{ + public static void main(String[] args) + { + SpringApplication.run(SeAuthApplication.class, args); + System.out.println(" 鎺堟潈涓績鍚姩鎴愬姛 "); + } +} diff --git a/se-auth/src/main/java/com/se/auth/controller/TokenController.java b/se-auth/src/main/java/com/se/auth/controller/TokenController.java new file mode 100644 index 0000000..843cd7e --- /dev/null +++ b/se-auth/src/main/java/com/se/auth/controller/TokenController.java @@ -0,0 +1,79 @@ +package com.se.auth.controller; + +import javax.servlet.http.HttpServletRequest; + +import com.se.auth.form.LoginBody; +import com.se.auth.form.RegisterBody; +import com.se.auth.service.SysLoginService; +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.RequestBody; +import org.springframework.web.bind.annotation.RestController; +import com.se.common.core.domain.R; +import com.se.common.core.utils.JwtUtils; +import com.se.common.core.utils.StringUtils; +import com.se.common.security.auth.AuthUtil; +import com.se.common.security.service.TokenService; +import com.se.common.security.utils.SecurityUtils; +import com.se.system.api.model.LoginUser; + +/** + * token 鎺у埗 + * + * @author admin + */ +@RestController +public class TokenController +{ + @Autowired + private TokenService tokenService; + + @Autowired + private SysLoginService sysLoginService; + + @PostMapping("login") + public R<?> login(@RequestBody LoginBody form) + { + // 鐢ㄦ埛鐧诲綍 + LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword()); + // 鑾峰彇鐧诲綍token + return R.ok(tokenService.createToken(userInfo)); + } + + @DeleteMapping("logout") + public R<?> logout(HttpServletRequest request) + { + String token = SecurityUtils.getToken(request); + if (StringUtils.isNotEmpty(token)) + { + String username = JwtUtils.getUserName(token); + // 鍒犻櫎鐢ㄦ埛缂撳瓨璁板綍 + AuthUtil.logoutByToken(token); + // 璁板綍鐢ㄦ埛閫�鍑烘棩蹇� + sysLoginService.logout(username); + } + return R.ok(); + } + + @PostMapping("refresh") + public R<?> refresh(HttpServletRequest request) + { + LoginUser loginUser = tokenService.getLoginUser(request); + if (StringUtils.isNotNull(loginUser)) + { + // 鍒锋柊浠ょ墝鏈夋晥鏈� + tokenService.refreshToken(loginUser); + return R.ok(); + } + return R.ok(); + } + + @PostMapping("register") + public R<?> register(@RequestBody RegisterBody registerBody) + { + // 鐢ㄦ埛娉ㄥ唽 + sysLoginService.register(registerBody.getUsername(), registerBody.getPassword()); + return R.ok(); + } +} diff --git a/se-auth/src/main/java/com/se/auth/form/LoginBody.java b/se-auth/src/main/java/com/se/auth/form/LoginBody.java new file mode 100644 index 0000000..e94dd82 --- /dev/null +++ b/se-auth/src/main/java/com/se/auth/form/LoginBody.java @@ -0,0 +1,39 @@ +package com.se.auth.form; + +/** + * 鐢ㄦ埛鐧诲綍瀵硅薄 + * + * @author admin + */ +public class LoginBody +{ + /** + * 鐢ㄦ埛鍚� + */ + private String username; + + /** + * 鐢ㄦ埛瀵嗙爜 + */ + private String password; + + public String getUsername() + { + return username; + } + + public void setUsername(String username) + { + this.username = username; + } + + public String getPassword() + { + return password; + } + + public void setPassword(String password) + { + this.password = password; + } +} diff --git a/se-auth/src/main/java/com/se/auth/form/RegisterBody.java b/se-auth/src/main/java/com/se/auth/form/RegisterBody.java new file mode 100644 index 0000000..b0cdbe1 --- /dev/null +++ b/se-auth/src/main/java/com/se/auth/form/RegisterBody.java @@ -0,0 +1,11 @@ +package com.se.auth.form; + +/** + * 鐢ㄦ埛娉ㄥ唽瀵硅薄 + * + * @author admin + */ +public class RegisterBody extends LoginBody +{ + +} diff --git a/se-auth/src/main/java/com/se/auth/service/SysLoginService.java b/se-auth/src/main/java/com/se/auth/service/SysLoginService.java new file mode 100644 index 0000000..e053531 --- /dev/null +++ b/se-auth/src/main/java/com/se/auth/service/SysLoginService.java @@ -0,0 +1,161 @@ +package com.se.auth.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import com.se.common.core.constant.CacheConstants; +import com.se.common.core.constant.Constants; +import com.se.common.core.constant.SecurityConstants; +import com.se.common.core.constant.UserConstants; +import com.se.common.core.domain.R; +import com.se.common.core.enums.UserStatus; +import com.se.common.core.exception.ServiceException; +import com.se.common.core.text.Convert; +import com.se.common.core.utils.DateUtils; +import com.se.common.core.utils.StringUtils; +import com.se.common.core.utils.ip.IpUtils; +import com.se.common.redis.service.RedisService; +import com.se.common.security.utils.SecurityUtils; +import com.se.system.api.RemoteUserService; +import com.se.system.api.domain.SysUser; +import com.se.system.api.model.LoginUser; + +/** + * 鐧诲綍鏍¢獙鏂规硶 + * + * @author admin + */ +@Component +public class SysLoginService +{ + @Autowired + private RemoteUserService remoteUserService; + + @Autowired + private SysPasswordService passwordService; + + @Autowired + private SysRecordLogService recordLogService; + + @Autowired + private RedisService redisService; + + /** + * 鐧诲綍 + */ + public LoginUser login(String username, String password) + { + // 鐢ㄦ埛鍚嶆垨瀵嗙爜涓虹┖ 閿欒 + if (StringUtils.isAnyBlank(username, password)) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐢ㄦ埛/瀵嗙爜蹇呴』濉啓"); + throw new ServiceException("鐢ㄦ埛/瀵嗙爜蹇呴』濉啓"); + } + // 瀵嗙爜濡傛灉涓嶅湪鎸囧畾鑼冨洿鍐� 閿欒 + if (password.length() < UserConstants.PASSWORD_MIN_LENGTH + || password.length() > UserConstants.PASSWORD_MAX_LENGTH) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐢ㄦ埛瀵嗙爜涓嶅湪鎸囧畾鑼冨洿"); + throw new ServiceException("鐢ㄦ埛瀵嗙爜涓嶅湪鎸囧畾鑼冨洿"); + } + // 鐢ㄦ埛鍚嶄笉鍦ㄦ寚瀹氳寖鍥村唴 閿欒 + if (username.length() < UserConstants.USERNAME_MIN_LENGTH + || username.length() > UserConstants.USERNAME_MAX_LENGTH) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐢ㄦ埛鍚嶄笉鍦ㄦ寚瀹氳寖鍥�"); + throw new ServiceException("鐢ㄦ埛鍚嶄笉鍦ㄦ寚瀹氳寖鍥�"); + } + // IP榛戝悕鍗曟牎楠� + String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST)); + if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "寰堥仐鎲撅紝璁块棶IP宸茶鍒楀叆绯荤粺榛戝悕鍗�"); + throw new ServiceException("寰堥仐鎲撅紝璁块棶IP宸茶鍒楀叆绯荤粺榛戝悕鍗�"); + } + // 鏌ヨ鐢ㄦ埛淇℃伅 + R<LoginUser> userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER); + + if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐧诲綍鐢ㄦ埛涓嶅瓨鍦�"); + throw new ServiceException("鐧诲綍鐢ㄦ埛锛�" + username + " 涓嶅瓨鍦�"); + } + + if (R.FAIL == userResult.getCode()) + { + throw new ServiceException(userResult.getMsg()); + } + + LoginUser userInfo = userResult.getData(); + SysUser user = userResult.getData().getSysUser(); + if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "瀵逛笉璧凤紝鎮ㄧ殑璐﹀彿宸茶鍒犻櫎"); + throw new ServiceException("瀵逛笉璧凤紝鎮ㄧ殑璐﹀彿锛�" + username + " 宸茶鍒犻櫎"); + } + if (UserStatus.DISABLE.getCode().equals(user.getStatus())) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐢ㄦ埛宸插仠鐢紝璇疯仈绯荤鐞嗗憳"); + throw new ServiceException("瀵逛笉璧凤紝鎮ㄧ殑璐﹀彿锛�" + username + " 宸插仠鐢�"); + } + passwordService.validate(user, password); + recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "鐧诲綍鎴愬姛"); + recordLoginInfo(user.getUserId()); + return userInfo; + } + + /** + * 璁板綍鐧诲綍淇℃伅 + * + * @param userId 鐢ㄦ埛ID + */ + public void recordLoginInfo(Long userId) + { + SysUser sysUser = new SysUser(); + sysUser.setUserId(userId); + // 鏇存柊鐢ㄦ埛鐧诲綍IP + sysUser.setLoginIp(IpUtils.getIpAddr()); + // 鏇存柊鐢ㄦ埛鐧诲綍鏃堕棿 + sysUser.setLoginDate(DateUtils.getNowDate()); + remoteUserService.recordUserLogin(sysUser, SecurityConstants.INNER); + } + + public void logout(String loginName) + { + recordLogService.recordLogininfor(loginName, Constants.LOGOUT, "閫�鍑烘垚鍔�"); + } + + /** + * 娉ㄥ唽 + */ + public void register(String username, String password) + { + // 鐢ㄦ埛鍚嶆垨瀵嗙爜涓虹┖ 閿欒 + if (StringUtils.isAnyBlank(username, password)) + { + throw new ServiceException("鐢ㄦ埛/瀵嗙爜蹇呴』濉啓"); + } + if (username.length() < UserConstants.USERNAME_MIN_LENGTH + || username.length() > UserConstants.USERNAME_MAX_LENGTH) + { + throw new ServiceException("璐︽埛闀垮害蹇呴』鍦�2鍒�20涓瓧绗︿箣闂�"); + } + if (password.length() < UserConstants.PASSWORD_MIN_LENGTH + || password.length() > UserConstants.PASSWORD_MAX_LENGTH) + { + throw new ServiceException("瀵嗙爜闀垮害蹇呴』鍦�5鍒�20涓瓧绗︿箣闂�"); + } + + // 娉ㄥ唽鐢ㄦ埛淇℃伅 + SysUser sysUser = new SysUser(); + sysUser.setUserName(username); + sysUser.setNickName(username); + sysUser.setPassword(SecurityUtils.encryptPassword(password)); + R<?> registerResult = remoteUserService.registerUserInfo(sysUser, SecurityConstants.INNER); + + if (R.FAIL == registerResult.getCode()) + { + throw new ServiceException(registerResult.getMsg()); + } + recordLogService.recordLogininfor(username, Constants.REGISTER, "娉ㄥ唽鎴愬姛"); + } +} diff --git a/se-auth/src/main/java/com/se/auth/service/SysPasswordService.java b/se-auth/src/main/java/com/se/auth/service/SysPasswordService.java new file mode 100644 index 0000000..fbd3d8d --- /dev/null +++ b/se-auth/src/main/java/com/se/auth/service/SysPasswordService.java @@ -0,0 +1,85 @@ +package com.se.auth.service; + +import java.util.concurrent.TimeUnit; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import com.se.common.core.constant.CacheConstants; +import com.se.common.core.constant.Constants; +import com.se.common.core.exception.ServiceException; +import com.se.common.redis.service.RedisService; +import com.se.common.security.utils.SecurityUtils; +import com.se.system.api.domain.SysUser; + +/** + * 鐧诲綍瀵嗙爜鏂规硶 + * + * @author admin + */ +@Component +public class SysPasswordService +{ + @Autowired + private RedisService redisService; + + private int maxRetryCount = CacheConstants.PASSWORD_MAX_RETRY_COUNT; + + private Long lockTime = CacheConstants.PASSWORD_LOCK_TIME; + + @Autowired + private SysRecordLogService recordLogService; + + /** + * 鐧诲綍璐︽埛瀵嗙爜閿欒娆℃暟缂撳瓨閿悕 + * + * @param username 鐢ㄦ埛鍚� + * @return 缂撳瓨閿甼ey + */ + private String getCacheKey(String username) + { + return CacheConstants.PWD_ERR_CNT_KEY + username; + } + + public void validate(SysUser user, String password) + { + String username = user.getUserName(); + + Integer retryCount = redisService.getCacheObject(getCacheKey(username)); + + if (retryCount == null) + { + retryCount = 0; + } + + if (retryCount >= Integer.valueOf(maxRetryCount).intValue()) + { + String errMsg = String.format("瀵嗙爜杈撳叆閿欒%s娆★紝甯愭埛閿佸畾%s鍒嗛挓", maxRetryCount, lockTime); + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL,errMsg); + throw new ServiceException(errMsg); + } + + if (!matches(user, password)) + { + retryCount = retryCount + 1; + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, String.format("瀵嗙爜杈撳叆閿欒%s娆�", retryCount)); + redisService.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES); + throw new ServiceException("鐢ㄦ埛涓嶅瓨鍦�/瀵嗙爜閿欒"); + } + else + { + clearLoginRecordCache(username); + } + } + + public boolean matches(SysUser user, String rawPassword) + { + return SecurityUtils.matchesPassword(rawPassword, user.getPassword()); + } + + public void clearLoginRecordCache(String loginName) + { + if (redisService.hasKey(getCacheKey(loginName))) + { + redisService.deleteObject(getCacheKey(loginName)); + } + } +} diff --git a/se-auth/src/main/java/com/se/auth/service/SysRecordLogService.java b/se-auth/src/main/java/com/se/auth/service/SysRecordLogService.java new file mode 100644 index 0000000..51c1893 --- /dev/null +++ b/se-auth/src/main/java/com/se/auth/service/SysRecordLogService.java @@ -0,0 +1,48 @@ +package com.se.auth.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import com.se.common.core.constant.Constants; +import com.se.common.core.constant.SecurityConstants; +import com.se.common.core.utils.StringUtils; +import com.se.common.core.utils.ip.IpUtils; +import com.se.system.api.RemoteLogService; +import com.se.system.api.domain.SysLogininfor; + +/** + * 璁板綍鏃ュ織鏂规硶 + * + * @author admin + */ +@Component +public class SysRecordLogService +{ + @Autowired + private RemoteLogService remoteLogService; + + /** + * 璁板綍鐧诲綍淇℃伅 + * + * @param username 鐢ㄦ埛鍚� + * @param status 鐘舵�� + * @param message 娑堟伅鍐呭 + * @return + */ + public void recordLogininfor(String username, String status, String message) + { + SysLogininfor logininfor = new SysLogininfor(); + logininfor.setUserName(username); + logininfor.setIpaddr(IpUtils.getIpAddr()); + logininfor.setMsg(message); + // 鏃ュ織鐘舵�� + if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) + { + logininfor.setStatus(Constants.LOGIN_SUCCESS_STATUS); + } + else if (Constants.LOGIN_FAIL.equals(status)) + { + logininfor.setStatus(Constants.LOGIN_FAIL_STATUS); + } + remoteLogService.saveLogininfor(logininfor, SecurityConstants.INNER); + } +} diff --git a/se-auth/src/main/resources/banner.txt b/se-auth/src/main/resources/banner.txt new file mode 100644 index 0000000..269848e --- /dev/null +++ b/se-auth/src/main/resources/banner.txt @@ -0,0 +1,3 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} +SeAuthApplication锛屽凡缁忓惎鍔� \ No newline at end of file diff --git a/ruoyi-auth/src/main/resources/bootstrap.yml b/se-auth/src/main/resources/bootstrap.yml similarity index 100% rename from ruoyi-auth/src/main/resources/bootstrap.yml rename to se-auth/src/main/resources/bootstrap.yml diff --git a/ruoyi-auth/src/main/resources/logback.xml b/se-auth/src/main/resources/logback.xml similarity index 100% rename from ruoyi-auth/src/main/resources/logback.xml rename to se-auth/src/main/resources/logback.xml diff --git a/se-common/ruoyi-common-core/pom.xml b/se-common/ruoyi-common-core/pom.xml deleted file mode 100644 index b04ce3e..0000000 --- a/se-common/ruoyi-common-core/pom.xml +++ /dev/null @@ -1,118 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="http://maven.apache.org/POM/4.0.0" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common</artifactId> - <version>3.6.4</version> - </parent> - <modelVersion>4.0.0</modelVersion> - - <artifactId>ruoyi-common-core</artifactId> - - <description> - ruoyi-common-core鏍稿績妯″潡 - </description> - - <dependencies> - - <!-- SpringCloud Openfeign --> - <dependency> - <groupId>org.springframework.cloud</groupId> - <artifactId>spring-cloud-starter-openfeign</artifactId> - </dependency> - - <!-- SpringCloud Loadbalancer --> - <dependency> - <groupId>org.springframework.cloud</groupId> - <artifactId>spring-cloud-starter-loadbalancer</artifactId> - </dependency> - - <!-- Spring Context Support --> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-context-support</artifactId> - </dependency> - - <!-- Spring Web --> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-web</artifactId> - </dependency> - - <!-- Transmittable ThreadLocal --> - <dependency> - <groupId>com.alibaba</groupId> - <artifactId>transmittable-thread-local</artifactId> - </dependency> - - <!-- Pagehelper --> - <dependency> - <groupId>com.github.pagehelper</groupId> - <artifactId>pagehelper-spring-boot-starter</artifactId> - </dependency> - - <!-- Hibernate Validator --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-validation</artifactId> - </dependency> - - <!-- Jackson --> - <dependency> - <groupId>com.fasterxml.jackson.core</groupId> - <artifactId>jackson-databind</artifactId> - </dependency> - - <!-- Alibaba Fastjson --> - <dependency> - <groupId>com.alibaba.fastjson2</groupId> - <artifactId>fastjson2</artifactId> - </dependency> - - <!-- Jwt --> - <dependency> - <groupId>io.jsonwebtoken</groupId> - <artifactId>jjwt</artifactId> - </dependency> - - <!-- Jaxb --> - <dependency> - <groupId>javax.xml.bind</groupId> - <artifactId>jaxb-api</artifactId> - </dependency> - - <!-- Apache Lang3 --> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-lang3</artifactId> - </dependency> - - <!-- Commons Io --> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - </dependency> - - <!-- excel宸ュ叿 --> - <dependency> - <groupId>org.apache.poi</groupId> - <artifactId>poi-ooxml</artifactId> - </dependency> - - <!-- Java Servlet --> - <dependency> - <groupId>javax.servlet</groupId> - <artifactId>javax.servlet-api</artifactId> - </dependency> - - <!-- Swagger --> - <dependency> - <groupId>io.swagger</groupId> - <artifactId>swagger-annotations</artifactId> - </dependency> - - </dependencies> - -</project> diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/annotation/Excel.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/annotation/Excel.java deleted file mode 100644 index 3909a30..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/annotation/Excel.java +++ /dev/null @@ -1,182 +0,0 @@ -package com.ruoyi.common.core.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import java.math.BigDecimal; -import org.apache.poi.ss.usermodel.HorizontalAlignment; -import org.apache.poi.ss.usermodel.IndexedColors; -import com.ruoyi.common.core.utils.poi.ExcelHandlerAdapter; - -/** - * 鑷畾涔夊鍑篍xcel鏁版嵁娉ㄨВ - * - * @author admin - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.FIELD) -public @interface Excel -{ - /** - * 瀵煎嚭鏃跺湪excel涓帓搴� - */ - public int sort() default Integer.MAX_VALUE; - - /** - * 瀵煎嚭鍒癊xcel涓殑鍚嶅瓧. - */ - public String name() default ""; - - /** - * 鏃ユ湡鏍煎紡, 濡�: yyyy-MM-dd - */ - public String dateFormat() default ""; - - /** - * 璇诲彇鍐呭杞〃杈惧紡 (濡�: 0=鐢�,1=濂�,2=鏈煡) - */ - public String readConverterExp() default ""; - - /** - * 鍒嗛殧绗︼紝璇诲彇瀛楃涓茬粍鍐呭 - */ - public String separator() default ","; - - /** - * BigDecimal 绮惧害 榛樿:-1(榛樿涓嶅紑鍚疊igDecimal鏍煎紡鍖�) - */ - public int scale() default -1; - - /** - * BigDecimal 鑸嶅叆瑙勫垯 榛樿:BigDecimal.ROUND_HALF_EVEN - */ - public int roundingMode() default BigDecimal.ROUND_HALF_EVEN; - - /** - * 瀵煎嚭鏃跺湪excel涓瘡涓垪鐨勯珮搴� - */ - public double height() default 14; - - /** - * 瀵煎嚭鏃跺湪excel涓瘡涓垪鐨勫搴� - */ - public double width() default 16; - - /** - * 鏂囧瓧鍚庣紑,濡�% 90 鍙樻垚90% - */ - public String suffix() default ""; - - /** - * 褰撳�间负绌烘椂,瀛楁鐨勯粯璁ゅ�� - */ - public String defaultValue() default ""; - - /** - * 鎻愮ず淇℃伅 - */ - public String prompt() default ""; - - /** - * 璁剧疆鍙兘閫夋嫨涓嶈兘杈撳叆鐨勫垪鍐呭. - */ - public String[] combo() default {}; - - /** - * 鏄惁闇�瑕佺旱鍚戝悎骞跺崟鍏冩牸,搴斿闇�姹�:鍚湁list闆嗗悎鍗曞厓鏍�) - */ - public boolean needMerge() default false; - - /** - * 鏄惁瀵煎嚭鏁版嵁,搴斿闇�姹�:鏈夋椂鎴戜滑闇�瑕佸鍑轰竴浠芥ā鏉�,杩欐槸鏍囬闇�瑕佷絾鍐呭闇�瑕佺敤鎴锋墜宸ュ~鍐�. - */ - public boolean isExport() default true; - - /** - * 鍙︿竴涓被涓殑灞炴�у悕绉�,鏀寔澶氱骇鑾峰彇,浠ュ皬鏁扮偣闅斿紑 - */ - public String targetAttr() default ""; - - /** - * 鏄惁鑷姩缁熻鏁版嵁,鍦ㄦ渶鍚庤拷鍔犱竴琛岀粺璁℃暟鎹�诲拰 - */ - public boolean isStatistics() default false; - - /** - * 瀵煎嚭绫诲瀷锛�0鏁板瓧 1瀛楃涓诧級 - */ - public ColumnType cellType() default ColumnType.STRING; - - /** - * 瀵煎嚭鍒楀ご鑳屾櫙棰滆壊 - */ - public IndexedColors headerBackgroundColor() default IndexedColors.GREY_50_PERCENT; - - /** - * 瀵煎嚭鍒楀ご瀛椾綋棰滆壊 - */ - public IndexedColors headerColor() default IndexedColors.WHITE; - - /** - * 瀵煎嚭鍗曞厓鏍艰儗鏅鑹� - */ - public IndexedColors backgroundColor() default IndexedColors.WHITE; - - /** - * 瀵煎嚭鍗曞厓鏍煎瓧浣撻鑹� - */ - public IndexedColors color() default IndexedColors.BLACK; - - /** - * 瀵煎嚭瀛楁瀵归綈鏂瑰紡 - */ - public HorizontalAlignment align() default HorizontalAlignment.CENTER; - - /** - * 鑷畾涔夋暟鎹鐞嗗櫒 - */ - public Class<?> handler() default ExcelHandlerAdapter.class; - - /** - * 鑷畾涔夋暟鎹鐞嗗櫒鍙傛暟 - */ - public String[] args() default {}; - - /** - * 瀛楁绫诲瀷锛�0锛氬鍑哄鍏ワ紱1锛氫粎瀵煎嚭锛�2锛氫粎瀵煎叆锛� - */ - Type type() default Type.ALL; - - public enum Type - { - ALL(0), EXPORT(1), IMPORT(2); - private final int value; - - Type(int value) - { - this.value = value; - } - - public int value() - { - return this.value; - } - } - - public enum ColumnType - { - NUMERIC(0), STRING(1), IMAGE(2), TEXT(3); - private final int value; - - ColumnType(int value) - { - this.value = value; - } - - public int value() - { - return this.value; - } - } -} \ No newline at end of file diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/annotation/Excels.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/annotation/Excels.java deleted file mode 100644 index 03f017a..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/annotation/Excels.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.ruoyi.common.core.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Excel娉ㄨВ闆� - * - * @author admin - */ -@Target(ElementType.FIELD) -@Retention(RetentionPolicy.RUNTIME) -public @interface Excels -{ - Excel[] value(); -} \ No newline at end of file diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java deleted file mode 100644 index aeeed91..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.ruoyi.common.core.constant; - -/** - * 閫氱敤甯搁噺淇℃伅 - * - * @author admin - */ -public class Constants -{ - /** - * UTF-8 瀛楃闆� - */ - public static final String UTF8 = "UTF-8"; - - /** - * GBK 瀛楃闆� - */ - public static final String GBK = "GBK"; - - /** - * www涓诲煙 - */ - public static final String WWW = "www."; - - /** - * RMI 杩滅▼鏂规硶璋冪敤 - */ - public static final String LOOKUP_RMI = "rmi:"; - - /** - * LDAP 杩滅▼鏂规硶璋冪敤 - */ - public static final String LOOKUP_LDAP = "ldap:"; - - /** - * LDAPS 杩滅▼鏂规硶璋冪敤 - */ - public static final String LOOKUP_LDAPS = "ldaps:"; - - /** - * http璇锋眰 - */ - public static final String HTTP = "http://"; - - /** - * https璇锋眰 - */ - public static final String HTTPS = "https://"; - - /** - * 鎴愬姛鏍囪 - */ - public static final Integer SUCCESS = 200; - - /** - * 澶辫触鏍囪 - */ - public static final Integer FAIL = 500; - - /** - * 鐧诲綍鎴愬姛鐘舵�� - */ - public static final String LOGIN_SUCCESS_STATUS = "0"; - - /** - * 鐧诲綍澶辫触鐘舵�� - */ - public static final String LOGIN_FAIL_STATUS = "1"; - - /** - * 鐧诲綍鎴愬姛 - */ - public static final String LOGIN_SUCCESS = "Success"; - - /** - * 娉ㄩ攢 - */ - public static final String LOGOUT = "Logout"; - - /** - * 娉ㄥ唽 - */ - public static final String REGISTER = "Register"; - - /** - * 鐧诲綍澶辫触 - */ - public static final String LOGIN_FAIL = "Error"; - - /** - * 褰撳墠璁板綍璧峰绱㈠紩 - */ - public static final String PAGE_NUM = "pageNum"; - - /** - * 姣忛〉鏄剧ず璁板綍鏁� - */ - public static final String PAGE_SIZE = "pageSize"; - - /** - * 鎺掑簭鍒� - */ - public static final String ORDER_BY_COLUMN = "orderByColumn"; - - /** - * 鎺掑簭鐨勬柟鍚� "desc" 鎴栬�� "asc". - */ - public static final String IS_ASC = "isAsc"; - - /** - * 楠岃瘉鐮佹湁鏁堟湡锛堝垎閽燂級 - */ - public static final long CAPTCHA_EXPIRATION = 2; - - /** - * 璧勬簮鏄犲皠璺緞 鍓嶇紑 - */ - public static final String RESOURCE_PREFIX = "/profile"; - - /** - * 鑷姩璇嗗埆json瀵硅薄鐧藉悕鍗曢厤缃紙浠呭厑璁歌В鏋愮殑鍖呭悕锛岃寖鍥磋秺灏忚秺瀹夊叏锛� - */ - public static final String[] JSON_WHITELIST_STR = { "org.springframework", "com.ruoyi" }; - - /** - * 瀹氭椂浠诲姟鐧藉悕鍗曢厤缃紙浠呭厑璁歌闂殑鍖呭悕锛屽鍏朵粬闇�瑕佸彲浠ヨ嚜琛屾坊鍔狅級 - */ - public static final String[] JOB_WHITELIST_STR = { "com.ruoyi.job.task" }; - - /** - * 瀹氭椂浠诲姟杩濊鐨勫瓧绗� - */ - public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml", - "org.springframework", "org.apache", "com.ruoyi.common.core.utils.file" }; -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java deleted file mode 100644 index cb713db..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.ruoyi.common.core.constant; - -/** - * 鏉冮檺鐩稿叧閫氱敤甯搁噺 - * - * @author admin - */ -public class SecurityConstants -{ - /** - * 鐢ㄦ埛ID瀛楁 - */ - public static final String DETAILS_USER_ID = "user_id"; - - /** - * 鐢ㄦ埛鍚嶅瓧娈� - */ - public static final String DETAILS_USERNAME = "username"; - - /** - * 鎺堟潈淇℃伅瀛楁 - */ - public static final String AUTHORIZATION_HEADER = "authorization"; - - /** - * 璇锋眰鏉ユ簮 - */ - public static final String FROM_SOURCE = "from-source"; - - /** - * 鍐呴儴璇锋眰 - */ - public static final String INNER = "inner"; - - /** - * 鐢ㄦ埛鏍囪瘑 - */ - public static final String USER_KEY = "user_key"; - - /** - * 鐧诲綍鐢ㄦ埛 - */ - public static final String LOGIN_USER = "login_user"; - - /** - * 瑙掕壊鏉冮檺 - */ - public static final String ROLE_PERMISSION = "role_permission"; -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java deleted file mode 100644 index 1e3a7c0..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.ruoyi.common.core.constant; - -/** - * 鏈嶅姟鍚嶇О - * - * @author admin - */ -public class ServiceNameConstants -{ - /** - * 璁よ瘉鏈嶅姟鐨剆erviceid - */ - public static final String AUTH_SERVICE = "ruoyi-auth"; - - /** - * 绯荤粺妯″潡鐨剆erviceid - */ - public static final String SYSTEM_SERVICE = "ruoyi-system"; - - /** - * 鏂囦欢鏈嶅姟鐨剆erviceid - */ - public static final String FILE_SERVICE = "ruoyi-file"; -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/UserConstants.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/UserConstants.java deleted file mode 100644 index b19b8b4..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/UserConstants.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.ruoyi.common.core.constant; - -/** - * 鐢ㄦ埛甯搁噺淇℃伅 - * - * @author admin - */ -public class UserConstants -{ - /** - * 骞冲彴鍐呯郴缁熺敤鎴风殑鍞竴鏍囧織 - */ - public static final String SYS_USER = "SYS_USER"; - - /** 姝e父鐘舵�� */ - public static final String NORMAL = "0"; - - /** 寮傚父鐘舵�� */ - public static final String EXCEPTION = "1"; - - /** 鐢ㄦ埛灏佺鐘舵�� */ - public static final String USER_DISABLE = "1"; - - /** 瑙掕壊灏佺鐘舵�� */ - public static final String ROLE_DISABLE = "1"; - - /** 閮ㄩ棬姝e父鐘舵�� */ - public static final String DEPT_NORMAL = "0"; - - /** 閮ㄩ棬鍋滅敤鐘舵�� */ - public static final String DEPT_DISABLE = "1"; - - /** 瀛楀吀姝e父鐘舵�� */ - public static final String DICT_NORMAL = "0"; - - /** 鏄惁涓虹郴缁熼粯璁わ紙鏄級 */ - public static final String YES = "Y"; - - /** 鏄惁鑿滃崟澶栭摼锛堟槸锛� */ - public static final String YES_FRAME = "0"; - - /** 鏄惁鑿滃崟澶栭摼锛堝惁锛� */ - public static final String NO_FRAME = "1"; - - /** 鑿滃崟绫诲瀷锛堢洰褰曪級 */ - public static final String TYPE_DIR = "M"; - - /** 鑿滃崟绫诲瀷锛堣彍鍗曪級 */ - public static final String TYPE_MENU = "C"; - - /** 鑿滃崟绫诲瀷锛堟寜閽級 */ - public static final String TYPE_BUTTON = "F"; - - /** Layout缁勪欢鏍囪瘑 */ - public final static String LAYOUT = "Layout"; - - /** ParentView缁勪欢鏍囪瘑 */ - public final static String PARENT_VIEW = "ParentView"; - - /** InnerLink缁勪欢鏍囪瘑 */ - public final static String INNER_LINK = "InnerLink"; - - /** 鏍¢獙鏄惁鍞竴鐨勮繑鍥炴爣璇� */ - public final static boolean UNIQUE = true; - public final static boolean NOT_UNIQUE = false; - - /** - * 鐢ㄦ埛鍚嶉暱搴﹂檺鍒� - */ - public static final int USERNAME_MIN_LENGTH = 2; - - public static final int USERNAME_MAX_LENGTH = 20; - - /** - * 瀵嗙爜闀垮害闄愬埗 - */ - public static final int PASSWORD_MIN_LENGTH = 5; - - public static final int PASSWORD_MAX_LENGTH = 20; -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/domain/R.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/domain/R.java deleted file mode 100644 index 9359e2a..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/domain/R.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.ruoyi.common.core.domain; - -import java.io.Serializable; -import com.ruoyi.common.core.constant.Constants; - -/** - * 鍝嶅簲淇℃伅涓讳綋 - * - * @author admin - */ -public class R<T> implements Serializable -{ - private static final long serialVersionUID = 1L; - - /** 鎴愬姛 */ - public static final int SUCCESS = Constants.SUCCESS; - - /** 澶辫触 */ - public static final int FAIL = Constants.FAIL; - - private int code; - - private String msg; - - private T data; - - public static <T> R<T> ok() - { - return restResult(null, SUCCESS, null); - } - - public static <T> R<T> ok(T data) - { - return restResult(data, SUCCESS, null); - } - - public static <T> R<T> ok(T data, String msg) - { - return restResult(data, SUCCESS, msg); - } - - public static <T> R<T> fail() - { - return restResult(null, FAIL, null); - } - - public static <T> R<T> fail(String msg) - { - return restResult(null, FAIL, msg); - } - - public static <T> R<T> fail(T data) - { - return restResult(data, FAIL, null); - } - - public static <T> R<T> fail(T data, String msg) - { - return restResult(data, FAIL, msg); - } - - public static <T> R<T> fail(int code, String msg) - { - return restResult(null, code, msg); - } - - private static <T> R<T> restResult(T data, int code, String msg) - { - R<T> apiResult = new R<>(); - apiResult.setCode(code); - apiResult.setData(data); - apiResult.setMsg(msg); - return apiResult; - } - - public int getCode() - { - return code; - } - - public void setCode(int code) - { - this.code = code; - } - - public String getMsg() - { - return msg; - } - - public void setMsg(String msg) - { - this.msg = msg; - } - - public T getData() - { - return data; - } - - public void setData(T data) - { - this.data = data; - } - - public static <T> Boolean isError(R<T> ret) - { - return !isSuccess(ret); - } - - public static <T> Boolean isSuccess(R<T> ret) - { - return R.SUCCESS == ret.getCode(); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/UserStatus.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/UserStatus.java deleted file mode 100644 index 1ae37ec..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/UserStatus.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.ruoyi.common.core.enums; - -/** - * 鐢ㄦ埛鐘舵�� - * - * @author admin - */ -public enum UserStatus -{ - OK("0", "姝e父"), DISABLE("1", "鍋滅敤"), DELETED("2", "鍒犻櫎"); - - private final String code; - private final String info; - - UserStatus(String code, String info) - { - this.code = code; - this.info = info; - } - - public String getCode() - { - return code; - } - - public String getInfo() - { - return info; - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CaptchaException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CaptchaException.java deleted file mode 100644 index ecc2771..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CaptchaException.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ruoyi.common.core.exception; - -/** - * 楠岃瘉鐮侀敊璇紓甯哥被 - * - * @author admin - */ -public class CaptchaException extends RuntimeException -{ - private static final long serialVersionUID = 1L; - - public CaptchaException(String msg) - { - super(msg); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CheckedException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CheckedException.java deleted file mode 100644 index 5fe5c4b..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CheckedException.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ruoyi.common.core.exception; - -/** - * 妫�鏌ュ紓甯� - * - * @author admin - */ -public class CheckedException extends RuntimeException -{ - private static final long serialVersionUID = 1L; - - public CheckedException(String message) - { - super(message); - } - - public CheckedException(Throwable cause) - { - super(cause); - } - - public CheckedException(String message, Throwable cause) - { - super(message, cause); - } - - public CheckedException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) - { - super(message, cause, enableSuppression, writableStackTrace); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/GlobalException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/GlobalException.java deleted file mode 100644 index 7a725fa..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/GlobalException.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.ruoyi.common.core.exception; - -/** - * 鍏ㄥ眬寮傚父 - * - * @author admin - */ -public class GlobalException extends RuntimeException -{ - private static final long serialVersionUID = 1L; - - /** - * 閿欒鎻愮ず - */ - private String message; - - /** - * 閿欒鏄庣粏锛屽唴閮ㄨ皟璇曢敊璇� - * - * 鍜� {@link CommonResult#getDetailMessage()} 涓�鑷寸殑璁捐 - */ - private String detailMessage; - - /** - * 绌烘瀯閫犳柟娉曪紝閬垮厤鍙嶅簭鍒楀寲闂 - */ - public GlobalException() - { - } - - public GlobalException(String message) - { - this.message = message; - } - - public String getDetailMessage() - { - return detailMessage; - } - - public GlobalException setDetailMessage(String detailMessage) - { - this.detailMessage = detailMessage; - return this; - } - - @Override - public String getMessage() - { - return message; - } - - public GlobalException setMessage(String message) - { - this.message = message; - return this; - } -} \ No newline at end of file diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/ServiceException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/ServiceException.java deleted file mode 100644 index 43fdedb..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/ServiceException.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.ruoyi.common.core.exception; - -/** - * 涓氬姟寮傚父 - * - * @author admin - */ -public final class ServiceException extends RuntimeException -{ - private static final long serialVersionUID = 1L; - - /** - * 閿欒鐮� - */ - private Integer code; - - /** - * 閿欒鎻愮ず - */ - private String message; - - /** - * 閿欒鏄庣粏锛屽唴閮ㄨ皟璇曢敊璇� - * - * 鍜� {@link CommonResult#getDetailMessage()} 涓�鑷寸殑璁捐 - */ - private String detailMessage; - - /** - * 绌烘瀯閫犳柟娉曪紝閬垮厤鍙嶅簭鍒楀寲闂 - */ - public ServiceException() - { - } - - public ServiceException(String message) - { - this.message = message; - } - - public ServiceException(String message, Integer code) - { - this.message = message; - this.code = code; - } - - public String getDetailMessage() - { - return detailMessage; - } - - @Override - public String getMessage() - { - return message; - } - - public Integer getCode() - { - return code; - } - - public ServiceException setMessage(String message) - { - this.message = message; - return this; - } - - public ServiceException setDetailMessage(String detailMessage) - { - this.detailMessage = detailMessage; - return this; - } -} \ No newline at end of file diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotPermissionException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotPermissionException.java deleted file mode 100644 index 9fc871f..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotPermissionException.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.ruoyi.common.core.exception.auth; - -import org.apache.commons.lang3.StringUtils; - -/** - * 鏈兘閫氳繃鐨勬潈闄愯璇佸紓甯� - * - * @author admin - */ -public class NotPermissionException extends RuntimeException -{ - private static final long serialVersionUID = 1L; - - public NotPermissionException(String permission) - { - super(permission); - } - - public NotPermissionException(String[] permissions) - { - super(StringUtils.join(permissions, ",")); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotRoleException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotRoleException.java deleted file mode 100644 index 10f45ad..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotRoleException.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.ruoyi.common.core.exception.auth; - -import org.apache.commons.lang3.StringUtils; - -/** - * 鏈兘閫氳繃鐨勮鑹茶璇佸紓甯� - * - * @author admin - */ -public class NotRoleException extends RuntimeException -{ - private static final long serialVersionUID = 1L; - - public NotRoleException(String role) - { - super(role); - } - - public NotRoleException(String[] roles) - { - super(StringUtils.join(roles, ",")); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileNameLengthLimitExceededException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileNameLengthLimitExceededException.java deleted file mode 100644 index 325ab0a..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileNameLengthLimitExceededException.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ruoyi.common.core.exception.file; - -/** - * 鏂囦欢鍚嶇О瓒呴暱闄愬埗寮傚父绫� - * - * @author admin - */ -public class FileNameLengthLimitExceededException extends FileException -{ - private static final long serialVersionUID = 1L; - - public FileNameLengthLimitExceededException(int defaultFileNameLength) - { - super("upload.filename.exceed.length", new Object[] { defaultFileNameLength }, "the filename is too long"); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileSizeLimitExceededException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileSizeLimitExceededException.java deleted file mode 100644 index d172bd2..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileSizeLimitExceededException.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ruoyi.common.core.exception.file; - -/** - * 鏂囦欢鍚嶅ぇ灏忛檺鍒跺紓甯哥被 - * - * @author admin - */ -public class FileSizeLimitExceededException extends FileException -{ - private static final long serialVersionUID = 1L; - - public FileSizeLimitExceededException(long defaultMaxSize) - { - super("upload.exceed.maxSize", new Object[] { defaultMaxSize }, "the filesize is too large"); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/InvalidExtensionException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/InvalidExtensionException.java deleted file mode 100644 index 668cd4d..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/InvalidExtensionException.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.ruoyi.common.core.exception.file; - -import java.util.Arrays; - -/** - * 鏂囦欢涓婁紶 璇紓甯哥被 - * - * @author admin - */ -public class InvalidExtensionException extends FileUploadException -{ - private static final long serialVersionUID = 1L; - - private String[] allowedExtension; - private String extension; - private String filename; - - public InvalidExtensionException(String[] allowedExtension, String extension, String filename) - { - super("filename : [" + filename + "], extension : [" + extension + "], allowed extension : [" + Arrays.toString(allowedExtension) + "]"); - this.allowedExtension = allowedExtension; - this.extension = extension; - this.filename = filename; - } - - public String[] getAllowedExtension() - { - return allowedExtension; - } - - public String getExtension() - { - return extension; - } - - public String getFilename() - { - return filename; - } - - public static class InvalidImageExtensionException extends InvalidExtensionException - { - private static final long serialVersionUID = 1L; - - public InvalidImageExtensionException(String[] allowedExtension, String extension, String filename) - { - super(allowedExtension, extension, filename); - } - } - - public static class InvalidFlashExtensionException extends InvalidExtensionException - { - private static final long serialVersionUID = 1L; - - public InvalidFlashExtensionException(String[] allowedExtension, String extension, String filename) - { - super(allowedExtension, extension, filename); - } - } - - public static class InvalidMediaExtensionException extends InvalidExtensionException - { - private static final long serialVersionUID = 1L; - - public InvalidMediaExtensionException(String[] allowedExtension, String extension, String filename) - { - super(allowedExtension, extension, filename); - } - } - - public static class InvalidVideoExtensionException extends InvalidExtensionException - { - private static final long serialVersionUID = 1L; - - public InvalidVideoExtensionException(String[] allowedExtension, String extension, String filename) - { - super(allowedExtension, extension, filename); - } - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/CaptchaExpireException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/CaptchaExpireException.java deleted file mode 100644 index fd3b7e1..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/CaptchaExpireException.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ruoyi.common.core.exception.user; - -/** - * 楠岃瘉鐮佸け鏁堝紓甯哥被 - * - * @author admin - */ -public class CaptchaExpireException extends UserException -{ - private static final long serialVersionUID = 1L; - - public CaptchaExpireException() - { - super("user.jcaptcha.expire", null); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/Convert.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/Convert.java deleted file mode 100644 index 220a761..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/Convert.java +++ /dev/null @@ -1,1016 +0,0 @@ -package com.ruoyi.common.core.text; - -import java.math.BigDecimal; -import java.math.BigInteger; -import java.math.RoundingMode; -import java.nio.ByteBuffer; -import java.nio.charset.Charset; -import java.text.NumberFormat; -import java.util.Set; -import com.ruoyi.common.core.utils.StringUtils; - -/** - * 绫诲瀷杞崲鍣� - * - * @author admin - */ -public class Convert -{ - /** - * 杞崲涓哄瓧绗︿覆<br> - * 濡傛灉缁欏畾鐨勫�间负null锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊� - * @return 缁撴灉 - */ - public static String toStr(Object value, String defaultValue) - { - if (null == value) - { - return defaultValue; - } - if (value instanceof String) - { - return (String) value; - } - return value.toString(); - } - - /** - * 杞崲涓哄瓧绗︿覆<br> - * 濡傛灉缁欏畾鐨勫�间负<code>null</code>锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @return 缁撴灉 - */ - public static String toStr(Object value) - { - return toStr(value, null); - } - - /** - * 杞崲涓哄瓧绗�<br> - * 濡傛灉缁欏畾鐨勫�间负null锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊� - * @return 缁撴灉 - */ - public static Character toChar(Object value, Character defaultValue) - { - if (null == value) - { - return defaultValue; - } - if (value instanceof Character) - { - return (Character) value; - } - - final String valueStr = toStr(value, null); - return StringUtils.isEmpty(valueStr) ? defaultValue : valueStr.charAt(0); - } - - /** - * 杞崲涓哄瓧绗�<br> - * 濡傛灉缁欏畾鐨勫�间负<code>null</code>锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @return 缁撴灉 - */ - public static Character toChar(Object value) - { - return toChar(value, null); - } - - /** - * 杞崲涓篵yte<br> - * 濡傛灉缁欏畾鐨勫�间负<code>null</code>锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊� - * @return 缁撴灉 - */ - public static Byte toByte(Object value, Byte defaultValue) - { - if (value == null) - { - return defaultValue; - } - if (value instanceof Byte) - { - return (Byte) value; - } - if (value instanceof Number) - { - return ((Number) value).byteValue(); - } - final String valueStr = toStr(value, null); - if (StringUtils.isEmpty(valueStr)) - { - return defaultValue; - } - try - { - return Byte.parseByte(valueStr); - } - catch (Exception e) - { - return defaultValue; - } - } - - /** - * 杞崲涓篵yte<br> - * 濡傛灉缁欏畾鐨勫�间负<code>null</code>锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @return 缁撴灉 - */ - public static Byte toByte(Object value) - { - return toByte(value, null); - } - - /** - * 杞崲涓篠hort<br> - * 濡傛灉缁欏畾鐨勫�间负<code>null</code>锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊� - * @return 缁撴灉 - */ - public static Short toShort(Object value, Short defaultValue) - { - if (value == null) - { - return defaultValue; - } - if (value instanceof Short) - { - return (Short) value; - } - if (value instanceof Number) - { - return ((Number) value).shortValue(); - } - final String valueStr = toStr(value, null); - if (StringUtils.isEmpty(valueStr)) - { - return defaultValue; - } - try - { - return Short.parseShort(valueStr.trim()); - } - catch (Exception e) - { - return defaultValue; - } - } - - /** - * 杞崲涓篠hort<br> - * 濡傛灉缁欏畾鐨勫�间负<code>null</code>锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @return 缁撴灉 - */ - public static Short toShort(Object value) - { - return toShort(value, null); - } - - /** - * 杞崲涓篘umber<br> - * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊� - * @return 缁撴灉 - */ - public static Number toNumber(Object value, Number defaultValue) - { - if (value == null) - { - return defaultValue; - } - if (value instanceof Number) - { - return (Number) value; - } - final String valueStr = toStr(value, null); - if (StringUtils.isEmpty(valueStr)) - { - return defaultValue; - } - try - { - return NumberFormat.getInstance().parse(valueStr); - } - catch (Exception e) - { - return defaultValue; - } - } - - /** - * 杞崲涓篘umber<br> - * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @return 缁撴灉 - */ - public static Number toNumber(Object value) - { - return toNumber(value, null); - } - - /** - * 杞崲涓篿nt<br> - * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊� - * @return 缁撴灉 - */ - public static Integer toInt(Object value, Integer defaultValue) - { - if (value == null) - { - return defaultValue; - } - if (value instanceof Integer) - { - return (Integer) value; - } - if (value instanceof Number) - { - return ((Number) value).intValue(); - } - final String valueStr = toStr(value, null); - if (StringUtils.isEmpty(valueStr)) - { - return defaultValue; - } - try - { - return Integer.parseInt(valueStr.trim()); - } - catch (Exception e) - { - return defaultValue; - } - } - - /** - * 杞崲涓篿nt<br> - * 濡傛灉缁欏畾鐨勫�间负<code>null</code>锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @return 缁撴灉 - */ - public static Integer toInt(Object value) - { - return toInt(value, null); - } - - /** - * 杞崲涓篒nteger鏁扮粍<br> - * - * @param str 琚浆鎹㈢殑鍊� - * @return 缁撴灉 - */ - public static Integer[] toIntArray(String str) - { - return toIntArray(",", str); - } - - /** - * 杞崲涓篖ong鏁扮粍<br> - * - * @param str 琚浆鎹㈢殑鍊� - * @return 缁撴灉 - */ - public static Long[] toLongArray(String str) - { - return toLongArray(",", str); - } - - /** - * 杞崲涓篒nteger鏁扮粍<br> - * - * @param split 鍒嗛殧绗� - * @param str 琚浆鎹㈢殑鍊� - * @return 缁撴灉 - */ - public static Integer[] toIntArray(String split, String str) - { - if (StringUtils.isEmpty(str)) - { - return new Integer[] {}; - } - String[] arr = str.split(split); - final Integer[] ints = new Integer[arr.length]; - for (int i = 0; i < arr.length; i++) - { - final Integer v = toInt(arr[i], 0); - ints[i] = v; - } - return ints; - } - - /** - * 杞崲涓篖ong鏁扮粍<br> - * - * @param split 鍒嗛殧绗� - * @param str 琚浆鎹㈢殑鍊� - * @return 缁撴灉 - */ - public static Long[] toLongArray(String split, String str) - { - if (StringUtils.isEmpty(str)) - { - return new Long[] {}; - } - String[] arr = str.split(split); - final Long[] longs = new Long[arr.length]; - for (int i = 0; i < arr.length; i++) - { - final Long v = toLong(arr[i], null); - longs[i] = v; - } - return longs; - } - - /** - * 杞崲涓篠tring鏁扮粍<br> - * - * @param str 琚浆鎹㈢殑鍊� - * @return 缁撴灉 - */ - public static String[] toStrArray(String str) - { - if (StringUtils.isEmpty(str)) - { - return new String[] {}; - } - return toStrArray(",", str); - } - - /** - * 杞崲涓篠tring鏁扮粍<br> - * - * @param split 鍒嗛殧绗� - * @param str 琚浆鎹㈢殑鍊� - * @return 缁撴灉 - */ - public static String[] toStrArray(String split, String str) - { - return str.split(split); - } - - /** - * 杞崲涓簂ong<br> - * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊� - * @return 缁撴灉 - */ - public static Long toLong(Object value, Long defaultValue) - { - if (value == null) - { - return defaultValue; - } - if (value instanceof Long) - { - return (Long) value; - } - if (value instanceof Number) - { - return ((Number) value).longValue(); - } - final String valueStr = toStr(value, null); - if (StringUtils.isEmpty(valueStr)) - { - return defaultValue; - } - try - { - // 鏀寔绉戝璁℃暟娉� - return new BigDecimal(valueStr.trim()).longValue(); - } - catch (Exception e) - { - return defaultValue; - } - } - - /** - * 杞崲涓簂ong<br> - * 濡傛灉缁欏畾鐨勫�间负<code>null</code>锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @return 缁撴灉 - */ - public static Long toLong(Object value) - { - return toLong(value, null); - } - - /** - * 杞崲涓篸ouble<br> - * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊� - * @return 缁撴灉 - */ - public static Double toDouble(Object value, Double defaultValue) - { - if (value == null) - { - return defaultValue; - } - if (value instanceof Double) - { - return (Double) value; - } - if (value instanceof Number) - { - return ((Number) value).doubleValue(); - } - final String valueStr = toStr(value, null); - if (StringUtils.isEmpty(valueStr)) - { - return defaultValue; - } - try - { - // 鏀寔绉戝璁℃暟娉� - return new BigDecimal(valueStr.trim()).doubleValue(); - } - catch (Exception e) - { - return defaultValue; - } - } - - /** - * 杞崲涓篸ouble<br> - * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @return 缁撴灉 - */ - public static Double toDouble(Object value) - { - return toDouble(value, null); - } - - /** - * 杞崲涓篎loat<br> - * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊� - * @return 缁撴灉 - */ - public static Float toFloat(Object value, Float defaultValue) - { - if (value == null) - { - return defaultValue; - } - if (value instanceof Float) - { - return (Float) value; - } - if (value instanceof Number) - { - return ((Number) value).floatValue(); - } - final String valueStr = toStr(value, null); - if (StringUtils.isEmpty(valueStr)) - { - return defaultValue; - } - try - { - return Float.parseFloat(valueStr.trim()); - } - catch (Exception e) - { - return defaultValue; - } - } - - /** - * 杞崲涓篎loat<br> - * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @return 缁撴灉 - */ - public static Float toFloat(Object value) - { - return toFloat(value, null); - } - - /** - * 杞崲涓篵oolean<br> - * String鏀寔鐨勫�间负锛歵rue銆乫alse銆亂es銆乷k銆乶o锛�1,0 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊� - * @return 缁撴灉 - */ - public static Boolean toBool(Object value, Boolean defaultValue) - { - if (value == null) - { - return defaultValue; - } - if (value instanceof Boolean) - { - return (Boolean) value; - } - String valueStr = toStr(value, null); - if (StringUtils.isEmpty(valueStr)) - { - return defaultValue; - } - valueStr = valueStr.trim().toLowerCase(); - switch (valueStr) - { - case "true": - case "yes": - case "ok": - case "1": - return true; - case "false": - case "no": - case "0": - return false; - default: - return defaultValue; - } - } - - /** - * 杞崲涓篵oolean<br> - * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @return 缁撴灉 - */ - public static Boolean toBool(Object value) - { - return toBool(value, null); - } - - /** - * 杞崲涓篍num瀵硅薄<br> - * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br> - * - * @param clazz Enum鐨凜lass - * @param value 鍊� - * @param defaultValue 榛樿鍊� - * @return Enum - */ - public static <E extends Enum<E>> E toEnum(Class<E> clazz, Object value, E defaultValue) - { - if (value == null) - { - return defaultValue; - } - if (clazz.isAssignableFrom(value.getClass())) - { - @SuppressWarnings("unchecked") - E myE = (E) value; - return myE; - } - final String valueStr = toStr(value, null); - if (StringUtils.isEmpty(valueStr)) - { - return defaultValue; - } - try - { - return Enum.valueOf(clazz, valueStr); - } - catch (Exception e) - { - return defaultValue; - } - } - - /** - * 杞崲涓篍num瀵硅薄<br> - * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br> - * - * @param clazz Enum鐨凜lass - * @param value 鍊� - * @return Enum - */ - public static <E extends Enum<E>> E toEnum(Class<E> clazz, Object value) - { - return toEnum(clazz, value, null); - } - - /** - * 杞崲涓築igInteger<br> - * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊� - * @return 缁撴灉 - */ - public static BigInteger toBigInteger(Object value, BigInteger defaultValue) - { - if (value == null) - { - return defaultValue; - } - if (value instanceof BigInteger) - { - return (BigInteger) value; - } - if (value instanceof Long) - { - return BigInteger.valueOf((Long) value); - } - final String valueStr = toStr(value, null); - if (StringUtils.isEmpty(valueStr)) - { - return defaultValue; - } - try - { - return new BigInteger(valueStr); - } - catch (Exception e) - { - return defaultValue; - } - } - - /** - * 杞崲涓築igInteger<br> - * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @return 缁撴灉 - */ - public static BigInteger toBigInteger(Object value) - { - return toBigInteger(value, null); - } - - /** - * 杞崲涓築igDecimal<br> - * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊� - * @return 缁撴灉 - */ - public static BigDecimal toBigDecimal(Object value, BigDecimal defaultValue) - { - if (value == null) - { - return defaultValue; - } - if (value instanceof BigDecimal) - { - return (BigDecimal) value; - } - if (value instanceof Long) - { - return new BigDecimal((Long) value); - } - if (value instanceof Double) - { - return BigDecimal.valueOf((Double) value); - } - if (value instanceof Integer) - { - return new BigDecimal((Integer) value); - } - final String valueStr = toStr(value, null); - if (StringUtils.isEmpty(valueStr)) - { - return defaultValue; - } - try - { - return new BigDecimal(valueStr); - } - catch (Exception e) - { - return defaultValue; - } - } - - /** - * 杞崲涓築igDecimal<br> - * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br> - * 杞崲澶辫触涓嶄細鎶ラ敊 - * - * @param value 琚浆鎹㈢殑鍊� - * @return 缁撴灉 - */ - public static BigDecimal toBigDecimal(Object value) - { - return toBigDecimal(value, null); - } - - /** - * 灏嗗璞¤浆涓哄瓧绗︿覆<br> - * 1銆丅yte鏁扮粍鍜孊yteBuffer浼氳杞崲涓哄搴斿瓧绗︿覆鐨勬暟缁� 2銆佸璞℃暟缁勪細璋冪敤Arrays.toString鏂规硶 - * - * @param obj 瀵硅薄 - * @return 瀛楃涓� - */ - public static String utf8Str(Object obj) - { - return str(obj, CharsetKit.CHARSET_UTF_8); - } - - /** - * 灏嗗璞¤浆涓哄瓧绗︿覆<br> - * 1銆丅yte鏁扮粍鍜孊yteBuffer浼氳杞崲涓哄搴斿瓧绗︿覆鐨勬暟缁� 2銆佸璞℃暟缁勪細璋冪敤Arrays.toString鏂规硶 - * - * @param obj 瀵硅薄 - * @param charsetName 瀛楃闆� - * @return 瀛楃涓� - */ - public static String str(Object obj, String charsetName) - { - return str(obj, Charset.forName(charsetName)); - } - - /** - * 灏嗗璞¤浆涓哄瓧绗︿覆<br> - * 1銆丅yte鏁扮粍鍜孊yteBuffer浼氳杞崲涓哄搴斿瓧绗︿覆鐨勬暟缁� 2銆佸璞℃暟缁勪細璋冪敤Arrays.toString鏂规硶 - * - * @param obj 瀵硅薄 - * @param charset 瀛楃闆� - * @return 瀛楃涓� - */ - public static String str(Object obj, Charset charset) - { - if (null == obj) - { - return null; - } - - if (obj instanceof String) - { - return (String) obj; - } - else if (obj instanceof byte[] || obj instanceof Byte[]) - { - if (obj instanceof byte[]) - { - return str((byte[]) obj, charset); - } - else - { - Byte[] bytes = (Byte[]) obj; - int length = bytes.length; - byte[] dest = new byte[length]; - for (int i = 0; i < length; i++) - { - dest[i] = bytes[i]; - } - return str(dest, charset); - } - } - else if (obj instanceof ByteBuffer) - { - return str((ByteBuffer) obj, charset); - } - return obj.toString(); - } - - /** - * 灏哹yte鏁扮粍杞负瀛楃涓� - * - * @param bytes byte鏁扮粍 - * @param charset 瀛楃闆� - * @return 瀛楃涓� - */ - public static String str(byte[] bytes, String charset) - { - return str(bytes, StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset)); - } - - /** - * 瑙g爜瀛楄妭鐮� - * - * @param data 瀛楃涓� - * @param charset 瀛楃闆嗭紝濡傛灉姝ゅ瓧娈典负绌猴紝鍒欒В鐮佺殑缁撴灉鍙栧喅浜庡钩鍙� - * @return 瑙g爜鍚庣殑瀛楃涓� - */ - public static String str(byte[] data, Charset charset) - { - if (data == null) - { - return null; - } - - if (null == charset) - { - return new String(data); - } - return new String(data, charset); - } - - /** - * 灏嗙紪鐮佺殑byteBuffer鏁版嵁杞崲涓哄瓧绗︿覆 - * - * @param data 鏁版嵁 - * @param charset 瀛楃闆嗭紝濡傛灉涓虹┖浣跨敤褰撳墠绯荤粺瀛楃闆� - * @return 瀛楃涓� - */ - public static String str(ByteBuffer data, String charset) - { - if (data == null) - { - return null; - } - - return str(data, Charset.forName(charset)); - } - - /** - * 灏嗙紪鐮佺殑byteBuffer鏁版嵁杞崲涓哄瓧绗︿覆 - * - * @param data 鏁版嵁 - * @param charset 瀛楃闆嗭紝濡傛灉涓虹┖浣跨敤褰撳墠绯荤粺瀛楃闆� - * @return 瀛楃涓� - */ - public static String str(ByteBuffer data, Charset charset) - { - if (null == charset) - { - charset = Charset.defaultCharset(); - } - return charset.decode(data).toString(); - } - - // ----------------------------------------------------------------------- 鍏ㄨ鍗婅杞崲 - /** - * 鍗婅杞叏瑙� - * - * @param input String. - * @return 鍏ㄨ瀛楃涓�. - */ - public static String toSBC(String input) - { - return toSBC(input, null); - } - - /** - * 鍗婅杞叏瑙� - * - * @param input String - * @param notConvertSet 涓嶆浛鎹㈢殑瀛楃闆嗗悎 - * @return 鍏ㄨ瀛楃涓�. - */ - public static String toSBC(String input, Set<Character> notConvertSet) - { - char[] c = input.toCharArray(); - for (int i = 0; i < c.length; i++) - { - if (null != notConvertSet && notConvertSet.contains(c[i])) - { - // 璺宠繃涓嶆浛鎹㈢殑瀛楃 - continue; - } - - if (c[i] == ' ') - { - c[i] = '\u3000'; - } - else if (c[i] < '\177') - { - c[i] = (char) (c[i] + 65248); - - } - } - return new String(c); - } - - /** - * 鍏ㄨ杞崐瑙� - * - * @param input String. - * @return 鍗婅瀛楃涓� - */ - public static String toDBC(String input) - { - return toDBC(input, null); - } - - /** - * 鏇挎崲鍏ㄨ涓哄崐瑙� - * - * @param text 鏂囨湰 - * @param notConvertSet 涓嶆浛鎹㈢殑瀛楃闆嗗悎 - * @return 鏇挎崲鍚庣殑瀛楃 - */ - public static String toDBC(String text, Set<Character> notConvertSet) - { - char[] c = text.toCharArray(); - for (int i = 0; i < c.length; i++) - { - if (null != notConvertSet && notConvertSet.contains(c[i])) - { - // 璺宠繃涓嶆浛鎹㈢殑瀛楃 - continue; - } - - if (c[i] == '\u3000') - { - c[i] = ' '; - } - else if (c[i] > '\uFF00' && c[i] < '\uFF5F') - { - c[i] = (char) (c[i] - 65248); - } - } - return new String(c); - } - - /** - * 鏁板瓧閲戦澶у啓杞崲 鍏堝啓涓畬鏁寸殑鐒跺悗灏嗗闆舵嬀鏇挎崲鎴愰浂 - * - * @param n 鏁板瓧 - * @return 涓枃澶у啓鏁板瓧 - */ - public static String digitUppercase(double n) - { - String[] fraction = { "瑙�", "鍒�" }; - String[] digit = { "闆�", "澹�", "璐�", "鍙�", "鑲�", "浼�", "闄�", "鏌�", "鎹�", "鐜�" }; - String[][] unit = { { "鍏�", "涓�", "浜�" }, { "", "鎷�", "浣�", "浠�" } }; - - String head = n < 0 ? "璐�" : ""; - n = Math.abs(n); - - String s = ""; - for (int i = 0; i < fraction.length; i++) - { - // 浼樺寲double璁$畻绮惧害涓㈠け闂 - BigDecimal nNum = new BigDecimal(n); - BigDecimal decimal = new BigDecimal(10); - BigDecimal scale = nNum.multiply(decimal).setScale(2, RoundingMode.HALF_EVEN); - double d = scale.doubleValue(); - s += (digit[(int) (Math.floor(d * Math.pow(10, i)) % 10)] + fraction[i]).replaceAll("(闆�.)+", ""); - } - if (s.length() < 1) - { - s = "鏁�"; - } - int integerPart = (int) Math.floor(n); - - for (int i = 0; i < unit[0].length && integerPart > 0; i++) - { - String p = ""; - for (int j = 0; j < unit[1].length && n > 0; j++) - { - p = digit[integerPart % 10] + unit[1][j] + p; - integerPart = integerPart / 10; - } - s = p.replaceAll("(闆�.)*闆�$", "").replaceAll("^$", "闆�") + unit[0][i] + s; - } - return head + s.replaceAll("(闆�.)*闆跺厓", "鍏�").replaceFirst("(闆�.)+", "").replaceAll("(闆�.)+", "闆�").replaceAll("^鏁�$", "闆跺厓鏁�"); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/StrFormatter.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/StrFormatter.java deleted file mode 100644 index 24a83c5..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/StrFormatter.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.ruoyi.common.core.text; - -import com.ruoyi.common.core.utils.StringUtils; - -/** - * 瀛楃涓叉牸寮忓寲 - * - * @author admin - */ -public class StrFormatter -{ - public static final String EMPTY_JSON = "{}"; - public static final char C_BACKSLASH = '\\'; - public static final char C_DELIM_START = '{'; - public static final char C_DELIM_END = '}'; - - /** - * 鏍煎紡鍖栧瓧绗︿覆<br> - * 姝ゆ柟娉曞彧鏄畝鍗曞皢鍗犱綅绗� {} 鎸夌収椤哄簭鏇挎崲涓哄弬鏁�<br> - * 濡傛灉鎯宠緭鍑� {} 浣跨敤 \\杞箟 { 鍗冲彲锛屽鏋滄兂杈撳嚭 {} 涔嬪墠鐨� \ 浣跨敤鍙岃浆涔夌 \\\\ 鍗冲彲<br> - * 渚嬶細<br> - * 閫氬父浣跨敤锛歠ormat("this is {} for {}", "a", "b") -> this is a for b<br> - * 杞箟{}锛� format("this is \\{} for {}", "a", "b") -> this is \{} for a<br> - * 杞箟\锛� format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br> - * - * @param strPattern 瀛楃涓叉ā鏉� - * @param argArray 鍙傛暟鍒楄〃 - * @return 缁撴灉 - */ - public static String format(final String strPattern, final Object... argArray) - { - if (StringUtils.isEmpty(strPattern) || StringUtils.isEmpty(argArray)) - { - return strPattern; - } - final int strPatternLength = strPattern.length(); - - // 鍒濆鍖栧畾涔夊ソ鐨勯暱搴︿互鑾峰緱鏇村ソ鐨勬�ц兘 - StringBuilder sbuf = new StringBuilder(strPatternLength + 50); - - int handledPosition = 0; - int delimIndex;// 鍗犱綅绗︽墍鍦ㄤ綅缃� - for (int argIndex = 0; argIndex < argArray.length; argIndex++) - { - delimIndex = strPattern.indexOf(EMPTY_JSON, handledPosition); - if (delimIndex == -1) - { - if (handledPosition == 0) - { - return strPattern; - } - else - { // 瀛楃涓叉ā鏉垮墿浣欓儴鍒嗕笉鍐嶅寘鍚崰浣嶇锛屽姞鍏ュ墿浣欓儴鍒嗗悗杩斿洖缁撴灉 - sbuf.append(strPattern, handledPosition, strPatternLength); - return sbuf.toString(); - } - } - else - { - if (delimIndex > 0 && strPattern.charAt(delimIndex - 1) == C_BACKSLASH) - { - if (delimIndex > 1 && strPattern.charAt(delimIndex - 2) == C_BACKSLASH) - { - // 杞箟绗︿箣鍓嶈繕鏈変竴涓浆涔夌锛屽崰浣嶇渚濇棫鏈夋晥 - sbuf.append(strPattern, handledPosition, delimIndex - 1); - sbuf.append(Convert.utf8Str(argArray[argIndex])); - handledPosition = delimIndex + 2; - } - else - { - // 鍗犱綅绗﹁杞箟 - argIndex--; - sbuf.append(strPattern, handledPosition, delimIndex - 1); - sbuf.append(C_DELIM_START); - handledPosition = delimIndex + 1; - } - } - else - { - // 姝e父鍗犱綅绗� - sbuf.append(strPattern, handledPosition, delimIndex); - sbuf.append(Convert.utf8Str(argArray[argIndex])); - handledPosition = delimIndex + 2; - } - } - } - // 鍔犲叆鏈�鍚庝竴涓崰浣嶇鍚庢墍鏈夌殑瀛楃 - sbuf.append(strPattern, handledPosition, strPattern.length()); - - return sbuf.toString(); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java deleted file mode 100644 index e0967f9..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.ruoyi.common.core.utils; - -import java.lang.management.ManagementFactory; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.ZoneId; -import java.time.ZonedDateTime; -import java.util.Date; -import org.apache.commons.lang3.time.DateFormatUtils; - -/** - * 鏃堕棿宸ュ叿绫� - * - * @author admin - */ -public class DateUtils extends org.apache.commons.lang3.time.DateUtils -{ - public static String YYYY = "yyyy"; - - public static String YYYY_MM = "yyyy-MM"; - - public static String YYYY_MM_DD = "yyyy-MM-dd"; - - public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss"; - - 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"}; - - /** - * 鑾峰彇褰撳墠Date鍨嬫棩鏈� - * - * @return Date() 褰撳墠鏃ユ湡 - */ - public static Date getNowDate() - { - return new Date(); - } - - /** - * 鑾峰彇褰撳墠鏃ユ湡, 榛樿鏍煎紡涓簓yyy-MM-dd - * - * @return String - */ - public static String getDate() - { - return dateTimeNow(YYYY_MM_DD); - } - - public static final String getTime() - { - return dateTimeNow(YYYY_MM_DD_HH_MM_SS); - } - - public static final String dateTimeNow() - { - return dateTimeNow(YYYYMMDDHHMMSS); - } - - public static final String dateTimeNow(final String format) - { - return parseDateToStr(format, new Date()); - } - - public static final String dateTime(final Date date) - { - return parseDateToStr(YYYY_MM_DD, date); - } - - public static final String parseDateToStr(final String format, final Date date) - { - return new SimpleDateFormat(format).format(date); - } - - public static final Date dateTime(final String format, final String ts) - { - try - { - return new SimpleDateFormat(format).parse(ts); - } - catch (ParseException e) - { - throw new RuntimeException(e); - } - } - - /** - * 鏃ユ湡璺緞 鍗冲勾/鏈�/鏃� 濡�2018/08/08 - */ - public static final String datePath() - { - Date now = new Date(); - return DateFormatUtils.format(now, "yyyy/MM/dd"); - } - - /** - * 鏃ユ湡璺緞 鍗冲勾/鏈�/鏃� 濡�20180808 - */ - public static final String dateTime() - { - Date now = new Date(); - return DateFormatUtils.format(now, "yyyyMMdd"); - } - - /** - * 鏃ユ湡鍨嬪瓧绗︿覆杞寲涓烘棩鏈� 鏍煎紡 - */ - public static Date parseDate(Object str) - { - if (str == null) - { - return null; - } - try - { - return parseDate(str.toString(), parsePatterns); - } - catch (ParseException e) - { - return null; - } - } - - /** - * 鑾峰彇鏈嶅姟鍣ㄥ惎鍔ㄦ椂闂� - */ - public static Date getServerStartDate() - { - long time = ManagementFactory.getRuntimeMXBean().getStartTime(); - return new Date(time); - } - - /** - * 璁$畻鏃堕棿宸� - * - * @param endDate 鏈�鍚庢椂闂� - * @param startTime 寮�濮嬫椂闂� - * @return 鏃堕棿宸紙澶�/灏忔椂/鍒嗛挓锛� - */ - public static String timeDistance(Date endDate, Date startTime) - { - long nd = 1000 * 24 * 60 * 60; - long nh = 1000 * 60 * 60; - long nm = 1000 * 60; - // long ns = 1000; - // 鑾峰緱涓や釜鏃堕棿鐨勬绉掓椂闂村樊寮� - long diff = endDate.getTime() - startTime.getTime(); - // 璁$畻宸灏戝ぉ - long day = diff / nd; - // 璁$畻宸灏戝皬鏃� - long hour = diff % nd / nh; - // 璁$畻宸灏戝垎閽� - long min = diff % nd % nh / nm; - // 璁$畻宸灏戠//杈撳嚭缁撴灉 - // long sec = diff % nd % nh % nm / ns; - return day + "澶�" + hour + "灏忔椂" + min + "鍒嗛挓"; - } - - /** - * 澧炲姞 LocalDateTime ==> Date - */ - public static Date toDate(LocalDateTime temporalAccessor) - { - ZonedDateTime zdt = temporalAccessor.atZone(ZoneId.systemDefault()); - return Date.from(zdt.toInstant()); - } - - /** - * 澧炲姞 LocalDate ==> Date - */ - public static Date toDate(LocalDate temporalAccessor) - { - LocalDateTime localDateTime = LocalDateTime.of(temporalAccessor, LocalTime.of(0, 0, 0)); - ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault()); - return Date.from(zdt.toInstant()); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ExceptionUtil.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ExceptionUtil.java deleted file mode 100644 index 2fe9e92..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ExceptionUtil.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.ruoyi.common.core.utils; - -import java.io.PrintWriter; -import java.io.StringWriter; -import org.apache.commons.lang3.exception.ExceptionUtils; - -/** - * 閿欒淇℃伅澶勭悊绫汇�� - * - * @author admin - */ -public class ExceptionUtil -{ - /** - * 鑾峰彇exception鐨勮缁嗛敊璇俊鎭�� - */ - public static String getExceptionMessage(Throwable e) - { - StringWriter sw = new StringWriter(); - e.printStackTrace(new PrintWriter(sw, true)); - return sw.toString(); - } - - public static String getRootErrorMessage(Exception e) - { - Throwable root = ExceptionUtils.getRootCause(e); - root = (root == null ? e : root); - if (root == null) - { - return ""; - } - String msg = root.getMessage(); - if (msg == null) - { - return "null"; - } - return StringUtils.defaultString(msg); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/PageUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/PageUtils.java deleted file mode 100644 index 13dafbe..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/PageUtils.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.ruoyi.common.core.utils; - -import com.github.pagehelper.PageHelper; -import com.ruoyi.common.core.utils.sql.SqlUtil; -import com.ruoyi.common.core.web.page.PageDomain; -import com.ruoyi.common.core.web.page.TableSupport; - -/** - * 鍒嗛〉宸ュ叿绫� - * - * @author admin - */ -public class PageUtils extends PageHelper -{ - /** - * 璁剧疆璇锋眰鍒嗛〉鏁版嵁 - */ - public static void startPage() - { - PageDomain pageDomain = TableSupport.buildPageRequest(); - Integer pageNum = pageDomain.getPageNum(); - Integer pageSize = pageDomain.getPageSize(); - String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy()); - Boolean reasonable = pageDomain.getReasonable(); - PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable); - } - - /** - * 娓呯悊鍒嗛〉鐨勭嚎绋嬪彉閲� - */ - public static void clearPage() - { - PageHelper.clearPage(); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java deleted file mode 100644 index d29d260..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java +++ /dev/null @@ -1,333 +0,0 @@ -package com.ruoyi.common.core.utils; - -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; -import java.net.URLEncoder; -import java.util.Collections; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Map; -import javax.servlet.ServletRequest; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import org.springframework.core.io.buffer.DataBuffer; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.http.server.reactive.ServerHttpResponse; -import org.springframework.util.LinkedCaseInsensitiveMap; -import org.springframework.web.context.request.RequestAttributes; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; -import com.alibaba.fastjson2.JSON; -import com.ruoyi.common.core.constant.Constants; -import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.core.text.Convert; -import reactor.core.publisher.Mono; - -/** - * 瀹㈡埛绔伐鍏风被 - * - * @author admin - */ -public class ServletUtils -{ - /** - * 鑾峰彇String鍙傛暟 - */ - public static String getParameter(String name) - { - return getRequest().getParameter(name); - } - - /** - * 鑾峰彇String鍙傛暟 - */ - public static String getParameter(String name, String defaultValue) - { - return Convert.toStr(getRequest().getParameter(name), defaultValue); - } - - /** - * 鑾峰彇Integer鍙傛暟 - */ - public static Integer getParameterToInt(String name) - { - return Convert.toInt(getRequest().getParameter(name)); - } - - /** - * 鑾峰彇Integer鍙傛暟 - */ - public static Integer getParameterToInt(String name, Integer defaultValue) - { - return Convert.toInt(getRequest().getParameter(name), defaultValue); - } - - /** - * 鑾峰彇Boolean鍙傛暟 - */ - public static Boolean getParameterToBool(String name) - { - return Convert.toBool(getRequest().getParameter(name)); - } - - /** - * 鑾峰彇Boolean鍙傛暟 - */ - public static Boolean getParameterToBool(String name, Boolean defaultValue) - { - return Convert.toBool(getRequest().getParameter(name), defaultValue); - } - - /** - * 鑾峰緱鎵�鏈夎姹傚弬鏁� - * - * @param request 璇锋眰瀵硅薄{@link ServletRequest} - * @return Map - */ - public static Map<String, String[]> getParams(ServletRequest request) - { - final Map<String, String[]> map = request.getParameterMap(); - return Collections.unmodifiableMap(map); - } - - /** - * 鑾峰緱鎵�鏈夎姹傚弬鏁� - * - * @param request 璇锋眰瀵硅薄{@link ServletRequest} - * @return Map - */ - public static Map<String, String> getParamMap(ServletRequest request) - { - Map<String, String> params = new HashMap<>(); - for (Map.Entry<String, String[]> entry : getParams(request).entrySet()) - { - params.put(entry.getKey(), StringUtils.join(entry.getValue(), ",")); - } - return params; - } - - /** - * 鑾峰彇request - */ - public static HttpServletRequest getRequest() - { - try - { - return getRequestAttributes().getRequest(); - } - catch (Exception e) - { - return null; - } - } - - /** - * 鑾峰彇response - */ - public static HttpServletResponse getResponse() - { - try - { - return getRequestAttributes().getResponse(); - } - catch (Exception e) - { - return null; - } - } - - /** - * 鑾峰彇session - */ - public static HttpSession getSession() - { - return getRequest().getSession(); - } - - public static ServletRequestAttributes getRequestAttributes() - { - try - { - RequestAttributes attributes = RequestContextHolder.getRequestAttributes(); - return (ServletRequestAttributes) attributes; - } - catch (Exception e) - { - return null; - } - } - - public static String getHeader(HttpServletRequest request, String name) - { - String value = request.getHeader(name); - if (StringUtils.isEmpty(value)) - { - return StringUtils.EMPTY; - } - return urlDecode(value); - } - - public static Map<String, String> getHeaders(HttpServletRequest request) - { - Map<String, String> map = new LinkedCaseInsensitiveMap<>(); - Enumeration<String> enumeration = request.getHeaderNames(); - if (enumeration != null) - { - while (enumeration.hasMoreElements()) - { - String key = enumeration.nextElement(); - String value = request.getHeader(key); - map.put(key, value); - } - } - return map; - } - - /** - * 灏嗗瓧绗︿覆娓叉煋鍒板鎴风 - * - * @param response 娓叉煋瀵硅薄 - * @param string 寰呮覆鏌撶殑瀛楃涓� - */ - public static void renderString(HttpServletResponse response, String string) - { - try - { - response.setStatus(200); - response.setContentType("application/json"); - response.setCharacterEncoding("utf-8"); - response.getWriter().print(string); - } - catch (IOException e) - { - e.printStackTrace(); - } - } - - /** - * 鏄惁鏄疉jax寮傛璇锋眰 - * - * @param request - */ - public static boolean isAjaxRequest(HttpServletRequest request) - { - String accept = request.getHeader("accept"); - if (accept != null && accept.contains("application/json")) - { - return true; - } - - String xRequestedWith = request.getHeader("X-Requested-With"); - if (xRequestedWith != null && xRequestedWith.contains("XMLHttpRequest")) - { - return true; - } - - String uri = request.getRequestURI(); - if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml")) - { - return true; - } - - String ajax = request.getParameter("__ajax"); - return StringUtils.inStringIgnoreCase(ajax, "json", "xml"); - } - - /** - * 鍐呭缂栫爜 - * - * @param str 鍐呭 - * @return 缂栫爜鍚庣殑鍐呭 - */ - public static String urlEncode(String str) - { - try - { - return URLEncoder.encode(str, Constants.UTF8); - } - catch (UnsupportedEncodingException e) - { - return StringUtils.EMPTY; - } - } - - /** - * 鍐呭瑙g爜 - * - * @param str 鍐呭 - * @return 瑙g爜鍚庣殑鍐呭 - */ - public static String urlDecode(String str) - { - try - { - return URLDecoder.decode(str, Constants.UTF8); - } - catch (UnsupportedEncodingException e) - { - return StringUtils.EMPTY; - } - } - - /** - * 璁剧疆webflux妯″瀷鍝嶅簲 - * - * @param response ServerHttpResponse - * @param value 鍝嶅簲鍐呭 - * @return Mono<Void> - */ - public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, Object value) - { - return webFluxResponseWriter(response, HttpStatus.OK, value, R.FAIL); - } - - /** - * 璁剧疆webflux妯″瀷鍝嶅簲 - * - * @param response ServerHttpResponse - * @param code 鍝嶅簲鐘舵�佺爜 - * @param value 鍝嶅簲鍐呭 - * @return Mono<Void> - */ - public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, Object value, int code) - { - return webFluxResponseWriter(response, HttpStatus.OK, value, code); - } - - /** - * 璁剧疆webflux妯″瀷鍝嶅簲 - * - * @param response ServerHttpResponse - * @param status http鐘舵�佺爜 - * @param code 鍝嶅簲鐘舵�佺爜 - * @param value 鍝嶅簲鍐呭 - * @return Mono<Void> - */ - public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, HttpStatus status, Object value, int code) - { - return webFluxResponseWriter(response, MediaType.APPLICATION_JSON_VALUE, status, value, code); - } - - /** - * 璁剧疆webflux妯″瀷鍝嶅簲 - * - * @param response ServerHttpResponse - * @param contentType content-type - * @param status http鐘舵�佺爜 - * @param code 鍝嶅簲鐘舵�佺爜 - * @param value 鍝嶅簲鍐呭 - * @return Mono<Void> - */ - public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, String contentType, HttpStatus status, Object value, int code) - { - response.setStatusCode(status); - response.getHeaders().add(HttpHeaders.CONTENT_TYPE, contentType); - R<?> result = R.fail(code, value.toString()); - DataBuffer dataBuffer = response.bufferFactory().wrap(JSON.toJSONString(result).getBytes()); - return response.writeWith(Mono.just(dataBuffer)); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SpringUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SpringUtils.java deleted file mode 100644 index 35a8950..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SpringUtils.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.ruoyi.common.core.utils; - -import org.springframework.aop.framework.AopContext; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.NoSuchBeanDefinitionException; -import org.springframework.beans.factory.config.BeanFactoryPostProcessor; -import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.stereotype.Component; - -/** - * spring宸ュ叿绫� 鏂逛究鍦ㄩ潪spring绠$悊鐜涓幏鍙朾ean - * - * @author admin - */ -@Component -public final class SpringUtils implements BeanFactoryPostProcessor -{ - /** Spring搴旂敤涓婁笅鏂囩幆澧� */ - private static ConfigurableListableBeanFactory beanFactory; - - @Override - public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException - { - SpringUtils.beanFactory = beanFactory; - } - - /** - * 鑾峰彇瀵硅薄 - * - * @param name - * @return Object 涓�涓互鎵�缁欏悕瀛楁敞鍐岀殑bean鐨勫疄渚� - * @throws org.springframework.beans.BeansException - * - */ - @SuppressWarnings("unchecked") - public static <T> T getBean(String name) throws BeansException - { - return (T) beanFactory.getBean(name); - } - - /** - * 鑾峰彇绫诲瀷涓簉equiredType鐨勫璞� - * - * @param clz - * @return - * @throws org.springframework.beans.BeansException - * - */ - public static <T> T getBean(Class<T> clz) throws BeansException - { - T result = (T) beanFactory.getBean(clz); - return result; - } - - /** - * 濡傛灉BeanFactory鍖呭惈涓�涓笌鎵�缁欏悕绉板尮閰嶇殑bean瀹氫箟锛屽垯杩斿洖true - * - * @param name - * @return boolean - */ - public static boolean containsBean(String name) - { - return beanFactory.containsBean(name); - } - - /** - * 鍒ゆ柇浠ョ粰瀹氬悕瀛楁敞鍐岀殑bean瀹氫箟鏄竴涓猻ingleton杩樻槸涓�涓猵rototype銆� 濡傛灉涓庣粰瀹氬悕瀛楃浉搴旂殑bean瀹氫箟娌℃湁琚壘鍒帮紝灏嗕細鎶涘嚭涓�涓紓甯革紙NoSuchBeanDefinitionException锛� - * - * @param name - * @return boolean - * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException - * - */ - public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException - { - return beanFactory.isSingleton(name); - } - - /** - * @param name - * @return Class 娉ㄥ唽瀵硅薄鐨勭被鍨� - * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException - * - */ - public static Class<?> getType(String name) throws NoSuchBeanDefinitionException - { - return beanFactory.getType(name); - } - - /** - * 濡傛灉缁欏畾鐨刡ean鍚嶅瓧鍦╞ean瀹氫箟涓湁鍒悕锛屽垯杩斿洖杩欎簺鍒悕 - * - * @param name - * @return - * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException - * - */ - public static String[] getAliases(String name) throws NoSuchBeanDefinitionException - { - return beanFactory.getAliases(name); - } - - /** - * 鑾峰彇aop浠g悊瀵硅薄 - * - * @param invoker - * @return - */ - @SuppressWarnings("unchecked") - public static <T> T getAopProxy(T invoker) - { - return (T) AopContext.currentProxy(); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java deleted file mode 100644 index 0f39ac6..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java +++ /dev/null @@ -1,607 +0,0 @@ -package com.ruoyi.common.core.utils; - -import java.util.Collection; -import java.util.List; -import java.util.Map; -import org.springframework.util.AntPathMatcher; -import com.ruoyi.common.core.constant.Constants; -import com.ruoyi.common.core.text.StrFormatter; - -/** - * 瀛楃涓插伐鍏风被 - * - * @author admin - */ -public class StringUtils extends org.apache.commons.lang3.StringUtils -{ - /** 绌哄瓧绗︿覆 */ - private static final String NULLSTR = ""; - - /** 涓嬪垝绾� */ - private static final char SEPARATOR = '_'; - - /** 鏄熷彿 */ - private static final char ASTERISK = '*'; - - /** - * 鑾峰彇鍙傛暟涓嶄负绌哄�� - * - * @param value defaultValue 瑕佸垽鏂殑value - * @return value 杩斿洖鍊� - */ - public static <T> T nvl(T value, T defaultValue) - { - return value != null ? value : defaultValue; - } - - /** - * * 鍒ゆ柇涓�涓狢ollection鏄惁涓虹┖锛� 鍖呭惈List锛孲et锛孮ueue - * - * @param coll 瑕佸垽鏂殑Collection - * @return true锛氫负绌� false锛氶潪绌� - */ - public static boolean isEmpty(Collection<?> coll) - { - return isNull(coll) || coll.isEmpty(); - } - - /** - * * 鍒ゆ柇涓�涓狢ollection鏄惁闈炵┖锛屽寘鍚獿ist锛孲et锛孮ueue - * - * @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 isNull(objects) || (objects.length == 0); - } - - /** - * * 鍒ゆ柇涓�涓璞℃暟缁勬槸鍚﹂潪绌� - * - * @param objects 瑕佸垽鏂殑瀵硅薄鏁扮粍 - * @return true锛氶潪绌� false锛氱┖ - */ - public static boolean isNotEmpty(Object[] objects) - { - return !isEmpty(objects); - } - - /** - * * 鍒ゆ柇涓�涓狹ap鏄惁涓虹┖ - * - * @param map 瑕佸垽鏂殑Map - * @return true锛氫负绌� false锛氶潪绌� - */ - public static boolean isEmpty(Map<?, ?> map) - { - return isNull(map) || map.isEmpty(); - } - - /** - * * 鍒ゆ柇涓�涓狹ap鏄惁涓虹┖ - * - * @param map 瑕佸垽鏂殑Map - * @return true锛氶潪绌� false锛氱┖ - */ - public static boolean isNotEmpty(Map<?, ?> map) - { - return !isEmpty(map); - } - - /** - * * 鍒ゆ柇涓�涓瓧绗︿覆鏄惁涓虹┖涓� - * - * @param str String - * @return true锛氫负绌� false锛氶潪绌� - */ - public static boolean isEmpty(String str) - { - return isNull(str) || NULLSTR.equals(str.trim()); - } - - /** - * * 鍒ゆ柇涓�涓瓧绗︿覆鏄惁涓洪潪绌轰覆 - * - * @param str String - * @return true锛氶潪绌轰覆 false锛氱┖涓� - */ - public static boolean isNotEmpty(String str) - { - return !isEmpty(str); - } - - /** - * * 鍒ゆ柇涓�涓璞℃槸鍚︿负绌� - * - * @param object Object - * @return true锛氫负绌� false锛氶潪绌� - */ - public static boolean isNull(Object object) - { - return object == null; - } - - /** - * * 鍒ゆ柇涓�涓璞℃槸鍚﹂潪绌� - * - * @param object Object - * @return true锛氶潪绌� false锛氱┖ - */ - public static boolean isNotNull(Object object) - { - return !isNull(object); - } - - /** - * * 鍒ゆ柇涓�涓璞℃槸鍚︽槸鏁扮粍绫诲瀷锛圝ava鍩烘湰鍨嬪埆鐨勬暟缁勶級 - * - * @param object 瀵硅薄 - * @return true锛氭槸鏁扮粍 false锛氫笉鏄暟缁� - */ - public static boolean isArray(Object object) - { - return isNotNull(object) && object.getClass().isArray(); - } - - /** - * 鍘荤┖鏍� - */ - public static String trim(String str) - { - return (str == null ? "" : str.trim()); - } - - /** - * 鏇挎崲鎸囧畾瀛楃涓茬殑鎸囧畾鍖洪棿鍐呭瓧绗︿负"*" - * - * @param str 瀛楃涓� - * @param startInclude 寮�濮嬩綅缃紙鍖呭惈锛� - * @param endExclude 缁撴潫浣嶇疆锛堜笉鍖呭惈锛� - * @return 鏇挎崲鍚庣殑瀛楃涓� - */ - public static String hide(CharSequence str, int startInclude, int endExclude) - { - if (isEmpty(str)) - { - return NULLSTR; - } - final int strLength = str.length(); - if (startInclude > strLength) - { - return NULLSTR; - } - if (endExclude > strLength) - { - endExclude = strLength; - } - if (startInclude > endExclude) - { - // 濡傛灉璧峰浣嶇疆澶т簬缁撴潫浣嶇疆锛屼笉鏇挎崲 - return NULLSTR; - } - final char[] chars = new char[strLength]; - for (int i = 0; i < strLength; i++) - { - if (i >= startInclude && i < endExclude) - { - chars[i] = ASTERISK; - } - else - { - chars[i] = str.charAt(i); - } - } - return new String(chars); - } - - /** - * 鎴彇瀛楃涓� - * - * @param str 瀛楃涓� - * @param start 寮�濮� - * @return 缁撴灉 - */ - public static String substring(final String str, int start) - { - if (str == null) - { - return NULLSTR; - } - - if (start < 0) - { - start = str.length() + start; - } - - if (start < 0) - { - start = 0; - } - if (start > str.length()) - { - return NULLSTR; - } - - return str.substring(start); - } - - /** - * 鎴彇瀛楃涓� - * - * @param str 瀛楃涓� - * @param start 寮�濮� - * @param end 缁撴潫 - * @return 缁撴灉 - */ - public static String substring(final String str, int start, int end) - { - if (str == null) - { - return NULLSTR; - } - - if (end < 0) - { - end = str.length() + end; - } - if (start < 0) - { - start = str.length() + start; - } - - if (end > str.length()) - { - end = str.length(); - } - - if (start > end) - { - return NULLSTR; - } - - if (start < 0) - { - start = 0; - } - if (end < 0) - { - end = 0; - } - - return str.substring(start, end); - } - - /** - * 鍒ゆ柇鏄惁涓虹┖锛屽苟涓斾笉鏄┖鐧藉瓧绗� - * - * @param str 瑕佸垽鏂殑value - * @return 缁撴灉 - */ - public static boolean hasText(String str) - { - return (str != null && !str.isEmpty() && containsText(str)); - } - - private static boolean containsText(CharSequence str) - { - int strLen = str.length(); - for (int i = 0; i < strLen; i++) - { - if (!Character.isWhitespace(str.charAt(i))) - { - return true; - } - } - return false; - } - - /** - * 鏍煎紡鍖栨枃鏈�, {} 琛ㄧず鍗犱綅绗�<br> - * 姝ゆ柟娉曞彧鏄畝鍗曞皢鍗犱綅绗� {} 鎸夌収椤哄簭鏇挎崲涓哄弬鏁�<br> - * 濡傛灉鎯宠緭鍑� {} 浣跨敤 \\杞箟 { 鍗冲彲锛屽鏋滄兂杈撳嚭 {} 涔嬪墠鐨� \ 浣跨敤鍙岃浆涔夌 \\\\ 鍗冲彲<br> - * 渚嬶細<br> - * 閫氬父浣跨敤锛歠ormat("this is {} for {}", "a", "b") -> this is a for b<br> - * 杞箟{}锛� format("this is \\{} for {}", "a", "b") -> this is \{} for a<br> - * 杞箟\锛� format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br> - * - * @param template 鏂囨湰妯℃澘锛岃鏇挎崲鐨勯儴鍒嗙敤 {} 琛ㄧず - * @param params 鍙傛暟鍊� - * @return 鏍煎紡鍖栧悗鐨勬枃鏈� - */ - public static String format(String template, Object... params) - { - if (isEmpty(params) || isEmpty(template)) - { - return template; - } - return StrFormatter.format(template, params); - } - - /** - * 鏄惁涓篽ttp(s)://寮�澶� - * - * @param link 閾炬帴 - * @return 缁撴灉 - */ - public static boolean ishttp(String link) - { - return StringUtils.startsWithAny(link, Constants.HTTP, Constants.HTTPS); - } - - /** - * 鍒ゆ柇缁欏畾鐨刢ollection鍒楄〃涓槸鍚﹀寘鍚暟缁刟rray 鍒ゆ柇缁欏畾鐨勬暟缁刟rray涓槸鍚﹀寘鍚粰瀹氱殑鍏冪礌value - * - * @param collection 缁欏畾鐨勯泦鍚� - * @param array 缁欏畾鐨勬暟缁� - * @return boolean 缁撴灉 - */ - public static boolean containsAny(Collection<String> collection, String... array) - { - if (isEmpty(collection) || isEmpty(array)) - { - return false; - } - else - { - for (String str : array) - { - if (collection.contains(str)) - { - return true; - } - } - return false; - } - } - - /** - * 椹煎嘲杞笅鍒掔嚎鍛藉悕 - */ - public static String toUnderScoreCase(String str) - { - if (str == null) - { - return null; - } - StringBuilder sb = new StringBuilder(); - // 鍓嶇疆瀛楃鏄惁澶у啓 - boolean preCharIsUpperCase = true; - // 褰撳墠瀛楃鏄惁澶у啓 - boolean curreCharIsUpperCase = true; - // 涓嬩竴瀛楃鏄惁澶у啓 - boolean nexteCharIsUpperCase = true; - for (int i = 0; i < str.length(); i++) - { - char c = str.charAt(i); - if (i > 0) - { - preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1)); - } - else - { - preCharIsUpperCase = false; - } - - curreCharIsUpperCase = Character.isUpperCase(c); - - if (i < (str.length() - 1)) - { - nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1)); - } - - if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) - { - sb.append(SEPARATOR); - } - else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase) - { - sb.append(SEPARATOR); - } - sb.append(Character.toLowerCase(c)); - } - - return sb.toString(); - } - - /** - * 鏄惁鍖呭惈瀛楃涓� - * - * @param str 楠岃瘉瀛楃涓� - * @param strs 瀛楃涓茬粍 - * @return 鍖呭惈杩斿洖true - */ - public static boolean inStringIgnoreCase(String str, String... strs) - { - if (str != null && strs != null) - { - for (String s : strs) - { - if (str.equalsIgnoreCase(trim(s))) - { - return true; - } - } - } - return false; - } - - /** - * 灏嗕笅鍒掔嚎澶у啓鏂瑰紡鍛藉悕鐨勫瓧绗︿覆杞崲涓洪┘宄板紡銆傚鏋滆浆鎹㈠墠鐨勪笅鍒掔嚎澶у啓鏂瑰紡鍛藉悕鐨勫瓧绗︿覆涓虹┖锛屽垯杩斿洖绌哄瓧绗︿覆銆� 渚嬪锛欻ELLO_WORLD->HelloWorld - * - * @param name 杞崲鍓嶇殑涓嬪垝绾垮ぇ鍐欐柟寮忓懡鍚嶇殑瀛楃涓� - * @return 杞崲鍚庣殑椹煎嘲寮忓懡鍚嶇殑瀛楃涓� - */ - public static String convertToCamelCase(String name) - { - StringBuilder result = new StringBuilder(); - // 蹇�熸鏌� - if (name == null || name.isEmpty()) - { - // 娌″繀瑕佽浆鎹� - return ""; - } - else if (!name.contains("_")) - { - // 涓嶅惈涓嬪垝绾匡紝浠呭皢棣栧瓧姣嶅ぇ鍐� - return name.substring(0, 1).toUpperCase() + name.substring(1); - } - // 鐢ㄤ笅鍒掔嚎灏嗗師濮嬪瓧绗︿覆鍒嗗壊 - String[] camels = name.split("_"); - for (String camel : camels) - { - // 璺宠繃鍘熷瀛楃涓蹭腑寮�澶淬�佺粨灏剧殑涓嬫崲绾挎垨鍙岄噸涓嬪垝绾� - if (camel.isEmpty()) - { - continue; - } - // 棣栧瓧姣嶅ぇ鍐� - result.append(camel.substring(0, 1).toUpperCase()); - result.append(camel.substring(1).toLowerCase()); - } - return result.toString(); - } - - /** - * 椹煎嘲寮忓懡鍚嶆硶 - * 渚嬪锛歶ser_name->userName - */ - public static String toCamelCase(String s) - { - if (s == null) - { - return null; - } - if (s.indexOf(SEPARATOR) == -1) - { - return s; - } - s = s.toLowerCase(); - StringBuilder sb = new StringBuilder(s.length()); - boolean upperCase = false; - for (int i = 0; i < s.length(); i++) - { - char c = s.charAt(i); - - if (c == SEPARATOR) - { - upperCase = true; - } - else if (upperCase) - { - sb.append(Character.toUpperCase(c)); - upperCase = false; - } - else - { - sb.append(c); - } - } - return sb.toString(); - } - - /** - * 鏌ユ壘鎸囧畾瀛楃涓叉槸鍚﹀尮閰嶆寚瀹氬瓧绗︿覆鍒楄〃涓殑浠绘剰涓�涓瓧绗︿覆 - * - * @param str 鎸囧畾瀛楃涓� - * @param strs 闇�瑕佹鏌ョ殑瀛楃涓叉暟缁� - * @return 鏄惁鍖归厤 - */ - public static boolean matches(String str, List<String> strs) - { - if (isEmpty(str) || isEmpty(strs)) - { - return false; - } - for (String pattern : strs) - { - if (isMatch(pattern, str)) - { - return true; - } - } - return false; - } - - /** - * 鍒ゆ柇url鏄惁涓庤鍒欓厤缃�: - * ? 琛ㄧず鍗曚釜瀛楃; - * * 琛ㄧず涓�灞傝矾寰勫唴鐨勪换鎰忓瓧绗︿覆锛屼笉鍙法灞傜骇; - * ** 琛ㄧず浠绘剰灞傝矾寰�; - * - * @param pattern 鍖归厤瑙勫垯 - * @param url 闇�瑕佸尮閰嶇殑url - * @return - */ - public static boolean isMatch(String pattern, String url) - { - AntPathMatcher matcher = new AntPathMatcher(); - return matcher.match(pattern, url); - } - - @SuppressWarnings("unchecked") - public static <T> T cast(Object obj) - { - return (T) obj; - } - - /** - * 鏁板瓧宸﹁竟琛ラ綈0锛屼娇涔嬭揪鍒版寚瀹氶暱搴︺�傛敞鎰忥紝濡傛灉鏁板瓧杞崲涓哄瓧绗︿覆鍚庯紝闀垮害澶т簬size锛屽垯鍙繚鐣� 鏈�鍚巗ize涓瓧绗︺�� - * - * @param num 鏁板瓧瀵硅薄 - * @param size 瀛楃涓叉寚瀹氶暱搴� - * @return 杩斿洖鏁板瓧鐨勫瓧绗︿覆鏍煎紡锛岃瀛楃涓蹭负鎸囧畾闀垮害銆� - */ - public static final String padl(final Number num, final int size) - { - return padl(num.toString(), size, '0'); - } - - /** - * 瀛楃涓插乏琛ラ綈銆傚鏋滃師濮嬪瓧绗︿覆s闀垮害澶т簬size锛屽垯鍙繚鐣欐渶鍚巗ize涓瓧绗︺�� - * - * @param s 鍘熷瀛楃涓� - * @param size 瀛楃涓叉寚瀹氶暱搴� - * @param c 鐢ㄤ簬琛ラ綈鐨勫瓧绗� - * @return 杩斿洖鎸囧畾闀垮害鐨勫瓧绗︿覆锛岀敱鍘熷瓧绗︿覆宸﹁ˉ榻愭垨鎴彇寰楀埌銆� - */ - public static final String padl(final String s, final int size, final char c) - { - final StringBuilder sb = new StringBuilder(size); - if (s != null) - { - final int len = s.length(); - if (s.length() <= size) - { - for (int i = size - len; i > 0; i--) - { - sb.append(c); - } - sb.append(s); - } - else - { - return s.substring(len - size, len); - } - } - else - { - for (int i = size; i > 0; i--) - { - sb.append(c); - } - } - return sb.toString(); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/bean/BeanUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/bean/BeanUtils.java deleted file mode 100644 index 31e0499..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/bean/BeanUtils.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.ruoyi.common.core.utils.bean; - -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * Bean 宸ュ叿绫� - * - * @author admin - */ -public class BeanUtils extends org.springframework.beans.BeanUtils -{ - /** Bean鏂规硶鍚嶄腑灞炴�у悕寮�濮嬬殑涓嬫爣 */ - private static final int BEAN_METHOD_PROP_INDEX = 3; - - /** * 鍖归厤getter鏂规硶鐨勬鍒欒〃杈惧紡 */ - private static final Pattern GET_PATTERN = Pattern.compile("get(\\p{javaUpperCase}\\w*)"); - - /** * 鍖归厤setter鏂规硶鐨勬鍒欒〃杈惧紡 */ - private static final Pattern SET_PATTERN = Pattern.compile("set(\\p{javaUpperCase}\\w*)"); - - /** - * Bean灞炴�у鍒跺伐鍏锋柟娉曘�� - * - * @param dest 鐩爣瀵硅薄 - * @param src 婧愬璞� - */ - public static void copyBeanProp(Object dest, Object src) - { - try - { - copyProperties(src, dest); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - /** - * 鑾峰彇瀵硅薄鐨剆etter鏂规硶銆� - * - * @param obj 瀵硅薄 - * @return 瀵硅薄鐨剆etter鏂规硶鍒楄〃 - */ - public static List<Method> getSetterMethods(Object obj) - { - // setter鏂规硶鍒楄〃 - List<Method> setterMethods = new ArrayList<Method>(); - - // 鑾峰彇鎵�鏈夋柟娉� - Method[] methods = obj.getClass().getMethods(); - - // 鏌ユ壘setter鏂规硶 - - for (Method method : methods) - { - Matcher m = SET_PATTERN.matcher(method.getName()); - if (m.matches() && (method.getParameterTypes().length == 1)) - { - setterMethods.add(method); - } - } - // 杩斿洖setter鏂规硶鍒楄〃 - return setterMethods; - } - - /** - * 鑾峰彇瀵硅薄鐨刧etter鏂规硶銆� - * - * @param obj 瀵硅薄 - * @return 瀵硅薄鐨刧etter鏂规硶鍒楄〃 - */ - - public static List<Method> getGetterMethods(Object obj) - { - // getter鏂规硶鍒楄〃 - List<Method> getterMethods = new ArrayList<Method>(); - // 鑾峰彇鎵�鏈夋柟娉� - Method[] methods = obj.getClass().getMethods(); - // 鏌ユ壘getter鏂规硶 - for (Method method : methods) - { - Matcher m = GET_PATTERN.matcher(method.getName()); - if (m.matches() && (method.getParameterTypes().length == 0)) - { - getterMethods.add(method); - } - } - // 杩斿洖getter鏂规硶鍒楄〃 - return getterMethods; - } - - /** - * 妫�鏌ean鏂规硶鍚嶄腑鐨勫睘鎬у悕鏄惁鐩哥瓑銆�<br> - * 濡俫etName()鍜宻etName()灞炴�у悕涓�鏍凤紝getName()鍜宻etAge()灞炴�у悕涓嶄竴鏍枫�� - * - * @param m1 鏂规硶鍚�1 - * @param m2 鏂规硶鍚�2 - * @return 灞炴�у悕涓�鏍疯繑鍥瀟rue锛屽惁鍒欒繑鍥瀎alse - */ - - public static boolean isMethodPropEquals(String m1, String m2) - { - return m1.substring(BEAN_METHOD_PROP_INDEX).equals(m2.substring(BEAN_METHOD_PROP_INDEX)); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileTypeUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileTypeUtils.java deleted file mode 100644 index 6e2636b..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileTypeUtils.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.ruoyi.common.core.utils.file; - -import java.io.File; -import java.util.Objects; -import org.apache.commons.io.FilenameUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.web.multipart.MultipartFile; - -/** - * 鏂囦欢绫诲瀷宸ュ叿绫� - * - * @author admin - */ -public class FileTypeUtils -{ - /** - * 鑾峰彇鏂囦欢绫诲瀷 - * <p> - * 渚嬪: ruoyi.txt, 杩斿洖: txt - * - * @param file 鏂囦欢鍚� - * @return 鍚庣紑锛堜笉鍚�".") - */ - public static String getFileType(File file) - { - if (null == file) - { - return StringUtils.EMPTY; - } - return getFileType(file.getName()); - } - - /** - * 鑾峰彇鏂囦欢绫诲瀷 - * <p> - * 渚嬪: ruoyi.txt, 杩斿洖: txt - * - * @param fileName 鏂囦欢鍚� - * @return 鍚庣紑锛堜笉鍚�".") - */ - public static String getFileType(String fileName) - { - int separatorIndex = fileName.lastIndexOf("."); - if (separatorIndex < 0) - { - return ""; - } - return fileName.substring(separatorIndex + 1).toLowerCase(); - } - - /** - * 鑾峰彇鏂囦欢鍚嶇殑鍚庣紑 - * - * @param file 琛ㄥ崟鏂囦欢 - * @return 鍚庣紑鍚� - */ - public static final String getExtension(MultipartFile file) - { - String extension = FilenameUtils.getExtension(file.getOriginalFilename()); - if (StringUtils.isEmpty(extension)) - { - extension = MimeTypeUtils.getExtension(Objects.requireNonNull(file.getContentType())); - } - return extension; - } - - /** - * 鑾峰彇鏂囦欢绫诲瀷 - * - * @param photoByte 鏂囦欢瀛楄妭鐮� - * @return 鍚庣紑锛堜笉鍚�".") - */ - public static String getFileExtendName(byte[] photoByte) - { - String strFileExtendName = "JPG"; - if ((photoByte[0] == 71) && (photoByte[1] == 73) && (photoByte[2] == 70) && (photoByte[3] == 56) - && ((photoByte[4] == 55) || (photoByte[4] == 57)) && (photoByte[5] == 97)) - { - strFileExtendName = "GIF"; - } - else if ((photoByte[6] == 74) && (photoByte[7] == 70) && (photoByte[8] == 73) && (photoByte[9] == 70)) - { - strFileExtendName = "JPG"; - } - else if ((photoByte[0] == 66) && (photoByte[1] == 77)) - { - strFileExtendName = "BMP"; - } - else if ((photoByte[1] == 80) && (photoByte[2] == 78) && (photoByte[3] == 71)) - { - strFileExtendName = "PNG"; - } - return strFileExtendName; - } -} \ No newline at end of file diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileUtils.java deleted file mode 100644 index 24193f1..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileUtils.java +++ /dev/null @@ -1,253 +0,0 @@ -package com.ruoyi.common.core.utils.file; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.OutputStream; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.apache.commons.lang3.ArrayUtils; -import com.ruoyi.common.core.utils.StringUtils; - -/** - * 鏂囦欢澶勭悊宸ュ叿绫� - * - * @author admin - */ -public class FileUtils -{ - /** 瀛楃甯搁噺锛氭枩鏉� {@code '/'} */ - public static final char SLASH = '/'; - - /** 瀛楃甯搁噺锛氬弽鏂滄潬 {@code '\\'} */ - public static final char BACKSLASH = '\\'; - - public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+"; - - /** - * 杈撳嚭鎸囧畾鏂囦欢鐨刡yte鏁扮粍 - * - * @param filePath 鏂囦欢璺緞 - * @param os 杈撳嚭娴� - * @return - */ - public static void writeBytes(String filePath, OutputStream os) throws IOException - { - FileInputStream fis = null; - try - { - File file = new File(filePath); - if (!file.exists()) - { - throw new FileNotFoundException(filePath); - } - fis = new FileInputStream(file); - byte[] b = new byte[1024]; - int length; - while ((length = fis.read(b)) > 0) - { - os.write(b, 0, length); - } - } - catch (IOException e) - { - throw e; - } - finally - { - if (os != null) - { - try - { - os.close(); - } - catch (IOException e1) - { - e1.printStackTrace(); - } - } - if (fis != null) - { - try - { - fis.close(); - } - catch (IOException e1) - { - e1.printStackTrace(); - } - } - } - } - - /** - * 鍒犻櫎鏂囦欢 - * - * @param filePath 鏂囦欢 - * @return - */ - public static boolean deleteFile(String filePath) - { - boolean flag = false; - File file = new File(filePath); - // 璺緞涓烘枃浠朵笖涓嶄负绌哄垯杩涜鍒犻櫎 - if (file.isFile() && file.exists()) - { - flag = file.delete(); - } - return flag; - } - - /** - * 鏂囦欢鍚嶇О楠岃瘉 - * - * @param filename 鏂囦欢鍚嶇О - * @return true 姝e父 false 闈炴硶 - */ - public static boolean isValidFilename(String filename) - { - return filename.matches(FILENAME_PATTERN); - } - - /** - * 妫�鏌ユ枃浠舵槸鍚﹀彲涓嬭浇 - * - * @param resource 闇�瑕佷笅杞界殑鏂囦欢 - * @return true 姝e父 false 闈炴硶 - */ - public static boolean checkAllowDownload(String resource) - { - // 绂佹鐩綍涓婅烦绾у埆 - if (StringUtils.contains(resource, "..")) - { - return false; - } - // 鍒ゆ柇鏄惁鍦ㄥ厑璁镐笅杞界殑鏂囦欢瑙勫垯鍐� - return ArrayUtils.contains(MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION, FileTypeUtils.getFileType(resource)); - } - - /** - * 涓嬭浇鏂囦欢鍚嶉噸鏂扮紪鐮� - * - * @param request 璇锋眰瀵硅薄 - * @param fileName 鏂囦欢鍚� - * @return 缂栫爜鍚庣殑鏂囦欢鍚� - */ - public static String setFileDownloadHeader(HttpServletRequest request, String fileName) throws UnsupportedEncodingException - { - final String agent = request.getHeader("USER-AGENT"); - String filename = fileName; - if (agent.contains("MSIE")) - { - // IE娴忚鍣� - filename = URLEncoder.encode(filename, "utf-8"); - filename = filename.replace("+", " "); - } - else if (agent.contains("Firefox")) - { - // 鐏嫄娴忚鍣� - filename = new String(fileName.getBytes(), "ISO8859-1"); - } - else if (agent.contains("Chrome")) - { - // google娴忚鍣� - filename = URLEncoder.encode(filename, "utf-8"); - } - else - { - // 鍏跺畠娴忚鍣� - filename = URLEncoder.encode(filename, "utf-8"); - } - return filename; - } - - /** - * 杩斿洖鏂囦欢鍚� - * - * @param filePath 鏂囦欢 - * @return 鏂囦欢鍚� - */ - public static String getName(String filePath) - { - if (null == filePath) - { - return null; - } - int len = filePath.length(); - if (0 == len) - { - return filePath; - } - if (isFileSeparator(filePath.charAt(len - 1))) - { - // 浠ュ垎闅旂缁撳熬鐨勫幓鎺夌粨灏惧垎闅旂 - len--; - } - - int begin = 0; - char c; - for (int i = len - 1; i > -1; i--) - { - c = filePath.charAt(i); - if (isFileSeparator(c)) - { - // 鏌ユ壘鏈�鍚庝竴涓矾寰勫垎闅旂锛�/鎴栬�匼锛� - begin = i + 1; - break; - } - } - - return filePath.substring(begin, len); - } - - /** - * 鏄惁涓篧indows鎴栬�匧inux锛圲nix锛夋枃浠跺垎闅旂<br> - * Windows骞冲彴涓嬪垎闅旂涓篭锛孡inux锛圲nix锛変负/ - * - * @param c 瀛楃 - * @return 鏄惁涓篧indows鎴栬�匧inux锛圲nix锛夋枃浠跺垎闅旂 - */ - public static boolean isFileSeparator(char c) - { - return SLASH == c || BACKSLASH == c; - } - - /** - * 涓嬭浇鏂囦欢鍚嶉噸鏂扮紪鐮� - * - * @param response 鍝嶅簲瀵硅薄 - * @param realFileName 鐪熷疄鏂囦欢鍚� - * @return - */ - public static void setAttachmentResponseHeader(HttpServletResponse response, String realFileName) throws UnsupportedEncodingException - { - String percentEncodedFileName = percentEncode(realFileName); - - StringBuilder contentDispositionValue = new StringBuilder(); - contentDispositionValue.append("attachment; filename=") - .append(percentEncodedFileName) - .append(";") - .append("filename*=") - .append("utf-8''") - .append(percentEncodedFileName); - - response.setHeader("Content-disposition", contentDispositionValue.toString()); - response.setHeader("download-filename", percentEncodedFileName); - } - - /** - * 鐧惧垎鍙风紪鐮佸伐鍏锋柟娉� - * - * @param s 闇�瑕佺櫨鍒嗗彿缂栫爜鐨勫瓧绗︿覆 - * @return 鐧惧垎鍙风紪鐮佸悗鐨勫瓧绗︿覆 - */ - public static String percentEncode(String s) throws UnsupportedEncodingException - { - String encode = URLEncoder.encode(s, StandardCharsets.UTF_8.toString()); - return encode.replaceAll("\\+", "%20"); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/ImageUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/ImageUtils.java deleted file mode 100644 index a1e92ad..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/ImageUtils.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.ruoyi.common.core.utils.file; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.net.URL; -import java.net.URLConnection; -import java.util.Arrays; -import org.apache.poi.util.IOUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * 鍥剧墖澶勭悊宸ュ叿绫� - * - * @author admin - */ -public class ImageUtils -{ - private static final Logger log = LoggerFactory.getLogger(ImageUtils.class); - - public static byte[] getImage(String imagePath) - { - InputStream is = getFile(imagePath); - try - { - return IOUtils.toByteArray(is); - } - catch (Exception e) - { - log.error("鍥剧墖鍔犺浇寮傚父 {}", e); - return null; - } - finally - { - IOUtils.closeQuietly(is); - } - } - - public static InputStream getFile(String imagePath) - { - try - { - byte[] result = readFile(imagePath); - result = Arrays.copyOf(result, result.length); - return new ByteArrayInputStream(result); - } - catch (Exception e) - { - log.error("鑾峰彇鍥剧墖寮傚父 {}", e); - } - return null; - } - - /** - * 璇诲彇鏂囦欢涓哄瓧鑺傛暟鎹� - * - * @param url 鍦板潃 - * @return 瀛楄妭鏁版嵁 - */ - public static byte[] readFile(String url) - { - InputStream in = null; - try - { - // 缃戠粶鍦板潃 - URL urlObj = new URL(url); - URLConnection urlConnection = urlObj.openConnection(); - urlConnection.setConnectTimeout(30 * 1000); - urlConnection.setReadTimeout(60 * 1000); - urlConnection.setDoInput(true); - in = urlConnection.getInputStream(); - return IOUtils.toByteArray(in); - } - catch (Exception e) - { - log.error("璁块棶鏂囦欢寮傚父 {}", e); - return null; - } - finally - { - IOUtils.closeQuietly(in); - } - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/EscapeUtil.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/EscapeUtil.java deleted file mode 100644 index ee89d2f..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/EscapeUtil.java +++ /dev/null @@ -1,167 +0,0 @@ -package com.ruoyi.common.core.utils.html; - -import com.ruoyi.common.core.utils.StringUtils; - -/** - * 杞箟鍜屽弽杞箟宸ュ叿绫� - * - * @author admin - */ -public class EscapeUtil -{ - public static final String RE_HTML_MARK = "(<[^<]*?>)|(<[\\s]*?/[^<]*?>)|(<[^<]*?/[\\s]*?>)"; - - private static final char[][] TEXT = new char[64][]; - - static - { - for (int i = 0; i < 64; i++) - { - TEXT[i] = new char[] { (char) i }; - } - - // special HTML characters - TEXT['\''] = "'".toCharArray(); // 鍗曞紩鍙� - TEXT['"'] = """.toCharArray(); // 鍙屽紩鍙� - TEXT['&'] = "&".toCharArray(); // &绗� - TEXT['<'] = "<".toCharArray(); // 灏忎簬鍙� - TEXT['>'] = ">".toCharArray(); // 澶т簬鍙� - } - - /** - * 杞箟鏂囨湰涓殑HTML瀛楃涓哄畨鍏ㄧ殑瀛楃 - * - * @param text 琚浆涔夌殑鏂囨湰 - * @return 杞箟鍚庣殑鏂囨湰 - */ - public static String escape(String text) - { - return encode(text); - } - - /** - * 杩樺師琚浆涔夌殑HTML鐗规畩瀛楃 - * - * @param content 鍖呭惈杞箟绗︾殑HTML鍐呭 - * @return 杞崲鍚庣殑瀛楃涓� - */ - public static String unescape(String content) - { - return decode(content); - } - - /** - * 娓呴櫎鎵�鏈塇TML鏍囩锛屼絾鏄笉鍒犻櫎鏍囩鍐呯殑鍐呭 - * - * @param content 鏂囨湰 - * @return 娓呴櫎鏍囩鍚庣殑鏂囨湰 - */ - public static String clean(String content) - { - return new HTMLFilter().filter(content); - } - - /** - * Escape缂栫爜 - * - * @param text 琚紪鐮佺殑鏂囨湰 - * @return 缂栫爜鍚庣殑瀛楃 - */ - private static String encode(String text) - { - if (StringUtils.isEmpty(text)) - { - return StringUtils.EMPTY; - } - - final StringBuilder tmp = new StringBuilder(text.length() * 6); - char c; - for (int i = 0; i < text.length(); i++) - { - c = text.charAt(i); - if (c < 256) - { - tmp.append("%"); - if (c < 16) - { - tmp.append("0"); - } - tmp.append(Integer.toString(c, 16)); - } - else - { - tmp.append("%u"); - if (c <= 0xfff) - { - // issue#I49JU8@Gitee - tmp.append("0"); - } - tmp.append(Integer.toString(c, 16)); - } - } - return tmp.toString(); - } - - /** - * Escape瑙g爜 - * - * @param content 琚浆涔夌殑鍐呭 - * @return 瑙g爜鍚庣殑瀛楃涓� - */ - public static String decode(String content) - { - if (StringUtils.isEmpty(content)) - { - return content; - } - - StringBuilder tmp = new StringBuilder(content.length()); - int lastPos = 0, pos = 0; - char ch; - while (lastPos < content.length()) - { - pos = content.indexOf("%", lastPos); - if (pos == lastPos) - { - if (content.charAt(pos + 1) == 'u') - { - ch = (char) Integer.parseInt(content.substring(pos + 2, pos + 6), 16); - tmp.append(ch); - lastPos = pos + 6; - } - else - { - ch = (char) Integer.parseInt(content.substring(pos + 1, pos + 3), 16); - tmp.append(ch); - lastPos = pos + 3; - } - } - else - { - if (pos == -1) - { - tmp.append(content.substring(lastPos)); - lastPos = content.length(); - } - else - { - tmp.append(content.substring(lastPos, pos)); - lastPos = pos; - } - } - } - return tmp.toString(); - } - - public static void main(String[] args) - { - String html = "<script>alert(1);</script>"; - String escape = EscapeUtil.escape(html); - // String html = "<scr<script>ipt>alert(\"XSS\")</scr<script>ipt>"; - // String html = "<123"; - // String html = "123>"; - System.out.println("clean: " + EscapeUtil.clean(html)); - System.out.println("escape: " + escape); - System.out.println("unescape: " + EscapeUtil.unescape(escape)); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/HTMLFilter.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/HTMLFilter.java deleted file mode 100644 index 136eea0..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/HTMLFilter.java +++ /dev/null @@ -1,570 +0,0 @@ -package com.ruoyi.common.core.utils.html; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * HTML杩囨护鍣紝鐢ㄤ簬鍘婚櫎XSS婕忔礊闅愭偅銆� - * - * @author admin - */ -public final class HTMLFilter -{ - /** - * regex flag union representing /si modifiers in php - **/ - private static final int REGEX_FLAGS_SI = Pattern.CASE_INSENSITIVE | Pattern.DOTALL; - private static final Pattern P_COMMENTS = Pattern.compile("<!--(.*?)-->", Pattern.DOTALL); - private static final Pattern P_COMMENT = Pattern.compile("^!--(.*)--$", REGEX_FLAGS_SI); - private static final Pattern P_TAGS = Pattern.compile("<(.*?)>", Pattern.DOTALL); - private static final Pattern P_END_TAG = Pattern.compile("^/([a-z0-9]+)", REGEX_FLAGS_SI); - private static final Pattern P_START_TAG = Pattern.compile("^([a-z0-9]+)(.*?)(/?)$", REGEX_FLAGS_SI); - private static final Pattern P_QUOTED_ATTRIBUTES = Pattern.compile("([a-z0-9]+)=([\"'])(.*?)\\2", REGEX_FLAGS_SI); - private static final Pattern P_UNQUOTED_ATTRIBUTES = Pattern.compile("([a-z0-9]+)(=)([^\"\\s']+)", REGEX_FLAGS_SI); - private static final Pattern P_PROTOCOL = Pattern.compile("^([^:]+):", REGEX_FLAGS_SI); - private static final Pattern P_ENTITY = Pattern.compile("&#(\\d+);?"); - private static final Pattern P_ENTITY_UNICODE = Pattern.compile("&#x([0-9a-f]+);?"); - private static final Pattern P_ENCODE = Pattern.compile("%([0-9a-f]{2});?"); - private static final Pattern P_VALID_ENTITIES = Pattern.compile("&([^&;]*)(?=(;|&|$))"); - private static final Pattern P_VALID_QUOTES = Pattern.compile("(>|^)([^<]+?)(<|$)", Pattern.DOTALL); - private static final Pattern P_END_ARROW = Pattern.compile("^>"); - private static final Pattern P_BODY_TO_END = Pattern.compile("<([^>]*?)(?=<|$)"); - private static final Pattern P_XML_CONTENT = Pattern.compile("(^|>)([^<]*?)(?=>)"); - private static final Pattern P_STRAY_LEFT_ARROW = Pattern.compile("<([^>]*?)(?=<|$)"); - private static final Pattern P_STRAY_RIGHT_ARROW = Pattern.compile("(^|>)([^<]*?)(?=>)"); - private static final Pattern P_AMP = Pattern.compile("&"); - private static final Pattern P_QUOTE = Pattern.compile("\""); - private static final Pattern P_LEFT_ARROW = Pattern.compile("<"); - private static final Pattern P_RIGHT_ARROW = Pattern.compile(">"); - private static final Pattern P_BOTH_ARROWS = Pattern.compile("<>"); - - // @xxx could grow large... maybe use sesat's ReferenceMap - private static final ConcurrentMap<String, Pattern> P_REMOVE_PAIR_BLANKS = new ConcurrentHashMap<>(); - private static final ConcurrentMap<String, Pattern> P_REMOVE_SELF_BLANKS = new ConcurrentHashMap<>(); - - /** - * set of allowed html elements, along with allowed attributes for each element - **/ - private final Map<String, List<String>> vAllowed; - /** - * counts of open tags for each (allowable) html element - **/ - private final Map<String, Integer> vTagCounts = new HashMap<>(); - - /** - * html elements which must always be self-closing (e.g. "<img />") - **/ - private final String[] vSelfClosingTags; - /** - * html elements which must always have separate opening and closing tags (e.g. "<b></b>") - **/ - private final String[] vNeedClosingTags; - /** - * set of disallowed html elements - **/ - private final String[] vDisallowed; - /** - * attributes which should be checked for valid protocols - **/ - private final String[] vProtocolAtts; - /** - * allowed protocols - **/ - private final String[] vAllowedProtocols; - /** - * tags which should be removed if they contain no content (e.g. "<b></b>" or "<b />") - **/ - private final String[] vRemoveBlanks; - /** - * entities allowed within html markup - **/ - private final String[] vAllowedEntities; - /** - * flag determining whether comments are allowed in input String. - */ - private final boolean stripComment; - private final boolean encodeQuotes; - /** - * flag determining whether to try to make tags when presented with "unbalanced" angle brackets (e.g. "<b text </b>" - * becomes "<b> text </b>"). If set to false, unbalanced angle brackets will be html escaped. - */ - private final boolean alwaysMakeTags; - - /** - * Default constructor. - */ - public HTMLFilter() - { - vAllowed = new HashMap<>(); - - final ArrayList<String> a_atts = new ArrayList<>(); - a_atts.add("href"); - a_atts.add("target"); - vAllowed.put("a", a_atts); - - final ArrayList<String> img_atts = new ArrayList<>(); - img_atts.add("src"); - img_atts.add("width"); - img_atts.add("height"); - img_atts.add("alt"); - vAllowed.put("img", img_atts); - - final ArrayList<String> no_atts = new ArrayList<>(); - vAllowed.put("b", no_atts); - vAllowed.put("strong", no_atts); - vAllowed.put("i", no_atts); - vAllowed.put("em", no_atts); - - vSelfClosingTags = new String[] { "img" }; - vNeedClosingTags = new String[] { "a", "b", "strong", "i", "em" }; - vDisallowed = new String[] {}; - vAllowedProtocols = new String[] { "http", "mailto", "https" }; // no ftp. - vProtocolAtts = new String[] { "src", "href" }; - vRemoveBlanks = new String[] { "a", "b", "strong", "i", "em" }; - vAllowedEntities = new String[] { "amp", "gt", "lt", "quot" }; - stripComment = true; - encodeQuotes = true; - alwaysMakeTags = false; - } - - /** - * Map-parameter configurable constructor. - * - * @param conf map containing configuration. keys match field names. - */ - @SuppressWarnings("unchecked") - public HTMLFilter(final Map<String, Object> conf) - { - - assert conf.containsKey("vAllowed") : "configuration requires vAllowed"; - assert conf.containsKey("vSelfClosingTags") : "configuration requires vSelfClosingTags"; - assert conf.containsKey("vNeedClosingTags") : "configuration requires vNeedClosingTags"; - assert conf.containsKey("vDisallowed") : "configuration requires vDisallowed"; - assert conf.containsKey("vAllowedProtocols") : "configuration requires vAllowedProtocols"; - assert conf.containsKey("vProtocolAtts") : "configuration requires vProtocolAtts"; - assert conf.containsKey("vRemoveBlanks") : "configuration requires vRemoveBlanks"; - assert conf.containsKey("vAllowedEntities") : "configuration requires vAllowedEntities"; - - vAllowed = Collections.unmodifiableMap((HashMap<String, List<String>>) conf.get("vAllowed")); - vSelfClosingTags = (String[]) conf.get("vSelfClosingTags"); - vNeedClosingTags = (String[]) conf.get("vNeedClosingTags"); - vDisallowed = (String[]) conf.get("vDisallowed"); - vAllowedProtocols = (String[]) conf.get("vAllowedProtocols"); - vProtocolAtts = (String[]) conf.get("vProtocolAtts"); - vRemoveBlanks = (String[]) conf.get("vRemoveBlanks"); - vAllowedEntities = (String[]) conf.get("vAllowedEntities"); - stripComment = conf.containsKey("stripComment") ? (Boolean) conf.get("stripComment") : true; - encodeQuotes = conf.containsKey("encodeQuotes") ? (Boolean) conf.get("encodeQuotes") : true; - alwaysMakeTags = conf.containsKey("alwaysMakeTags") ? (Boolean) conf.get("alwaysMakeTags") : true; - } - - private void reset() - { - vTagCounts.clear(); - } - - // --------------------------------------------------------------- - // my versions of some PHP library functions - public static String chr(final int decimal) - { - return String.valueOf((char) decimal); - } - - public static String htmlSpecialChars(final String s) - { - String result = s; - result = regexReplace(P_AMP, "&", result); - result = regexReplace(P_QUOTE, """, result); - result = regexReplace(P_LEFT_ARROW, "<", result); - result = regexReplace(P_RIGHT_ARROW, ">", result); - return result; - } - - // --------------------------------------------------------------- - - /** - * given a user submitted input String, filter out any invalid or restricted html. - * - * @param input text (i.e. submitted by a user) than may contain html - * @return "clean" version of input, with only valid, whitelisted html elements allowed - */ - public String filter(final String input) - { - reset(); - String s = input; - - s = escapeComments(s); - - s = balanceHTML(s); - - s = checkTags(s); - - s = processRemoveBlanks(s); - - // s = validateEntities(s); - - return s; - } - - public boolean isAlwaysMakeTags() - { - return alwaysMakeTags; - } - - public boolean isStripComments() - { - return stripComment; - } - - private String escapeComments(final String s) - { - final Matcher m = P_COMMENTS.matcher(s); - final StringBuffer buf = new StringBuffer(); - if (m.find()) - { - final String match = m.group(1); // (.*?) - m.appendReplacement(buf, Matcher.quoteReplacement("<!--" + htmlSpecialChars(match) + "-->")); - } - m.appendTail(buf); - - return buf.toString(); - } - - private String balanceHTML(String s) - { - if (alwaysMakeTags) - { - // - // try and form html - // - s = regexReplace(P_END_ARROW, "", s); - // 涓嶈拷鍔犵粨鏉熸爣绛� - s = regexReplace(P_BODY_TO_END, "<$1>", s); - s = regexReplace(P_XML_CONTENT, "$1<$2", s); - - } - else - { - // - // escape stray brackets - // - s = regexReplace(P_STRAY_LEFT_ARROW, "<$1", s); - s = regexReplace(P_STRAY_RIGHT_ARROW, "$1$2><", s); - - // - // the last regexp causes '<>' entities to appear - // (we need to do a lookahead assertion so that the last bracket can - // be used in the next pass of the regexp) - // - s = regexReplace(P_BOTH_ARROWS, "", s); - } - - return s; - } - - private String checkTags(String s) - { - Matcher m = P_TAGS.matcher(s); - - final StringBuffer buf = new StringBuffer(); - while (m.find()) - { - String replaceStr = m.group(1); - replaceStr = processTag(replaceStr); - m.appendReplacement(buf, Matcher.quoteReplacement(replaceStr)); - } - m.appendTail(buf); - - // these get tallied in processTag - // (remember to reset before subsequent calls to filter method) - final StringBuilder sBuilder = new StringBuilder(buf.toString()); - for (String key : vTagCounts.keySet()) - { - for (int ii = 0; ii < vTagCounts.get(key); ii++) - { - sBuilder.append("</").append(key).append(">"); - } - } - s = sBuilder.toString(); - - return s; - } - - private String processRemoveBlanks(final String s) - { - String result = s; - for (String tag : vRemoveBlanks) - { - if (!P_REMOVE_PAIR_BLANKS.containsKey(tag)) - { - P_REMOVE_PAIR_BLANKS.putIfAbsent(tag, Pattern.compile("<" + tag + "(\\s[^>]*)?></" + tag + ">")); - } - result = regexReplace(P_REMOVE_PAIR_BLANKS.get(tag), "", result); - if (!P_REMOVE_SELF_BLANKS.containsKey(tag)) - { - P_REMOVE_SELF_BLANKS.putIfAbsent(tag, Pattern.compile("<" + tag + "(\\s[^>]*)?/>")); - } - result = regexReplace(P_REMOVE_SELF_BLANKS.get(tag), "", result); - } - - return result; - } - - private static String regexReplace(final Pattern regex_pattern, final String replacement, final String s) - { - Matcher m = regex_pattern.matcher(s); - return m.replaceAll(replacement); - } - - private String processTag(final String s) - { - // ending tags - Matcher m = P_END_TAG.matcher(s); - if (m.find()) - { - final String name = m.group(1).toLowerCase(); - if (allowed(name)) - { - if (!inArray(name, vSelfClosingTags)) - { - if (vTagCounts.containsKey(name)) - { - vTagCounts.put(name, vTagCounts.get(name) - 1); - return "</" + name + ">"; - } - } - } - } - - // starting tags - m = P_START_TAG.matcher(s); - if (m.find()) - { - final String name = m.group(1).toLowerCase(); - final String body = m.group(2); - String ending = m.group(3); - - // debug( "in a starting tag, name='" + name + "'; body='" + body + "'; ending='" + ending + "'" ); - if (allowed(name)) - { - final StringBuilder params = new StringBuilder(); - - final Matcher m2 = P_QUOTED_ATTRIBUTES.matcher(body); - final Matcher m3 = P_UNQUOTED_ATTRIBUTES.matcher(body); - final List<String> paramNames = new ArrayList<>(); - final List<String> paramValues = new ArrayList<>(); - while (m2.find()) - { - paramNames.add(m2.group(1)); // ([a-z0-9]+) - paramValues.add(m2.group(3)); // (.*?) - } - while (m3.find()) - { - paramNames.add(m3.group(1)); // ([a-z0-9]+) - paramValues.add(m3.group(3)); // ([^\"\\s']+) - } - - String paramName, paramValue; - for (int ii = 0; ii < paramNames.size(); ii++) - { - paramName = paramNames.get(ii).toLowerCase(); - paramValue = paramValues.get(ii); - - // debug( "paramName='" + paramName + "'" ); - // debug( "paramValue='" + paramValue + "'" ); - // debug( "allowed? " + vAllowed.get( name ).contains( paramName ) ); - - if (allowedAttribute(name, paramName)) - { - if (inArray(paramName, vProtocolAtts)) - { - paramValue = processParamProtocol(paramValue); - } - params.append(' ').append(paramName).append("=\\\"").append(paramValue).append("\\\""); - } - } - - if (inArray(name, vSelfClosingTags)) - { - ending = " /"; - } - - if (inArray(name, vNeedClosingTags)) - { - ending = ""; - } - - if (ending == null || ending.length() < 1) - { - if (vTagCounts.containsKey(name)) - { - vTagCounts.put(name, vTagCounts.get(name) + 1); - } - else - { - vTagCounts.put(name, 1); - } - } - else - { - ending = " /"; - } - return "<" + name + params + ending + ">"; - } - else - { - return ""; - } - } - - // comments - m = P_COMMENT.matcher(s); - if (!stripComment && m.find()) - { - return "<" + m.group() + ">"; - } - - return ""; - } - - private String processParamProtocol(String s) - { - s = decodeEntities(s); - final Matcher m = P_PROTOCOL.matcher(s); - if (m.find()) - { - final String protocol = m.group(1); - if (!inArray(protocol, vAllowedProtocols)) - { - // bad protocol, turn into local anchor link instead - s = "#" + s.substring(protocol.length() + 1); - if (s.startsWith("#//")) - { - s = "#" + s.substring(3); - } - } - } - - return s; - } - - private String decodeEntities(String s) - { - StringBuffer buf = new StringBuffer(); - - Matcher m = P_ENTITY.matcher(s); - while (m.find()) - { - final String match = m.group(1); - final int decimal = Integer.decode(match).intValue(); - m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal))); - } - m.appendTail(buf); - s = buf.toString(); - - buf = new StringBuffer(); - m = P_ENTITY_UNICODE.matcher(s); - while (m.find()) - { - final String match = m.group(1); - final int decimal = Integer.valueOf(match, 16).intValue(); - m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal))); - } - m.appendTail(buf); - s = buf.toString(); - - buf = new StringBuffer(); - m = P_ENCODE.matcher(s); - while (m.find()) - { - final String match = m.group(1); - final int decimal = Integer.valueOf(match, 16).intValue(); - m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal))); - } - m.appendTail(buf); - s = buf.toString(); - - s = validateEntities(s); - return s; - } - - private String validateEntities(final String s) - { - StringBuffer buf = new StringBuffer(); - - // validate entities throughout the string - Matcher m = P_VALID_ENTITIES.matcher(s); - while (m.find()) - { - final String one = m.group(1); // ([^&;]*) - final String two = m.group(2); // (?=(;|&|$)) - m.appendReplacement(buf, Matcher.quoteReplacement(checkEntity(one, two))); - } - m.appendTail(buf); - - return encodeQuotes(buf.toString()); - } - - private String encodeQuotes(final String s) - { - if (encodeQuotes) - { - StringBuffer buf = new StringBuffer(); - Matcher m = P_VALID_QUOTES.matcher(s); - while (m.find()) - { - final String one = m.group(1); // (>|^) - final String two = m.group(2); // ([^<]+?) - final String three = m.group(3); // (<|$) - // 涓嶆浛鎹㈠弻寮曞彿涓�"锛岄槻姝son鏍煎紡鏃犳晥 regexReplace(P_QUOTE, """, two) - m.appendReplacement(buf, Matcher.quoteReplacement(one + two + three)); - } - m.appendTail(buf); - return buf.toString(); - } - else - { - return s; - } - } - - private String checkEntity(final String preamble, final String term) - { - - return ";".equals(term) && isValidEntity(preamble) ? '&' + preamble : "&" + preamble; - } - - private boolean isValidEntity(final String entity) - { - return inArray(entity, vAllowedEntities); - } - - private static boolean inArray(final String s, final String[] array) - { - for (String item : array) - { - if (item != null && item.equals(s)) - { - return true; - } - } - return false; - } - - private boolean allowed(final String name) - { - return (vAllowed.isEmpty() || vAllowed.containsKey(name)) && !inArray(name, vDisallowed); - } - - private boolean allowedAttribute(final String name, final String paramName) - { - return allowed(name) && (vAllowed.isEmpty() || vAllowed.get(name).contains(paramName)); - } -} \ No newline at end of file diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ip/IpUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ip/IpUtils.java deleted file mode 100644 index 966e306..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ip/IpUtils.java +++ /dev/null @@ -1,382 +0,0 @@ -package com.ruoyi.common.core.utils.ip; - -import java.net.InetAddress; -import java.net.UnknownHostException; -import javax.servlet.http.HttpServletRequest; -import com.ruoyi.common.core.utils.ServletUtils; -import com.ruoyi.common.core.utils.StringUtils; - -/** - * 鑾峰彇IP鏂规硶 - * - * @author admin - */ -public class IpUtils -{ - public final static String REGX_0_255 = "(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)"; - // 鍖归厤 ip - public final static String REGX_IP = "((" + REGX_0_255 + "\\.){3}" + REGX_0_255 + ")"; - public final static String REGX_IP_WILDCARD = "(((\\*\\.){3}\\*)|(" + REGX_0_255 + "(\\.\\*){3})|(" + REGX_0_255 + "\\." + REGX_0_255 + ")(\\.\\*){2}" + "|((" + REGX_0_255 + "\\.){3}\\*))"; - // 鍖归厤缃戞 - public final static String REGX_IP_SEG = "(" + REGX_IP + "\\-" + REGX_IP + ")"; - - /** - * 鑾峰彇瀹㈡埛绔疘P - * - * @return IP鍦板潃 - */ - public static String getIpAddr() - { - return getIpAddr(ServletUtils.getRequest()); - } - - /** - * 鑾峰彇瀹㈡埛绔疘P - * - * @param request 璇锋眰瀵硅薄 - * @return IP鍦板潃 - */ - public static String getIpAddr(HttpServletRequest request) - { - if (request == null) - { - return "unknown"; - } - String ip = request.getHeader("x-forwarded-for"); - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) - { - ip = request.getHeader("Proxy-Client-IP"); - } - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) - { - ip = request.getHeader("X-Forwarded-For"); - } - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) - { - ip = request.getHeader("WL-Proxy-Client-IP"); - } - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) - { - ip = request.getHeader("X-Real-IP"); - } - - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) - { - ip = request.getRemoteAddr(); - } - - return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : getMultistageReverseProxyIp(ip); - } - - /** - * 妫�鏌ユ槸鍚︿负鍐呴儴IP鍦板潃 - * - * @param ip IP鍦板潃 - * @return 缁撴灉 - */ - public static boolean internalIp(String ip) - { - byte[] addr = textToNumericFormatV4(ip); - return internalIp(addr) || "127.0.0.1".equals(ip); - } - - /** - * 妫�鏌ユ槸鍚︿负鍐呴儴IP鍦板潃 - * - * @param addr byte鍦板潃 - * @return 缁撴灉 - */ - private static boolean internalIp(byte[] addr) - { - if (StringUtils.isNull(addr) || addr.length < 2) - { - return true; - } - final byte b0 = addr[0]; - final byte b1 = addr[1]; - // 10.x.x.x/8 - final byte SECTION_1 = 0x0A; - // 172.16.x.x/12 - final byte SECTION_2 = (byte) 0xAC; - final byte SECTION_3 = (byte) 0x10; - final byte SECTION_4 = (byte) 0x1F; - // 192.168.x.x/16 - final byte SECTION_5 = (byte) 0xC0; - final byte SECTION_6 = (byte) 0xA8; - switch (b0) - { - case SECTION_1: - return true; - case SECTION_2: - if (b1 >= SECTION_3 && b1 <= SECTION_4) - { - return true; - } - case SECTION_5: - switch (b1) - { - case SECTION_6: - return true; - } - default: - return false; - } - } - - /** - * 灏咺Pv4鍦板潃杞崲鎴愬瓧鑺� - * - * @param text IPv4鍦板潃 - * @return byte 瀛楄妭 - */ - public static byte[] textToNumericFormatV4(String text) - { - if (text.length() == 0) - { - return null; - } - - byte[] bytes = new byte[4]; - String[] elements = text.split("\\.", -1); - try - { - long l; - int i; - switch (elements.length) - { - case 1: - l = Long.parseLong(elements[0]); - if ((l < 0L) || (l > 4294967295L)) - { - return null; - } - bytes[0] = (byte) (int) (l >> 24 & 0xFF); - bytes[1] = (byte) (int) ((l & 0xFFFFFF) >> 16 & 0xFF); - bytes[2] = (byte) (int) ((l & 0xFFFF) >> 8 & 0xFF); - bytes[3] = (byte) (int) (l & 0xFF); - break; - case 2: - l = Integer.parseInt(elements[0]); - if ((l < 0L) || (l > 255L)) - { - return null; - } - bytes[0] = (byte) (int) (l & 0xFF); - l = Integer.parseInt(elements[1]); - if ((l < 0L) || (l > 16777215L)) - { - return null; - } - bytes[1] = (byte) (int) (l >> 16 & 0xFF); - bytes[2] = (byte) (int) ((l & 0xFFFF) >> 8 & 0xFF); - bytes[3] = (byte) (int) (l & 0xFF); - break; - case 3: - for (i = 0; i < 2; ++i) - { - l = Integer.parseInt(elements[i]); - if ((l < 0L) || (l > 255L)) - { - return null; - } - bytes[i] = (byte) (int) (l & 0xFF); - } - l = Integer.parseInt(elements[2]); - if ((l < 0L) || (l > 65535L)) - { - return null; - } - bytes[2] = (byte) (int) (l >> 8 & 0xFF); - bytes[3] = (byte) (int) (l & 0xFF); - break; - case 4: - for (i = 0; i < 4; ++i) - { - l = Integer.parseInt(elements[i]); - if ((l < 0L) || (l > 255L)) - { - return null; - } - bytes[i] = (byte) (int) (l & 0xFF); - } - break; - default: - return null; - } - } - catch (NumberFormatException e) - { - return null; - } - return bytes; - } - - /** - * 鑾峰彇IP鍦板潃 - * - * @return 鏈湴IP鍦板潃 - */ - public static String getHostIp() - { - try - { - return InetAddress.getLocalHost().getHostAddress(); - } - catch (UnknownHostException e) - { - } - return "127.0.0.1"; - } - - /** - * 鑾峰彇涓绘満鍚� - * - * @return 鏈湴涓绘満鍚� - */ - public static String getHostName() - { - try - { - return InetAddress.getLocalHost().getHostName(); - } - catch (UnknownHostException e) - { - } - return "鏈煡"; - } - - /** - * 浠庡绾у弽鍚戜唬鐞嗕腑鑾峰緱绗竴涓潪unknown IP鍦板潃 - * - * @param ip 鑾峰緱鐨処P鍦板潃 - * @return 绗竴涓潪unknown IP鍦板潃 - */ - public static String getMultistageReverseProxyIp(String ip) - { - // 澶氱骇鍙嶅悜浠g悊妫�娴� - if (ip != null && ip.indexOf(",") > 0) - { - final String[] ips = ip.trim().split(","); - for (String subIp : ips) - { - if (false == isUnknown(subIp)) - { - ip = subIp; - break; - } - } - } - return StringUtils.substring(ip, 0, 255); - } - - /** - * 妫�娴嬬粰瀹氬瓧绗︿覆鏄惁涓烘湭鐭ワ紝澶氱敤浜庢娴婬TTP璇锋眰鐩稿叧 - * - * @param checkString 琚娴嬬殑瀛楃涓� - * @return 鏄惁鏈煡 - */ - public static boolean isUnknown(String checkString) - { - return StringUtils.isBlank(checkString) || "unknown".equalsIgnoreCase(checkString); - } - - /** - * 鏄惁涓篒P - */ - public static boolean isIP(String ip) - { - return StringUtils.isNotBlank(ip) && ip.matches(REGX_IP); - } - - /** - * 鏄惁涓篒P锛屾垨 *涓洪棿闅旂殑閫氶厤绗﹀湴鍧� - */ - public static boolean isIpWildCard(String ip) - { - return StringUtils.isNotBlank(ip) && ip.matches(REGX_IP_WILDCARD); - } - - /** - * 妫�娴嬪弬鏁版槸鍚﹀湪ip閫氶厤绗﹂噷 - */ - public static boolean ipIsInWildCardNoCheck(String ipWildCard, String ip) - { - String[] s1 = ipWildCard.split("\\."); - String[] s2 = ip.split("\\."); - boolean isMatchedSeg = true; - for (int i = 0; i < s1.length && !s1[i].equals("*"); i++) - { - if (!s1[i].equals(s2[i])) - { - isMatchedSeg = false; - break; - } - } - return isMatchedSeg; - } - - /** - * 鏄惁涓虹壒瀹氭牸寮忓:鈥�10.10.10.1-10.10.10.99鈥濈殑ip娈靛瓧绗︿覆 - */ - public static boolean isIPSegment(String ipSeg) - { - return StringUtils.isNotBlank(ipSeg) && ipSeg.matches(REGX_IP_SEG); - } - - /** - * 鍒ゆ柇ip鏄惁鍦ㄦ寚瀹氱綉娈典腑 - */ - public static boolean ipIsInNetNoCheck(String iparea, String ip) - { - int idx = iparea.indexOf('-'); - String[] sips = iparea.substring(0, idx).split("\\."); - String[] sipe = iparea.substring(idx + 1).split("\\."); - String[] sipt = ip.split("\\."); - long ips = 0L, ipe = 0L, ipt = 0L; - for (int i = 0; i < 4; ++i) - { - ips = ips << 8 | Integer.parseInt(sips[i]); - ipe = ipe << 8 | Integer.parseInt(sipe[i]); - ipt = ipt << 8 | Integer.parseInt(sipt[i]); - } - if (ips > ipe) - { - long t = ips; - ips = ipe; - ipe = t; - } - return ips <= ipt && ipt <= ipe; - } - - /** - * 鏍¢獙ip鏄惁绗﹀悎杩囨护涓茶鍒� - * - * @param filter 杩囨护IP鍒楄〃,鏀寔鍚庣紑'*'閫氶厤,鏀寔缃戞濡�:`10.10.10.1-10.10.10.99` - * @param ip 鏍¢獙IP鍦板潃 - * @return boolean 缁撴灉 - */ - public static boolean isMatchedIp(String filter, String ip) - { - if (StringUtils.isEmpty(filter) || StringUtils.isEmpty(ip)) - { - return false; - } - String[] ips = filter.split(";"); - for (String iStr : ips) - { - if (isIP(iStr) && iStr.equals(ip)) - { - return true; - } - else if (isIpWildCard(iStr) && ipIsInWildCardNoCheck(iStr, ip)) - { - return true; - } - else if (isIPSegment(iStr) && ipIsInNetNoCheck(iStr, ip)) - { - return true; - } - } - return false; - } -} \ No newline at end of file diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelHandlerAdapter.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelHandlerAdapter.java deleted file mode 100644 index 58573fe..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelHandlerAdapter.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.ruoyi.common.core.utils.poi; - -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.Workbook; - -/** - * Excel鏁版嵁鏍煎紡澶勭悊閫傞厤鍣� - * - * @author admin - */ -public interface ExcelHandlerAdapter -{ - /** - * 鏍煎紡鍖� - * - * @param value 鍗曞厓鏍兼暟鎹�� - * @param args excel娉ㄨВargs鍙傛暟缁� - * @param cell 鍗曞厓鏍煎璞� - * @param wb 宸ヤ綔绨垮璞� - * - * @return 澶勭悊鍚庣殑鍊� - */ - Object format(Object value, String[] args, Cell cell, Workbook wb); -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/IdUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/IdUtils.java deleted file mode 100644 index e8238a5..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/IdUtils.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.ruoyi.common.core.utils.uuid; - -/** - * ID鐢熸垚鍣ㄥ伐鍏风被 - * - * @author admin - */ -public class IdUtils -{ - /** - * 鑾峰彇闅忔満UUID - * - * @return 闅忔満UUID - */ - public static String randomUUID() - { - return UUID.randomUUID().toString(); - } - - /** - * 绠�鍖栫殑UUID锛屽幓鎺変簡妯嚎 - * - * @return 绠�鍖栫殑UUID锛屽幓鎺変簡妯嚎 - */ - public static String simpleUUID() - { - return UUID.randomUUID().toString(true); - } - - /** - * 鑾峰彇闅忔満UUID锛屼娇鐢ㄦ�ц兘鏇村ソ鐨凾hreadLocalRandom鐢熸垚UUID - * - * @return 闅忔満UUID - */ - public static String fastUUID() - { - return UUID.fastUUID().toString(); - } - - /** - * 绠�鍖栫殑UUID锛屽幓鎺変簡妯嚎锛屼娇鐢ㄦ�ц兘鏇村ソ鐨凾hreadLocalRandom鐢熸垚UUID - * - * @return 绠�鍖栫殑UUID锛屽幓鎺変簡妯嚎 - */ - public static String fastSimpleUUID() - { - return UUID.fastUUID().toString(true); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/Seq.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/Seq.java deleted file mode 100644 index 3cb9245..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/Seq.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.ruoyi.common.core.utils.uuid; - -import java.util.concurrent.atomic.AtomicInteger; -import com.ruoyi.common.core.utils.DateUtils; -import com.ruoyi.common.core.utils.StringUtils; - -/** - * @author admin 搴忓垪鐢熸垚绫� - */ -public class Seq -{ - // 閫氱敤搴忓垪绫诲瀷 - public static final String commSeqType = "COMMON"; - - // 涓婁紶搴忓垪绫诲瀷 - public static final String uploadSeqType = "UPLOAD"; - - // 閫氱敤鎺ュ彛搴忓垪鏁� - private static AtomicInteger commSeq = new AtomicInteger(1); - - // 涓婁紶鎺ュ彛搴忓垪鏁� - private static AtomicInteger uploadSeq = new AtomicInteger(1); - - // 鏈哄櫒鏍囪瘑 - private static final String machineCode = "A"; - - /** - * 鑾峰彇閫氱敤搴忓垪鍙� - * - * @return 搴忓垪鍊� - */ - public static String getId() - { - return getId(commSeqType); - } - - /** - * 榛樿16浣嶅簭鍒楀彿 yyMMddHHmmss + 涓�浣嶆満鍣ㄦ爣璇� + 3闀垮害寰幆閫掑瀛楃涓� - * - * @return 搴忓垪鍊� - */ - public static String getId(String type) - { - AtomicInteger atomicInt = commSeq; - if (uploadSeqType.equals(type)) - { - atomicInt = uploadSeq; - } - return getId(atomicInt, 3); - } - - /** - * 閫氱敤鎺ュ彛搴忓垪鍙� yyMMddHHmmss + 涓�浣嶆満鍣ㄦ爣璇� + length闀垮害寰幆閫掑瀛楃涓� - * - * @param atomicInt 搴忓垪鏁� - * @param length 鏁板�奸暱搴� - * @return 搴忓垪鍊� - */ - public static String getId(AtomicInteger atomicInt, int length) - { - String result = DateUtils.dateTimeNow(); - result += machineCode; - result += getSeq(atomicInt, length); - return result; - } - - /** - * 搴忓垪寰幆閫掑瀛楃涓瞇1, 10 鐨� (length)骞傛鏂�), 鐢�0宸﹁ˉ榻恖ength浣嶆暟 - * - * @return 搴忓垪鍊� - */ - private synchronized static String getSeq(AtomicInteger atomicInt, int length) - { - // 鍏堝彇鍊煎啀+1 - int value = atomicInt.getAndIncrement(); - - // 濡傛灉鏇存柊鍚庡��>=10 鐨� (length)骞傛鏂瑰垯閲嶇疆涓�1 - int maxSeq = (int) Math.pow(10, length); - if (atomicInt.get() >= maxSeq) - { - atomicInt.set(1); - } - // 杞瓧绗︿覆锛岀敤0宸﹁ˉ榻� - return StringUtils.padl(value, length); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/UUID.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/UUID.java deleted file mode 100644 index 1eb4f62..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/UUID.java +++ /dev/null @@ -1,484 +0,0 @@ -package com.ruoyi.common.core.utils.uuid; - -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.security.SecureRandom; -import java.util.Random; -import java.util.concurrent.ThreadLocalRandom; -import com.ruoyi.common.core.exception.UtilException; - -/** - * 鎻愪緵閫氱敤鍞竴璇嗗埆鐮侊紙universally unique identifier锛夛紙UUID锛夊疄鐜� - * - * @author admin - */ -public final class UUID implements java.io.Serializable, Comparable<UUID> -{ - private static final long serialVersionUID = -1185015143654744140L; - - /** - * SecureRandom 鐨勫崟渚� - * - */ - private static class Holder - { - static final SecureRandom numberGenerator = getSecureRandom(); - } - - /** 姝UID鐨勬渶楂�64鏈夋晥浣� */ - private final long mostSigBits; - - /** 姝UID鐨勬渶浣�64鏈夋晥浣� */ - private final long leastSigBits; - - /** - * 绉佹湁鏋勯�� - * - * @param data 鏁版嵁 - */ - private UUID(byte[] data) - { - long msb = 0; - long lsb = 0; - assert data.length == 16 : "data must be 16 bytes in length"; - for (int i = 0; i < 8; i++) - { - msb = (msb << 8) | (data[i] & 0xff); - } - for (int i = 8; i < 16; i++) - { - lsb = (lsb << 8) | (data[i] & 0xff); - } - this.mostSigBits = msb; - this.leastSigBits = lsb; - } - - /** - * 浣跨敤鎸囧畾鐨勬暟鎹瀯閫犳柊鐨� UUID銆� - * - * @param mostSigBits 鐢ㄤ簬 {@code UUID} 鐨勬渶楂樻湁鏁� 64 浣� - * @param leastSigBits 鐢ㄤ簬 {@code UUID} 鐨勬渶浣庢湁鏁� 64 浣� - */ - public UUID(long mostSigBits, long leastSigBits) - { - this.mostSigBits = mostSigBits; - this.leastSigBits = leastSigBits; - } - - /** - * 鑾峰彇绫诲瀷 4锛堜吉闅忔満鐢熸垚鐨勶級UUID 鐨勯潤鎬佸伐鍘傘�� - * - * @return 闅忔満鐢熸垚鐨� {@code UUID} - */ - public static UUID fastUUID() - { - return randomUUID(false); - } - - /** - * 鑾峰彇绫诲瀷 4锛堜吉闅忔満鐢熸垚鐨勶級UUID 鐨勯潤鎬佸伐鍘傘�� 浣跨敤鍔犲瘑鐨勫己浼殢鏈烘暟鐢熸垚鍣ㄧ敓鎴愯 UUID銆� - * - * @return 闅忔満鐢熸垚鐨� {@code UUID} - */ - public static UUID randomUUID() - { - return randomUUID(true); - } - - /** - * 鑾峰彇绫诲瀷 4锛堜吉闅忔満鐢熸垚鐨勶級UUID 鐨勯潤鎬佸伐鍘傘�� 浣跨敤鍔犲瘑鐨勫己浼殢鏈烘暟鐢熸垚鍣ㄧ敓鎴愯 UUID銆� - * - * @param isSecure 鏄惁浣跨敤{@link SecureRandom}濡傛灉鏄彲浠ヨ幏寰楁洿瀹夊叏鐨勯殢鏈虹爜锛屽惁鍒欏彲浠ュ緱鍒版洿濂界殑鎬ц兘 - * @return 闅忔満鐢熸垚鐨� {@code UUID} - */ - public static UUID randomUUID(boolean isSecure) - { - final Random ng = isSecure ? Holder.numberGenerator : getRandom(); - - byte[] randomBytes = new byte[16]; - ng.nextBytes(randomBytes); - randomBytes[6] &= 0x0f; /* clear version */ - randomBytes[6] |= 0x40; /* set to version 4 */ - randomBytes[8] &= 0x3f; /* clear variant */ - randomBytes[8] |= 0x80; /* set to IETF variant */ - return new UUID(randomBytes); - } - - /** - * 鏍规嵁鎸囧畾鐨勫瓧鑺傛暟缁勮幏鍙栫被鍨� 3锛堝熀浜庡悕绉扮殑锛塙UID 鐨勯潤鎬佸伐鍘傘�� - * - * @param name 鐢ㄤ簬鏋勯�� UUID 鐨勫瓧鑺傛暟缁勩�� - * - * @return 鏍规嵁鎸囧畾鏁扮粍鐢熸垚鐨� {@code UUID} - */ - public static UUID nameUUIDFromBytes(byte[] name) - { - MessageDigest md; - try - { - md = MessageDigest.getInstance("MD5"); - } - catch (NoSuchAlgorithmException nsae) - { - throw new InternalError("MD5 not supported"); - } - byte[] md5Bytes = md.digest(name); - md5Bytes[6] &= 0x0f; /* clear version */ - md5Bytes[6] |= 0x30; /* set to version 3 */ - md5Bytes[8] &= 0x3f; /* clear variant */ - md5Bytes[8] |= 0x80; /* set to IETF variant */ - return new UUID(md5Bytes); - } - - /** - * 鏍规嵁 {@link #toString()} 鏂规硶涓弿杩扮殑瀛楃涓叉爣鍑嗚〃绀哄舰寮忓垱寤簕@code UUID}銆� - * - * @param name 鎸囧畾 {@code UUID} 瀛楃涓� - * @return 鍏锋湁鎸囧畾鍊肩殑 {@code UUID} - * @throws IllegalArgumentException 濡傛灉 name 涓� {@link #toString} 涓弿杩扮殑瀛楃涓茶〃绀哄舰寮忎笉绗︽姏鍑烘寮傚父 - * - */ - public static UUID fromString(String name) - { - String[] components = name.split("-"); - if (components.length != 5) - { - throw new IllegalArgumentException("Invalid UUID string: " + name); - } - for (int i = 0; i < 5; i++) - { - components[i] = "0x" + components[i]; - } - - long mostSigBits = Long.decode(components[0]).longValue(); - mostSigBits <<= 16; - mostSigBits |= Long.decode(components[1]).longValue(); - mostSigBits <<= 16; - mostSigBits |= Long.decode(components[2]).longValue(); - - long leastSigBits = Long.decode(components[3]).longValue(); - leastSigBits <<= 48; - leastSigBits |= Long.decode(components[4]).longValue(); - - return new UUID(mostSigBits, leastSigBits); - } - - /** - * 杩斿洖姝� UUID 鐨� 128 浣嶅�间腑鐨勬渶浣庢湁鏁� 64 浣嶃�� - * - * @return 姝� UUID 鐨� 128 浣嶅�间腑鐨勬渶浣庢湁鏁� 64 浣嶃�� - */ - public long getLeastSignificantBits() - { - return leastSigBits; - } - - /** - * 杩斿洖姝� UUID 鐨� 128 浣嶅�间腑鐨勬渶楂樻湁鏁� 64 浣嶃�� - * - * @return 姝� UUID 鐨� 128 浣嶅�间腑鏈�楂樻湁鏁� 64 浣嶃�� - */ - public long getMostSignificantBits() - { - return mostSigBits; - } - - /** - * 涓庢 {@code UUID} 鐩稿叧鑱旂殑鐗堟湰鍙�. 鐗堟湰鍙锋弿杩版 {@code UUID} 鏄浣曠敓鎴愮殑銆� - * <p> - * 鐗堟湰鍙峰叿鏈変互涓嬪惈鎰�: - * <ul> - * <li>1 鍩轰簬鏃堕棿鐨� UUID - * <li>2 DCE 瀹夊叏 UUID - * <li>3 鍩轰簬鍚嶇О鐨� UUID - * <li>4 闅忔満鐢熸垚鐨� UUID - * </ul> - * - * @return 姝� {@code UUID} 鐨勭増鏈彿 - */ - public int version() - { - // Version is bits masked by 0x000000000000F000 in MS long - return (int) ((mostSigBits >> 12) & 0x0f); - } - - /** - * 涓庢 {@code UUID} 鐩稿叧鑱旂殑鍙樹綋鍙枫�傚彉浣撳彿鎻忚堪 {@code UUID} 鐨勫竷灞�銆� - * <p> - * 鍙樹綋鍙峰叿鏈変互涓嬪惈鎰忥細 - * <ul> - * <li>0 涓� NCS 鍚戝悗鍏煎淇濈暀 - * <li>2 <a href="http://www.ietf.org/rfc/rfc4122.txt">IETF RFC 4122</a>(Leach-Salz), 鐢ㄤ簬姝ょ被 - * <li>6 淇濈暀锛屽井杞悜鍚庡吋瀹� - * <li>7 淇濈暀渚涗互鍚庡畾涔変娇鐢� - * </ul> - * - * @return 姝� {@code UUID} 鐩稿叧鑱旂殑鍙樹綋鍙� - */ - public int variant() - { - // This field is composed of a varying number of bits. - // 0 - - Reserved for NCS backward compatibility - // 1 0 - The IETF aka Leach-Salz variant (used by this class) - // 1 1 0 Reserved, Microsoft backward compatibility - // 1 1 1 Reserved for future definition. - return (int) ((leastSigBits >>> (64 - (leastSigBits >>> 62))) & (leastSigBits >> 63)); - } - - /** - * 涓庢 UUID 鐩稿叧鑱旂殑鏃堕棿鎴冲�笺�� - * - * <p> - * 60 浣嶇殑鏃堕棿鎴冲�兼牴鎹 {@code UUID} 鐨� time_low銆乼ime_mid 鍜� time_hi 瀛楁鏋勯�犮��<br> - * 鎵�寰楀埌鐨勬椂闂存埑浠� 100 姣井绉掍负鍗曚綅锛屼粠 UTC锛堥�氱敤鍗忚皟鏃堕棿锛� 1582 骞� 10 鏈� 15 鏃ラ浂鏃跺紑濮嬨�� - * - * <p> - * 鏃堕棿鎴冲�间粎鍦ㄥ湪鍩轰簬鏃堕棿鐨� UUID锛堝叾 version 绫诲瀷涓� 1锛変腑鎵嶆湁鎰忎箟銆�<br> - * 濡傛灉姝� {@code UUID} 涓嶆槸鍩轰簬鏃堕棿鐨� UUID锛屽垯姝ゆ柟娉曟姏鍑� UnsupportedOperationException銆� - * - * @throws UnsupportedOperationException 濡傛灉姝� {@code UUID} 涓嶆槸 version 涓� 1 鐨� UUID銆� - */ - public long timestamp() throws UnsupportedOperationException - { - checkTimeBase(); - return (mostSigBits & 0x0FFFL) << 48// - | ((mostSigBits >> 16) & 0x0FFFFL) << 32// - | mostSigBits >>> 32; - } - - /** - * 涓庢 UUID 鐩稿叧鑱旂殑鏃堕挓搴忓垪鍊笺�� - * - * <p> - * 14 浣嶇殑鏃堕挓搴忓垪鍊兼牴鎹 UUID 鐨� clock_seq 瀛楁鏋勯�犮�俢lock_seq 瀛楁鐢ㄤ簬淇濊瘉鍦ㄥ熀浜庢椂闂寸殑 UUID 涓殑鏃堕棿鍞竴鎬с�� - * <p> - * {@code clockSequence} 鍊间粎鍦ㄥ熀浜庢椂闂寸殑 UUID锛堝叾 version 绫诲瀷涓� 1锛変腑鎵嶆湁鎰忎箟銆� 濡傛灉姝� UUID 涓嶆槸鍩轰簬鏃堕棿鐨� UUID锛屽垯姝ゆ柟娉曟姏鍑� - * UnsupportedOperationException銆� - * - * @return 姝� {@code UUID} 鐨勬椂閽熷簭鍒� - * - * @throws UnsupportedOperationException 濡傛灉姝� UUID 鐨� version 涓嶄负 1 - */ - public int clockSequence() throws UnsupportedOperationException - { - checkTimeBase(); - return (int) ((leastSigBits & 0x3FFF000000000000L) >>> 48); - } - - /** - * 涓庢 UUID 鐩稿叧鐨勮妭鐐瑰�笺�� - * - * <p> - * 48 浣嶇殑鑺傜偣鍊兼牴鎹 UUID 鐨� node 瀛楁鏋勯�犮�傛瀛楁鏃ㄥ湪鐢ㄤ簬淇濆瓨鏈哄櫒鐨� IEEE 802 鍦板潃锛岃鍦板潃鐢ㄤ簬鐢熸垚姝� UUID 浠ヤ繚璇佺┖闂村敮涓�鎬с�� - * <p> - * 鑺傜偣鍊间粎鍦ㄥ熀浜庢椂闂寸殑 UUID锛堝叾 version 绫诲瀷涓� 1锛変腑鎵嶆湁鎰忎箟銆�<br> - * 濡傛灉姝� UUID 涓嶆槸鍩轰簬鏃堕棿鐨� UUID锛屽垯姝ゆ柟娉曟姏鍑� UnsupportedOperationException銆� - * - * @return 姝� {@code UUID} 鐨勮妭鐐瑰�� - * - * @throws UnsupportedOperationException 濡傛灉姝� UUID 鐨� version 涓嶄负 1 - */ - public long node() throws UnsupportedOperationException - { - checkTimeBase(); - return leastSigBits & 0x0000FFFFFFFFFFFFL; - } - - /** - * 杩斿洖姝@code UUID} 鐨勫瓧绗︿覆琛ㄧ幇褰㈠紡銆� - * - * <p> - * UUID 鐨勫瓧绗︿覆琛ㄧず褰㈠紡鐢辨 BNF 鎻忚堪锛� - * - * <pre> - * {@code - * UUID = <time_low>-<time_mid>-<time_high_and_version>-<variant_and_sequence>-<node> - * time_low = 4*<hexOctet> - * time_mid = 2*<hexOctet> - * time_high_and_version = 2*<hexOctet> - * variant_and_sequence = 2*<hexOctet> - * node = 6*<hexOctet> - * hexOctet = <hexDigit><hexDigit> - * hexDigit = [0-9a-fA-F] - * } - * </pre> - * - * </blockquote> - * - * @return 姝@code UUID} 鐨勫瓧绗︿覆琛ㄧ幇褰㈠紡 - * @see #toString(boolean) - */ - @Override - public String toString() - { - return toString(false); - } - - /** - * 杩斿洖姝@code UUID} 鐨勫瓧绗︿覆琛ㄧ幇褰㈠紡銆� - * - * <p> - * UUID 鐨勫瓧绗︿覆琛ㄧず褰㈠紡鐢辨 BNF 鎻忚堪锛� - * - * <pre> - * {@code - * UUID = <time_low>-<time_mid>-<time_high_and_version>-<variant_and_sequence>-<node> - * time_low = 4*<hexOctet> - * time_mid = 2*<hexOctet> - * time_high_and_version = 2*<hexOctet> - * variant_and_sequence = 2*<hexOctet> - * node = 6*<hexOctet> - * hexOctet = <hexDigit><hexDigit> - * hexDigit = [0-9a-fA-F] - * } - * </pre> - * - * </blockquote> - * - * @param isSimple 鏄惁绠�鍗曟ā寮忥紝绠�鍗曟ā寮忎负涓嶅甫'-'鐨刄UID瀛楃涓� - * @return 姝@code UUID} 鐨勫瓧绗︿覆琛ㄧ幇褰㈠紡 - */ - public String toString(boolean isSimple) - { - final StringBuilder builder = new StringBuilder(isSimple ? 32 : 36); - // time_low - builder.append(digits(mostSigBits >> 32, 8)); - if (false == isSimple) - { - builder.append('-'); - } - // time_mid - builder.append(digits(mostSigBits >> 16, 4)); - if (false == isSimple) - { - builder.append('-'); - } - // time_high_and_version - builder.append(digits(mostSigBits, 4)); - if (false == isSimple) - { - builder.append('-'); - } - // variant_and_sequence - builder.append(digits(leastSigBits >> 48, 4)); - if (false == isSimple) - { - builder.append('-'); - } - // node - builder.append(digits(leastSigBits, 12)); - - return builder.toString(); - } - - /** - * 杩斿洖姝� UUID 鐨勫搱甯岀爜銆� - * - * @return UUID 鐨勫搱甯岀爜鍊笺�� - */ - @Override - public int hashCode() - { - long hilo = mostSigBits ^ leastSigBits; - return ((int) (hilo >> 32)) ^ (int) hilo; - } - - /** - * 灏嗘瀵硅薄涓庢寚瀹氬璞℃瘮杈冦�� - * <p> - * 褰撲笖浠呭綋鍙傛暟涓嶄负 {@code null}銆佽�屾槸涓�涓� UUID 瀵硅薄銆佸叿鏈変笌姝� UUID 鐩稿悓鐨� varriant銆佸寘鍚浉鍚岀殑鍊硷紙姣忎竴浣嶅潎鐩稿悓锛夋椂锛岀粨鏋滄墠涓� {@code true}銆� - * - * @param obj 瑕佷笌涔嬫瘮杈冪殑瀵硅薄 - * - * @return 濡傛灉瀵硅薄鐩稿悓锛屽垯杩斿洖 {@code true}锛涘惁鍒欒繑鍥� {@code false} - */ - @Override - public boolean equals(Object obj) - { - if ((null == obj) || (obj.getClass() != UUID.class)) - { - return false; - } - UUID id = (UUID) obj; - return (mostSigBits == id.mostSigBits && leastSigBits == id.leastSigBits); - } - - // Comparison Operations - - /** - * 灏嗘 UUID 涓庢寚瀹氱殑 UUID 姣旇緝銆� - * - * <p> - * 濡傛灉涓や釜 UUID 涓嶅悓锛屼笖绗竴涓� UUID 鐨勬渶楂樻湁鏁堝瓧娈靛ぇ浜庣浜屼釜 UUID 鐨勫搴斿瓧娈碉紝鍒欑涓�涓� UUID 澶т簬绗簩涓� UUID銆� - * - * @param val 涓庢 UUID 姣旇緝鐨� UUID - * - * @return 鍦ㄦ UUID 灏忎簬銆佺瓑浜庢垨澶т簬 val 鏃讹紝鍒嗗埆杩斿洖 -1銆�0 鎴� 1銆� - * - */ - @Override - public int compareTo(UUID val) - { - // The ordering is intentionally set up so that the UUIDs - // can simply be numerically compared as two numbers - return (this.mostSigBits < val.mostSigBits ? -1 : // - (this.mostSigBits > val.mostSigBits ? 1 : // - (this.leastSigBits < val.leastSigBits ? -1 : // - (this.leastSigBits > val.leastSigBits ? 1 : // - 0)))); - } - - // ------------------------------------------------------------------------------------------------------------------- - // Private method start - /** - * 杩斿洖鎸囧畾鏁板瓧瀵瑰簲鐨刪ex鍊� - * - * @param val 鍊� - * @param digits 浣� - * @return 鍊� - */ - private static String digits(long val, int digits) - { - long hi = 1L << (digits * 4); - return Long.toHexString(hi | (val & (hi - 1))).substring(1); - } - - /** - * 妫�鏌ユ槸鍚︿负time-based鐗堟湰UUID - */ - private void checkTimeBase() - { - if (version() != 1) - { - throw new UnsupportedOperationException("Not a time-based UUID"); - } - } - - /** - * 鑾峰彇{@link SecureRandom}锛岀被鎻愪緵鍔犲瘑鐨勫己闅忔満鏁扮敓鎴愬櫒 (RNG) - * - * @return {@link SecureRandom} - */ - public static SecureRandom getSecureRandom() - { - try - { - return SecureRandom.getInstance("SHA1PRNG"); - } - catch (NoSuchAlgorithmException e) - { - throw new UtilException(e); - } - } - - /** - * 鑾峰彇闅忔満鏁扮敓鎴愬櫒瀵硅薄<br> - * ThreadLocalRandom鏄疛DK 7涔嬪悗鎻愪緵骞跺彂浜х敓闅忔満鏁帮紝鑳藉瑙e喅澶氫釜绾跨▼鍙戠敓鐨勭珵浜変簤澶恒�� - * - * @return {@link ThreadLocalRandom} - */ - public static ThreadLocalRandom getRandom() - { - return ThreadLocalRandom.current(); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/controller/BaseController.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/controller/BaseController.java deleted file mode 100644 index 04dedb0..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/controller/BaseController.java +++ /dev/null @@ -1,142 +0,0 @@ -package com.ruoyi.common.core.web.controller; - -import java.beans.PropertyEditorSupport; -import java.util.Date; -import java.util.List; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.web.bind.WebDataBinder; -import org.springframework.web.bind.annotation.InitBinder; -import com.github.pagehelper.PageInfo; -import com.ruoyi.common.core.constant.HttpStatus; -import com.ruoyi.common.core.utils.DateUtils; -import com.ruoyi.common.core.utils.PageUtils; -import com.ruoyi.common.core.web.domain.AjaxResult; -import com.ruoyi.common.core.web.page.TableDataInfo; - -/** - * web灞傞�氱敤鏁版嵁澶勭悊 - * - * @author admin - */ -public class BaseController -{ - protected final Logger logger = LoggerFactory.getLogger(this.getClass()); - - /** - * 灏嗗墠鍙颁紶閫掕繃鏉ョ殑鏃ユ湡鏍煎紡鐨勫瓧绗︿覆锛岃嚜鍔ㄨ浆鍖栦负Date绫诲瀷 - */ - @InitBinder - public void initBinder(WebDataBinder binder) - { - // Date 绫诲瀷杞崲 - binder.registerCustomEditor(Date.class, new PropertyEditorSupport() - { - @Override - public void setAsText(String text) - { - setValue(DateUtils.parseDate(text)); - } - }); - } - - /** - * 璁剧疆璇锋眰鍒嗛〉鏁版嵁 - */ - protected void startPage() - { - PageUtils.startPage(); - } - - /** - * 娓呯悊鍒嗛〉鐨勭嚎绋嬪彉閲� - */ - protected void clearPage() - { - PageUtils.clearPage(); - } - - /** - * 鍝嶅簲璇锋眰鍒嗛〉鏁版嵁 - */ - @SuppressWarnings({ "rawtypes", "unchecked" }) - protected TableDataInfo getDataTable(List<?> list) - { - TableDataInfo rspData = new TableDataInfo(); - rspData.setCode(HttpStatus.SUCCESS); - rspData.setRows(list); - rspData.setMsg("鏌ヨ鎴愬姛"); - rspData.setTotal(new PageInfo(list).getTotal()); - return rspData; - } - - /** - * 杩斿洖鎴愬姛 - */ - public AjaxResult success() - { - return AjaxResult.success(); - } - - /** - * 杩斿洖鎴愬姛娑堟伅 - */ - public AjaxResult success(String message) - { - return AjaxResult.success(message); - } - - /** - * 杩斿洖鎴愬姛娑堟伅 - */ - public AjaxResult success(Object data) - { - return AjaxResult.success(data); - } - - /** - * 杩斿洖澶辫触娑堟伅 - */ - public AjaxResult error() - { - return AjaxResult.error(); - } - - /** - * 杩斿洖澶辫触娑堟伅 - */ - public AjaxResult error(String message) - { - return AjaxResult.error(message); - } - - /** - * 杩斿洖璀﹀憡娑堟伅 - */ - public AjaxResult warn(String message) - { - return AjaxResult.warn(message); - } - - /** - * 鍝嶅簲杩斿洖缁撴灉 - * - * @param rows 褰卞搷琛屾暟 - * @return 鎿嶄綔缁撴灉 - */ - protected AjaxResult toAjax(int rows) - { - return rows > 0 ? AjaxResult.success() : AjaxResult.error(); - } - - /** - * 鍝嶅簲杩斿洖缁撴灉 - * - * @param result 缁撴灉 - * @return 鎿嶄綔缁撴灉 - */ - protected AjaxResult toAjax(boolean result) - { - return result ? success() : error(); - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/AjaxResult.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/AjaxResult.java deleted file mode 100644 index f2a11ca..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/AjaxResult.java +++ /dev/null @@ -1,216 +0,0 @@ -package com.ruoyi.common.core.web.domain; - -import java.util.HashMap; -import java.util.Objects; -import com.ruoyi.common.core.constant.HttpStatus; -import com.ruoyi.common.core.utils.StringUtils; - -/** - * 鎿嶄綔娑堟伅鎻愰啋 - * - * @author admin - */ -public class AjaxResult extends HashMap<String, Object> -{ - private static final long serialVersionUID = 1L; - - /** 鐘舵�佺爜 */ - public static final String CODE_TAG = "code"; - - /** 杩斿洖鍐呭 */ - public static final String MSG_TAG = "msg"; - - /** 鏁版嵁瀵硅薄 */ - public static final String DATA_TAG = "data"; - - /** - * 鍒濆鍖栦竴涓柊鍒涘缓鐨� AjaxResult 瀵硅薄锛屼娇鍏惰〃绀轰竴涓┖娑堟伅銆� - */ - public AjaxResult() - { - } - - /** - * 鍒濆鍖栦竴涓柊鍒涘缓鐨� AjaxResult 瀵硅薄 - * - * @param code 鐘舵�佺爜 - * @param msg 杩斿洖鍐呭 - */ - public AjaxResult(int code, String msg) - { - super.put(CODE_TAG, code); - super.put(MSG_TAG, msg); - } - - /** - * 鍒濆鍖栦竴涓柊鍒涘缓鐨� AjaxResult 瀵硅薄 - * - * @param code 鐘舵�佺爜 - * @param msg 杩斿洖鍐呭 - * @param data 鏁版嵁瀵硅薄 - */ - public AjaxResult(int code, String msg, Object data) - { - super.put(CODE_TAG, code); - super.put(MSG_TAG, msg); - if (StringUtils.isNotNull(data)) - { - super.put(DATA_TAG, data); - } - } - - /** - * 杩斿洖鎴愬姛娑堟伅 - * - * @return 鎴愬姛娑堟伅 - */ - public static AjaxResult success() - { - return AjaxResult.success("鎿嶄綔鎴愬姛"); - } - - /** - * 杩斿洖鎴愬姛鏁版嵁 - * - * @return 鎴愬姛娑堟伅 - */ - public static AjaxResult success(Object 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, Object data) - { - return new AjaxResult(HttpStatus.SUCCESS, msg, data); - } - - /** - * 杩斿洖璀﹀憡娑堟伅 - * - * @param msg 杩斿洖鍐呭 - * @return 璀﹀憡娑堟伅 - */ - public static AjaxResult warn(String msg) - { - return AjaxResult.warn(msg, null); - } - - /** - * 杩斿洖璀﹀憡娑堟伅 - * - * @param msg 杩斿洖鍐呭 - * @param data 鏁版嵁瀵硅薄 - * @return 璀﹀憡娑堟伅 - */ - public static AjaxResult warn(String msg, Object data) - { - return new AjaxResult(HttpStatus.WARN, 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, Object data) - { - return new AjaxResult(HttpStatus.ERROR, msg, data); - } - - /** - * 杩斿洖閿欒娑堟伅 - * - * @param code 鐘舵�佺爜 - * @param msg 杩斿洖鍐呭 - * @return 閿欒娑堟伅 - */ - public static AjaxResult error(int code, String msg) - { - return new AjaxResult(code, msg, null); - } - - /** - * 鏄惁涓烘垚鍔熸秷鎭� - * - * @return 缁撴灉 - */ - public boolean isSuccess() - { - return Objects.equals(HttpStatus.SUCCESS, this.get(CODE_TAG)); - } - - /** - * 鏄惁涓鸿鍛婃秷鎭� - * - * @return 缁撴灉 - */ - public boolean isWarn() - { - return Objects.equals(HttpStatus.WARN, this.get(CODE_TAG)); - } - - /** - * 鏄惁涓洪敊璇秷鎭� - * - * @return 缁撴灉 - */ - public boolean isError() - { - return Objects.equals(HttpStatus.ERROR, this.get(CODE_TAG)); - } - - /** - * 鏂逛究閾惧紡璋冪敤 - * - * @param key - * @param value - * @return - */ - @Override - public AjaxResult put(String key, Object value) - { - super.put(key, value); - return this; - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BaseEntity.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BaseEntity.java deleted file mode 100644 index b6b74a3..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BaseEntity.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.ruoyi.common.core.web.domain; - -import java.io.Serializable; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; - -/** - * Entity鍩虹被 - * - * @author admin - */ -public class BaseEntity implements Serializable -{ - private static final long serialVersionUID = 1L; - - /** 鎼滅储鍊� */ - @JsonIgnore - private String searchValue; - - /** 鍒涘缓鑰� */ - private String createBy; - - /** 鍒涘缓鏃堕棿 */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date createTime; - - /** 鏇存柊鑰� */ - private String updateBy; - - /** 鏇存柊鏃堕棿 */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date updateTime; - - /** 澶囨敞 */ - private String remark; - - /** 璇锋眰鍙傛暟 */ - @JsonInclude(JsonInclude.Include.NON_EMPTY) - private Map<String, Object> params; - - public String getSearchValue() - { - return searchValue; - } - - public void setSearchValue(String searchValue) - { - this.searchValue = searchValue; - } - - public String getCreateBy() - { - return createBy; - } - - public void setCreateBy(String createBy) - { - this.createBy = createBy; - } - - public Date getCreateTime() - { - return createTime; - } - - public void setCreateTime(Date createTime) - { - this.createTime = createTime; - } - - public String getUpdateBy() - { - return updateBy; - } - - public void setUpdateBy(String updateBy) - { - this.updateBy = updateBy; - } - - public Date getUpdateTime() - { - return updateTime; - } - - public void setUpdateTime(Date updateTime) - { - this.updateTime = updateTime; - } - - public String getRemark() - { - return remark; - } - - public void setRemark(String remark) - { - this.remark = remark; - } - - public Map<String, Object> getParams() - { - if (params == null) - { - params = new HashMap<>(); - } - return params; - } - - public void setParams(Map<String, Object> params) - { - this.params = params; - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/TreeEntity.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/TreeEntity.java deleted file mode 100644 index 6539e9d..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/TreeEntity.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.ruoyi.common.core.web.domain; - -import java.util.ArrayList; -import java.util.List; - -/** - * Tree鍩虹被 - * - * @author admin - */ -public class TreeEntity extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 鐖惰彍鍗曞悕绉� */ - private String parentName; - - /** 鐖惰彍鍗旾D */ - private Long parentId; - - /** 鏄剧ず椤哄簭 */ - private Integer orderNum; - - /** 绁栫骇鍒楄〃 */ - private String ancestors; - - /** 瀛愰儴闂� */ - private List<?> children = new ArrayList<>(); - - public String getParentName() - { - return parentName; - } - - public void setParentName(String parentName) - { - this.parentName = parentName; - } - - public Long getParentId() - { - return parentId; - } - - public void setParentId(Long parentId) - { - this.parentId = parentId; - } - - public Integer getOrderNum() - { - return orderNum; - } - - public void setOrderNum(Integer orderNum) - { - this.orderNum = orderNum; - } - - public String getAncestors() - { - return ancestors; - } - - public void setAncestors(String ancestors) - { - this.ancestors = ancestors; - } - - public List<?> getChildren() - { - return children; - } - - public void setChildren(List<?> children) - { - this.children = children; - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/PageDomain.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/PageDomain.java deleted file mode 100644 index d6074f5..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/PageDomain.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.ruoyi.common.core.web.page; - -import com.ruoyi.common.core.utils.StringUtils; - -/** - * 鍒嗛〉鏁版嵁 - * - * @author admin - */ -public class PageDomain -{ - /** 褰撳墠璁板綍璧峰绱㈠紩 */ - private Integer pageNum; - - /** 姣忛〉鏄剧ず璁板綍鏁� */ - private Integer pageSize; - - /** 鎺掑簭鍒� */ - private String orderByColumn; - - /** 鎺掑簭鐨勬柟鍚慸esc鎴栬�卆sc */ - private String isAsc = "asc"; - - /** 鍒嗛〉鍙傛暟鍚堢悊鍖� */ - private Boolean reasonable = true; - - public String getOrderBy() - { - if (StringUtils.isEmpty(orderByColumn)) - { - return ""; - } - return StringUtils.toUnderScoreCase(orderByColumn) + " " + isAsc; - } - - public Integer getPageNum() - { - return pageNum; - } - - public void setPageNum(Integer pageNum) - { - this.pageNum = pageNum; - } - - public Integer getPageSize() - { - return pageSize; - } - - public void setPageSize(Integer pageSize) - { - this.pageSize = pageSize; - } - - public String getOrderByColumn() - { - return orderByColumn; - } - - public void setOrderByColumn(String orderByColumn) - { - this.orderByColumn = orderByColumn; - } - - public String getIsAsc() - { - return isAsc; - } - - public void setIsAsc(String isAsc) - { - if (StringUtils.isNotEmpty(isAsc)) - { - // 鍏煎鍓嶇鎺掑簭绫诲瀷 - if ("ascending".equals(isAsc)) - { - isAsc = "asc"; - } - else if ("descending".equals(isAsc)) - { - isAsc = "desc"; - } - this.isAsc = isAsc; - } - } - - public Boolean getReasonable() - { - if (StringUtils.isNull(reasonable)) - { - return Boolean.TRUE; - } - return reasonable; - } - - public void setReasonable(Boolean reasonable) - { - this.reasonable = reasonable; - } -} diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java deleted file mode 100644 index 4985103..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.ruoyi.common.core.web.page; - -import java.io.Serializable; -import java.util.List; - -/** - * 琛ㄦ牸鍒嗛〉鏁版嵁瀵硅薄 - * - * @author admin - */ -public class TableDataInfo implements Serializable -{ - private static final long serialVersionUID = 1L; - - /** 鎬昏褰曟暟 */ - private long total; - - /** 鍒楄〃鏁版嵁 */ - private List<?> rows; - - /** 娑堟伅鐘舵�佺爜 */ - private int code; - - /** 娑堟伅鍐呭 */ - private String msg; - - /** - * 琛ㄦ牸鏁版嵁瀵硅薄 - */ - public TableDataInfo() - { - } - - /** - * 鍒嗛〉 - * - * @param list 鍒楄〃鏁版嵁 - * @param total 鎬昏褰曟暟 - */ - public TableDataInfo(List<?> list, int total) - { - this.rows = list; - this.total = total; - } - - public long getTotal() - { - return total; - } - - public void setTotal(long total) - { - this.total = total; - } - - public List<?> getRows() - { - return rows; - } - - public void setRows(List<?> rows) - { - this.rows = rows; - } - - public int getCode() - { - return code; - } - - public void setCode(int code) - { - this.code = code; - } - - public String getMsg() - { - return msg; - } - - public void setMsg(String msg) - { - this.msg = msg; - } -} \ No newline at end of file diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableSupport.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableSupport.java deleted file mode 100644 index 961a150..0000000 --- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableSupport.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.ruoyi.common.core.web.page; - -import com.ruoyi.common.core.text.Convert; -import com.ruoyi.common.core.utils.ServletUtils; - -/** - * 琛ㄦ牸鏁版嵁澶勭悊 - * - * @author admin - */ -public class TableSupport -{ - /** - * 褰撳墠璁板綍璧峰绱㈠紩 - */ - public static final String PAGE_NUM = "pageNum"; - - /** - * 姣忛〉鏄剧ず璁板綍鏁� - */ - public static final String PAGE_SIZE = "pageSize"; - - /** - * 鎺掑簭鍒� - */ - public static final String ORDER_BY_COLUMN = "orderByColumn"; - - /** - * 鎺掑簭鐨勬柟鍚� "desc" 鎴栬�� "asc". - */ - public static final String IS_ASC = "isAsc"; - - /** - * 鍒嗛〉鍙傛暟鍚堢悊鍖� - */ - public static final String REASONABLE = "reasonable"; - - /** - * 灏佽鍒嗛〉瀵硅薄 - */ - public static PageDomain getPageDomain() - { - PageDomain pageDomain = new PageDomain(); - pageDomain.setPageNum(Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1)); - pageDomain.setPageSize(Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10)); - pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN)); - pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC)); - pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE)); - return pageDomain; - } - - public static PageDomain buildPageRequest() - { - return getPageDomain(); - } -} diff --git a/se-common/ruoyi-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/se-common/ruoyi-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index 30c45a0..0000000 --- a/se-common/ruoyi-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1 +0,0 @@ -com.ruoyi.common.core.utils.SpringUtils diff --git a/se-common/ruoyi-common-datascope/pom.xml b/se-common/ruoyi-common-datascope/pom.xml deleted file mode 100644 index cdd5fe8..0000000 --- a/se-common/ruoyi-common-datascope/pom.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="http://maven.apache.org/POM/4.0.0" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common</artifactId> - <version>3.6.4</version> - </parent> - <modelVersion>4.0.0</modelVersion> - - <artifactId>ruoyi-common-datascope</artifactId> - - <description> - ruoyi-common-datascope鏉冮檺鑼冨洿 - </description> - - <dependencies> - - <!-- RuoYi Common Security --> - <dependency> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common-security</artifactId> - </dependency> - - </dependencies> -</project> \ No newline at end of file diff --git a/se-common/ruoyi-common-datascope/src/main/java/com/ruoyi/common/datascope/annotation/DataScope.java b/se-common/ruoyi-common-datascope/src/main/java/com/ruoyi/common/datascope/annotation/DataScope.java deleted file mode 100644 index 0d26b99..0000000 --- a/se-common/ruoyi-common-datascope/src/main/java/com/ruoyi/common/datascope/annotation/DataScope.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.ruoyi.common.datascope.annotation; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 鏁版嵁鏉冮檺杩囨护娉ㄨВ - * - * @author admin - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface DataScope -{ - /** - * 閮ㄩ棬琛ㄧ殑鍒悕 - */ - public String deptAlias() default ""; - - /** - * 鐢ㄦ埛琛ㄧ殑鍒悕 - */ - public String userAlias() default ""; - - /** - * 鏉冮檺瀛楃锛堢敤浜庡涓鑹插尮閰嶇鍚堣姹傜殑鏉冮檺锛夐粯璁ゆ牴鎹潈闄愭敞瑙RequiresPermissions鑾峰彇锛屽涓潈闄愮敤閫楀彿鍒嗛殧寮�鏉� - */ - public String permission() default ""; -} diff --git a/se-common/ruoyi-common-datascope/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/se-common/ruoyi-common-datascope/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index 8c4b0e4..0000000 --- a/se-common/ruoyi-common-datascope/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1 +0,0 @@ -com.ruoyi.common.datascope.aspect.DataScopeAspect diff --git a/se-common/ruoyi-common-datasource/src/main/java/com/ruoyi/common/datasource/annotation/Slave.java b/se-common/ruoyi-common-datasource/src/main/java/com/ruoyi/common/datasource/annotation/Slave.java deleted file mode 100644 index 34ca129..0000000 --- a/se-common/ruoyi-common-datasource/src/main/java/com/ruoyi/common/datasource/annotation/Slave.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.ruoyi.common.datasource.annotation; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import com.baomidou.dynamic.datasource.annotation.DS; - -/** - * 浠庡簱鏁版嵁婧� - * - * @author admin - */ -@Target({ ElementType.TYPE, ElementType.METHOD }) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@DS("slave") -public @interface Slave -{ - -} \ No newline at end of file diff --git a/se-common/ruoyi-common-log/pom.xml b/se-common/ruoyi-common-log/pom.xml deleted file mode 100644 index a4f5126..0000000 --- a/se-common/ruoyi-common-log/pom.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="http://maven.apache.org/POM/4.0.0" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common</artifactId> - <version>3.6.4</version> - </parent> - <modelVersion>4.0.0</modelVersion> - - <artifactId>ruoyi-common-log</artifactId> - - <description> - ruoyi-common-log鏃ュ織璁板綍 - </description> - - <dependencies> - - <!-- RuoYi Common Security --> - <dependency> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common-security</artifactId> - </dependency> - - </dependencies> -</project> \ No newline at end of file diff --git a/se-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/filter/PropertyPreExcludeFilter.java b/se-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/filter/PropertyPreExcludeFilter.java deleted file mode 100644 index 539d834..0000000 --- a/se-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/filter/PropertyPreExcludeFilter.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.ruoyi.common.log.filter; - -import com.alibaba.fastjson2.filter.SimplePropertyPreFilter; - -/** - * 鎺掗櫎JSON鏁忔劅灞炴�� - * - * @author admin - */ -public class PropertyPreExcludeFilter extends SimplePropertyPreFilter -{ - public PropertyPreExcludeFilter() - { - } - - public PropertyPreExcludeFilter addExcludes(String... filters) - { - for (int i = 0; i < filters.length; i++) - { - this.getExcludes().add(filters[i]); - } - return this; - } -} diff --git a/se-common/ruoyi-common-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/se-common/ruoyi-common-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index ee96a67..0000000 --- a/se-common/ruoyi-common-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1,2 +0,0 @@ -com.ruoyi.common.log.service.AsyncLogService -com.ruoyi.common.log.aspect.LogAspect diff --git a/se-common/ruoyi-common-redis/pom.xml b/se-common/ruoyi-common-redis/pom.xml deleted file mode 100644 index 3a97c56..0000000 --- a/se-common/ruoyi-common-redis/pom.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="http://maven.apache.org/POM/4.0.0" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common</artifactId> - <version>3.6.4</version> - </parent> - <modelVersion>4.0.0</modelVersion> - - <artifactId>ruoyi-common-redis</artifactId> - - <description> - ruoyi-common-redis缂撳瓨鏈嶅姟 - </description> - - <dependencies> - - <!-- SpringBoot Boot Redis --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-data-redis</artifactId> - </dependency> - - <!-- RuoYi Common Core--> - <dependency> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common-core</artifactId> - </dependency> - - </dependencies> -</project> \ No newline at end of file diff --git a/se-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/FastJson2JsonRedisSerializer.java b/se-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/FastJson2JsonRedisSerializer.java deleted file mode 100644 index e6b0ebf..0000000 --- a/se-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/FastJson2JsonRedisSerializer.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.ruoyi.common.redis.configure; - -import java.nio.charset.Charset; -import org.springframework.data.redis.serializer.RedisSerializer; -import org.springframework.data.redis.serializer.SerializationException; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONReader; -import com.alibaba.fastjson2.JSONWriter; -import com.alibaba.fastjson2.filter.Filter; -import com.ruoyi.common.core.constant.Constants; - -/** - * Redis浣跨敤FastJson搴忓垪鍖� - * - * @author admin - */ -public class FastJson2JsonRedisSerializer<T> implements RedisSerializer<T> -{ - public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8"); - - static final Filter AUTO_TYPE_FILTER = JSONReader.autoTypeFilter(Constants.JSON_WHITELIST_STR); - - private Class<T> clazz; - - public FastJson2JsonRedisSerializer(Class<T> clazz) - { - super(); - this.clazz = clazz; - } - - @Override - public byte[] serialize(T t) throws SerializationException - { - if (t == null) - { - return new byte[0]; - } - return JSON.toJSONString(t, JSONWriter.Feature.WriteClassName).getBytes(DEFAULT_CHARSET); - } - - @Override - public T deserialize(byte[] bytes) throws SerializationException - { - if (bytes == null || bytes.length <= 0) - { - return null; - } - String str = new String(bytes, DEFAULT_CHARSET); - - return JSON.parseObject(str, clazz, AUTO_TYPE_FILTER); - } -} diff --git a/se-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java b/se-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java deleted file mode 100644 index 4eb58f8..0000000 --- a/se-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.ruoyi.common.redis.configure; - -import org.springframework.boot.autoconfigure.AutoConfigureBefore; -import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; -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.data.redis.connection.RedisConnectionFactory; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.serializer.StringRedisSerializer; - -/** - * redis閰嶇疆 - * - * @author admin - */ -@Configuration -@EnableCaching -@AutoConfigureBefore(RedisAutoConfiguration.class) -public class RedisConfig extends CachingConfigurerSupport -{ - @Bean - @SuppressWarnings(value = { "unchecked", "rawtypes" }) - public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) - { - RedisTemplate<Object, Object> template = new RedisTemplate<>(); - template.setConnectionFactory(connectionFactory); - - FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class); - - // 浣跨敤StringRedisSerializer鏉ュ簭鍒楀寲鍜屽弽搴忓垪鍖杛edis鐨刱ey鍊� - template.setKeySerializer(new StringRedisSerializer()); - template.setValueSerializer(serializer); - - // Hash鐨刱ey涔熼噰鐢⊿tringRedisSerializer鐨勫簭鍒楀寲鏂瑰紡 - template.setHashKeySerializer(new StringRedisSerializer()); - template.setHashValueSerializer(serializer); - - template.afterPropertiesSet(); - return template; - } -} diff --git a/se-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java b/se-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java deleted file mode 100644 index 98fd6c2..0000000 --- a/se-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java +++ /dev/null @@ -1,268 +0,0 @@ -package com.ruoyi.common.redis.service; - -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.TimeUnit; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.BoundSetOperations; -import org.springframework.data.redis.core.HashOperations; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.core.ValueOperations; -import org.springframework.stereotype.Component; - -/** - * spring redis 宸ュ叿绫� - * - * @author admin - **/ -@SuppressWarnings(value = { "unchecked", "rawtypes" }) -@Component -public class RedisService -{ - @Autowired - public RedisTemplate redisTemplate; - - /** - * 缂撳瓨鍩烘湰鐨勫璞★紝Integer銆丼tring銆佸疄浣撶被绛� - * - * @param key 缂撳瓨鐨勯敭鍊� - * @param value 缂撳瓨鐨勫�� - */ - public <T> void setCacheObject(final String key, final T value) - { - redisTemplate.opsForValue().set(key, value); - } - - /** - * 缂撳瓨鍩烘湰鐨勫璞★紝Integer銆丼tring銆佸疄浣撶被绛� - * - * @param key 缂撳瓨鐨勯敭鍊� - * @param value 缂撳瓨鐨勫�� - * @param timeout 鏃堕棿 - * @param timeUnit 鏃堕棿棰楃矑搴� - */ - public <T> void setCacheObject(final String key, final T value, final Long timeout, final TimeUnit timeUnit) - { - redisTemplate.opsForValue().set(key, value, timeout, timeUnit); - } - - /** - * 璁剧疆鏈夋晥鏃堕棿 - * - * @param key Redis閿� - * @param timeout 瓒呮椂鏃堕棿 - * @return true=璁剧疆鎴愬姛锛沠alse=璁剧疆澶辫触 - */ - public boolean expire(final String key, final long timeout) - { - return expire(key, timeout, TimeUnit.SECONDS); - } - - /** - * 璁剧疆鏈夋晥鏃堕棿 - * - * @param key Redis閿� - * @param timeout 瓒呮椂鏃堕棿 - * @param unit 鏃堕棿鍗曚綅 - * @return true=璁剧疆鎴愬姛锛沠alse=璁剧疆澶辫触 - */ - public boolean expire(final String key, final long timeout, final TimeUnit unit) - { - return redisTemplate.expire(key, timeout, unit); - } - - /** - * 鑾峰彇鏈夋晥鏃堕棿 - * - * @param key Redis閿� - * @return 鏈夋晥鏃堕棿 - */ - public long getExpire(final String key) - { - return redisTemplate.getExpire(key); - } - - /** - * 鍒ゆ柇 key鏄惁瀛樺湪 - * - * @param key 閿� - * @return true 瀛樺湪 false涓嶅瓨鍦� - */ - public Boolean hasKey(String key) - { - return redisTemplate.hasKey(key); - } - - /** - * 鑾峰緱缂撳瓨鐨勫熀鏈璞°�� - * - * @param key 缂撳瓨閿�� - * @return 缂撳瓨閿�煎搴旂殑鏁版嵁 - */ - public <T> T getCacheObject(final String key) - { - ValueOperations<String, T> operation = redisTemplate.opsForValue(); - return operation.get(key); - } - - /** - * 鍒犻櫎鍗曚釜瀵硅薄 - * - * @param key - */ - public boolean deleteObject(final String key) - { - return redisTemplate.delete(key); - } - - /** - * 鍒犻櫎闆嗗悎瀵硅薄 - * - * @param collection 澶氫釜瀵硅薄 - * @return - */ - public boolean deleteObject(final Collection collection) - { - return redisTemplate.delete(collection) > 0; - } - - /** - * 缂撳瓨List鏁版嵁 - * - * @param key 缂撳瓨鐨勯敭鍊� - * @param dataList 寰呯紦瀛樼殑List鏁版嵁 - * @return 缂撳瓨鐨勫璞� - */ - public <T> long setCacheList(final String key, final List<T> dataList) - { - Long count = redisTemplate.opsForList().rightPushAll(key, dataList); - return count == null ? 0 : count; - } - - /** - * 鑾峰緱缂撳瓨鐨刲ist瀵硅薄 - * - * @param key 缂撳瓨鐨勯敭鍊� - * @return 缂撳瓨閿�煎搴旂殑鏁版嵁 - */ - public <T> List<T> getCacheList(final String key) - { - return redisTemplate.opsForList().range(key, 0, -1); - } - - /** - * 缂撳瓨Set - * - * @param key 缂撳瓨閿�� - * @param dataSet 缂撳瓨鐨勬暟鎹� - * @return 缂撳瓨鏁版嵁鐨勫璞� - */ - public <T> BoundSetOperations<String, T> setCacheSet(final String key, final Set<T> dataSet) - { - BoundSetOperations<String, T> setOperation = redisTemplate.boundSetOps(key); - Iterator<T> it = dataSet.iterator(); - while (it.hasNext()) - { - setOperation.add(it.next()); - } - return setOperation; - } - - /** - * 鑾峰緱缂撳瓨鐨剆et - * - * @param key - * @return - */ - public <T> Set<T> getCacheSet(final String key) - { - return redisTemplate.opsForSet().members(key); - } - - /** - * 缂撳瓨Map - * - * @param key - * @param dataMap - */ - public <T> void setCacheMap(final String key, final Map<String, T> dataMap) - { - if (dataMap != null) { - redisTemplate.opsForHash().putAll(key, dataMap); - } - } - - /** - * 鑾峰緱缂撳瓨鐨凪ap - * - * @param key - * @return - */ - public <T> Map<String, T> getCacheMap(final String key) - { - return redisTemplate.opsForHash().entries(key); - } - - /** - * 寰�Hash涓瓨鍏ユ暟鎹� - * - * @param key Redis閿� - * @param hKey Hash閿� - * @param value 鍊� - */ - public <T> void setCacheMapValue(final String key, final String hKey, final T value) - { - redisTemplate.opsForHash().put(key, hKey, value); - } - - /** - * 鑾峰彇Hash涓殑鏁版嵁 - * - * @param key Redis閿� - * @param hKey Hash閿� - * @return Hash涓殑瀵硅薄 - */ - public <T> T getCacheMapValue(final String key, final String hKey) - { - HashOperations<String, String, T> opsForHash = redisTemplate.opsForHash(); - return opsForHash.get(key, hKey); - } - - /** - * 鑾峰彇澶氫釜Hash涓殑鏁版嵁 - * - * @param key Redis閿� - * @param hKeys Hash閿泦鍚� - * @return Hash瀵硅薄闆嗗悎 - */ - public <T> List<T> getMultiCacheMapValue(final String key, final Collection<Object> hKeys) - { - return redisTemplate.opsForHash().multiGet(key, hKeys); - } - - /** - * 鍒犻櫎Hash涓殑鏌愭潯鏁版嵁 - * - * @param key Redis閿� - * @param hKey Hash閿� - * @return 鏄惁鎴愬姛 - */ - public boolean deleteCacheMapValue(final String key, final String hKey) - { - return redisTemplate.opsForHash().delete(key, hKey) > 0; - } - - /** - * 鑾峰緱缂撳瓨鐨勫熀鏈璞″垪琛� - * - * @param pattern 瀛楃涓插墠缂� - * @return 瀵硅薄鍒楄〃 - */ - public Collection<String> keys(final String pattern) - { - return redisTemplate.keys(pattern); - } -} diff --git a/se-common/ruoyi-common-security/pom.xml b/se-common/ruoyi-common-security/pom.xml deleted file mode 100644 index 963e909..0000000 --- a/se-common/ruoyi-common-security/pom.xml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common</artifactId> - <version>3.6.4</version> - </parent> - <modelVersion>4.0.0</modelVersion> - - <artifactId>ruoyi-common-security</artifactId> - - <description> - ruoyi-common-security瀹夊叏妯″潡 - </description> - - <dependencies> - - <!-- Spring Web --> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-webmvc</artifactId> - </dependency> - - <!-- RuoYi Api System --> - <dependency> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-api-system</artifactId> - </dependency> - - <!-- RuoYi Common Redis--> - <dependency> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common-redis</artifactId> - </dependency> - - </dependencies> - -</project> diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableCustomConfig.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableCustomConfig.java deleted file mode 100644 index c07c3a8..0000000 --- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableCustomConfig.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ruoyi.common.security.annotation; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Inherited; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.context.annotation.EnableAspectJAutoProxy; -import org.springframework.context.annotation.Import; -import org.springframework.scheduling.annotation.EnableAsync; -import com.ruoyi.common.security.config.ApplicationConfig; -import com.ruoyi.common.security.feign.FeignAutoConfiguration; - -@Target(ElementType.TYPE) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@Inherited -// 琛ㄧず閫氳繃aop妗嗘灦鏆撮湶璇ヤ唬鐞嗗璞�,AopContext鑳藉璁块棶 -@EnableAspectJAutoProxy(exposeProxy = true) -// 鎸囧畾瑕佹壂鎻忕殑Mapper绫荤殑鍖呯殑璺緞 -@MapperScan("com.ruoyi.**.mapper") -// 寮�鍚嚎绋嬪紓姝ユ墽琛� -@EnableAsync -// 鑷姩鍔犺浇绫� -@Import({ ApplicationConfig.class, FeignAutoConfiguration.class }) -public @interface EnableCustomConfig -{ - -} diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableRyFeignClients.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableRyFeignClients.java deleted file mode 100644 index 4947fc1..0000000 --- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableRyFeignClients.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.ruoyi.common.security.annotation; - -import org.springframework.cloud.openfeign.EnableFeignClients; -import java.lang.annotation.*; - -/** - * 鑷畾涔塮eign娉ㄨВ - * 娣诲姞basePackages璺緞 - * - * @author admin - */ -@Target(ElementType.TYPE) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@EnableFeignClients -public @interface EnableRyFeignClients -{ - String[] value() default {}; - - String[] basePackages() default { "com.ruoyi" }; - - Class<?>[] basePackageClasses() default {}; - - Class<?>[] defaultConfiguration() default {}; - - Class<?>[] clients() default {}; -} diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/Logical.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/Logical.java deleted file mode 100644 index b1106ba..0000000 --- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/Logical.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.ruoyi.common.security.annotation; - -/** - * 鏉冮檺娉ㄨВ鐨勯獙璇佹ā寮� - * - * @author admin - * - */ -public enum Logical -{ - /** - * 蹇呴』鍏锋湁鎵�鏈夌殑鍏冪礌 - */ - AND, - - /** - * 鍙渶鍏锋湁鍏朵腑涓�涓厓绱� - */ - OR -} diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/RequiresLogin.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/RequiresLogin.java deleted file mode 100644 index d6c1cb5..0000000 --- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/RequiresLogin.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.ruoyi.common.security.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 鐧诲綍璁よ瘉锛氬彧鏈夌櫥褰曚箣鍚庢墠鑳借繘鍏ヨ鏂规硶 - * - * @author admin - * - */ -@Retention(RetentionPolicy.RUNTIME) -@Target({ ElementType.METHOD, ElementType.TYPE }) -public @interface RequiresLogin -{ -} diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/RequiresPermissions.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/RequiresPermissions.java deleted file mode 100644 index 1a4c7cc..0000000 --- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/RequiresPermissions.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.ruoyi.common.security.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 鏉冮檺璁よ瘉锛氬繀椤诲叿鏈夋寚瀹氭潈闄愭墠鑳借繘鍏ヨ鏂规硶 - * - * @author admin - * - */ -@Retention(RetentionPolicy.RUNTIME) -@Target({ ElementType.METHOD, ElementType.TYPE }) -public @interface RequiresPermissions -{ - /** - * 闇�瑕佹牎楠岀殑鏉冮檺鐮� - */ - String[] value() default {}; - - /** - * 楠岃瘉妯″紡锛欰ND | OR锛岄粯璁ND - */ - Logical logical() default Logical.AND; -} diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/RequiresRoles.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/RequiresRoles.java deleted file mode 100644 index 3fc55d3..0000000 --- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/RequiresRoles.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.ruoyi.common.security.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 瑙掕壊璁よ瘉锛氬繀椤诲叿鏈夋寚瀹氳鑹叉爣璇嗘墠鑳借繘鍏ヨ鏂规硶 - * - * @author admin - */ -@Retention(RetentionPolicy.RUNTIME) -@Target({ ElementType.METHOD, ElementType.TYPE }) -public @interface RequiresRoles -{ - /** - * 闇�瑕佹牎楠岀殑瑙掕壊鏍囪瘑 - */ - String[] value() default {}; - - /** - * 楠岃瘉閫昏緫锛欰ND | OR锛岄粯璁ND - */ - Logical logical() default Logical.AND; -} diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/aspect/PreAuthorizeAspect.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/aspect/PreAuthorizeAspect.java deleted file mode 100644 index bc75873..0000000 --- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/aspect/PreAuthorizeAspect.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.ruoyi.common.security.aspect; - -import java.lang.reflect.Method; -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Pointcut; -import org.aspectj.lang.reflect.MethodSignature; -import org.springframework.stereotype.Component; -import com.ruoyi.common.security.annotation.RequiresLogin; -import com.ruoyi.common.security.annotation.RequiresPermissions; -import com.ruoyi.common.security.annotation.RequiresRoles; -import com.ruoyi.common.security.auth.AuthUtil; - -/** - * 鍩轰簬 Spring Aop 鐨勬敞瑙i壌鏉� - * - * @author kong - */ -@Aspect -@Component -public class PreAuthorizeAspect -{ - /** - * 鏋勫缓 - */ - public PreAuthorizeAspect() - { - } - - /** - * 瀹氫箟AOP绛惧悕 (鍒囧叆鎵�鏈変娇鐢ㄩ壌鏉冩敞瑙g殑鏂规硶) - */ - public static final String POINTCUT_SIGN = " @annotation(com.ruoyi.common.security.annotation.RequiresLogin) || " - + "@annotation(com.ruoyi.common.security.annotation.RequiresPermissions) || " - + "@annotation(com.ruoyi.common.security.annotation.RequiresRoles)"; - - /** - * 澹版槑AOP绛惧悕 - */ - @Pointcut(POINTCUT_SIGN) - public void pointcut() - { - } - - /** - * 鐜粫鍒囧叆 - * - * @param joinPoint 鍒囬潰瀵硅薄 - * @return 搴曞眰鏂规硶鎵ц鍚庣殑杩斿洖鍊� - * @throws Throwable 搴曞眰鏂规硶鎶涘嚭鐨勫紓甯� - */ - @Around("pointcut()") - public Object around(ProceedingJoinPoint joinPoint) throws Throwable - { - // 娉ㄨВ閴存潈 - MethodSignature signature = (MethodSignature) joinPoint.getSignature(); - checkMethodAnnotation(signature.getMethod()); - try - { - // 鎵ц鍘熸湁閫昏緫 - Object obj = joinPoint.proceed(); - return obj; - } - catch (Throwable e) - { - throw e; - } - } - - /** - * 瀵逛竴涓狹ethod瀵硅薄杩涜娉ㄨВ妫�鏌� - */ - public void checkMethodAnnotation(Method method) - { - // 鏍¢獙 @RequiresLogin 娉ㄨВ - RequiresLogin requiresLogin = method.getAnnotation(RequiresLogin.class); - if (requiresLogin != null) - { - AuthUtil.checkLogin(); - } - - // 鏍¢獙 @RequiresRoles 娉ㄨВ - RequiresRoles requiresRoles = method.getAnnotation(RequiresRoles.class); - if (requiresRoles != null) - { - AuthUtil.checkRole(requiresRoles); - } - - // 鏍¢獙 @RequiresPermissions 娉ㄨВ - RequiresPermissions requiresPermissions = method.getAnnotation(RequiresPermissions.class); - if (requiresPermissions != null) - { - AuthUtil.checkPermi(requiresPermissions); - } - } -} diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java deleted file mode 100644 index 138507f..0000000 --- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java +++ /dev/null @@ -1,373 +0,0 @@ -package com.ruoyi.common.security.auth; - -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; -import org.springframework.util.PatternMatchUtils; -import com.ruoyi.common.core.context.SecurityContextHolder; -import com.ruoyi.common.core.exception.auth.NotLoginException; -import com.ruoyi.common.core.exception.auth.NotPermissionException; -import com.ruoyi.common.core.exception.auth.NotRoleException; -import com.ruoyi.common.core.utils.SpringUtils; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.common.security.annotation.Logical; -import com.ruoyi.common.security.annotation.RequiresLogin; -import com.ruoyi.common.security.annotation.RequiresPermissions; -import com.ruoyi.common.security.annotation.RequiresRoles; -import com.ruoyi.common.security.service.TokenService; -import com.ruoyi.common.security.utils.SecurityUtils; -import com.se.system.api.model.LoginUser; - -/** - * Token 鏉冮檺楠岃瘉锛岄�昏緫瀹炵幇绫� - * - * @author admin - */ -public class AuthLogic -{ - /** 鎵�鏈夋潈闄愭爣璇� */ - private static final String ALL_PERMISSION = "*:*:*"; - - /** 绠$悊鍛樿鑹叉潈闄愭爣璇� */ - private static final String SUPER_ADMIN = "admin"; - - public TokenService tokenService = SpringUtils.getBean(TokenService.class); - - /** - * 浼氳瘽娉ㄩ攢 - */ - public void logout() - { - String token = SecurityUtils.getToken(); - if (token == null) - { - return; - } - logoutByToken(token); - } - - /** - * 浼氳瘽娉ㄩ攢锛屾牴鎹寚瀹歍oken - */ - public void logoutByToken(String token) - { - tokenService.delLoginUser(token); - } - - /** - * 妫�楠岀敤鎴锋槸鍚﹀凡缁忕櫥褰曪紝濡傛湭鐧诲綍锛屽垯鎶涘嚭寮傚父 - */ - public void checkLogin() - { - getLoginUser(); - } - - /** - * 鑾峰彇褰撳墠鐢ㄦ埛缂撳瓨淇℃伅, 濡傛灉鏈櫥褰曪紝鍒欐姏鍑哄紓甯� - * - * @return 鐢ㄦ埛缂撳瓨淇℃伅 - */ - public LoginUser getLoginUser() - { - String token = SecurityUtils.getToken(); - if (token == null) - { - throw new NotLoginException("鏈彁渚泃oken"); - } - LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser == null) - { - throw new NotLoginException("鏃犳晥鐨則oken"); - } - return loginUser; - } - - /** - * 鑾峰彇褰撳墠鐢ㄦ埛缂撳瓨淇℃伅, 濡傛灉鏈櫥褰曪紝鍒欐姏鍑哄紓甯� - * - * @param token 鍓嶇浼犻�掔殑璁よ瘉淇℃伅 - * @return 鐢ㄦ埛缂撳瓨淇℃伅 - */ - public LoginUser getLoginUser(String token) - { - return tokenService.getLoginUser(token); - } - - /** - * 楠岃瘉褰撳墠鐢ㄦ埛鏈夋晥鏈�, 濡傛灉鐩稿樊涓嶈冻120鍒嗛挓锛岃嚜鍔ㄥ埛鏂扮紦瀛� - * - * @param loginUser 褰撳墠鐢ㄦ埛淇℃伅 - */ - public void verifyLoginUserExpire(LoginUser loginUser) - { - tokenService.verifyToken(loginUser); - } - - /** - * 楠岃瘉鐢ㄦ埛鏄惁鍏峰鏌愭潈闄� - * - * @param permission 鏉冮檺瀛楃涓� - * @return 鐢ㄦ埛鏄惁鍏峰鏌愭潈闄� - */ - public boolean hasPermi(String permission) - { - return hasPermi(getPermiList(), permission); - } - - /** - * 楠岃瘉鐢ㄦ埛鏄惁鍏峰鏌愭潈闄�, 濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: NotPermissionException - * - * @param permission 鏉冮檺瀛楃涓� - * @return 鐢ㄦ埛鏄惁鍏峰鏌愭潈闄� - */ - public void checkPermi(String permission) - { - if (!hasPermi(getPermiList(), permission)) - { - throw new NotPermissionException(permission); - } - } - - /** - * 鏍规嵁娉ㄨВ(@RequiresPermissions)閴存潈, 濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: NotPermissionException - * - * @param requiresPermissions 娉ㄨВ瀵硅薄 - */ - public void checkPermi(RequiresPermissions requiresPermissions) - { - SecurityContextHolder.setPermission(StringUtils.join(requiresPermissions.value(), ",")); - if (requiresPermissions.logical() == Logical.AND) - { - checkPermiAnd(requiresPermissions.value()); - } - else - { - checkPermiOr(requiresPermissions.value()); - } - } - - /** - * 楠岃瘉鐢ㄦ埛鏄惁鍚湁鎸囧畾鏉冮檺锛屽繀椤诲叏閮ㄦ嫢鏈� - * - * @param permissions 鏉冮檺鍒楄〃 - */ - public void checkPermiAnd(String... permissions) - { - Set<String> permissionList = getPermiList(); - for (String permission : permissions) - { - if (!hasPermi(permissionList, permission)) - { - throw new NotPermissionException(permission); - } - } - } - - /** - * 楠岃瘉鐢ㄦ埛鏄惁鍚湁鎸囧畾鏉冮檺锛屽彧闇�鍖呭惈鍏朵腑涓�涓� - * - * @param permissions 鏉冮檺鐮佹暟缁� - */ - public void checkPermiOr(String... permissions) - { - Set<String> permissionList = getPermiList(); - for (String permission : permissions) - { - if (hasPermi(permissionList, permission)) - { - return; - } - } - if (permissions.length > 0) - { - throw new NotPermissionException(permissions); - } - } - - /** - * 鍒ゆ柇鐢ㄦ埛鏄惁鎷ユ湁鏌愪釜瑙掕壊 - * - * @param role 瑙掕壊鏍囪瘑 - * @return 鐢ㄦ埛鏄惁鍏峰鏌愯鑹� - */ - public boolean hasRole(String role) - { - return hasRole(getRoleList(), role); - } - - /** - * 鍒ゆ柇鐢ㄦ埛鏄惁鎷ユ湁鏌愪釜瑙掕壊, 濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: NotRoleException - * - * @param role 瑙掕壊鏍囪瘑 - */ - public void checkRole(String role) - { - if (!hasRole(role)) - { - throw new NotRoleException(role); - } - } - - /** - * 鏍规嵁娉ㄨВ(@RequiresRoles)閴存潈 - * - * @param requiresRoles 娉ㄨВ瀵硅薄 - */ - public void checkRole(RequiresRoles requiresRoles) - { - if (requiresRoles.logical() == Logical.AND) - { - checkRoleAnd(requiresRoles.value()); - } - else - { - checkRoleOr(requiresRoles.value()); - } - } - - /** - * 楠岃瘉鐢ㄦ埛鏄惁鍚湁鎸囧畾瑙掕壊锛屽繀椤诲叏閮ㄦ嫢鏈� - * - * @param roles 瑙掕壊鏍囪瘑鏁扮粍 - */ - public void checkRoleAnd(String... roles) - { - Set<String> roleList = getRoleList(); - for (String role : roles) - { - if (!hasRole(roleList, role)) - { - throw new NotRoleException(role); - } - } - } - - /** - * 楠岃瘉鐢ㄦ埛鏄惁鍚湁鎸囧畾瑙掕壊锛屽彧闇�鍖呭惈鍏朵腑涓�涓� - * - * @param roles 瑙掕壊鏍囪瘑鏁扮粍 - */ - public void checkRoleOr(String... roles) - { - Set<String> roleList = getRoleList(); - for (String role : roles) - { - if (hasRole(roleList, role)) - { - return; - } - } - if (roles.length > 0) - { - throw new NotRoleException(roles); - } - } - - /** - * 鏍规嵁娉ㄨВ(@RequiresLogin)閴存潈 - * - * @param at 娉ㄨВ瀵硅薄 - */ - public void checkByAnnotation(RequiresLogin at) - { - this.checkLogin(); - } - - /** - * 鏍规嵁娉ㄨВ(@RequiresRoles)閴存潈 - * - * @param at 娉ㄨВ瀵硅薄 - */ - public void checkByAnnotation(RequiresRoles at) - { - String[] roleArray = at.value(); - if (at.logical() == Logical.AND) - { - this.checkRoleAnd(roleArray); - } - else - { - this.checkRoleOr(roleArray); - } - } - - /** - * 鏍规嵁娉ㄨВ(@RequiresPermissions)閴存潈 - * - * @param at 娉ㄨВ瀵硅薄 - */ - public void checkByAnnotation(RequiresPermissions at) - { - String[] permissionArray = at.value(); - if (at.logical() == Logical.AND) - { - this.checkPermiAnd(permissionArray); - } - else - { - this.checkPermiOr(permissionArray); - } - } - - /** - * 鑾峰彇褰撳墠璐﹀彿鐨勮鑹插垪琛� - * - * @return 瑙掕壊鍒楄〃 - */ - public Set<String> getRoleList() - { - try - { - LoginUser loginUser = getLoginUser(); - return loginUser.getRoles(); - } - catch (Exception e) - { - return new HashSet<>(); - } - } - - /** - * 鑾峰彇褰撳墠璐﹀彿鐨勬潈闄愬垪琛� - * - * @return 鏉冮檺鍒楄〃 - */ - public Set<String> getPermiList() - { - try - { - LoginUser loginUser = getLoginUser(); - return loginUser.getPermissions(); - } - catch (Exception e) - { - return new HashSet<>(); - } - } - - /** - * 鍒ゆ柇鏄惁鍖呭惈鏉冮檺 - * - * @param authorities 鏉冮檺鍒楄〃 - * @param permission 鏉冮檺瀛楃涓� - * @return 鐢ㄦ埛鏄惁鍏峰鏌愭潈闄� - */ - public boolean hasPermi(Collection<String> authorities, String permission) - { - return authorities.stream().filter(StringUtils::hasText) - .anyMatch(x -> ALL_PERMISSION.equals(x) || PatternMatchUtils.simpleMatch(x, permission)); - } - - /** - * 鍒ゆ柇鏄惁鍖呭惈瑙掕壊 - * - * @param roles 瑙掕壊鍒楄〃 - * @param role 瑙掕壊 - * @return 鐢ㄦ埛鏄惁鍏峰鏌愯鑹叉潈闄� - */ - public boolean hasRole(Collection<String> roles, String role) - { - return roles.stream().filter(StringUtils::hasText) - .anyMatch(x -> SUPER_ADMIN.equals(x) || PatternMatchUtils.simpleMatch(x, role)); - } -} diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthUtil.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthUtil.java deleted file mode 100644 index 130362b..0000000 --- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthUtil.java +++ /dev/null @@ -1,167 +0,0 @@ -package com.ruoyi.common.security.auth; - -import com.ruoyi.common.security.annotation.RequiresPermissions; -import com.ruoyi.common.security.annotation.RequiresRoles; -import com.se.system.api.model.LoginUser; - -/** - * Token 鏉冮檺楠岃瘉宸ュ叿绫� - * - * @author admin - */ -public class AuthUtil -{ - /** - * 搴曞眰鐨� AuthLogic 瀵硅薄 - */ - public static AuthLogic authLogic = new AuthLogic(); - - /** - * 浼氳瘽娉ㄩ攢 - */ - public static void logout() - { - authLogic.logout(); - } - - /** - * 浼氳瘽娉ㄩ攢锛屾牴鎹寚瀹歍oken - * - * @param token 鎸囧畾token - */ - public static void logoutByToken(String token) - { - authLogic.logoutByToken(token); - } - - /** - * 妫�楠屽綋鍓嶄細璇濇槸鍚﹀凡缁忕櫥褰曪紝濡傛湭鐧诲綍锛屽垯鎶涘嚭寮傚父 - */ - public static void checkLogin() - { - authLogic.checkLogin(); - } - - /** - * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛淇℃伅 - * - * @param token 鎸囧畾token - * @return 鐢ㄦ埛淇℃伅 - */ - public static LoginUser getLoginUser(String token) - { - return authLogic.getLoginUser(token); - } - - /** - * 楠岃瘉褰撳墠鐢ㄦ埛鏈夋晥鏈� - * - * @param loginUser 鐢ㄦ埛淇℃伅 - */ - public static void verifyLoginUserExpire(LoginUser loginUser) - { - authLogic.verifyLoginUserExpire(loginUser); - } - - /** - * 褰撳墠璐﹀彿鏄惁鍚湁鎸囧畾瑙掕壊鏍囪瘑, 杩斿洖true鎴杅alse - * - * @param role 瑙掕壊鏍囪瘑 - * @return 鏄惁鍚湁鎸囧畾瑙掕壊鏍囪瘑 - */ - public static boolean hasRole(String role) - { - return authLogic.hasRole(role); - } - - /** - * 褰撳墠璐﹀彿鏄惁鍚湁鎸囧畾瑙掕壊鏍囪瘑, 濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: NotRoleException - * - * @param role 瑙掕壊鏍囪瘑 - */ - public static void checkRole(String role) - { - authLogic.checkRole(role); - } - - /** - * 鏍规嵁娉ㄨВ浼犲叆鍙傛暟閴存潈, 濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: NotRoleException - * - * @param requiresRoles 瑙掕壊鏉冮檺娉ㄨВ - */ - public static void checkRole(RequiresRoles requiresRoles) - { - authLogic.checkRole(requiresRoles); - } - - /** - * 褰撳墠璐﹀彿鏄惁鍚湁鎸囧畾瑙掕壊鏍囪瘑 [鎸囧畾澶氫釜锛屽繀椤诲叏閮ㄩ獙璇侀�氳繃] - * - * @param roles 瑙掕壊鏍囪瘑鏁扮粍 - */ - public static void checkRoleAnd(String... roles) - { - authLogic.checkRoleAnd(roles); - } - - /** - * 褰撳墠璐﹀彿鏄惁鍚湁鎸囧畾瑙掕壊鏍囪瘑 [鎸囧畾澶氫釜锛屽彧瑕佸叾涓�楠岃瘉閫氳繃鍗冲彲] - * - * @param roles 瑙掕壊鏍囪瘑鏁扮粍 - */ - public static void checkRoleOr(String... roles) - { - authLogic.checkRoleOr(roles); - } - - /** - * 褰撳墠璐﹀彿鏄惁鍚湁鎸囧畾鏉冮檺, 杩斿洖true鎴杅alse - * - * @param permission 鏉冮檺鐮� - * @return 鏄惁鍚湁鎸囧畾鏉冮檺 - */ - public static boolean hasPermi(String permission) - { - return authLogic.hasPermi(permission); - } - - /** - * 褰撳墠璐﹀彿鏄惁鍚湁鎸囧畾鏉冮檺, 濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: NotPermissionException - * - * @param permission 鏉冮檺鐮� - */ - public static void checkPermi(String permission) - { - authLogic.checkPermi(permission); - } - - /** - * 鏍规嵁娉ㄨВ浼犲叆鍙傛暟閴存潈, 濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: NotPermissionException - * - * @param requiresPermissions 鏉冮檺娉ㄨВ - */ - public static void checkPermi(RequiresPermissions requiresPermissions) - { - authLogic.checkPermi(requiresPermissions); - } - - /** - * 褰撳墠璐﹀彿鏄惁鍚湁鎸囧畾鏉冮檺 [鎸囧畾澶氫釜锛屽繀椤诲叏閮ㄩ獙璇侀�氳繃] - * - * @param permissions 鏉冮檺鐮佹暟缁� - */ - public static void checkPermiAnd(String... permissions) - { - authLogic.checkPermiAnd(permissions); - } - - /** - * 褰撳墠璐﹀彿鏄惁鍚湁鎸囧畾鏉冮檺 [鎸囧畾澶氫釜锛屽彧瑕佸叾涓�楠岃瘉閫氳繃鍗冲彲] - * - * @param permissions 鏉冮檺鐮佹暟缁� - */ - public static void checkPermiOr(String... permissions) - { - authLogic.checkPermiOr(permissions); - } -} diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/ApplicationConfig.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/ApplicationConfig.java deleted file mode 100644 index e95a4c1..0000000 --- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/ApplicationConfig.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.ruoyi.common.security.config; - -import java.util.TimeZone; -import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; -import org.springframework.context.annotation.Bean; - -/** - * 绯荤粺閰嶇疆 - * - * @author admin - */ -public class ApplicationConfig -{ - /** - * 鏃跺尯閰嶇疆 - */ - @Bean - public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() - { - return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault()); - } -} diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/WebMvcConfig.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/WebMvcConfig.java deleted file mode 100644 index bd1aebe..0000000 --- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/WebMvcConfig.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.ruoyi.common.security.config; - -import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import com.ruoyi.common.security.interceptor.HeaderInterceptor; - -/** - * 鎷︽埅鍣ㄩ厤缃� - * - * @author admin - */ -public class WebMvcConfig implements WebMvcConfigurer -{ - /** 涓嶉渶瑕佹嫤鎴湴鍧� */ - public static final String[] excludeUrls = { "/login", "/logout", "/refresh" }; - - @Override - public void addInterceptors(InterceptorRegistry registry) - { - registry.addInterceptor(getHeaderInterceptor()) - .addPathPatterns("/**") - .excludePathPatterns(excludeUrls) - .order(-10); - } - - /** - * 鑷畾涔夎姹傚ご鎷︽埅鍣� - */ - public HeaderInterceptor getHeaderInterceptor() - { - return new HeaderInterceptor(); - } -} diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/FeignAutoConfiguration.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/FeignAutoConfiguration.java deleted file mode 100644 index 77a53f5..0000000 --- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/FeignAutoConfiguration.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.ruoyi.common.security.feign; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import feign.RequestInterceptor; - -/** - * Feign 閰嶇疆娉ㄥ唽 - * - * @author admin - **/ -@Configuration -public class FeignAutoConfiguration -{ - @Bean - public RequestInterceptor requestInterceptor() - { - return new FeignRequestInterceptor(); - } -} diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/FeignRequestInterceptor.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/FeignRequestInterceptor.java deleted file mode 100644 index f836cc6..0000000 --- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/FeignRequestInterceptor.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.ruoyi.common.security.feign; - -import java.util.Map; -import javax.servlet.http.HttpServletRequest; -import org.springframework.stereotype.Component; -import com.ruoyi.common.core.constant.SecurityConstants; -import com.ruoyi.common.core.utils.ServletUtils; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.common.core.utils.ip.IpUtils; -import feign.RequestInterceptor; -import feign.RequestTemplate; - -/** - * feign 璇锋眰鎷︽埅鍣� - * - * @author admin - */ -@Component -public class FeignRequestInterceptor implements RequestInterceptor -{ - @Override - public void apply(RequestTemplate requestTemplate) - { - HttpServletRequest httpServletRequest = ServletUtils.getRequest(); - if (StringUtils.isNotNull(httpServletRequest)) - { - Map<String, String> headers = ServletUtils.getHeaders(httpServletRequest); - // 浼犻�掔敤鎴蜂俊鎭姹傚ご锛岄槻姝涪澶� - String userId = headers.get(SecurityConstants.DETAILS_USER_ID); - if (StringUtils.isNotEmpty(userId)) - { - requestTemplate.header(SecurityConstants.DETAILS_USER_ID, userId); - } - String userKey = headers.get(SecurityConstants.USER_KEY); - if (StringUtils.isNotEmpty(userKey)) - { - requestTemplate.header(SecurityConstants.USER_KEY, userKey); - } - String userName = headers.get(SecurityConstants.DETAILS_USERNAME); - if (StringUtils.isNotEmpty(userName)) - { - requestTemplate.header(SecurityConstants.DETAILS_USERNAME, userName); - } - String authentication = headers.get(SecurityConstants.AUTHORIZATION_HEADER); - if (StringUtils.isNotEmpty(authentication)) - { - requestTemplate.header(SecurityConstants.AUTHORIZATION_HEADER, authentication); - } - - // 閰嶇疆瀹㈡埛绔疘P - requestTemplate.header("X-Forwarded-For", IpUtils.getIpAddr()); - } - } -} \ No newline at end of file diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/interceptor/HeaderInterceptor.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/interceptor/HeaderInterceptor.java deleted file mode 100644 index 2400d33..0000000 --- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/interceptor/HeaderInterceptor.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.ruoyi.common.security.interceptor; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.springframework.web.method.HandlerMethod; -import org.springframework.web.servlet.AsyncHandlerInterceptor; -import com.ruoyi.common.core.constant.SecurityConstants; -import com.ruoyi.common.core.context.SecurityContextHolder; -import com.ruoyi.common.core.utils.ServletUtils; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.common.security.auth.AuthUtil; -import com.ruoyi.common.security.utils.SecurityUtils; -import com.se.system.api.model.LoginUser; - -/** - * 鑷畾涔夎姹傚ご鎷︽埅鍣紝灏咹eader鏁版嵁灏佽鍒扮嚎绋嬪彉閲忎腑鏂逛究鑾峰彇 - * 娉ㄦ剰锛氭鎷︽埅鍣ㄤ細鍚屾椂楠岃瘉褰撳墠鐢ㄦ埛鏈夋晥鏈熻嚜鍔ㄥ埛鏂版湁鏁堟湡 - * - * @author admin - */ -public class HeaderInterceptor implements AsyncHandlerInterceptor -{ - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception - { - if (!(handler instanceof HandlerMethod)) - { - return true; - } - - SecurityContextHolder.setUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USER_ID)); - SecurityContextHolder.setUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USERNAME)); - SecurityContextHolder.setUserKey(ServletUtils.getHeader(request, SecurityConstants.USER_KEY)); - - String token = SecurityUtils.getToken(); - if (StringUtils.isNotEmpty(token)) - { - LoginUser loginUser = AuthUtil.getLoginUser(token); - if (StringUtils.isNotNull(loginUser)) - { - AuthUtil.verifyLoginUserExpire(loginUser); - SecurityContextHolder.set(SecurityConstants.LOGIN_USER, loginUser); - } - } - return true; - } - - @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) - throws Exception - { - SecurityContextHolder.remove(); - } -} diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java deleted file mode 100644 index d6cb5c6..0000000 --- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java +++ /dev/null @@ -1,174 +0,0 @@ -package com.ruoyi.common.security.service; - -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.TimeUnit; -import javax.servlet.http.HttpServletRequest; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import com.ruoyi.common.core.constant.CacheConstants; -import com.ruoyi.common.core.constant.SecurityConstants; -import com.ruoyi.common.core.utils.JwtUtils; -import com.ruoyi.common.core.utils.ServletUtils; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.common.core.utils.ip.IpUtils; -import com.ruoyi.common.core.utils.uuid.IdUtils; -import com.ruoyi.common.redis.service.RedisService; -import com.ruoyi.common.security.utils.SecurityUtils; -import com.se.system.api.model.LoginUser; - -/** - * token楠岃瘉澶勭悊 - * - * @author admin - */ -@Component -public class TokenService -{ - private static final Logger log = LoggerFactory.getLogger(TokenService.class); - - @Autowired - private RedisService redisService; - - protected static final long MILLIS_SECOND = 1000; - - protected static final long MILLIS_MINUTE = 60 * MILLIS_SECOND; - - private final static long expireTime = CacheConstants.EXPIRATION; - - private final static String ACCESS_TOKEN = CacheConstants.LOGIN_TOKEN_KEY; - - private final static Long MILLIS_MINUTE_TEN = CacheConstants.REFRESH_TIME * MILLIS_MINUTE; - - /** - * 鍒涘缓浠ょ墝 - */ - public Map<String, Object> createToken(LoginUser loginUser) - { - String token = IdUtils.fastUUID(); - Long userId = loginUser.getSysUser().getUserId(); - String userName = loginUser.getSysUser().getUserName(); - loginUser.setToken(token); - loginUser.setUserid(userId); - loginUser.setUsername(userName); - loginUser.setIpaddr(IpUtils.getIpAddr()); - refreshToken(loginUser); - - // Jwt瀛樺偍淇℃伅 - Map<String, Object> claimsMap = new HashMap<String, Object>(); - claimsMap.put(SecurityConstants.USER_KEY, token); - claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId); - claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName); - - // 鎺ュ彛杩斿洖淇℃伅 - Map<String, Object> rspMap = new HashMap<String, Object>(); - rspMap.put("access_token", JwtUtils.createToken(claimsMap)); - rspMap.put("expires_in", expireTime); - return rspMap; - } - - /** - * 鑾峰彇鐢ㄦ埛韬唤淇℃伅 - * - * @return 鐢ㄦ埛淇℃伅 - */ - public LoginUser getLoginUser() - { - return getLoginUser(ServletUtils.getRequest()); - } - - /** - * 鑾峰彇鐢ㄦ埛韬唤淇℃伅 - * - * @return 鐢ㄦ埛淇℃伅 - */ - public LoginUser getLoginUser(HttpServletRequest request) - { - // 鑾峰彇璇锋眰鎼哄甫鐨勪护鐗� - String token = SecurityUtils.getToken(request); - return getLoginUser(token); - } - - /** - * 鑾峰彇鐢ㄦ埛韬唤淇℃伅 - * - * @return 鐢ㄦ埛淇℃伅 - */ - public LoginUser getLoginUser(String token) - { - LoginUser user = null; - try - { - if (StringUtils.isNotEmpty(token)) - { - String userkey = JwtUtils.getUserKey(token); - user = redisService.getCacheObject(getTokenKey(userkey)); - return user; - } - } - catch (Exception e) - { - log.error("鑾峰彇鐢ㄦ埛淇℃伅寮傚父'{}'", e.getMessage()); - } - return user; - } - - /** - * 璁剧疆鐢ㄦ埛韬唤淇℃伅 - */ - public void setLoginUser(LoginUser loginUser) - { - if (StringUtils.isNotNull(loginUser) && StringUtils.isNotEmpty(loginUser.getToken())) - { - refreshToken(loginUser); - } - } - - /** - * 鍒犻櫎鐢ㄦ埛缂撳瓨淇℃伅 - */ - public void delLoginUser(String token) - { - if (StringUtils.isNotEmpty(token)) - { - String userkey = JwtUtils.getUserKey(token); - redisService.deleteObject(getTokenKey(userkey)); - } - } - - /** - * 楠岃瘉浠ょ墝鏈夋晥鏈燂紝鐩稿樊涓嶈冻120鍒嗛挓锛岃嚜鍔ㄥ埛鏂扮紦瀛� - * - * @param loginUser - */ - public void verifyToken(LoginUser loginUser) - { - long expireTime = loginUser.getExpireTime(); - long currentTime = System.currentTimeMillis(); - if (expireTime - currentTime <= MILLIS_MINUTE_TEN) - { - refreshToken(loginUser); - } - } - - /** - * 鍒锋柊浠ょ墝鏈夋晥鏈� - * - * @param loginUser 鐧诲綍淇℃伅 - */ - public void refreshToken(LoginUser loginUser) - { - loginUser.setLoginTime(System.currentTimeMillis()); - loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE); - // 鏍规嵁uuid灏唋oginUser缂撳瓨 - String userKey = getTokenKey(loginUser.getToken()); - redisService.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES); - } - - private String getTokenKey(String token) - { - return ACCESS_TOKEN + token; - } -} \ No newline at end of file diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java deleted file mode 100644 index 3abe2c4..0000000 --- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.ruoyi.common.security.utils; - -import javax.servlet.http.HttpServletRequest; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import com.ruoyi.common.core.constant.SecurityConstants; -import com.ruoyi.common.core.constant.TokenConstants; -import com.ruoyi.common.core.context.SecurityContextHolder; -import com.ruoyi.common.core.utils.ServletUtils; -import com.ruoyi.common.core.utils.StringUtils; -import com.se.system.api.model.LoginUser; - -/** - * 鏉冮檺鑾峰彇宸ュ叿绫� - * - * @author admin - */ -public class SecurityUtils -{ - /** - * 鑾峰彇鐢ㄦ埛ID - */ - public static Long getUserId() - { - return SecurityContextHolder.getUserId(); - } - - /** - * 鑾峰彇鐢ㄦ埛鍚嶇О - */ - public static String getUsername() - { - return SecurityContextHolder.getUserName(); - } - - /** - * 鑾峰彇鐢ㄦ埛key - */ - public static String getUserKey() - { - return SecurityContextHolder.getUserKey(); - } - - /** - * 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅 - */ - public static LoginUser getLoginUser() - { - return SecurityContextHolder.get(SecurityConstants.LOGIN_USER, LoginUser.class); - } - - /** - * 鑾峰彇璇锋眰token - */ - public static String getToken() - { - return getToken(ServletUtils.getRequest()); - } - - /** - * 鏍规嵁request鑾峰彇璇锋眰token - */ - public static String getToken(HttpServletRequest request) - { - // 浠巋eader鑾峰彇token鏍囪瘑 - String token = request.getHeader(TokenConstants.AUTHENTICATION); - return replaceTokenPrefix(token); - } - - /** - * 瑁佸壀token鍓嶇紑 - */ - public static String replaceTokenPrefix(String token) - { - // 濡傛灉鍓嶇璁剧疆浜嗕护鐗屽墠缂�锛屽垯瑁佸壀鎺夊墠缂� - if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) - { - token = token.replaceFirst(TokenConstants.PREFIX, ""); - } - return token; - } - - /** - * 鏄惁涓虹鐞嗗憳 - * - * @param userId 鐢ㄦ埛ID - * @return 缁撴灉 - */ - public static boolean isAdmin(Long userId) - { - return userId != null && 1L == userId; - } - - /** - * 鐢熸垚BCryptPasswordEncoder瀵嗙爜 - * - * @param password 瀵嗙爜 - * @return 鍔犲瘑瀛楃涓� - */ - public static String encryptPassword(String password) - { - BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); - return passwordEncoder.encode(password); - } - - /** - * 鍒ゆ柇瀵嗙爜鏄惁鐩稿悓 - * - * @param rawPassword 鐪熷疄瀵嗙爜 - * @param encodedPassword 鍔犲瘑鍚庡瓧绗� - * @return 缁撴灉 - */ - public static boolean matchesPassword(String rawPassword, String encodedPassword) - { - BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); - return passwordEncoder.matches(rawPassword, encodedPassword); - } -} diff --git a/se-common/ruoyi-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/se-common/ruoyi-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index 7418bbc..0000000 --- a/se-common/ruoyi-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1,5 +0,0 @@ -com.ruoyi.common.security.config.WebMvcConfig -com.ruoyi.common.security.service.TokenService -com.ruoyi.common.security.aspect.PreAuthorizeAspect -com.ruoyi.common.security.aspect.InnerAuthAspect -com.ruoyi.common.security.handler.GlobalExceptionHandler diff --git a/se-common/ruoyi-common-sensitive/pom.xml b/se-common/ruoyi-common-sensitive/pom.xml deleted file mode 100644 index f5f5c1d..0000000 --- a/se-common/ruoyi-common-sensitive/pom.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="http://maven.apache.org/POM/4.0.0" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common</artifactId> - <version>3.6.4</version> - </parent> - <modelVersion>4.0.0</modelVersion> - - <artifactId>ruoyi-common-sensitive</artifactId> - - <description> - ruoyi-common-sensitive鏁版嵁鑴辨晱 - </description> - - <dependencies> - - <!-- RuoYi Common Security --> - <dependency> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common-security</artifactId> - </dependency> - - </dependencies> -</project> \ No newline at end of file diff --git a/se-common/ruoyi-common-sensitive/src/main/java/com/ruoyi/common/sensitive/annotation/Sensitive.java b/se-common/ruoyi-common-sensitive/src/main/java/com/ruoyi/common/sensitive/annotation/Sensitive.java deleted file mode 100644 index 5ebd1e4..0000000 --- a/se-common/ruoyi-common-sensitive/src/main/java/com/ruoyi/common/sensitive/annotation/Sensitive.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.ruoyi.common.sensitive.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.ruoyi.common.sensitive.config.SensitiveJsonSerializer; -import com.ruoyi.common.sensitive.enums.DesensitizedType; - -/** - * 鏁版嵁鑴辨晱娉ㄨВ - * - * @author admin - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.FIELD) -@JacksonAnnotationsInside -@JsonSerialize(using = SensitiveJsonSerializer.class) -public @interface Sensitive -{ - DesensitizedType desensitizedType(); -} diff --git a/se-common/ruoyi-common-swagger/pom.xml b/se-common/ruoyi-common-swagger/pom.xml deleted file mode 100644 index cc48257..0000000 --- a/se-common/ruoyi-common-swagger/pom.xml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="http://maven.apache.org/POM/4.0.0" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common</artifactId> - <version>3.6.4</version> - </parent> - <modelVersion>4.0.0</modelVersion> - - <artifactId>ruoyi-common-swagger</artifactId> - - <description> - ruoyi-common-swagger绯荤粺鎺ュ彛 - </description> - - <dependencies> - - <!-- SpringBoot Web --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-web</artifactId> - </dependency> - - <!-- Swagger --> - <dependency> - <groupId>io.springfox</groupId> - <artifactId>springfox-swagger2</artifactId> - <version>${swagger.fox.version}</version> - </dependency> - - </dependencies> -</project> diff --git a/se-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java b/se-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java deleted file mode 100644 index c628e8c..0000000 --- a/se-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java +++ /dev/null @@ -1,123 +0,0 @@ -package com.ruoyi.common.swagger.config; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.function.Predicate; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; -import springfox.documentation.builders.ApiInfoBuilder; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.service.ApiInfo; -import springfox.documentation.service.ApiKey; -import springfox.documentation.service.AuthorizationScope; -import springfox.documentation.service.Contact; -import springfox.documentation.service.SecurityReference; -import springfox.documentation.service.SecurityScheme; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spi.service.contexts.SecurityContext; -import springfox.documentation.spring.web.plugins.ApiSelectorBuilder; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; - -@Configuration -@EnableSwagger2 -@EnableConfigurationProperties(SwaggerProperties.class) -@ConditionalOnProperty(name = "swagger.enabled", matchIfMissing = true) -@Import({SwaggerBeanPostProcessor.class, SwaggerWebConfiguration.class}) -public class SwaggerAutoConfiguration -{ - /** - * 榛樿鐨勬帓闄よ矾寰勶紝鎺掗櫎Spring Boot榛樿鐨勯敊璇鐞嗚矾寰勫拰绔偣 - */ - private static final List<String> DEFAULT_EXCLUDE_PATH = Arrays.asList("/error", "/actuator/**"); - - private static final String BASE_PATH = "/**"; - - @Bean - public Docket api(SwaggerProperties swaggerProperties) - { - // base-path澶勭悊 - if (swaggerProperties.getBasePath().isEmpty()) - { - swaggerProperties.getBasePath().add(BASE_PATH); - } - // noinspection unchecked - List<Predicate<String>> basePath = new ArrayList<Predicate<String>>(); - swaggerProperties.getBasePath().forEach(path -> basePath.add(PathSelectors.ant(path))); - - // exclude-path澶勭悊 - if (swaggerProperties.getExcludePath().isEmpty()) - { - swaggerProperties.getExcludePath().addAll(DEFAULT_EXCLUDE_PATH); - } - - List<Predicate<String>> excludePath = new ArrayList<>(); - swaggerProperties.getExcludePath().forEach(path -> excludePath.add(PathSelectors.ant(path))); - - ApiSelectorBuilder builder = new Docket(DocumentationType.SWAGGER_2).host(swaggerProperties.getHost()) - .apiInfo(apiInfo(swaggerProperties)).select() - .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage())); - - swaggerProperties.getBasePath().forEach(p -> builder.paths(PathSelectors.ant(p))); - swaggerProperties.getExcludePath().forEach(p -> builder.paths(PathSelectors.ant(p).negate())); - - return builder.build().securitySchemes(securitySchemes()).securityContexts(securityContexts()).pathMapping("/"); - } - - /** - * 瀹夊叏妯″紡锛岃繖閲屾寚瀹歵oken閫氳繃Authorization澶磋姹傚ご浼犻�� - */ - private List<SecurityScheme> securitySchemes() - { - List<SecurityScheme> apiKeyList = new ArrayList<SecurityScheme>(); - apiKeyList.add(new ApiKey("Authorization", "Authorization", "header")); - return apiKeyList; - } - - /** - * 瀹夊叏涓婁笅鏂� - */ - private List<SecurityContext> securityContexts() - { - List<SecurityContext> securityContexts = new ArrayList<>(); - securityContexts.add( - SecurityContext.builder() - .securityReferences(defaultAuth()) - .operationSelector(o -> o.requestMappingPattern().matches("/.*")) - .build()); - return securityContexts; - } - - /** - * 榛樿鐨勫叏灞�閴存潈绛栫暐 - * - * @return - */ - private List<SecurityReference> defaultAuth() - { - AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); - AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; - authorizationScopes[0] = authorizationScope; - List<SecurityReference> securityReferences = new ArrayList<>(); - securityReferences.add(new SecurityReference("Authorization", authorizationScopes)); - return securityReferences; - } - - private ApiInfo apiInfo(SwaggerProperties swaggerProperties) - { - return new ApiInfoBuilder() - .title(swaggerProperties.getTitle()) - .description(swaggerProperties.getDescription()) - .license(swaggerProperties.getLicense()) - .licenseUrl(swaggerProperties.getLicenseUrl()) - .termsOfServiceUrl(swaggerProperties.getTermsOfServiceUrl()) - .contact(new Contact(swaggerProperties.getContact().getName(), swaggerProperties.getContact().getUrl(), swaggerProperties.getContact().getEmail())) - .version(swaggerProperties.getVersion()) - .build(); - } -} diff --git a/se-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerProperties.java b/se-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerProperties.java deleted file mode 100644 index 7934ee3..0000000 --- a/se-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerProperties.java +++ /dev/null @@ -1,343 +0,0 @@ -package com.ruoyi.common.swagger.config; - -import java.util.ArrayList; -import java.util.List; -import org.springframework.boot.context.properties.ConfigurationProperties; - -@ConfigurationProperties("swagger") -public class SwaggerProperties -{ - /** - * 鏄惁寮�鍚痵wagger - */ - private Boolean enabled; - - /** - * swagger浼氳В鏋愮殑鍖呰矾寰� - **/ - private String basePackage = ""; - - /** - * swagger浼氳В鏋愮殑url瑙勫垯 - **/ - private List<String> basePath = new ArrayList<>(); - - /** - * 鍦╞asePath鍩虹涓婇渶瑕佹帓闄ょ殑url瑙勫垯 - **/ - private List<String> excludePath = new ArrayList<>(); - - /** - * 鏍囬 - **/ - private String title = ""; - - /** - * 鎻忚堪 - **/ - private String description = ""; - - /** - * 鐗堟湰 - **/ - private String version = ""; - - /** - * 璁稿彲璇� - **/ - private String license = ""; - - /** - * 璁稿彲璇乁RL - **/ - private String licenseUrl = ""; - - /** - * 鏈嶅姟鏉℃URL - **/ - private String termsOfServiceUrl = ""; - - /** - * host淇℃伅 - **/ - private String host = ""; - - /** - * 鑱旂郴浜轰俊鎭� - */ - private Contact contact = new Contact(); - - /** - * 鍏ㄥ眬缁熶竴閴存潈閰嶇疆 - **/ - private Authorization authorization = new Authorization(); - - public Boolean getEnabled() - { - return enabled; - } - - public void setEnabled(Boolean enabled) - { - this.enabled = enabled; - } - - public String getBasePackage() - { - return basePackage; - } - - public void setBasePackage(String basePackage) - { - this.basePackage = basePackage; - } - - public List<String> getBasePath() - { - return basePath; - } - - public void setBasePath(List<String> basePath) - { - this.basePath = basePath; - } - - public List<String> getExcludePath() - { - return excludePath; - } - - public void setExcludePath(List<String> excludePath) - { - this.excludePath = excludePath; - } - - public String getTitle() - { - return title; - } - - public void setTitle(String title) - { - this.title = title; - } - - public String getDescription() - { - return description; - } - - public void setDescription(String description) - { - this.description = description; - } - - public String getVersion() - { - return version; - } - - public void setVersion(String version) - { - this.version = version; - } - - public String getLicense() - { - return license; - } - - public void setLicense(String license) - { - this.license = license; - } - - public String getLicenseUrl() - { - return licenseUrl; - } - - public void setLicenseUrl(String licenseUrl) - { - this.licenseUrl = licenseUrl; - } - - public String getTermsOfServiceUrl() - { - return termsOfServiceUrl; - } - - public void setTermsOfServiceUrl(String termsOfServiceUrl) - { - this.termsOfServiceUrl = termsOfServiceUrl; - } - - public String getHost() - { - return host; - } - - public void setHost(String host) - { - this.host = host; - } - - public Contact getContact() - { - return contact; - } - - public void setContact(Contact contact) - { - this.contact = contact; - } - - public Authorization getAuthorization() - { - return authorization; - } - - public void setAuthorization(Authorization authorization) - { - this.authorization = authorization; - } - - public static class Contact - { - /** - * 鑱旂郴浜� - **/ - private String name = ""; - /** - * 鑱旂郴浜簎rl - **/ - private String url = ""; - /** - * 鑱旂郴浜篹mail - **/ - private String email = ""; - - public String getName() - { - return name; - } - - public void setName(String name) - { - this.name = name; - } - - public String getUrl() - { - return url; - } - - public void setUrl(String url) - { - this.url = url; - } - - public String getEmail() - { - return email; - } - - public void setEmail(String email) - { - this.email = email; - } - } - - public static class Authorization - { - /** - * 閴存潈绛栫暐ID锛岄渶瑕佸拰SecurityReferences ID淇濇寔涓�鑷� - */ - private String name = ""; - - /** - * 闇�瑕佸紑鍚壌鏉僓RL鐨勬鍒� - */ - private String authRegex = "^.*$"; - - /** - * 閴存潈浣滅敤鍩熷垪琛� - */ - private List<AuthorizationScope> authorizationScopeList = new ArrayList<>(); - - private List<String> tokenUrlList = new ArrayList<>(); - - public String getName() - { - return name; - } - - public void setName(String name) - { - this.name = name; - } - - public String getAuthRegex() - { - return authRegex; - } - - public void setAuthRegex(String authRegex) - { - this.authRegex = authRegex; - } - - public List<AuthorizationScope> getAuthorizationScopeList() - { - return authorizationScopeList; - } - - public void setAuthorizationScopeList(List<AuthorizationScope> authorizationScopeList) - { - this.authorizationScopeList = authorizationScopeList; - } - - public List<String> getTokenUrlList() - { - return tokenUrlList; - } - - public void setTokenUrlList(List<String> tokenUrlList) - { - this.tokenUrlList = tokenUrlList; - } - } - - public static class AuthorizationScope - { - /** - * 浣滅敤鍩熷悕绉� - */ - private String scope = ""; - - /** - * 浣滅敤鍩熸弿杩� - */ - private String description = ""; - - public String getScope() - { - return scope; - } - - public void setScope(String scope) - { - this.scope = scope; - } - - public String getDescription() - { - return description; - } - - public void setDescription(String description) - { - this.description = description; - } - } -} \ No newline at end of file diff --git a/se-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerWebConfiguration.java b/se-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerWebConfiguration.java deleted file mode 100644 index ebcba53..0000000 --- a/se-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerWebConfiguration.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.ruoyi.common.swagger.config; - -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -/** - * swagger 璧勬簮鏄犲皠璺緞 - * - * @author admin - */ -public class SwaggerWebConfiguration implements WebMvcConfigurer -{ - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) - { - /** swagger-ui 鍦板潃 */ - registry.addResourceHandler("/swagger-ui/**") - .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/"); - } -} \ No newline at end of file diff --git a/se-common/ruoyi-common-swagger/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/se-common/ruoyi-common-swagger/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index 4c2e499..0000000 --- a/se-common/ruoyi-common-swagger/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1,3 +0,0 @@ -# com.ruoyi.common.swagger.config.SwaggerAutoConfiguration -# com.ruoyi.common.swagger.config.SwaggerWebConfiguration -# com.ruoyi.common.swagger.config.SwaggerBeanPostProcessor diff --git a/ruoyi-gateway/pom.xml b/se-gateway/pom.xml similarity index 100% rename from ruoyi-gateway/pom.xml rename to se-gateway/pom.xml diff --git a/se-gateway/src/main/java/com/se/gateway/SeGatewayApplication.java b/se-gateway/src/main/java/com/se/gateway/SeGatewayApplication.java new file mode 100644 index 0000000..f2341e9 --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/SeGatewayApplication.java @@ -0,0 +1,20 @@ +package com.se.gateway; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; + +/** + * 缃戝叧鍚姩绋嬪簭 + * + * @author admin + */ +@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class }) +public class SeGatewayApplication +{ + public static void main(String[] args) + { + SpringApplication.run(SeGatewayApplication.class, args); + System.out.println(" 缃戝叧鍚姩鎴愬姛 "); + } +} diff --git a/se-gateway/src/main/java/com/se/gateway/config/CaptchaConfig.java b/se-gateway/src/main/java/com/se/gateway/config/CaptchaConfig.java new file mode 100644 index 0000000..a6fb2e9 --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/config/CaptchaConfig.java @@ -0,0 +1,83 @@ +package com.se.gateway.config; + +import java.util.Properties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import com.google.code.kaptcha.impl.DefaultKaptcha; +import com.google.code.kaptcha.util.Config; +import static com.google.code.kaptcha.Constants.*; + +/** + * 楠岃瘉鐮侀厤缃� + * + * @author admin + */ +@Configuration +public class CaptchaConfig +{ + @Bean(name = "captchaProducer") + public DefaultKaptcha getKaptchaBean() + { + DefaultKaptcha defaultKaptcha = new DefaultKaptcha(); + Properties properties = new Properties(); + // 鏄惁鏈夎竟妗� 榛樿涓簍rue 鎴戜滑鍙互鑷繁璁剧疆yes锛宯o + properties.setProperty(KAPTCHA_BORDER, "yes"); + // 楠岃瘉鐮佹枃鏈瓧绗﹂鑹� 榛樿涓篊olor.BLACK + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "black"); + // 楠岃瘉鐮佸浘鐗囧搴� 榛樿涓�200 + properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160"); + // 楠岃瘉鐮佸浘鐗囬珮搴� 榛樿涓�50 + properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60"); + // 楠岃瘉鐮佹枃鏈瓧绗﹀ぇ灏� 榛樿涓�40 + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "38"); + // KAPTCHA_SESSION_KEY + properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCode"); + // 楠岃瘉鐮佹枃鏈瓧绗﹂暱搴� 榛樿涓�5 + properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4"); + // 楠岃瘉鐮佹枃鏈瓧浣撴牱寮� 榛樿涓簄ew Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier"); + // 鍥剧墖鏍峰紡 姘寸汗com.google.code.kaptcha.impl.WaterRipple 楸肩溂com.google.code.kaptcha.impl.FishEyeGimpy 闃村奖com.google.code.kaptcha.impl.ShadowGimpy + properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy"); + Config config = new Config(properties); + defaultKaptcha.setConfig(config); + return defaultKaptcha; + } + + @Bean(name = "captchaProducerMath") + public DefaultKaptcha getKaptchaBeanMath() + { + DefaultKaptcha defaultKaptcha = new DefaultKaptcha(); + Properties properties = new Properties(); + // 鏄惁鏈夎竟妗� 榛樿涓簍rue 鎴戜滑鍙互鑷繁璁剧疆yes锛宯o + properties.setProperty(KAPTCHA_BORDER, "yes"); + // 杈规棰滆壊 榛樿涓篊olor.BLACK + properties.setProperty(KAPTCHA_BORDER_COLOR, "105,179,90"); + // 楠岃瘉鐮佹枃鏈瓧绗﹂鑹� 榛樿涓篊olor.BLACK + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue"); + // 楠岃瘉鐮佸浘鐗囧搴� 榛樿涓�200 + properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160"); + // 楠岃瘉鐮佸浘鐗囬珮搴� 榛樿涓�50 + properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60"); + // 楠岃瘉鐮佹枃鏈瓧绗﹀ぇ灏� 榛樿涓�40 + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "35"); + // KAPTCHA_SESSION_KEY + properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCodeMath"); + // 楠岃瘉鐮佹枃鏈敓鎴愬櫒 + properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "KaptchaTextCreator"); + // 楠岃瘉鐮佹枃鏈瓧绗﹂棿璺� 榛樿涓�2 + properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "3"); + // 楠岃瘉鐮佹枃鏈瓧绗﹂暱搴� 榛樿涓�5 + properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "6"); + // 楠岃瘉鐮佹枃鏈瓧浣撴牱寮� 榛樿涓簄ew Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier"); + // 楠岃瘉鐮佸櫔鐐归鑹� 榛樿涓篊olor.BLACK + properties.setProperty(KAPTCHA_NOISE_COLOR, "white"); + // 骞叉壈瀹炵幇绫� + properties.setProperty(KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise"); + // 鍥剧墖鏍峰紡 姘寸汗com.google.code.kaptcha.impl.WaterRipple 楸肩溂com.google.code.kaptcha.impl.FishEyeGimpy 闃村奖com.google.code.kaptcha.impl.ShadowGimpy + properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy"); + Config config = new Config(properties); + defaultKaptcha.setConfig(config); + return defaultKaptcha; + } +} \ No newline at end of file diff --git a/se-gateway/src/main/java/com/se/gateway/config/GatewayConfig.java b/se-gateway/src/main/java/com/se/gateway/config/GatewayConfig.java new file mode 100644 index 0000000..ebaf02b --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/config/GatewayConfig.java @@ -0,0 +1,23 @@ +package com.se.gateway.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; +import com.se.gateway.handler.SentinelFallbackHandler; + +/** + * 缃戝叧闄愭祦閰嶇疆 + * + * @author admin + */ +@Configuration +public class GatewayConfig +{ + @Bean + @Order(Ordered.HIGHEST_PRECEDENCE) + public SentinelFallbackHandler sentinelGatewayExceptionHandler() + { + return new SentinelFallbackHandler(); + } +} \ No newline at end of file diff --git a/se-gateway/src/main/java/com/se/gateway/config/KaptchaTextCreator.java b/se-gateway/src/main/java/com/se/gateway/config/KaptchaTextCreator.java new file mode 100644 index 0000000..ed75945 --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/config/KaptchaTextCreator.java @@ -0,0 +1,75 @@ +package com.se.gateway.config; + +import java.util.Random; +import com.google.code.kaptcha.text.impl.DefaultTextCreator; + +/** + * 楠岃瘉鐮佹枃鏈敓鎴愬櫒 + * + * @author admin + */ +public class KaptchaTextCreator extends DefaultTextCreator +{ + private static final String[] CNUMBERS = "0,1,2,3,4,5,6,7,8,9,10".split(","); + + @Override + public String getText() + { + Integer result = 0; + Random random = new Random(); + int x = random.nextInt(10); + int y = random.nextInt(10); + StringBuilder suChinese = new StringBuilder(); + int randomoperands = random.nextInt(3); + if (randomoperands == 0) + { + result = x * y; + suChinese.append(CNUMBERS[x]); + suChinese.append("*"); + suChinese.append(CNUMBERS[y]); + } + else if (randomoperands == 1) + { + if ((x != 0) && y % x == 0) + { + result = y / x; + suChinese.append(CNUMBERS[y]); + suChinese.append("/"); + suChinese.append(CNUMBERS[x]); + } + else + { + result = x + y; + suChinese.append(CNUMBERS[x]); + suChinese.append("+"); + suChinese.append(CNUMBERS[y]); + } + } + else if (randomoperands == 2) + { + if (x >= y) + { + result = x - y; + suChinese.append(CNUMBERS[x]); + suChinese.append("-"); + suChinese.append(CNUMBERS[y]); + } + else + { + result = y - x; + suChinese.append(CNUMBERS[y]); + suChinese.append("-"); + suChinese.append(CNUMBERS[x]); + } + } + else + { + result = x + y; + suChinese.append(CNUMBERS[x]); + suChinese.append("+"); + suChinese.append(CNUMBERS[y]); + } + suChinese.append("=?@" + result); + return suChinese.toString(); + } +} \ No newline at end of file diff --git a/se-gateway/src/main/java/com/se/gateway/config/RouterFunctionConfiguration.java b/se-gateway/src/main/java/com/se/gateway/config/RouterFunctionConfiguration.java new file mode 100644 index 0000000..add5c8d --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/config/RouterFunctionConfiguration.java @@ -0,0 +1,31 @@ +package com.se.gateway.config; + +import com.se.gateway.handler.ValidateCodeHandler; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.MediaType; +import org.springframework.web.reactive.function.server.RequestPredicates; +import org.springframework.web.reactive.function.server.RouterFunction; +import org.springframework.web.reactive.function.server.RouterFunctions; + +/** + * 璺敱閰嶇疆淇℃伅 + * + * @author admin + */ +@Configuration +public class RouterFunctionConfiguration +{ + @Autowired + private ValidateCodeHandler validateCodeHandler; + + @SuppressWarnings("rawtypes") + @Bean + public RouterFunction routerFunction() + { + return RouterFunctions.route( + RequestPredicates.GET("/code").and(RequestPredicates.accept(MediaType.TEXT_PLAIN)), + validateCodeHandler); + } +} diff --git a/se-gateway/src/main/java/com/se/gateway/config/SwaggerProvider.java b/se-gateway/src/main/java/com/se/gateway/config/SwaggerProvider.java new file mode 100644 index 0000000..badbe8f --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/config/SwaggerProvider.java @@ -0,0 +1,79 @@ +package com.se.gateway.config; + +import java.util.ArrayList; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.gateway.config.GatewayProperties; +import org.springframework.cloud.gateway.route.RouteLocator; +import org.springframework.cloud.gateway.support.NameUtils; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.config.ResourceHandlerRegistry; +import org.springframework.web.reactive.config.WebFluxConfigurer; +import springfox.documentation.swagger.web.SwaggerResource; +import springfox.documentation.swagger.web.SwaggerResourcesProvider; + +/** + * 鑱氬悎绯荤粺鎺ュ彛 + * + * @author admin + */ +@Component +public class SwaggerProvider implements SwaggerResourcesProvider, WebFluxConfigurer +{ + /** + * Swagger2榛樿鐨剈rl鍚庣紑 + */ + public static final String SWAGGER2URL = "/v2/api-docs"; + + /** + * 缃戝叧璺敱 + */ + @Lazy + @Autowired + private RouteLocator routeLocator; + + @Autowired + private GatewayProperties gatewayProperties; + + /** + * 鑱氬悎鍏朵粬鏈嶅姟鎺ュ彛 + * + * @return + */ + @Override + public List<SwaggerResource> get() + { + List<SwaggerResource> resourceList = new ArrayList<>(); + List<String> routes = new ArrayList<>(); + // 鑾峰彇缃戝叧涓厤缃殑route + routeLocator.getRoutes().subscribe(route -> routes.add(route.getId())); + gatewayProperties.getRoutes().stream() + .filter(routeDefinition -> routes + .contains(routeDefinition.getId())) + .forEach(routeDefinition -> routeDefinition.getPredicates().stream() + .filter(predicateDefinition -> "Path".equalsIgnoreCase(predicateDefinition.getName())) + .filter(predicateDefinition -> !"ruoyi-auth".equalsIgnoreCase(routeDefinition.getId())) + .forEach(predicateDefinition -> resourceList + .add(swaggerResource(routeDefinition.getId(), predicateDefinition.getArgs() + .get(NameUtils.GENERATED_NAME_PREFIX + "0").replace("/**", SWAGGER2URL))))); + return resourceList; + } + + private SwaggerResource swaggerResource(String name, String location) + { + SwaggerResource swaggerResource = new SwaggerResource(); + swaggerResource.setName(name); + swaggerResource.setLocation(location); + swaggerResource.setSwaggerVersion("2.0"); + return swaggerResource; + } + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) + { + /** swagger-ui 鍦板潃 */ + registry.addResourceHandler("/swagger-ui/**") + .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/"); + } +} diff --git a/se-gateway/src/main/java/com/se/gateway/config/properties/CaptchaProperties.java b/se-gateway/src/main/java/com/se/gateway/config/properties/CaptchaProperties.java new file mode 100644 index 0000000..2b67a94 --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/config/properties/CaptchaProperties.java @@ -0,0 +1,46 @@ +package com.se.gateway.config.properties; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.context.annotation.Configuration; + +/** + * 楠岃瘉鐮侀厤缃� + * + * @author admin + */ +@Configuration +@RefreshScope +@ConfigurationProperties(prefix = "security.captcha") +public class CaptchaProperties +{ + /** + * 楠岃瘉鐮佸紑鍏� + */ + private Boolean enabled; + + /** + * 楠岃瘉鐮佺被鍨嬶紙math 鏁扮粍璁$畻 char 瀛楃锛� + */ + private String type; + + public Boolean getEnabled() + { + return enabled; + } + + public void setEnabled(Boolean enabled) + { + this.enabled = enabled; + } + + public String getType() + { + return type; + } + + public void setType(String type) + { + this.type = type; + } +} diff --git a/se-gateway/src/main/java/com/se/gateway/config/properties/IgnoreWhiteProperties.java b/se-gateway/src/main/java/com/se/gateway/config/properties/IgnoreWhiteProperties.java new file mode 100644 index 0000000..21089cf --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/config/properties/IgnoreWhiteProperties.java @@ -0,0 +1,33 @@ +package com.se.gateway.config.properties; + +import java.util.ArrayList; +import java.util.List; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.context.annotation.Configuration; + +/** + * 鏀捐鐧藉悕鍗曢厤缃� + * + * @author admin + */ +@Configuration +@RefreshScope +@ConfigurationProperties(prefix = "security.ignore") +public class IgnoreWhiteProperties +{ + /** + * 鏀捐鐧藉悕鍗曢厤缃紝缃戝叧涓嶆牎楠屾澶勭殑鐧藉悕鍗� + */ + private List<String> whites = new ArrayList<>(); + + public List<String> getWhites() + { + return whites; + } + + public void setWhites(List<String> whites) + { + this.whites = whites; + } +} diff --git a/se-gateway/src/main/java/com/se/gateway/config/properties/XssProperties.java b/se-gateway/src/main/java/com/se/gateway/config/properties/XssProperties.java new file mode 100644 index 0000000..6f66969 --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/config/properties/XssProperties.java @@ -0,0 +1,48 @@ +package com.se.gateway.config.properties; + +import java.util.ArrayList; +import java.util.List; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.context.annotation.Configuration; + +/** + * XSS璺ㄧ珯鑴氭湰閰嶇疆 + * + * @author admin + */ +@Configuration +@RefreshScope +@ConfigurationProperties(prefix = "security.xss") +public class XssProperties +{ + /** + * Xss寮�鍏� + */ + private Boolean enabled; + + /** + * 鎺掗櫎璺緞 + */ + private List<String> excludeUrls = new ArrayList<>(); + + public Boolean getEnabled() + { + return enabled; + } + + public void setEnabled(Boolean enabled) + { + this.enabled = enabled; + } + + public List<String> getExcludeUrls() + { + return excludeUrls; + } + + public void setExcludeUrls(List<String> excludeUrls) + { + this.excludeUrls = excludeUrls; + } +} diff --git a/se-gateway/src/main/java/com/se/gateway/filter/AuthFilter.java b/se-gateway/src/main/java/com/se/gateway/filter/AuthFilter.java new file mode 100644 index 0000000..52323a6 --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/filter/AuthFilter.java @@ -0,0 +1,135 @@ +package com.se.gateway.filter; + +import com.se.gateway.config.properties.IgnoreWhiteProperties; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.gateway.filter.GatewayFilterChain; +import org.springframework.cloud.gateway.filter.GlobalFilter; +import org.springframework.core.Ordered; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.stereotype.Component; +import org.springframework.web.server.ServerWebExchange; +import com.se.common.core.constant.CacheConstants; +import com.se.common.core.constant.HttpStatus; +import com.se.common.core.constant.SecurityConstants; +import com.se.common.core.constant.TokenConstants; +import com.se.common.core.utils.JwtUtils; +import com.se.common.core.utils.ServletUtils; +import com.se.common.core.utils.StringUtils; +import com.se.common.redis.service.RedisService; +import io.jsonwebtoken.Claims; +import reactor.core.publisher.Mono; + +/** + * 缃戝叧閴存潈 + * + * @author admin + */ +@Component +public class AuthFilter implements GlobalFilter, Ordered +{ + private static final Logger log = LoggerFactory.getLogger(AuthFilter.class); + + // 鎺掗櫎杩囨护鐨� uri 鍦板潃锛宯acos鑷娣诲姞 + @Autowired + private IgnoreWhiteProperties ignoreWhite; + + @Autowired + private RedisService redisService; + + + @Override + public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) + { + ServerHttpRequest request = exchange.getRequest(); + ServerHttpRequest.Builder mutate = request.mutate(); + + String url = request.getURI().getPath(); + // 璺宠繃涓嶉渶瑕侀獙璇佺殑璺緞 + if (StringUtils.matches(url, ignoreWhite.getWhites())) + { + return chain.filter(exchange); + } + String token = getToken(request); + if (StringUtils.isEmpty(token)) + { + return unauthorizedResponse(exchange, "浠ょ墝涓嶈兘涓虹┖"); + } + Claims claims = JwtUtils.parseToken(token); + if (claims == null) + { + return unauthorizedResponse(exchange, "浠ょ墝宸茶繃鏈熸垨楠岃瘉涓嶆纭紒"); + } + String userkey = JwtUtils.getUserKey(claims); + boolean islogin = redisService.hasKey(getTokenKey(userkey)); + if (!islogin) + { + return unauthorizedResponse(exchange, "鐧诲綍鐘舵�佸凡杩囨湡"); + } + String userid = JwtUtils.getUserId(claims); + String username = JwtUtils.getUserName(claims); + if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username)) + { + return unauthorizedResponse(exchange, "浠ょ墝楠岃瘉澶辫触"); + } + + // 璁剧疆鐢ㄦ埛淇℃伅鍒拌姹� + addHeader(mutate, SecurityConstants.USER_KEY, userkey); + addHeader(mutate, SecurityConstants.DETAILS_USER_ID, userid); + addHeader(mutate, SecurityConstants.DETAILS_USERNAME, username); + // 鍐呴儴璇锋眰鏉ユ簮鍙傛暟娓呴櫎 + removeHeader(mutate, SecurityConstants.FROM_SOURCE); + return chain.filter(exchange.mutate().request(mutate.build()).build()); + } + + private void addHeader(ServerHttpRequest.Builder mutate, String name, Object value) + { + if (value == null) + { + return; + } + String valueStr = value.toString(); + String valueEncode = ServletUtils.urlEncode(valueStr); + mutate.header(name, valueEncode); + } + + private void removeHeader(ServerHttpRequest.Builder mutate, String name) + { + mutate.headers(httpHeaders -> httpHeaders.remove(name)).build(); + } + + private Mono<Void> unauthorizedResponse(ServerWebExchange exchange, String msg) + { + log.error("[閴存潈寮傚父澶勭悊]璇锋眰璺緞:{}", exchange.getRequest().getPath()); + return ServletUtils.webFluxResponseWriter(exchange.getResponse(), msg, HttpStatus.UNAUTHORIZED); + } + + /** + * 鑾峰彇缂撳瓨key + */ + private String getTokenKey(String token) + { + return CacheConstants.LOGIN_TOKEN_KEY + token; + } + + /** + * 鑾峰彇璇锋眰token + */ + private String getToken(ServerHttpRequest request) + { + String token = request.getHeaders().getFirst(TokenConstants.AUTHENTICATION); + // 濡傛灉鍓嶇璁剧疆浜嗕护鐗屽墠缂�锛屽垯瑁佸壀鎺夊墠缂� + if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) + { + token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY); + } + return token; + } + + @Override + public int getOrder() + { + return -200; + } +} \ No newline at end of file diff --git a/se-gateway/src/main/java/com/se/gateway/filter/BlackListUrlFilter.java b/se-gateway/src/main/java/com/se/gateway/filter/BlackListUrlFilter.java new file mode 100644 index 0000000..6cd3838 --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/filter/BlackListUrlFilter.java @@ -0,0 +1,65 @@ +package com.se.gateway.filter; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; +import org.springframework.cloud.gateway.filter.GatewayFilter; +import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; +import org.springframework.stereotype.Component; +import com.se.common.core.utils.ServletUtils; + +/** + * 榛戝悕鍗曡繃婊ゅ櫒 + * + * @author admin + */ +@Component +public class BlackListUrlFilter extends AbstractGatewayFilterFactory<BlackListUrlFilter.Config> +{ + @Override + public GatewayFilter apply(Config config) + { + return (exchange, chain) -> { + + String url = exchange.getRequest().getURI().getPath(); + if (config.matchBlacklist(url)) + { + return ServletUtils.webFluxResponseWriter(exchange.getResponse(), "璇锋眰鍦板潃涓嶅厑璁歌闂�"); + } + + return chain.filter(exchange); + }; + } + + public BlackListUrlFilter() + { + super(Config.class); + } + + public static class Config + { + private List<String> blacklistUrl; + + private List<Pattern> blacklistUrlPattern = new ArrayList<>(); + + public boolean matchBlacklist(String url) + { + return !blacklistUrlPattern.isEmpty() && blacklistUrlPattern.stream().anyMatch(p -> p.matcher(url).find()); + } + + public List<String> getBlacklistUrl() + { + return blacklistUrl; + } + + public void setBlacklistUrl(List<String> blacklistUrl) + { + this.blacklistUrl = blacklistUrl; + this.blacklistUrlPattern.clear(); + this.blacklistUrl.forEach(url -> { + this.blacklistUrlPattern.add(Pattern.compile(url.replaceAll("\\*\\*", "(.*?)"), Pattern.CASE_INSENSITIVE)); + }); + } + } + +} diff --git a/se-gateway/src/main/java/com/se/gateway/filter/CacheRequestFilter.java b/se-gateway/src/main/java/com/se/gateway/filter/CacheRequestFilter.java new file mode 100644 index 0000000..a0f69c3 --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/filter/CacheRequestFilter.java @@ -0,0 +1,87 @@ +package com.se.gateway.filter; + +import java.util.Collections; +import java.util.List; +import org.springframework.cloud.gateway.filter.GatewayFilter; +import org.springframework.cloud.gateway.filter.GatewayFilterChain; +import org.springframework.cloud.gateway.filter.OrderedGatewayFilter; +import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; +import org.springframework.cloud.gateway.support.ServerWebExchangeUtils; +import org.springframework.http.HttpMethod; +import org.springframework.stereotype.Component; +import org.springframework.web.server.ServerWebExchange; +import reactor.core.publisher.Mono; + +/** + * 鑾峰彇body璇锋眰鏁版嵁锛堣В鍐虫祦涓嶈兘閲嶅璇诲彇闂锛� + * + * @author admin + */ +@Component +public class CacheRequestFilter extends AbstractGatewayFilterFactory<CacheRequestFilter.Config> +{ + public CacheRequestFilter() + { + super(Config.class); + } + + @Override + public String name() + { + return "CacheRequestFilter"; + } + + @Override + public GatewayFilter apply(Config config) + { + CacheRequestGatewayFilter cacheRequestGatewayFilter = new CacheRequestGatewayFilter(); + Integer order = config.getOrder(); + if (order == null) + { + return cacheRequestGatewayFilter; + } + return new OrderedGatewayFilter(cacheRequestGatewayFilter, order); + } + + public static class CacheRequestGatewayFilter implements GatewayFilter + { + @Override + public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) + { + // GET DELETE 涓嶈繃婊� + HttpMethod method = exchange.getRequest().getMethod(); + if (method == null || method == HttpMethod.GET || method == HttpMethod.DELETE) + { + return chain.filter(exchange); + } + return ServerWebExchangeUtils.cacheRequestBodyAndRequest(exchange, (serverHttpRequest) -> { + if (serverHttpRequest == exchange.getRequest()) + { + return chain.filter(exchange); + } + return chain.filter(exchange.mutate().request(serverHttpRequest).build()); + }); + } + } + + @Override + public List<String> shortcutFieldOrder() + { + return Collections.singletonList("order"); + } + + static class Config + { + private Integer order; + + public Integer getOrder() + { + return order; + } + + public void setOrder(Integer order) + { + this.order = order; + } + } +} \ No newline at end of file diff --git a/se-gateway/src/main/java/com/se/gateway/filter/ValidateCodeFilter.java b/se-gateway/src/main/java/com/se/gateway/filter/ValidateCodeFilter.java new file mode 100644 index 0000000..9a80854 --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/filter/ValidateCodeFilter.java @@ -0,0 +1,80 @@ +package com.se.gateway.filter; + +import java.nio.CharBuffer; +import java.nio.charset.StandardCharsets; +import java.util.concurrent.atomic.AtomicReference; + +import com.se.gateway.service.ValidateCodeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.gateway.filter.GatewayFilter; +import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; +import org.springframework.core.io.buffer.DataBuffer; +import org.springframework.core.io.buffer.DataBufferUtils; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.stereotype.Component; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.se.common.core.utils.ServletUtils; +import com.se.common.core.utils.StringUtils; +import com.se.gateway.config.properties.CaptchaProperties; +import reactor.core.publisher.Flux; + +/** + * 楠岃瘉鐮佽繃婊ゅ櫒 + * + * @author admin + */ +@Component +public class ValidateCodeFilter extends AbstractGatewayFilterFactory<Object> +{ + private final static String[] VALIDATE_URL = new String[] { "/auth/login", "/auth/register" }; + + @Autowired + private ValidateCodeService validateCodeService; + + @Autowired + private CaptchaProperties captchaProperties; + + private static final String CODE = "code"; + + private static final String UUID = "uuid"; + + @Override + public GatewayFilter apply(Object config) + { + return (exchange, chain) -> { + ServerHttpRequest request = exchange.getRequest(); + + // 闈炵櫥褰�/娉ㄥ唽璇锋眰鎴栭獙璇佺爜鍏抽棴锛屼笉澶勭悊 + if (!StringUtils.equalsAnyIgnoreCase(request.getURI().getPath(), VALIDATE_URL) || !captchaProperties.getEnabled()) + { + return chain.filter(exchange); + } + + try + { + String rspStr = resolveBodyFromRequest(request); + JSONObject obj = JSON.parseObject(rspStr); + validateCodeService.checkCaptcha(obj.getString(CODE), obj.getString(UUID)); + } + catch (Exception e) + { + return ServletUtils.webFluxResponseWriter(exchange.getResponse(), e.getMessage()); + } + return chain.filter(exchange); + }; + } + + private String resolveBodyFromRequest(ServerHttpRequest serverHttpRequest) + { + // 鑾峰彇璇锋眰浣� + Flux<DataBuffer> body = serverHttpRequest.getBody(); + AtomicReference<String> bodyRef = new AtomicReference<>(); + body.subscribe(buffer -> { + CharBuffer charBuffer = StandardCharsets.UTF_8.decode(buffer.asByteBuffer()); + DataBufferUtils.release(buffer); + bodyRef.set(charBuffer.toString()); + }); + return bodyRef.get(); + } +} diff --git a/se-gateway/src/main/java/com/se/gateway/filter/XssFilter.java b/se-gateway/src/main/java/com/se/gateway/filter/XssFilter.java new file mode 100644 index 0000000..cf9d89b --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/filter/XssFilter.java @@ -0,0 +1,129 @@ +package com.se.gateway.filter; + +import java.nio.charset.StandardCharsets; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.cloud.gateway.filter.GatewayFilterChain; +import org.springframework.cloud.gateway.filter.GlobalFilter; +import org.springframework.core.Ordered; +import org.springframework.core.io.buffer.DataBuffer; +import org.springframework.core.io.buffer.DataBufferFactory; +import org.springframework.core.io.buffer.DataBufferUtils; +import org.springframework.core.io.buffer.DefaultDataBufferFactory; +import org.springframework.core.io.buffer.NettyDataBufferFactory; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.http.server.reactive.ServerHttpRequestDecorator; +import org.springframework.stereotype.Component; +import org.springframework.web.server.ServerWebExchange; +import com.se.common.core.utils.StringUtils; +import com.se.common.core.utils.html.EscapeUtil; +import com.se.gateway.config.properties.XssProperties; +import io.netty.buffer.ByteBufAllocator; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +/** + * 璺ㄧ珯鑴氭湰杩囨护鍣� + * + * @author admin + */ +@Component +@ConditionalOnProperty(value = "security.xss.enabled", havingValue = "true") +public class XssFilter implements GlobalFilter, Ordered +{ + // 璺ㄧ珯鑴氭湰鐨� xss 閰嶇疆锛宯acos鑷娣诲姞 + @Autowired + private XssProperties xss; + + @Override + public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) + { + ServerHttpRequest request = exchange.getRequest(); + // xss寮�鍏虫湭寮�鍚� 鎴� 閫氳繃nacos鍏抽棴锛屼笉杩囨护 + if (!xss.getEnabled()) + { + return chain.filter(exchange); + } + // GET DELETE 涓嶈繃婊� + HttpMethod method = request.getMethod(); + if (method == null || method == HttpMethod.GET || method == HttpMethod.DELETE) + { + return chain.filter(exchange); + } + // 闈瀓son绫诲瀷锛屼笉杩囨护 + if (!isJsonRequest(exchange)) + { + return chain.filter(exchange); + } + // excludeUrls 涓嶈繃婊� + String url = request.getURI().getPath(); + if (StringUtils.matches(url, xss.getExcludeUrls())) + { + return chain.filter(exchange); + } + ServerHttpRequestDecorator httpRequestDecorator = requestDecorator(exchange); + return chain.filter(exchange.mutate().request(httpRequestDecorator).build()); + + } + + private ServerHttpRequestDecorator requestDecorator(ServerWebExchange exchange) + { + ServerHttpRequestDecorator serverHttpRequestDecorator = new ServerHttpRequestDecorator(exchange.getRequest()) + { + @Override + public Flux<DataBuffer> getBody() + { + Flux<DataBuffer> body = super.getBody(); + return body.buffer().map(dataBuffers -> { + DataBufferFactory dataBufferFactory = new DefaultDataBufferFactory(); + DataBuffer join = dataBufferFactory.join(dataBuffers); + byte[] content = new byte[join.readableByteCount()]; + join.read(content); + DataBufferUtils.release(join); + String bodyStr = new String(content, StandardCharsets.UTF_8); + // 闃瞲ss鏀诲嚮杩囨护 + bodyStr = EscapeUtil.clean(bodyStr); + // 杞垚瀛楄妭 + byte[] bytes = bodyStr.getBytes(StandardCharsets.UTF_8); + NettyDataBufferFactory nettyDataBufferFactory = new NettyDataBufferFactory(ByteBufAllocator.DEFAULT); + DataBuffer buffer = nettyDataBufferFactory.allocateBuffer(bytes.length); + buffer.write(bytes); + return buffer; + }); + } + + @Override + public HttpHeaders getHeaders() + { + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.putAll(super.getHeaders()); + // 鐢变簬淇敼浜嗚姹備綋鐨刡ody锛屽鑷碿ontent-length闀垮害涓嶇‘瀹氾紝鍥犳闇�瑕佸垹闄ゅ師鍏堢殑content-length + httpHeaders.remove(HttpHeaders.CONTENT_LENGTH); + httpHeaders.set(HttpHeaders.TRANSFER_ENCODING, "chunked"); + return httpHeaders; + } + + }; + return serverHttpRequestDecorator; + } + + /** + * 鏄惁鏄疛son璇锋眰 + * + * @param exchange HTTP璇锋眰 + */ + public boolean isJsonRequest(ServerWebExchange exchange) + { + String header = exchange.getRequest().getHeaders().getFirst(HttpHeaders.CONTENT_TYPE); + return StringUtils.startsWithIgnoreCase(header, MediaType.APPLICATION_JSON_VALUE); + } + + @Override + public int getOrder() + { + return -100; + } +} diff --git a/se-gateway/src/main/java/com/se/gateway/handler/GatewayExceptionHandler.java b/se-gateway/src/main/java/com/se/gateway/handler/GatewayExceptionHandler.java new file mode 100644 index 0000000..3bca5ed --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/handler/GatewayExceptionHandler.java @@ -0,0 +1,56 @@ +package com.se.gateway.handler; + +import org.springframework.cloud.gateway.support.NotFoundException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.web.reactive.error.ErrorWebExceptionHandler; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.annotation.Order; +import org.springframework.http.server.reactive.ServerHttpResponse; +import org.springframework.web.server.ResponseStatusException; +import org.springframework.web.server.ServerWebExchange; +import com.se.common.core.utils.ServletUtils; +import reactor.core.publisher.Mono; + +/** + * 缃戝叧缁熶竴寮傚父澶勭悊 + * + * @author admin + */ +@Order(-1) +@Configuration +public class GatewayExceptionHandler implements ErrorWebExceptionHandler +{ + private static final Logger log = LoggerFactory.getLogger(GatewayExceptionHandler.class); + + @Override + public Mono<Void> handle(ServerWebExchange exchange, Throwable ex) + { + ServerHttpResponse response = exchange.getResponse(); + + if (exchange.getResponse().isCommitted()) + { + return Mono.error(ex); + } + + String msg; + + if (ex instanceof NotFoundException) + { + msg = "鏈嶅姟鏈壘鍒�"; + } + else if (ex instanceof ResponseStatusException) + { + ResponseStatusException responseStatusException = (ResponseStatusException) ex; + msg = responseStatusException.getMessage(); + } + else + { + msg = "鍐呴儴鏈嶅姟鍣ㄩ敊璇�"; + } + + log.error("[缃戝叧寮傚父澶勭悊]璇锋眰璺緞:{},寮傚父淇℃伅:{}", exchange.getRequest().getPath(), ex.getMessage()); + + return ServletUtils.webFluxResponseWriter(response, msg); + } +} \ No newline at end of file diff --git a/se-gateway/src/main/java/com/se/gateway/handler/SentinelFallbackHandler.java b/se-gateway/src/main/java/com/se/gateway/handler/SentinelFallbackHandler.java new file mode 100644 index 0000000..7400095 --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/handler/SentinelFallbackHandler.java @@ -0,0 +1,41 @@ +package com.se.gateway.handler; + +import com.alibaba.csp.sentinel.adapter.gateway.sc.callback.GatewayCallbackManager; +import com.alibaba.csp.sentinel.slots.block.BlockException; +import com.se.common.core.utils.ServletUtils; +import org.springframework.web.reactive.function.server.ServerResponse; +import org.springframework.web.server.ServerWebExchange; +import org.springframework.web.server.WebExceptionHandler; +import reactor.core.publisher.Mono; + +/** + * 鑷畾涔夐檺娴佸紓甯稿鐞� + * + * @author admin + */ +public class SentinelFallbackHandler implements WebExceptionHandler +{ + private Mono<Void> writeResponse(ServerResponse response, ServerWebExchange exchange) + { + return ServletUtils.webFluxResponseWriter(exchange.getResponse(), "璇锋眰瓒呰繃鏈�澶ф暟锛岃绋嶅�欏啀璇�"); + } + + @Override + public Mono<Void> handle(ServerWebExchange exchange, Throwable ex) + { + if (exchange.getResponse().isCommitted()) + { + return Mono.error(ex); + } + if (!BlockException.isBlockException(ex)) + { + return Mono.error(ex); + } + return handleBlockedRequest(exchange, ex).flatMap(response -> writeResponse(response, exchange)); + } + + private Mono<ServerResponse> handleBlockedRequest(ServerWebExchange exchange, Throwable throwable) + { + return GatewayCallbackManager.getBlockHandler().handleRequest(exchange, throwable); + } +} diff --git a/se-gateway/src/main/java/com/se/gateway/handler/SwaggerHandler.java b/se-gateway/src/main/java/com/se/gateway/handler/SwaggerHandler.java new file mode 100644 index 0000000..edc42c1 --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/handler/SwaggerHandler.java @@ -0,0 +1,56 @@ +package com.se.gateway.handler; + +import java.util.Optional; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import reactor.core.publisher.Mono; +import springfox.documentation.swagger.web.SecurityConfiguration; +import springfox.documentation.swagger.web.SecurityConfigurationBuilder; +import springfox.documentation.swagger.web.SwaggerResourcesProvider; +import springfox.documentation.swagger.web.UiConfiguration; +import springfox.documentation.swagger.web.UiConfigurationBuilder; + +@RestController +@RequestMapping("/swagger-resources") +public class SwaggerHandler +{ + @Autowired(required = false) + private SecurityConfiguration securityConfiguration; + + @Autowired(required = false) + private UiConfiguration uiConfiguration; + + private final SwaggerResourcesProvider swaggerResources; + + @Autowired + public SwaggerHandler(SwaggerResourcesProvider swaggerResources) + { + this.swaggerResources = swaggerResources; + } + + @GetMapping("/configuration/security") + public Mono<ResponseEntity<SecurityConfiguration>> securityConfiguration() + { + return Mono.just(new ResponseEntity<>( + Optional.ofNullable(securityConfiguration).orElse(SecurityConfigurationBuilder.builder().build()), + HttpStatus.OK)); + } + + @GetMapping("/configuration/ui") + public Mono<ResponseEntity<UiConfiguration>> uiConfiguration() + { + return Mono.just(new ResponseEntity<>( + Optional.ofNullable(uiConfiguration).orElse(UiConfigurationBuilder.builder().build()), HttpStatus.OK)); + } + + @SuppressWarnings("rawtypes") + @GetMapping("") + public Mono<ResponseEntity> swaggerResources() + { + return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK))); + } +} diff --git a/se-gateway/src/main/java/com/se/gateway/handler/ValidateCodeHandler.java b/se-gateway/src/main/java/com/se/gateway/handler/ValidateCodeHandler.java new file mode 100644 index 0000000..5882d4d --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/handler/ValidateCodeHandler.java @@ -0,0 +1,42 @@ +package com.se.gateway.handler; + +import java.io.IOException; + +import com.se.gateway.service.ValidateCodeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.BodyInserters; +import org.springframework.web.reactive.function.server.HandlerFunction; +import org.springframework.web.reactive.function.server.ServerRequest; +import org.springframework.web.reactive.function.server.ServerResponse; +import com.se.common.core.exception.CaptchaException; +import com.se.common.core.web.domain.AjaxResult; +import reactor.core.publisher.Mono; + +/** + * 楠岃瘉鐮佽幏鍙� + * + * @author admin + */ +@Component +public class ValidateCodeHandler implements HandlerFunction<ServerResponse> +{ + @Autowired + private ValidateCodeService validateCodeService; + + @Override + public Mono<ServerResponse> handle(ServerRequest serverRequest) + { + AjaxResult ajax; + try + { + ajax = validateCodeService.createCaptcha(); + } + catch (CaptchaException | IOException e) + { + return Mono.error(e); + } + return ServerResponse.status(HttpStatus.OK).body(BodyInserters.fromValue(ajax)); + } +} diff --git a/se-gateway/src/main/java/com/se/gateway/service/ValidateCodeService.java b/se-gateway/src/main/java/com/se/gateway/service/ValidateCodeService.java new file mode 100644 index 0000000..db83c28 --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/service/ValidateCodeService.java @@ -0,0 +1,23 @@ +package com.se.gateway.service; + +import java.io.IOException; +import com.se.common.core.exception.CaptchaException; +import com.se.common.core.web.domain.AjaxResult; + +/** + * 楠岃瘉鐮佸鐞� + * + * @author admin + */ +public interface ValidateCodeService +{ + /** + * 鐢熸垚楠岃瘉鐮� + */ + public AjaxResult createCaptcha() throws IOException, CaptchaException; + + /** + * 鏍¢獙楠岃瘉鐮� + */ + public void checkCaptcha(String key, String value) throws CaptchaException; +} diff --git a/se-gateway/src/main/java/com/se/gateway/service/impl/ValidateCodeServiceImpl.java b/se-gateway/src/main/java/com/se/gateway/service/impl/ValidateCodeServiceImpl.java new file mode 100644 index 0000000..913ceeb --- /dev/null +++ b/se-gateway/src/main/java/com/se/gateway/service/impl/ValidateCodeServiceImpl.java @@ -0,0 +1,119 @@ +package com.se.gateway.service.impl; + +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.util.concurrent.TimeUnit; +import javax.annotation.Resource; +import javax.imageio.ImageIO; + +import com.se.gateway.config.properties.CaptchaProperties; +import com.se.gateway.service.ValidateCodeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.FastByteArrayOutputStream; +import com.google.code.kaptcha.Producer; +import com.se.common.core.constant.CacheConstants; +import com.se.common.core.constant.Constants; +import com.se.common.core.exception.CaptchaException; +import com.se.common.core.utils.StringUtils; +import com.se.common.core.utils.sign.Base64; +import com.se.common.core.utils.uuid.IdUtils; +import com.se.common.core.web.domain.AjaxResult; +import com.se.common.redis.service.RedisService; + +/** + * 楠岃瘉鐮佸疄鐜板鐞� + * + * @author admin + */ +@Service +public class ValidateCodeServiceImpl implements ValidateCodeService +{ + @Resource(name = "captchaProducer") + private Producer captchaProducer; + + @Resource(name = "captchaProducerMath") + private Producer captchaProducerMath; + + @Autowired + private RedisService redisService; + + @Autowired + private CaptchaProperties captchaProperties; + + /** + * 鐢熸垚楠岃瘉鐮� + */ + @Override + public AjaxResult createCaptcha() throws IOException, CaptchaException + { + AjaxResult ajax = AjaxResult.success(); + boolean captchaEnabled = captchaProperties.getEnabled(); + ajax.put("captchaEnabled", captchaEnabled); + if (!captchaEnabled) + { + return ajax; + } + + // 淇濆瓨楠岃瘉鐮佷俊鎭� + String uuid = IdUtils.simpleUUID(); + String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid; + + String capStr = null, code = null; + BufferedImage image = null; + + String captchaType = captchaProperties.getType(); + // 鐢熸垚楠岃瘉鐮� + if ("math".equals(captchaType)) + { + String capText = captchaProducerMath.createText(); + capStr = capText.substring(0, capText.lastIndexOf("@")); + code = capText.substring(capText.lastIndexOf("@") + 1); + image = captchaProducerMath.createImage(capStr); + } + else if ("char".equals(captchaType)) + { + capStr = code = captchaProducer.createText(); + image = captchaProducer.createImage(capStr); + } + + redisService.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); + // 杞崲娴佷俊鎭啓鍑� + FastByteArrayOutputStream os = new FastByteArrayOutputStream(); + try + { + ImageIO.write(image, "jpg", os); + } + catch (IOException e) + { + return AjaxResult.error(e.getMessage()); + } + + ajax.put("uuid", uuid); + ajax.put("img", Base64.encode(os.toByteArray())); + return ajax; + } + + /** + * 鏍¢獙楠岃瘉鐮� + */ + @Override + public void checkCaptcha(String code, String uuid) throws CaptchaException + { + if (StringUtils.isEmpty(code)) + { + throw new CaptchaException("楠岃瘉鐮佷笉鑳戒负绌�"); + } + String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, ""); + String captcha = redisService.getCacheObject(verifyKey); + if (captcha == null) + { + throw new CaptchaException("楠岃瘉鐮佸凡澶辨晥"); + } + redisService.deleteObject(verifyKey); + if (!code.equalsIgnoreCase(captcha)) + { + throw new CaptchaException("楠岃瘉鐮侀敊璇�"); + } + } +} diff --git a/se-gateway/src/main/resources/banner.txt b/se-gateway/src/main/resources/banner.txt new file mode 100644 index 0000000..cf2c628 --- /dev/null +++ b/se-gateway/src/main/resources/banner.txt @@ -0,0 +1,3 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} +SeGatewayApplication锛屽凡缁忓惎鍔� \ No newline at end of file diff --git a/ruoyi-gateway/src/main/resources/bootstrap.yml b/se-gateway/src/main/resources/bootstrap.yml similarity index 100% rename from ruoyi-gateway/src/main/resources/bootstrap.yml rename to se-gateway/src/main/resources/bootstrap.yml diff --git a/ruoyi-gateway/src/main/resources/logback.xml b/se-gateway/src/main/resources/logback.xml similarity index 100% rename from ruoyi-gateway/src/main/resources/logback.xml rename to se-gateway/src/main/resources/logback.xml diff --git a/se-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/RuoYiMonitorApplication.java b/se-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/RuoYiMonitorApplication.java deleted file mode 100644 index b5adc7f..0000000 --- a/se-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/RuoYiMonitorApplication.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.ruoyi.modules.monitor; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import de.codecentric.boot.admin.server.config.EnableAdminServer; - -/** - * 鐩戞帶涓績 - * - * @author admin - */ -@EnableAdminServer -@SpringBootApplication -public class RuoYiMonitorApplication -{ - public static void main(String[] args) - { - SpringApplication.run(RuoYiMonitorApplication.class, args); - System.out.println("(鈾モ棤鈥库棤)锞夛緸 鐩戞帶涓績鍚姩鎴愬姛 醿�(麓凇`醿�)锞� \n" + - " .-------. ____ __ \n" + - " | _ _ \\ \\ \\ / / \n" + - " | ( ' ) | \\ _. / ' \n" + - " |(_ o _) / _( )_ .' \n" + - " | (_,_).' __ ___(_ o _)' \n" + - " | |\\ \\ | || |(_,_)' \n" + - " | | \\ `' /| `-' / \n" + - " | | \\ / \\ / \n" + - " ''-' `'-' `-..-' "); - } -} diff --git a/se-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/config/WebSecurityConfigurer.java b/se-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/config/WebSecurityConfigurer.java deleted file mode 100644 index c8f9175..0000000 --- a/se-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/config/WebSecurityConfigurer.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.ruoyi.modules.monitor.config; - -import de.codecentric.boot.admin.server.config.AdminServerProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.web.SecurityFilterChain; -import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; - -/** - * 鐩戞帶鏉冮檺閰嶇疆 - * - * @author admin - */ -@EnableWebSecurity -public class WebSecurityConfigurer -{ - private final String adminContextPath; - - public WebSecurityConfigurer(AdminServerProperties adminServerProperties) - { - this.adminContextPath = adminServerProperties.getContextPath(); - } - - @Bean - public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception - { - SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); - successHandler.setTargetUrlParameter("redirectTo"); - successHandler.setDefaultTargetUrl(adminContextPath + "/"); - - return httpSecurity - .headers().frameOptions().disable() - .and().authorizeRequests() - .antMatchers(adminContextPath + "/assets/**" - , adminContextPath + "/login" - , adminContextPath + "/actuator/**" - , adminContextPath + "/instances/**" - ).permitAll() - .anyRequest().authenticated() - .and() - .formLogin().loginPage(adminContextPath + "/login") - .successHandler(successHandler).and() - .logout().logoutUrl(adminContextPath + "/logout") - .and() - .httpBasic().and() - .csrf() - .disable() - .build(); - } -} diff --git a/se-visual/ruoyi-monitor/src/main/resources/banner.txt b/se-visual/ruoyi-monitor/src/main/resources/banner.txt deleted file mode 100644 index ecaf8a4..0000000 --- a/se-visual/ruoyi-monitor/src/main/resources/banner.txt +++ /dev/null @@ -1,10 +0,0 @@ -Spring Boot Version: ${spring-boot.version} -Spring Application Name: ${spring.application.name} - _ _ _ - (_) (_)| | - _ __ _ _ ___ _ _ _ ______ _ __ ___ ___ _ __ _ | |_ ___ _ __ -| '__|| | | | / _ \ | | | || ||______|| '_ ` _ \ / _ \ | '_ \ | || __| / _ \ | '__| -| | | |_| || (_) || |_| || | | | | | | || (_) || | | || || |_ | (_) || | -|_| \__,_| \___/ \__, ||_| |_| |_| |_| \___/ |_| |_||_| \__| \___/ |_| - __/ | - |___/ \ No newline at end of file diff --git a/se-visual/ruoyi-monitor/pom.xml b/se-visual/se-monitor/pom.xml similarity index 100% rename from se-visual/ruoyi-monitor/pom.xml rename to se-visual/se-monitor/pom.xml diff --git a/se-visual/se-monitor/src/main/java/com/se/modules/monitor/SeMonitorApplication.java b/se-visual/se-monitor/src/main/java/com/se/modules/monitor/SeMonitorApplication.java new file mode 100644 index 0000000..b0a56ca --- /dev/null +++ b/se-visual/se-monitor/src/main/java/com/se/modules/monitor/SeMonitorApplication.java @@ -0,0 +1,30 @@ +package com.se.modules.monitor; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import de.codecentric.boot.admin.server.config.EnableAdminServer; + +/** + * 鐩戞帶涓績 + * + * @author admin + */ +@EnableAdminServer +@SpringBootApplication +public class SeMonitorApplication +{ + public static void main(String[] args) + { + SpringApplication.run(SeMonitorApplication.class, args); + System.out.println("(鈾モ棤鈥库棤)锞夛緸 鐩戞帶涓績鍚姩鎴愬姛 醿�(麓凇`醿�)锞� \n" + + " .-------. ____ __ \n" + + " | _ _ \\ \\ \\ / / \n" + + " | ( ' ) | \\ _. / ' \n" + + " |(_ o _) / _( )_ .' \n" + + " | (_,_).' __ ___(_ o _)' \n" + + " | |\\ \\ | || |(_,_)' \n" + + " | | \\ `' /| `-' / \n" + + " | | \\ / \\ / \n" + + " ''-' `'-' `-..-' "); + } +} diff --git a/se-visual/se-monitor/src/main/java/com/se/modules/monitor/config/WebSecurityConfigurer.java b/se-visual/se-monitor/src/main/java/com/se/modules/monitor/config/WebSecurityConfigurer.java new file mode 100644 index 0000000..df88aed --- /dev/null +++ b/se-visual/se-monitor/src/main/java/com/se/modules/monitor/config/WebSecurityConfigurer.java @@ -0,0 +1,51 @@ +package com.se.modules.monitor.config; + +import de.codecentric.boot.admin.server.config.AdminServerProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; + +/** + * 鐩戞帶鏉冮檺閰嶇疆 + * + * @author admin + */ +@EnableWebSecurity +public class WebSecurityConfigurer +{ + private final String adminContextPath; + + public WebSecurityConfigurer(AdminServerProperties adminServerProperties) + { + this.adminContextPath = adminServerProperties.getContextPath(); + } + + @Bean + public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception + { + SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); + successHandler.setTargetUrlParameter("redirectTo"); + successHandler.setDefaultTargetUrl(adminContextPath + "/"); + + return httpSecurity + .headers().frameOptions().disable() + .and().authorizeRequests() + .antMatchers(adminContextPath + "/assets/**" + , adminContextPath + "/login" + , adminContextPath + "/actuator/**" + , adminContextPath + "/instances/**" + ).permitAll() + .anyRequest().authenticated() + .and() + .formLogin().loginPage(adminContextPath + "/login") + .successHandler(successHandler).and() + .logout().logoutUrl(adminContextPath + "/logout") + .and() + .httpBasic().and() + .csrf() + .disable() + .build(); + } +} diff --git a/se-visual/se-monitor/src/main/resources/banner.txt b/se-visual/se-monitor/src/main/resources/banner.txt new file mode 100644 index 0000000..1bed2a5 --- /dev/null +++ b/se-visual/se-monitor/src/main/resources/banner.txt @@ -0,0 +1,3 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} +SeMonitorApplication锛屽凡缁忓惎鍔� \ No newline at end of file diff --git a/se-visual/ruoyi-monitor/src/main/resources/bootstrap.yml b/se-visual/se-monitor/src/main/resources/bootstrap.yml similarity index 100% rename from se-visual/ruoyi-monitor/src/main/resources/bootstrap.yml rename to se-visual/se-monitor/src/main/resources/bootstrap.yml diff --git a/se-visual/ruoyi-monitor/src/main/resources/logback.xml b/se-visual/se-monitor/src/main/resources/logback.xml similarity index 100% rename from se-visual/ruoyi-monitor/src/main/resources/logback.xml rename to se-visual/se-monitor/src/main/resources/logback.xml -- Gitblit v1.9.3