import cn.hutool.core.util.StrUtil; import com.nflg.mobilebroken.gongfu.GongFuApplication; import com.nflg.mobilebroken.gongfu.annotation.ApiMark; import com.nflg.mobilebroken.gongfu.pojo.dto.SyncFromCrmDTO; import com.nflg.mobilebroken.gongfu.service.AdminCustomerService; import com.nflg.mobilebroken.gongfu.service.AdminDeviceService; import com.nflg.mobilebroken.repository.entity.AdminApi; import com.nflg.mobilebroken.repository.service.IAdminApiService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ContextConfiguration; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.mvc.method.RequestMappingInfo; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import javax.annotation.Resource; import java.util.Map; import java.util.Objects; @SpringBootTest @ContextConfiguration(classes = GongFuApplication.class) public class ControllerTest { @Autowired private RequestMappingHandlerMapping requestMappingHandlerMapping; @Resource private IAdminApiService adminApiService; @Resource AdminCustomerService customerService; @Resource AdminDeviceService deviceService; @Test public void testToken() { // customerService.syncFromCrm(new SyncFromCrmDTO("2025-02-21","2025-02-25") ); //2020-05-21 deviceService.syncFormCrm(new SyncFromCrmDTO("2025-02-21", "2025-02-25")); // String qu = UniqueSequenceGenerator.generateCode("QU"); // System.out.println(qu); } @Test public void test2() { // List apis = new ArrayList<>(); String pre = "/admin"; // 获取所有的请求映射 Map handlerMethods = requestMappingHandlerMapping.getHandlerMethods(); for (Map.Entry entry : handlerMethods.entrySet()) { RequestMappingInfo mappingInfo = entry.getKey(); HandlerMethod handlerMethod = entry.getValue(); // 获取Controller的RequestMapping注解 // RequestMapping controllerRequestMapping = handlerMethod.getBeanType().getAnnotation(RequestMapping.class); // if (controllerRequestMapping != null) { // System.out.println("Controller: " + handlerMethod.getBeanType().getName()); // System.out.println("Controller RequestMapping: " + String.join(",", controllerRequestMapping.value())); // } // 获取方法的PostMapping注解 ApiMark mark = handlerMethod.getMethod().getAnnotation(ApiMark.class); if (mark != null) { System.out.println("方法: " + handlerMethod.getMethod().getName()); System.out.println("位置: " + mark.moduleName() + " - " + mark.apiName()); // AdminApi api=new AdminApi() // .setName(mark.apiName()) // .setModuleName(mark.moduleName()) // .setIsPublic(mark.isPublic()) // .setUrl(StrUtil.join(",", mappingInfo.getPatternsCondition().getPatterns())); // apis.add(api); // 打印请求路径 String url = pre + StrUtil.join(",", mappingInfo.getPatternsCondition().getPatterns()); System.out.println("Request Paths: " + url); AdminApi api = adminApiService.lambdaQuery() .eq(AdminApi::getModuleName, mark.moduleName()) .eq(AdminApi::getName, mark.apiName()) .one(); if (Objects.isNull(api)) { api = new AdminApi() .setName(mark.apiName()) .setModuleName(mark.moduleName()) .setIsPublic(mark.isPublic()) .setUrl(url); adminApiService.save(api); } else if (!StrUtil.equals(url, api.getUrl()) || !Objects.equals(api.getIsPublic(), mark.isPublic())) { api.setUrl(url); api.setIsPublic(mark.isPublic()); adminApiService.updateById(api); } System.out.println("----------------------------------------"); } } // adminApiService.remove(new LambdaQueryWrapper<>()); // adminApiService.saveBatch(apis); // System.out.println(JSONUtil.toJsonStr(apis)); } }