Pre Merge pull request !154 from 小谈同学/master-jdk17
commit
2bd3f8f5b8
|
@ -31,6 +31,7 @@ public interface GlobalErrorCodeConstants {
|
||||||
ErrorCode INTERNAL_SERVER_ERROR = new ErrorCode(500, "系统异常");
|
ErrorCode INTERNAL_SERVER_ERROR = new ErrorCode(500, "系统异常");
|
||||||
ErrorCode NOT_IMPLEMENTED = new ErrorCode(501, "功能未实现/未开启");
|
ErrorCode NOT_IMPLEMENTED = new ErrorCode(501, "功能未实现/未开启");
|
||||||
ErrorCode ERROR_CONFIGURATION = new ErrorCode(502, "错误的配置项");
|
ErrorCode ERROR_CONFIGURATION = new ErrorCode(502, "错误的配置项");
|
||||||
|
ErrorCode FEIGN_ERROR = new ErrorCode(555, "rpc远程调用异常");
|
||||||
|
|
||||||
// ========== 自定义错误段 ==========
|
// ========== 自定义错误段 ==========
|
||||||
ErrorCode REPEATED_REQUESTS = new ErrorCode(900, "重复请求,请稍后重试"); // 重复请求
|
ErrorCode REPEATED_REQUESTS = new ErrorCode(900, "重复请求,请稍后重试"); // 重复请求
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
package cn.iocoder.yudao.framework.rpc.config;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.rpc.core.fallback.YudaoFeignBuilder;
|
||||||
|
import com.alibaba.cloud.sentinel.feign.SentinelFeignAutoConfiguration;
|
||||||
|
import feign.Feign;
|
||||||
|
import feign.RequestInterceptor;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Scope;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description Rpc自动配置
|
||||||
|
* @Author tpz
|
||||||
|
* @Date 2024/10/30 14:27
|
||||||
|
*/
|
||||||
|
@AutoConfiguration
|
||||||
|
public class YudaoCloudRpcAutoConfiguration {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private List<RequestInterceptor> requestInterceptors;
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@Scope("prototype")
|
||||||
|
@ConditionalOnMissingBean
|
||||||
|
public Feign.Builder feignSentinelBuilder() {
|
||||||
|
return new YudaoFeignBuilder().requestInterceptors(requestInterceptors);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,4 +1,6 @@
|
||||||
/**
|
/**
|
||||||
* 占坑 TODO
|
* open-feign的自动配置
|
||||||
|
*
|
||||||
|
* @author tpz
|
||||||
*/
|
*/
|
||||||
package cn.iocoder.yudao.framework.rpc.config;
|
package cn.iocoder.yudao.framework.rpc.config;
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
package cn.iocoder.yudao.framework.rpc.core.fallback;
|
||||||
|
|
||||||
|
import feign.Target;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import org.springframework.cglib.proxy.Enhancer;
|
||||||
|
import org.springframework.cloud.openfeign.FallbackFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认 FallbackFactory,用户不自定义FallbackFactory的情况加统一走这个FallbackFactory
|
||||||
|
* tips:返回的对象不实现任何接口故使用CGLIB的Enhancer+MethodInterceptor代理
|
||||||
|
* @author tpz
|
||||||
|
*/
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class YudaoFallbackFactory<T> implements FallbackFactory<T> {
|
||||||
|
|
||||||
|
// 代理对象
|
||||||
|
private final Target<T> target;
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
@Override
|
||||||
|
public T create(Throwable cause) {
|
||||||
|
Enhancer enhancer = new Enhancer();
|
||||||
|
enhancer.setSuperclass(target.type());
|
||||||
|
enhancer.setUseCache(true);
|
||||||
|
enhancer.setCallback(new YudaoFeignFallback<>(target.type(), target.name(), cause));
|
||||||
|
return (T) enhancer.create();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,91 @@
|
||||||
|
package cn.iocoder.yudao.framework.rpc.core.fallback;
|
||||||
|
|
||||||
|
import feign.Feign;
|
||||||
|
import feign.InvocationHandlerFactory;
|
||||||
|
import feign.Target;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
|
import org.springframework.beans.BeansException;
|
||||||
|
import org.springframework.cloud.openfeign.FallbackFactory;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClientFactory;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.context.ApplicationContextAware;
|
||||||
|
import org.springframework.core.annotation.AnnotationUtils;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import java.lang.reflect.InvocationHandler;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description 扩展Feign Builder 代理获取统一fallback 避免每一个peign接口都需要写一个fallback类
|
||||||
|
* @Author tpz
|
||||||
|
* @Date 2024/10/30 14:37
|
||||||
|
*/
|
||||||
|
public class YudaoFeignBuilder extends Feign.Builder implements ApplicationContextAware {
|
||||||
|
|
||||||
|
public String CONTEXT_FALL_BACK = "fallback";
|
||||||
|
public String CONTEXT_FALL_BACK_FACTORY = "fallbackFactory";
|
||||||
|
|
||||||
|
private FeignClientFactory feignClientFactoryBean;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Feign internalBuild() {
|
||||||
|
super.invocationHandlerFactory(new InvocationHandlerFactory() {
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
@Override
|
||||||
|
public InvocationHandler create(Target target, Map<Method, MethodHandler> dispatch) {
|
||||||
|
|
||||||
|
// 获取 FeignClient 注解信息
|
||||||
|
FeignClient feignClient = AnnotationUtils.findAnnotation(target.type(), FeignClient.class);
|
||||||
|
assert feignClient != null;
|
||||||
|
Class<?> fallback = feignClient.fallback();
|
||||||
|
Class<?> fallbackFactory = feignClient.fallbackFactory();
|
||||||
|
String contextId = feignClient.contextId();
|
||||||
|
|
||||||
|
if (!StringUtils.hasText(contextId)) {
|
||||||
|
contextId = feignClient.name();
|
||||||
|
}
|
||||||
|
|
||||||
|
Object fallbackInstance;
|
||||||
|
FallbackFactory<?> fallbackFactoryInstance;
|
||||||
|
|
||||||
|
// 如果有自定义fallback使用自定义fallback
|
||||||
|
if (void.class != fallback) {
|
||||||
|
fallbackInstance = getFromContext(contextId, CONTEXT_FALL_BACK, fallback, target.type());
|
||||||
|
return new YudaoInvocationHandler(target, dispatch, new FallbackFactory.Default<>(fallbackInstance));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果有自定义fallbackFactory使用自定义fallbackFactory
|
||||||
|
if (void.class != fallbackFactory) {
|
||||||
|
fallbackFactoryInstance = (FallbackFactory<?>) getFromContext(contextId, CONTEXT_FALL_BACK_FACTORY, fallbackFactory, FallbackFactory.class);
|
||||||
|
return new YudaoInvocationHandler(target, dispatch, fallbackFactoryInstance);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 默认的FallbackFactory
|
||||||
|
YudaoFallbackFactory<?> defaultFallbackFactory = new YudaoFallbackFactory<>(target);
|
||||||
|
return new YudaoInvocationHandler(target, dispatch, defaultFallbackFactory);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Object getFromContext(String name, String type, Class<?> fallbackType, Class<?> targetType) {
|
||||||
|
Object fallbackInstance = feignClientFactoryBean.getInstance(name, fallbackType);
|
||||||
|
if (fallbackInstance == null) {
|
||||||
|
throw new IllegalStateException(String.format("【rpc 配置错误】类型未找到 name:[{%s}] fallbackType:[{%s}]", name, fallbackType));
|
||||||
|
}
|
||||||
|
if (!targetType.isAssignableFrom(fallbackType)) {
|
||||||
|
throw new IllegalStateException(String.format("【rpc 配置错误】实例不兼容 name:[{%s}]", name));
|
||||||
|
}
|
||||||
|
return fallbackInstance;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
super.contract(contract);
|
||||||
|
return super.internalBuild();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
|
||||||
|
feignClientFactoryBean = applicationContext.getBean(FeignClientFactory.class);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,69 @@
|
||||||
|
package cn.iocoder.yudao.framework.rpc.core.fallback;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.exception.ServiceException;
|
||||||
|
import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.cglib.proxy.MethodInterceptor;
|
||||||
|
import org.springframework.cglib.proxy.MethodProxy;
|
||||||
|
import org.springframework.lang.Nullable;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 统一的远程调用fallback返回信息处理
|
||||||
|
* 1 在调用端打印错误日志方便后期排查
|
||||||
|
* 2 处理返回类型
|
||||||
|
* @author tpz
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class YudaoFeignFallback<T> implements MethodInterceptor {
|
||||||
|
|
||||||
|
// 代理类
|
||||||
|
private final Class<T> targetType;
|
||||||
|
private final String targetName;
|
||||||
|
private final Throwable cause;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 统一的远程调用fallback返回信息处理
|
||||||
|
* @author tpz
|
||||||
|
* @date 2024/10/31 9:23
|
||||||
|
**/
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
|
||||||
|
String errorMessage = cause.getMessage();
|
||||||
|
log.error("【rpc调用异常】被调服务:[{}] 错误信息:[{}]", targetName, errorMessage);
|
||||||
|
|
||||||
|
// 否则是在调用的过程中发生的异常
|
||||||
|
if (cause instanceof ServiceException) {
|
||||||
|
Integer code = ((ServiceException) cause).getCode();
|
||||||
|
// 如果是系统异常直接返回feign错误编码 否则返回业务异常的编码
|
||||||
|
return CommonResult.error(Objects.equals(code, GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode()) ?
|
||||||
|
GlobalErrorCodeConstants.FEIGN_ERROR.getCode() : code, errorMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 其他情况统一返回feign的错误编码
|
||||||
|
return CommonResult.error(GlobalErrorCodeConstants.FEIGN_ERROR.getCode(), errorMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (o == null || getClass() != o.getClass()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
YudaoFeignFallback<?> that = (YudaoFeignFallback<?>) o;
|
||||||
|
return targetType.equals(that.targetType);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(targetType);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,152 @@
|
||||||
|
package cn.iocoder.yudao.framework.rpc.core.fallback;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import feign.InvocationHandlerFactory;
|
||||||
|
import feign.Target;
|
||||||
|
import org.springframework.cloud.openfeign.FallbackFactory;
|
||||||
|
|
||||||
|
import java.lang.reflect.InvocationHandler;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.lang.reflect.Proxy;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static feign.Util.checkNotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 远程调用发生异常自动走统一fallback代理类处理
|
||||||
|
* @author tpz
|
||||||
|
*/
|
||||||
|
public class YudaoInvocationHandler implements InvocationHandler {
|
||||||
|
|
||||||
|
private final Target<?> target;
|
||||||
|
|
||||||
|
private final Map<Method, InvocationHandlerFactory.MethodHandler> dispatch;
|
||||||
|
|
||||||
|
private FallbackFactory<?> fallbackFactory;
|
||||||
|
|
||||||
|
private Map<Method, Method> fallbackMethodMap;
|
||||||
|
|
||||||
|
public YudaoInvocationHandler(Target<?> target, Map<Method, InvocationHandlerFactory.MethodHandler> dispatch,
|
||||||
|
FallbackFactory<?> fallbackFactory) {
|
||||||
|
this.target = checkNotNull(target, "target");
|
||||||
|
this.dispatch = checkNotNull(dispatch, "dispatch");
|
||||||
|
this.fallbackFactory = fallbackFactory;
|
||||||
|
this.fallbackMethodMap = toFallbackMethod(dispatch);
|
||||||
|
}
|
||||||
|
|
||||||
|
public YudaoInvocationHandler(Target<?> target, Map<Method, InvocationHandlerFactory.MethodHandler> dispatch) {
|
||||||
|
this.target = checkNotNull(target, "target");
|
||||||
|
this.dispatch = checkNotNull(dispatch, "dispatch");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object invoke(final Object proxy, final Method method, final Object[] args)
|
||||||
|
throws Throwable {
|
||||||
|
// 其他方法直接执行
|
||||||
|
Object result = handleNormalMethod(method, args);
|
||||||
|
if (result != null) return result;
|
||||||
|
// 获取当前执行代理的方法
|
||||||
|
InvocationHandlerFactory.MethodHandler methodHandler = this.dispatch.get(method);
|
||||||
|
// 只代理feign的HardCodedTarget
|
||||||
|
if (target instanceof Target.HardCodedTarget) {
|
||||||
|
try {
|
||||||
|
// 执行远程调用
|
||||||
|
result = methodHandler.invoke(args);
|
||||||
|
// 执行错误的情况
|
||||||
|
handleErrResult(result);
|
||||||
|
} catch (Throwable ex) {
|
||||||
|
// fallback handle
|
||||||
|
if (fallbackFactory != null) {
|
||||||
|
try {
|
||||||
|
// 根据方法名称使用过程创建代理对象
|
||||||
|
return fallbackMethodMap.get(method)
|
||||||
|
.invoke(fallbackFactory.create(ex), args);
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
throw new AssertionError(e);
|
||||||
|
} catch (InvocationTargetException e) {
|
||||||
|
throw new AssertionError(e.getCause());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 没有fallback就报错
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 直接执行
|
||||||
|
result = methodHandler.invoke(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 其他方法直接执行
|
||||||
|
*
|
||||||
|
* @author tpz
|
||||||
|
* @date 2024/10/30 16:41
|
||||||
|
**/
|
||||||
|
private Object handleNormalMethod(Method method, Object[] args) {
|
||||||
|
if ("equals".equals(method.getName())) {
|
||||||
|
try {
|
||||||
|
Object otherHandler = args.length > 0 && args[0] != null
|
||||||
|
? Proxy.getInvocationHandler(args[0]) : null;
|
||||||
|
return equals(otherHandler);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else if ("hashCode".equals(method.getName())) {
|
||||||
|
return hashCode();
|
||||||
|
} else if ("toString".equals(method.getName())) {
|
||||||
|
return toString();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 错误的情况抛出异常继续走fallback
|
||||||
|
*
|
||||||
|
* @author tpz
|
||||||
|
* @date 2024/10/30 18:08
|
||||||
|
**/
|
||||||
|
private void handleErrResult(Object result) {
|
||||||
|
if (result instanceof CommonResult) {
|
||||||
|
// 如果请远程调用报错会抛出遗异常
|
||||||
|
((CommonResult<?>) result).getCheckedData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (obj instanceof YudaoInvocationHandler) {
|
||||||
|
YudaoInvocationHandler other = (YudaoInvocationHandler) obj;
|
||||||
|
return target.equals(other.target);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return target.hashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return target.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author tpz
|
||||||
|
* @date 2024/10/30 16:42
|
||||||
|
**/
|
||||||
|
static Map<Method, Method> toFallbackMethod(Map<Method, InvocationHandlerFactory.MethodHandler> dispatch) {
|
||||||
|
Map<Method, Method> result = new LinkedHashMap<>();
|
||||||
|
for (Method method : dispatch.keySet()) {
|
||||||
|
method.setAccessible(true);
|
||||||
|
result.put(method, method);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
/**
|
||||||
|
* 使用代理模式提供默认的fallback实现,避免反复写fallback类
|
||||||
|
*
|
||||||
|
* @author tpz
|
||||||
|
*/
|
||||||
|
package cn.iocoder.yudao.framework.rpc.core.fallback;
|
|
@ -1,4 +1,6 @@
|
||||||
/**
|
/**
|
||||||
* 占坑 TODO
|
* feign自动配置的核心类
|
||||||
|
*
|
||||||
|
* @author tpz
|
||||||
*/
|
*/
|
||||||
package cn.iocoder.yudao.framework.rpc.core;
|
package cn.iocoder.yudao.framework.rpc.core;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/**
|
/**
|
||||||
* OpenFeign:提供 RESTful API 的调用
|
* feign远程调用的相关配置
|
||||||
*
|
*
|
||||||
* @author 芋道源码
|
* @author tpz
|
||||||
*/
|
*/
|
||||||
package cn.iocoder.yudao.framework.rpc;
|
package cn.iocoder.yudao.framework.rpc;
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
cn.iocoder.yudao.framework.rpc.config.YudaoCloudRpcAutoConfiguration
|
|
@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 流程实例")
|
@Tag(name = "RPC 服务 - 流程实例")
|
||||||
public interface BpmProcessInstanceApi {
|
public interface BpmProcessInstanceApi {
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import org.springframework.cloud.openfeign.FeignClient;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 参数配置")
|
@Tag(name = "RPC 服务 - 参数配置")
|
||||||
public interface ConfigApi {
|
public interface ConfigApi {
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ import org.springframework.cloud.openfeign.FeignClient;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 文件")
|
@Tag(name = "RPC 服务 - 文件")
|
||||||
public interface FileApi {
|
public interface FileApi {
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - API 访问日志")
|
@Tag(name = "RPC 服务 - API 访问日志")
|
||||||
public interface ApiAccessLogApi {
|
public interface ApiAccessLogApi {
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - API 异常日志")
|
@Tag(name = "RPC 服务 - API 异常日志")
|
||||||
public interface ApiErrorLogApi {
|
public interface ApiErrorLogApi {
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - WebSocket 发送器的") // 对 WebSocketMessageSender 进行封装,提供给其它模块使用
|
@Tag(name = "RPC 服务 - WebSocket 发送器的") // 对 WebSocketMessageSender 进行封装,提供给其它模块使用
|
||||||
public interface WebSocketSenderApi {
|
public interface WebSocketSenderApi {
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 商品分类")
|
@Tag(name = "RPC 服务 - 商品分类")
|
||||||
public interface ProductCategoryApi {
|
public interface ProductCategoryApi {
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 产品评论")
|
@Tag(name = "RPC 服务 - 产品评论")
|
||||||
public interface ProductCommentApi {
|
public interface ProductCommentApi {
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ import java.util.Map;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 商品 SKU")
|
@Tag(name = "RPC 服务 - 商品 SKU")
|
||||||
public interface ProductSkuApi {
|
public interface ProductSkuApi {
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ import java.util.Map;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 商品 SPU")
|
@Tag(name = "RPC 服务 - 商品 SPU")
|
||||||
public interface ProductSpuApi {
|
public interface ProductSpuApi {
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ import org.springframework.cloud.openfeign.FeignClient;
|
||||||
import org.springframework.web.bind.annotation.PutMapping;
|
import org.springframework.web.bind.annotation.PutMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 砍价活动")
|
@Tag(name = "RPC 服务 - 砍价活动")
|
||||||
public interface BargainActivityApi {
|
public interface BargainActivityApi {
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PutMapping;
|
import org.springframework.web.bind.annotation.PutMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 砍价记录")
|
@Tag(name = "RPC 服务 - 砍价记录")
|
||||||
public interface BargainRecordApi {
|
public interface BargainRecordApi {
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 拼团记录")
|
@Tag(name = "RPC 服务 - 拼团记录")
|
||||||
public interface CombinationRecordApi {
|
public interface CombinationRecordApi {
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.*;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 优惠劵")
|
@Tag(name = "RPC 服务 - 优惠劵")
|
||||||
public interface CouponApi {
|
public interface CouponApi {
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 限时折扣")
|
@Tag(name = "RPC 服务 - 限时折扣")
|
||||||
public interface DiscountActivityApi {
|
public interface DiscountActivityApi {
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PutMapping;
|
import org.springframework.web.bind.annotation.PutMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 秒杀活动")
|
@Tag(name = "RPC 服务 - 秒杀活动")
|
||||||
public interface PointActivityApi {
|
public interface PointActivityApi {
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 满减送")
|
@Tag(name = "RPC 服务 - 满减送")
|
||||||
public interface RewardActivityApi {
|
public interface RewardActivityApi {
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PutMapping;
|
import org.springframework.web.bind.annotation.PutMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 秒杀活动")
|
@Tag(name = "RPC 服务 - 秒杀活动")
|
||||||
public interface SeckillActivityApi {
|
public interface SeckillActivityApi {
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 订单")
|
@Tag(name = "RPC 服务 - 订单")
|
||||||
public interface TradeOrderApi {
|
public interface TradeOrderApi {
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ import org.springframework.cloud.openfeign.FeignClient;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 用户收件地址")
|
@Tag(name = "RPC 服务 - 用户收件地址")
|
||||||
public interface MemberAddressApi {
|
public interface MemberAddressApi {
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 用户配置")
|
@Tag(name = "RPC 服务 - 用户配置")
|
||||||
public interface MemberConfigApi {
|
public interface MemberConfigApi {
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 会员等级")
|
@Tag(name = "RPC 服务 - 会员等级")
|
||||||
public interface MemberLevelApi {
|
public interface MemberLevelApi {
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
import jakarta.validation.constraints.Min;
|
import jakarta.validation.constraints.Min;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 用户积分")
|
@Tag(name = "RPC 服务 - 用户积分")
|
||||||
public interface MemberPointApi {
|
public interface MemberPointApi {
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ import java.util.Map;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 会员用户")
|
@Tag(name = "RPC 服务 - 会员用户")
|
||||||
public interface MemberUserApi {
|
public interface MemberUserApi {
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 支付单")
|
@Tag(name = "RPC 服务 - 支付单")
|
||||||
public interface PayOrderApi {
|
public interface PayOrderApi {
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 退款单")
|
@Tag(name = "RPC 服务 - 退款单")
|
||||||
public interface PayRefundApi {
|
public interface PayRefundApi {
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 转账单")
|
@Tag(name = "RPC 服务 - 转账单")
|
||||||
public interface PayTransferApi {
|
public interface PayTransferApi {
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 部门")
|
@Tag(name = "RPC 服务 - 部门")
|
||||||
public interface DeptApi {
|
public interface DeptApi {
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 岗位")
|
@Tag(name = "RPC 服务 - 岗位")
|
||||||
public interface PostApi {
|
public interface PostApi {
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ import java.util.List;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 字典数据")
|
@Tag(name = "RPC 服务 - 字典数据")
|
||||||
public interface DictDataApi {
|
public interface DictDataApi {
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 登录日志")
|
@Tag(name = "RPC 服务 - 登录日志")
|
||||||
public interface LoginLogApi {
|
public interface LoginLogApi {
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 操作日志")
|
@Tag(name = "RPC 服务 - 操作日志")
|
||||||
public interface OperateLogApi {
|
public interface OperateLogApi {
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 邮件发送")
|
@Tag(name = "RPC 服务 - 邮件发送")
|
||||||
public interface MailSendApi {
|
public interface MailSendApi {
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 站内信发送")
|
@Tag(name = "RPC 服务 - 站内信发送")
|
||||||
public interface NotifyMessageSendApi {
|
public interface NotifyMessageSendApi {
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - OAuth2.0 令牌")
|
@Tag(name = "RPC 服务 - OAuth2.0 令牌")
|
||||||
public interface OAuth2TokenApi {
|
public interface OAuth2TokenApi {
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 权限")
|
@Tag(name = "RPC 服务 - 权限")
|
||||||
public interface PermissionApi {
|
public interface PermissionApi {
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 角色")
|
@Tag(name = "RPC 服务 - 角色")
|
||||||
public interface RoleApi {
|
public interface RoleApi {
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 短信验证码")
|
@Tag(name = "RPC 服务 - 短信验证码")
|
||||||
public interface SmsCodeApi {
|
public interface SmsCodeApi {
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 短信发送")
|
@Tag(name = "RPC 服务 - 短信发送")
|
||||||
public interface SmsSendApi {
|
public interface SmsSendApi {
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 社交应用")
|
@Tag(name = "RPC 服务 - 社交应用")
|
||||||
public interface SocialClientApi {
|
public interface SocialClientApi {
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 社交用户")
|
@Tag(name = "RPC 服务 - 社交用户")
|
||||||
public interface SocialUserApi {
|
public interface SocialUserApi {
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 多租户")
|
@Tag(name = "RPC 服务 - 多租户")
|
||||||
public interface TenantApi {
|
public interface TenantApi {
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ import java.util.Map;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.module.system.api.user.AdminUserApi.PREFIX;
|
import static cn.iocoder.yudao.module.system.api.user.AdminUserApi.PREFIX;
|
||||||
|
|
||||||
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
|
@FeignClient(name = ApiConstants.NAME)
|
||||||
@Tag(name = "RPC 服务 - 管理员用户")
|
@Tag(name = "RPC 服务 - 管理员用户")
|
||||||
@AutoTrans(namespace = PREFIX, fields = {"nickname"})
|
@AutoTrans(namespace = PREFIX, fields = {"nickname"})
|
||||||
public interface AdminUserApi extends AutoTransable<AdminUserRespDTO> {
|
public interface AdminUserApi extends AutoTransable<AdminUserRespDTO> {
|
||||||
|
|
Loading…
Reference in New Issue