|
@@ -21,7 +21,9 @@ import reactor.core.publisher.Mono;
|
|
|
import space.anyi.openAPI.comom.model.interfaceInfo.InterfaceInfo;
|
|
import space.anyi.openAPI.comom.model.interfaceInfo.InterfaceInfo;
|
|
|
import space.anyi.openAPI.comom.model.interfaceInfo.InterfaceStatus;
|
|
import space.anyi.openAPI.comom.model.interfaceInfo.InterfaceStatus;
|
|
|
import space.anyi.openAPI.comom.model.user.User;
|
|
import space.anyi.openAPI.comom.model.user.User;
|
|
|
|
|
+import space.anyi.openAPI.comom.model.userInterfaceInfo.UserInterfaceInfo;
|
|
|
import space.anyi.openAPI.comom.service.inside.InsideInterfaceInfoService;
|
|
import space.anyi.openAPI.comom.service.inside.InsideInterfaceInfoService;
|
|
|
|
|
+import space.anyi.openAPI.comom.service.inside.InsideUserInterfaceInfoService;
|
|
|
import space.anyi.openAPI.comom.service.inside.InsideUserService;
|
|
import space.anyi.openAPI.comom.service.inside.InsideUserService;
|
|
|
|
|
|
|
|
import java.util.HashSet;
|
|
import java.util.HashSet;
|
|
@@ -48,6 +50,8 @@ public class ConsumerFilter implements GlobalFilter, Ordered {
|
|
|
private InsideInterfaceInfoService insideInterfaceInfoService;
|
|
private InsideInterfaceInfoService insideInterfaceInfoService;
|
|
|
@DubboReference
|
|
@DubboReference
|
|
|
private InsideUserService insideUserService;
|
|
private InsideUserService insideUserService;
|
|
|
|
|
+ @DubboReference
|
|
|
|
|
+ private InsideUserInterfaceInfoService insideUserInterfaceInfoService;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 记录时间戳和随机数nonce(防止重放攻击)
|
|
* 记录时间戳和随机数nonce(防止重放攻击)
|
|
@@ -108,11 +112,22 @@ public class ConsumerFilter implements GlobalFilter, Ordered {
|
|
|
return parameterExceptionHandler(response,"sign不合法");
|
|
return parameterExceptionHandler(response,"sign不合法");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- //todo:是否还有调用次数
|
|
|
|
|
-
|
|
|
|
|
|
|
+ //是否还有调用次数
|
|
|
|
|
+ UserInterfaceInfo userInterfaceInfo = insideUserInterfaceInfoService.getUserInterfaceInfoByUserIdAndInterfaceInfoId(user.getId(), interfaceInfo.getId());
|
|
|
|
|
+ log.debug("userInterfaceInfo:{}", userInterfaceInfo);
|
|
|
|
|
+ if (Objects.isNull(userInterfaceInfo)) {
|
|
|
|
|
+ log.warn("userInterfaceInfo不存在:{}",userInterfaceInfo);
|
|
|
|
|
+ return parameterExceptionHandler(response,"没有开通调用权限");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (userInterfaceInfo.getLeftNum()<=0) {
|
|
|
|
|
+ log.warn("用户:{}的接口{}调用次数不足:{}",user,interfaceInfo,userInterfaceInfo.getLeftNum());
|
|
|
|
|
+ return parameterExceptionHandler(response,"调用次数不足");
|
|
|
|
|
+ }
|
|
|
|
|
+ //调用次数+1
|
|
|
return chain.filter(exchange).doOnSuccess(aVoid -> {
|
|
return chain.filter(exchange).doOnSuccess(aVoid -> {
|
|
|
- //todo:过滤器后置处理
|
|
|
|
|
- log.info("过滤器后置处理");
|
|
|
|
|
|
|
+ //过滤器后置处理
|
|
|
|
|
+ log.info("用户:{}调用接口:{}成功",user.getId(),interfaceInfo.getId());
|
|
|
|
|
+ insideUserInterfaceInfoService.invokeSuccess(userInterfaceInfo.getId());
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|