From 15fdb9b2183a4c36b4036e419107fc4571507720 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期二, 11 五月 2021 17:37:27 +0800 Subject: [PATCH] !32 版本更新 v1.0.1 Merge pull request !32 from 疯狂的狮子li/dev --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java | 2 ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java | 58 +++++++++----- ruoyi-framework/src/main/java/com/ruoyi/framework/config/FeignConfig.java | 2 pom.xml | 2 ruoyi-admin/src/main/resources/application.yml | 26 ++++++ ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java | 2 ruoyi-admin/src/main/resources/banner.txt | 10 ++ ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java | 3 ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java | 14 +-- ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java | 2 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java | 4 + ruoyi-ui/package.json | 2 ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java | 1 ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java | 60 +++++++++----- ruoyi-common/src/main/java/com/ruoyi/common/exception/file/InvalidExtensionException.java | 10 ++ ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java | 17 ++- ruoyi-ui/src/assets/styles/element-ui.scss | 8 ++ 17 files changed, 158 insertions(+), 65 deletions(-) diff --git a/pom.xml b/pom.xml index 43443e1..74ccf9d 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ <description>RuoYi-Vue-Plus鍚庡彴绠$悊绯荤粺</description> <properties> - <ruoyi-vue-plus.version>1.0.0</ruoyi-vue-plus.version> + <ruoyi-vue-plus.version>1.0.1</ruoyi-vue-plus.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> diff --git a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java index 6be5918..5b55927 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java @@ -17,6 +17,6 @@ { System.setProperty("spring.devtools.restart.enabled", "false"); SpringApplication.run(RuoYiApplication.class, args); - System.out.println("(鈾モ棤鈥库棤)锞夛緸 鑻ヤ緷鍚姩鎴愬姛 醿�(麓凇`醿�)锞�"); + System.out.println("(鈾モ棤鈥库棤)锞夛緸 RuoYi-Vue-Plus鍚姩鎴愬姛 醿�(麓凇`醿�)锞�"); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java index 0332a14..1d7eb02 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java @@ -48,6 +48,7 @@ return util.exportExcel(list, "鎿嶄綔鏃ュ織"); } + @Log(title = "鎿嶄綔鏃ュ織", businessType = BusinessType.DELETE) @PreAuthorize("@ss.hasPermi('monitor:operlog:remove')") @DeleteMapping("/{operIds}") public AjaxResult remove(@PathVariable Long[] operIds) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java index 9657081..8a1b74b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java @@ -21,32 +21,54 @@ /** * Swagger2鐨勬帴鍙i厤缃� - * - * @author ruoyi + * + * @author Lion Li */ @Configuration @EnableSwagger2WebMvc @EnableKnife4j -public class SwaggerConfig -{ - /** 绯荤粺鍩虹閰嶇疆 */ +public class SwaggerConfig { + /** + * 绯荤粺鍩虹閰嶇疆 + */ @Autowired private RuoYiConfig ruoyiConfig; - /** 鏄惁寮�鍚痵wagger */ + /** + * 鏄惁寮�鍚痵wagger + */ @Value("${swagger.enabled}") private boolean enabled; - /** 璁剧疆璇锋眰鐨勭粺涓�鍓嶇紑 */ + /** + * 璁剧疆璇锋眰鐨勭粺涓�鍓嶇紑 + */ @Value("${swagger.pathMapping}") private String pathMapping; + + /** + * 鏍囬 + */ + @Value("${swagger.title}") + private String title; + + /** + * 鎻忚堪 + */ + @Value("${swagger.description}") + private String description; + + /** + * 鐗堟湰 + */ + @Value("${swagger.version}") + private String version; /** * 鍒涘缓API */ @Bean - public Docket createRestApi() - { + public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) // 鏄惁鍚敤Swagger .enable(enabled) @@ -70,8 +92,7 @@ /** * 瀹夊叏妯″紡锛岃繖閲屾寚瀹歵oken閫氳繃Authorization澶磋姹傚ご浼犻�� */ - private List<ApiKey> securitySchemes() - { + private List<ApiKey> securitySchemes() { List<ApiKey> apiKeyList = new ArrayList<ApiKey>(); apiKeyList.add(new ApiKey("Authorization", "Authorization", "header")); return apiKeyList; @@ -80,8 +101,7 @@ /** * 瀹夊叏涓婁笅鏂� */ - private List<SecurityContext> securityContexts() - { + private List<SecurityContext> securityContexts() { List<SecurityContext> securityContexts = new ArrayList<>(); securityContexts.add( SecurityContext.builder() @@ -94,8 +114,7 @@ /** * 榛樿鐨勫畨鍏ㄤ笂寮曠敤 */ - private List<SecurityReference> defaultAuth() - { + private List<SecurityReference> defaultAuth() { AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; authorizationScopes[0] = authorizationScope; @@ -107,18 +126,17 @@ /** * 娣诲姞鎽樿淇℃伅 */ - private ApiInfo apiInfo() - { + private ApiInfo apiInfo() { // 鐢ˋpiInfoBuilder杩涜瀹氬埗 return new ApiInfoBuilder() // 璁剧疆鏍囬 - .title("鏍囬锛氳嫢渚濈鐞嗙郴缁焈鎺ュ彛鏂囨。") + .title(title) // 鎻忚堪 - .description("鎻忚堪锛氱敤浜庣鐞嗛泦鍥㈡棗涓嬪叕鍙哥殑浜哄憳淇℃伅,鍏蜂綋鍖呮嫭XXX,XXX妯″潡...") + .description(description) // 浣滆�呬俊鎭� .contact(new Contact(ruoyiConfig.getName(), null, null)) // 鐗堟湰 - .version("鐗堟湰鍙�:" + ruoyiConfig.getVersion()) + .version(version) .build(); } } diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 44bc437..8500728 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -119,6 +119,7 @@ # MyBatis閰嶇疆 # https://baomidou.com/config/ mybatis-plus: + mapperPackage: com.ruoyi.**.mapper # 瀵瑰簲鐨� XML 鏂囦欢浣嶇疆 mapperLocations: classpath*:mapper/**/*Mapper.xml # 瀹炰綋鎵弿锛屽涓猵ackage鐢ㄩ�楀彿鎴栬�呭垎鍙峰垎闅� @@ -217,6 +218,12 @@ enabled: true # 璇锋眰鍓嶇紑 pathMapping: /dev-api + # 鏍囬 + title: '鏍囬锛歊uoYi-Vue-Plus鍚庡彴绠$悊绯荤粺_鎺ュ彛鏂囨。' + # 鎻忚堪 + description: '鎻忚堪锛氱敤浜庣鐞嗛泦鍥㈡棗涓嬪叕鍙哥殑浜哄憳淇℃伅,鍏蜂綋鍖呮嫭XXX,XXX妯″潡...' + # 鐗堟湰 + version: '鐗堟湰鍙�: ${ruoyi-vue-plus.version}' # 闃叉XSS鏀诲嚮 xss: @@ -227,7 +234,26 @@ # 鍖归厤閾炬帴 urlPatterns: /system/*,/monitor/*,/tool/* +threadPoolConfig: + # 鏄惁寮�鍚嚎绋嬫睜 + enabled: false + # 鏍稿績绾跨▼姹犲ぇ灏� + corePoolSize: 8 + # 鏈�澶у彲鍒涘缓鐨勭嚎绋嬫暟 + maxPoolSize: 16 + # 闃熷垪鏈�澶ч暱搴� + queueCapacity: 128 + # 绾跨▼姹犵淮鎶ょ嚎绋嬫墍鍏佽鐨勭┖闂叉椂闂� + keepAliveSeconds: 300 + # 绾跨▼姹犲鎷掔粷浠诲姟(鏃犵嚎绋嬪彲鐢�)鐨勫鐞嗙瓥鐣� + # CallerRunsPolicy 绛夊緟 + # DiscardOldestPolicy 鏀惧純鏈�鏃х殑 + # DiscardPolicy 涓㈠純 + # AbortPolicy 涓 + rejectedExecutionHandler: CallerRunsPolicy + feign: + package: com.ruoyi.**.feign # 寮�鍚帇缂� compression: request: diff --git a/ruoyi-admin/src/main/resources/banner.txt b/ruoyi-admin/src/main/resources/banner.txt index fee1ce3..f592dbe 100644 --- a/ruoyi-admin/src/main/resources/banner.txt +++ b/ruoyi-admin/src/main/resources/banner.txt @@ -1,2 +1,8 @@ -Application Version: ${ruoyi.version} -Spring Boot Version: ${spring-boot.version} \ No newline at end of file +Application Version: ${ruoyi-vue-plus.version} +Spring Boot Version: ${spring-boot.version} +__________ _____.___.__ ____ ____ __________.__ +\______ \__ __ ____\__ | |__| \ \ / /_ __ ____ \______ \ | __ __ ______ + | _/ | \/ _ \/ | | | ______ \ Y / | \_/ __ \ ______ | ___/ | | | \/ ___/ + | | \ | ( <_> )____ | | /_____/ \ /| | /\ ___/ /_____/ | | | |_| | /\___ \ + |____|_ /____/ \____// ______|__| \___/ |____/ \___ > |____| |____/____//____ > + \/ \/ \/ \/ diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/InvalidExtensionException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/InvalidExtensionException.java index 8f63a79..f1c8e83 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/InvalidExtensionException.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/InvalidExtensionException.java @@ -68,4 +68,14 @@ 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/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java index 672c023..cb4a225 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java @@ -133,15 +133,13 @@ { File desc = new File(uploadDir + File.separator + fileName); - if (!desc.getParentFile().exists()) + if (!desc.exists()) { - desc.getParentFile().mkdirs(); + if (!desc.getParentFile().exists()) + { + desc.getParentFile().mkdirs(); + } } - // 瑙e喅undertow鏂囦欢涓婁紶bug,鍥犲簳灞傚疄鐜颁笉鍚�,鏃犻渶鍒涘缓鏂版枃浠� -// if (!desc.exists()) -// { -// desc.createNewFile(); -// } return desc; } @@ -189,6 +187,11 @@ 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); diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java index 6984641..f968f1a 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java @@ -24,6 +24,8 @@ public static final String[] MEDIA_EXTENSION = { "swf", "flv", "mp3", "wav", "wma", "wmv", "mid", "avi", "mpg", "asf", "rm", "rmvb" }; + public static final String[] VIDEO_EXTENSION = { "mp4", "avi", "rmvb" }; + public static final String[] DEFAULT_ALLOWED_EXTENSION = { // 鍥剧墖 "bmp", "gif", "jpg", "jpeg", "png", @@ -31,6 +33,8 @@ "doc", "docx", "xls", "xlsx", "ppt", "pptx", "html", "htm", "txt", // 鍘嬬缉鏂囦欢 "rar", "zip", "gz", "bz2", + // 瑙嗛鏍煎紡 + "mp4", "avi", "rmvb", // pdf "pdf" }; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java index 1d4dc1f..183c364 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java @@ -1,30 +1,26 @@ package com.ruoyi.framework.config; -import java.util.TimeZone; -import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.EnableAspectJAutoProxy; +import java.util.TimeZone; + /** * 绋嬪簭娉ㄨВ閰嶇疆 * - * @author ruoyi + * @author Lion Li */ @Configuration // 琛ㄧず閫氳繃aop妗嗘灦鏆撮湶璇ヤ唬鐞嗗璞�,AopContext鑳藉璁块棶 @EnableAspectJAutoProxy(exposeProxy = true) -// 鎸囧畾瑕佹壂鎻忕殑Mapper绫荤殑鍖呯殑璺緞 -@MapperScan("com.ruoyi.**.mapper") -public class ApplicationConfig -{ +public class ApplicationConfig { /** * 鏃跺尯閰嶇疆 */ @Bean - public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() - { + public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() { return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault()); } } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FeignConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FeignConfig.java index df09516..478a450 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FeignConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FeignConfig.java @@ -19,7 +19,7 @@ * * @author Lion Li */ -@EnableFeignClients("com.ruoyi.**.feign") +@EnableFeignClients("${feign.package}") @Configuration @ConditionalOnClass(Feign.class) @AutoConfigureBefore(FeignAutoConfiguration.class) diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java index 93a202c..bce2150 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.ruoyi.framework.mybatisplus.CreateAndUpdateMetaObjectHandler; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -17,6 +18,8 @@ */ @EnableTransactionManagement(proxyTargetClass = true) @Configuration +// 鎸囧畾瑕佹壂鎻忕殑Mapper绫荤殑鍖呯殑璺緞 +@MapperScan("${mybatis-plus.mapperPackage}") public class MybatisPlusConfig { @Bean diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java index 0d67c22..30d5ef9 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java @@ -1,44 +1,65 @@ package com.ruoyi.framework.config; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.ThreadPoolExecutor; +import com.ruoyi.common.utils.Threads; import org.apache.commons.lang3.concurrent.BasicThreadFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; -import com.ruoyi.common.utils.Threads; + +import java.util.concurrent.RejectedExecutionHandler; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.ThreadPoolExecutor; /** * 绾跨▼姹犻厤缃� * - * @author ruoyi + * @author Lion Li **/ @Configuration -public class ThreadPoolConfig -{ +public class ThreadPoolConfig { + // 鏍稿績绾跨▼姹犲ぇ灏� - private int corePoolSize = 50; + @Value("${threadPoolConfig.corePoolSize}") + private int corePoolSize; // 鏈�澶у彲鍒涘缓鐨勭嚎绋嬫暟 - private int maxPoolSize = 200; + @Value("${threadPoolConfig.maxPoolSize}") + private int maxPoolSize; // 闃熷垪鏈�澶ч暱搴� - private int queueCapacity = 1000; + @Value("${threadPoolConfig.queueCapacity}") + private int queueCapacity; // 绾跨▼姹犵淮鎶ょ嚎绋嬫墍鍏佽鐨勭┖闂叉椂闂� - private int keepAliveSeconds = 300; + @Value("${threadPoolConfig.keepAliveSeconds}") + private int keepAliveSeconds; + + // 绾跨▼姹犲鎷掔粷浠诲姟(鏃犵嚎绋嬪彲鐢�)鐨勫鐞嗙瓥鐣� + @Value("${threadPoolConfig.rejectedExecutionHandler}") + private String rejectedExecutionHandler; @Bean(name = "threadPoolTaskExecutor") - public ThreadPoolTaskExecutor threadPoolTaskExecutor() - { + @ConditionalOnProperty(prefix = "threadPoolTaskExecutor", name = "enabled", havingValue = "true") + public ThreadPoolTaskExecutor threadPoolTaskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setMaxPoolSize(maxPoolSize); executor.setCorePoolSize(corePoolSize); executor.setQueueCapacity(queueCapacity); executor.setKeepAliveSeconds(keepAliveSeconds); - // 绾跨▼姹犲鎷掔粷浠诲姟(鏃犵嚎绋嬪彲鐢�)鐨勫鐞嗙瓥鐣� - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); + RejectedExecutionHandler handler; + if (rejectedExecutionHandler.equals("CallerRunsPolicy")) { + handler = new ThreadPoolExecutor.CallerRunsPolicy(); + } else if (rejectedExecutionHandler.equals("DiscardOldestPolicy")) { + handler = new ThreadPoolExecutor.DiscardOldestPolicy(); + } else if (rejectedExecutionHandler.equals("DiscardPolicy")) { + handler = new ThreadPoolExecutor.DiscardPolicy(); + } else { + handler = new ThreadPoolExecutor.AbortPolicy(); + } + executor.setRejectedExecutionHandler(handler); return executor; } @@ -46,14 +67,11 @@ * 鎵ц鍛ㄦ湡鎬ф垨瀹氭椂浠诲姟 */ @Bean(name = "scheduledExecutorService") - protected ScheduledExecutorService scheduledExecutorService() - { + protected ScheduledExecutorService scheduledExecutorService() { return new ScheduledThreadPoolExecutor(corePoolSize, - new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build()) - { + new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build()) { @Override - protected void afterExecute(Runnable r, Throwable t) - { + protected void afterExecute(Runnable r, Throwable t) { super.afterExecute(r, t); Threads.printException(r, t); } diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java index d6f2a43..72fea3b 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java @@ -101,7 +101,7 @@ /** * 瀵煎叆琛ㄧ粨鏋勶紙淇濆瓨锛� */ - @PreAuthorize("@ss.hasPermi('tool:gen:list')") + @PreAuthorize("@ss.hasPermi('tool:gen:import')") @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.IMPORT) @PostMapping("/importTable") public AjaxResult importTableSave(String tables) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java index f25a90d..65f8601 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java @@ -241,7 +241,7 @@ List<SysDept> children = list(new LambdaQueryWrapper<SysDept>() .apply("find_in_set({0},ancestors)",deptId)); for (SysDept child : children) { - child.setAncestors(child.getAncestors().replace(oldAncestors, newAncestors)); + child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors)); } if (children.size() > 0) { updateBatchById(children); diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json index a3765b6..58ee98d 100644 --- a/ruoyi-ui/package.json +++ b/ruoyi-ui/package.json @@ -1,6 +1,6 @@ { "name": "ruoyi-vue-plus", - "version": "1.0.0", + "version": "1.0.1", "description": "RuoYi-Vue-Plus鍚庡彴绠$悊绯荤粺", "author": "LionLi", "license": "MIT", diff --git a/ruoyi-ui/src/assets/styles/element-ui.scss b/ruoyi-ui/src/assets/styles/element-ui.scss index 955d3ca..363092a 100644 --- a/ruoyi-ui/src/assets/styles/element-ui.scss +++ b/ruoyi-ui/src/assets/styles/element-ui.scss @@ -82,3 +82,11 @@ .el-range-separator { box-sizing: content-box; } + +.el-menu--collapse + > div + > .el-submenu + > .el-submenu__title + .el-submenu__icon-arrow { + display: none; +} \ No newline at end of file -- Gitblit v1.9.3