mac 2 лет назад
Родитель
Сommit
decdd29696

+ 5 - 0
kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/constant/ServiceNameConstants.java

@@ -33,4 +33,9 @@ public interface ServiceNameConstants {
 	 */
 	 */
 	String STORE_SERVICE = "kxs-store-biz";
 	String STORE_SERVICE = "kxs-store-biz";
 
 
+	/**
+	 * 统计模块
+	 */
+	String STAT_SERVICE = "kxs-stat-biz";
+
 }
 }

+ 3 - 0
kxs-quartz/src/main/java/com/kxs/daemon/quartz/controller/SysJobController.java

@@ -141,6 +141,9 @@ public class SysJobController {
 		else if (SkyQuartzEnum.JOB_STATUS_RELEASE.getType().equals(querySysJob.getJobStatus())) {
 		else if (SkyQuartzEnum.JOB_STATUS_RELEASE.getType().equals(querySysJob.getJobStatus())) {
 			this.sysJobService.removeById(id);
 			this.sysJobService.removeById(id);
 		}
 		}
+		else if (SkyQuartzEnum.JOB_STATUS_RUNNING.getType().equals(querySysJob.getJobStatus())) {
+			return R.failed("暂停任务才能删除");
+		}
 		return R.ok();
 		return R.ok();
 	}
 	}
 
 

+ 15 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/feign/RemoteKxsStatService.java

@@ -0,0 +1,15 @@
+
+package com.kxs.stat.api.feign;
+
+
+/**
+ * 远程 KXS 统计服务
+ *
+ * @author 没秃顶的码农
+ * @date 2024-05-08
+ */
+public interface RemoteKxsStatService {
+
+
+
+}

+ 85 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/feign/config/KxsStoreFeignClientConfiguration.java

@@ -0,0 +1,85 @@
+package com.kxs.stat.api.feign.config;
+
+import cn.hutool.core.text.CharSequenceUtil;
+import com.kxs.common.core.constant.ServiceNameConstants;
+import com.kxs.stat.api.feign.RemoteKxsStatService;
+import io.seata.core.context.RootContext;
+import jakarta.servlet.http.HttpServletRequest;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.cloud.client.loadbalancer.reactive.ReactorLoadBalancerExchangeFilterFunction;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.HttpHeaders;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+import org.springframework.web.reactive.function.client.ClientRequest;
+import org.springframework.web.reactive.function.client.WebClient;
+import org.springframework.web.reactive.function.client.support.WebClientAdapter;
+import org.springframework.web.service.invoker.HttpServiceProxyFactory;
+
+/**
+ * <p>
+ * 当前服务的webClient配置
+ * 服务下的远程调用统一在此配置
+ * 使用注册中心 需配置远程调用器 以实现负载均衡
+ * </p>
+ *
+ * @author 没秃顶的码农
+ * @date 2023/11/13
+ */
+@Configuration
+@RequiredArgsConstructor
+public class KxsStoreFeignClientConfiguration {
+
+	/**
+	 * 负载均衡器
+	 */
+	private final ReactorLoadBalancerExchangeFilterFunction reactorLoadBalancerExchangeFilterFunction;
+
+	private static final String SERVICE_NAME = ServiceNameConstants.CLIENT_NAME + ServiceNameConstants.STAT_SERVICE;
+
+	@Bean("kxsStatFeignClient")
+	public WebClient oauthRequestInterceptor() {
+
+
+		return WebClient.builder()
+			// 给请求添加过滤器,添加自定义的认证头
+			.filter((request, next) -> {
+				ClientRequest.Builder filtered = ClientRequest.from(request);
+
+				// seata XID传递
+				String xid = RootContext.getXID();
+				if (CharSequenceUtil.isNotBlank(xid)) {
+					filtered.header(RootContext.KEY_XID, xid);
+				}
+
+				ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder
+					.getRequestAttributes();
+				// 不是web请求不传递token
+				if (requestAttributes != null) {
+					HttpServletRequest httpServletRequest = requestAttributes.getRequest();
+					String token = httpServletRequest.getHeader(HttpHeaders.AUTHORIZATION);
+					if (!CharSequenceUtil.isBlank(token)) {
+						// 传递token
+						filtered.header(HttpHeaders.AUTHORIZATION, token);
+					}
+				}
+				return next.exchange(filtered.build());
+			}).filter(reactorLoadBalancerExchangeFilterFunction)
+			.baseUrl(SERVICE_NAME)
+			.build();
+	}
+
+	/**
+	 * 远程统计模块服务
+	 * @param client 客户端
+	 * @return 远程统计模块服务
+	 */
+	@Bean
+	RemoteKxsStatService remoteKxsStoreService(@Qualifier("kxsStatFeignClient") WebClient client) {
+		HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(client)).build();
+		return factory.createClient(RemoteKxsStatService.class);
+	}
+
+}

+ 1 - 0
kxs-stat/kxs-stat-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -0,0 +1 @@
+com.kxs.stat.api.feign.config.KxsStoreFeignClientConfiguration