001package run.iget.framework.propertity; 002 003import java.util.Objects; 004import java.util.Set; 005 006import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; 007 008import cn.hutool.core.collection.CollUtil; 009import cn.hutool.core.util.ObjectUtil; 010import cn.hutool.core.util.StrUtil; 011 012/** 013 * 代码千万行,注释第一行,注释不规范,迭代两行泪 014 * ---------------类描述----------------- 015 * 为指定的Controller请求路径,添加上统一的前缀 016 * ---------------类描述----------------- 017 * @author 大周 018 * @date 2023/1/23 23:56 019 */ 020public class ApiPathPrefixUtils { 021 022 /** 023 * 为指定的Controller请求路径,添加上统一的前缀 024 * @param properties 配置对象 025 * @param configurer 路径配置对象 026 * @param controllerPackages 需要添加路径前缀的包名 027 */ 028 public static void addApiPathPrefix(ModuleProperties properties, PathMatchConfigurer configurer, 029 String... controllerPackages) { 030 if (Objects.isNull(controllerPackages) || controllerPackages.length == 0) { 031 return; 032 } 033 for (String controllerPackage : controllerPackages) { 034 addApiPathPrefix(properties, configurer, controllerPackage); 035 } 036 } 037 038 /** 039 * 为指定的Controller请求路径,添加上统一的前缀 040 * @param properties 配置对象 041 * @param configurer 路径配置对象 042 * @param controllerPackages 需要添加路径前缀的包名 043 */ 044 public static void addApiPathPrefix(ModuleProperties properties, PathMatchConfigurer configurer, 045 Set<String> controllerPackages) { 046 if (CollUtil.isEmpty(controllerPackages)) { 047 return; 048 } 049 controllerPackages.forEach(controllerPackage -> addApiPathPrefix(properties, configurer, controllerPackage)); 050 } 051 052 /** 053 * 为指定的Controller请求路径,添加上统一的前缀 054 * @param properties 配置对象 055 * @param configurer 路径配置对象 056 * @param controllerPackage 需要添加路径前缀的包名 057 */ 058 public static void addApiPathPrefix(ModuleProperties properties, PathMatchConfigurer configurer, 059 String controllerPackage) { 060 if (ObjectUtil.hasNull(properties, configurer) 061 || StrUtil.hasBlank(properties.getApiPathPrefix(), controllerPackage)) { 062 return; 063 } 064 if (!Boolean.TRUE.equals(properties.getEnable())) { 065 return; 066 } 067 // 为指定包下的controller添加前缀 068 configurer.addPathPrefix(properties.getApiPathPrefix(), 069 c -> Objects.equals(controllerPackage, c.getPackage().getName())); 070 } 071 072}