添加限流器,未完成状态
This commit is contained in:
parent
12ab9f178f
commit
96f94b1a18
|
@ -52,4 +52,9 @@ public class YudaoRateLimiterConfiguration {
|
|||
return new ExpressionRateLimiterKeyResolver();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public GuestRateLimiterKeyResolver guestRateLimiterKeyResolver() {
|
||||
return new GuestRateLimiterKeyResolver();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.ratelimiter.core.keyresolver.impl.ClientIpRate
|
|||
import cn.iocoder.yudao.framework.ratelimiter.core.keyresolver.impl.DefaultRateLimiterKeyResolver;
|
||||
import cn.iocoder.yudao.framework.ratelimiter.core.keyresolver.impl.ServerNodeRateLimiterKeyResolver;
|
||||
import cn.iocoder.yudao.framework.ratelimiter.core.keyresolver.impl.UserRateLimiterKeyResolver;
|
||||
import cn.iocoder.yudao.framework.ratelimiter.core.keyresolver.impl.GuestRateLimiterKeyResolver;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
|
@ -52,6 +53,7 @@ public @interface RateLimiter {
|
|||
* @see ClientIpRateLimiterKeyResolver 用户 IP 级别
|
||||
* @see ServerNodeRateLimiterKeyResolver 服务器 Node 级别
|
||||
* @see ExpressionIdempotentKeyResolver 自定义表达式,通过 {@link #keyArg()} 计算
|
||||
* @see GuestRateLimiterKeyResolver 未付费用户 解析器
|
||||
*/
|
||||
Class<? extends RateLimiterKeyResolver> keyResolver() default DefaultRateLimiterKeyResolver.class;
|
||||
/**
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
package cn.iocoder.yudao.framework.ratelimiter.core.keyresolver.impl;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.crypto.SecureUtil;
|
||||
import cn.iocoder.yudao.framework.ratelimiter.core.annotation.RateLimiter;
|
||||
import cn.iocoder.yudao.framework.ratelimiter.core.keyresolver.RateLimiterKeyResolver;
|
||||
import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
|
||||
import org.aspectj.lang.JoinPoint;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* 游客级别的限流 Key 解析器,使用方法名 + 方法参数 + userId + ,组装成一个 Key
|
||||
*
|
||||
* @author 芋道源码
|
||||
*/
|
||||
public class GuestRateLimiterKeyResolver implements RateLimiterKeyResolver {
|
||||
@Override
|
||||
public String resolver(JoinPoint joinPoint, RateLimiter rateLimiter) {
|
||||
|
||||
String methodName = joinPoint.getSignature().toString();
|
||||
String argsStr = StrUtil.join(",", joinPoint.getArgs());
|
||||
Long userId = WebFrameworkUtils.getLoginUserId();
|
||||
Integer userType = WebFrameworkUtils.getLoginUserType();
|
||||
// 获取客户表crm_custom中deal_status字段的值
|
||||
// 假设你有一个方法来获取该值
|
||||
// TODO 查询审核通过的合同信息,根据合同结束时间判断是否已付费
|
||||
// TODO 定时任务检查订单有效期,需要在CRM中更新用户的已付费状态deal_status字段
|
||||
Integer dealStatus = 0;
|
||||
// Integer dealStatus = getDealStatusFromCrmCustom(userId);
|
||||
// 获取用户付费状态
|
||||
return SecureUtil.md5(methodName + argsStr + userId + userType + dealStatus);
|
||||
}
|
||||
}
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue