From c010c0e7764793c277c15ea6cf942ed2bc056277 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=A8=E5=93=80?= <2076029107@qq.com> Date: Fri, 9 Aug 2024 22:19:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 35 +++++++++++++++ pom.xml | 41 +++++++++++++++++ .../muyu/common/nacos/NacosRemoteConfig.java | 25 +++++++++++ .../nacos/remote/NacosServerRemote.java | 31 +++++++++++++ .../NacosNamespaceInterceptor.java | 45 +++++++++++++++++++ .../muyu/common/nacos/remote/req/BaseReq.java | 26 +++++++++++ .../nacos/remote/req/ServiceListReq.java | 34 ++++++++++++++ .../nacos/remote/resp/ServiceListResp.java | 33 ++++++++++++++ .../nacos/service/NacosServerService.java | 39 ++++++++++++++++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + 10 files changed, 310 insertions(+) create mode 100644 .gitignore create mode 100644 pom.xml create mode 100644 src/main/java/com/muyu/common/nacos/NacosRemoteConfig.java create mode 100644 src/main/java/com/muyu/common/nacos/remote/NacosServerRemote.java create mode 100644 src/main/java/com/muyu/common/nacos/remote/interceptor/NacosNamespaceInterceptor.java create mode 100644 src/main/java/com/muyu/common/nacos/remote/req/BaseReq.java create mode 100644 src/main/java/com/muyu/common/nacos/remote/req/ServiceListReq.java create mode 100644 src/main/java/com/muyu/common/nacos/remote/resp/ServiceListResp.java create mode 100644 src/main/java/com/muyu/common/nacos/service/NacosServerService.java create mode 100644 src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3e403e3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,35 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..7daa88e --- /dev/null +++ b/pom.xml @@ -0,0 +1,41 @@ + + + 4.0.0 + + + com.muyu + cloud-common + 3.6.3 + + + + com.muyu + + cloud-common-nacos-remote + + 1.0.0 + + + 17 + 17 + UTF-8 + + + + + + com.muyu + cloud-common-core + + + + com.dtflys.forest + forest-spring-boot3-starter + + + + + + diff --git a/src/main/java/com/muyu/common/nacos/NacosRemoteConfig.java b/src/main/java/com/muyu/common/nacos/NacosRemoteConfig.java new file mode 100644 index 0000000..d0b2012 --- /dev/null +++ b/src/main/java/com/muyu/common/nacos/NacosRemoteConfig.java @@ -0,0 +1,25 @@ +package com.muyu.common.nacos; + +import com.dtflys.forest.springboot.annotation.ForestScan; +import com.muyu.common.nacos.remote.interceptor.NacosNamespaceInterceptor; +import com.muyu.common.nacos.service.NacosServerService; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +/** + * @Author:杨鹏 + * @Package:com.muyu.common.nacos + * @Project:cloud-common-nacos-remote + * @name:NacosRemoteConfig + * @Date:2024/8/9 22:15 + */ +@Configuration +@ForestScan(basePackages = "com.muyu.common.nacos.remote") +@Import( + value = { + NacosNamespaceInterceptor.class, + NacosServerService.class + } +) +public class NacosRemoteConfig { +} diff --git a/src/main/java/com/muyu/common/nacos/remote/NacosServerRemote.java b/src/main/java/com/muyu/common/nacos/remote/NacosServerRemote.java new file mode 100644 index 0000000..2cb00f4 --- /dev/null +++ b/src/main/java/com/muyu/common/nacos/remote/NacosServerRemote.java @@ -0,0 +1,31 @@ +package com.muyu.common.nacos.remote; + +import com.dtflys.forest.annotation.Address; +import com.dtflys.forest.annotation.BaseRequest; +import com.dtflys.forest.annotation.GetRequest; +import com.dtflys.forest.annotation.Query; +import com.muyu.common.core.constant.Constants; +import com.muyu.common.nacos.remote.interceptor.NacosNamespaceInterceptor; +import com.muyu.common.nacos.remote.req.ServiceListReq; +import com.muyu.common.nacos.remote.resp.ServiceListResp; + +/** + * @Author:杨鹏 + * @Package:com.muyu.common.nacos.api + * @Project:cloud-common-nacos-remote + * @name:NacosServiceRemote + * @Date:2024/8/9 20:02 + */ + +@BaseRequest( + baseURL = Constants.HTTP +"#{nacos.addr}/nacos/v1/ns/service", + interceptor = {NacosNamespaceInterceptor.class} +) +public interface NacosServerRemote { + + @GetRequest( + url = "/list" + ) + public ServiceListResp serviceList(@Query ServiceListReq serviceListReq); + +} diff --git a/src/main/java/com/muyu/common/nacos/remote/interceptor/NacosNamespaceInterceptor.java b/src/main/java/com/muyu/common/nacos/remote/interceptor/NacosNamespaceInterceptor.java new file mode 100644 index 0000000..e5a0229 --- /dev/null +++ b/src/main/java/com/muyu/common/nacos/remote/interceptor/NacosNamespaceInterceptor.java @@ -0,0 +1,45 @@ +package com.muyu.common.nacos.remote.interceptor; + +import com.dtflys.forest.http.ForestRequest; +import com.dtflys.forest.interceptor.Interceptor; +import com.muyu.common.core.text.Convert; +import lombok.extern.log4j.Log4j2; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; + +/** + * @Author:杨鹏 + * @Package:com.muyu.common.nacos.remote.interceptor + * @Project:cloud-common-nacos-remote + * @name:NacosNamespaceInterceptor + * @Date:2024/8/9 22:06 + */ +@Log4j2 +public class NacosNamespaceInterceptor implements Interceptor { + + @Value("${nacos.namespace}") + private String namespaceId; + + /** + * 该方法在请求发送之前被调用, 若返回false则不会继续发送请求 + * + * @Param request Forest请求对象 + */ + @Override + public boolean beforeExecute(ForestRequest req) { + if (StringUtils.isNotEmpty(namespaceId)) { + String reqNamespaceId = Convert.utf8Str(req.getQuery("namespaceId")); + if (reqNamespaceId == null) { + log.warn("本次请求nacos的namespaceId:未携带,已添加[{}]", namespaceId); + req.addQuery("namespaceId", namespaceId); + } else { + if (StringUtils.equals(namespaceId, reqNamespaceId)) { + log.warn("本次请求nacos的namespaceId和项目ID不相符,现已更改:[{}——>{}]", reqNamespaceId, namespaceId); + req.addQuery("namespaceId", namespaceId); + } + } + } + return true; // 继续执行请求返回true + } + +} diff --git a/src/main/java/com/muyu/common/nacos/remote/req/BaseReq.java b/src/main/java/com/muyu/common/nacos/remote/req/BaseReq.java new file mode 100644 index 0000000..c488ba5 --- /dev/null +++ b/src/main/java/com/muyu/common/nacos/remote/req/BaseReq.java @@ -0,0 +1,26 @@ +package com.muyu.common.nacos.remote.req; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * @Author:杨鹏 + * @Package:com.muyu.common.nacos.remote.req + * @Project:cloud-common-nacos-remote + * @name:BaseReq + * @Date:2024/8/9 22:00 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class BaseReq { + + /** + * 命名空间 + */ + private String namespaceId; + +} diff --git a/src/main/java/com/muyu/common/nacos/remote/req/ServiceListReq.java b/src/main/java/com/muyu/common/nacos/remote/req/ServiceListReq.java new file mode 100644 index 0000000..c00ba8f --- /dev/null +++ b/src/main/java/com/muyu/common/nacos/remote/req/ServiceListReq.java @@ -0,0 +1,34 @@ +package com.muyu.common.nacos.remote.req; + +import lombok.*; +import lombok.experimental.SuperBuilder; + +/** + * @Author:杨鹏 + * @Package:com.muyu.common.nacos.remote.req + * @Project:cloud-common-nacos-remote + * @name:ServiceListReq + * @Date:2024/8/9 22:01 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = false) +public class ServiceListReq extends BaseReq{ + + /** + * 当前页码 + */ + private int pageNo; + /** + * 分页大小 + */ + @Builder.Default + private int pageSize=2; + /** + * 分组名 + */ + private String groupName; + +} diff --git a/src/main/java/com/muyu/common/nacos/remote/resp/ServiceListResp.java b/src/main/java/com/muyu/common/nacos/remote/resp/ServiceListResp.java new file mode 100644 index 0000000..440f7fd --- /dev/null +++ b/src/main/java/com/muyu/common/nacos/remote/resp/ServiceListResp.java @@ -0,0 +1,33 @@ +package com.muyu.common.nacos.remote.resp; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +/** + * @Author:杨鹏 + * @Package:com.muyu.common.nacos.remote.resp + * @Project:cloud-common-nacos-remote + * @name:ServiceListResp + * @Date:2024/8/9 22:02 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class ServiceListResp { + + /** + * 总条数 + */ + private int count; + + /** + * 服务列表 + */ + private List doms; + +} diff --git a/src/main/java/com/muyu/common/nacos/service/NacosServerService.java b/src/main/java/com/muyu/common/nacos/service/NacosServerService.java new file mode 100644 index 0000000..cd5076e --- /dev/null +++ b/src/main/java/com/muyu/common/nacos/service/NacosServerService.java @@ -0,0 +1,39 @@ +package com.muyu.common.nacos.service; + +import com.muyu.common.nacos.remote.NacosServerRemote; +import com.muyu.common.nacos.remote.req.ServiceListReq; +import com.muyu.common.nacos.remote.resp.ServiceListResp; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author:杨鹏 + * @Package:com.muyu.common.nacos.service + * @Project:cloud-common-nacos-remote + * @name:NacosServerService + * @Date:2024/8/9 22:10 + */ +public class NacosServerService { + + @Autowired + private NacosServerRemote nacosServerRemote; + + public List nacosServerAllList(){ + ArrayList serverList = new ArrayList<>(); + ServiceListResp serviceListResp = null; + int pageNo = 0, pageSize = 10; + do { + serviceListResp = nacosServerRemote.serviceList( + ServiceListReq.builder() + .pageNo(++pageNo) + .pageSize(pageSize) + .build() + ); + serverList.addAll(serviceListResp.getDoms()); + } while (serviceListResp.getCount() > pageNo * pageSize); + return serverList; + } + +} diff --git a/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..08c9e27 --- /dev/null +++ b/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.muyu.common.nacos.NacosRemoteConfig