8 Commits
2eff7c71ad
...
ab8285bd9b
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
ab8285bd9b |
Merge branch 'refs/heads/milestone-20251104-现金管理二期' into sunjiabei/feature-20251021102635-银行接口
|
2 days ago |
|
|
2121e822d3 |
Merge remote-tracking branch 'refs/remotes/origin/lijianlin/feature-20251104110749-现金管理二期' into milestone-20251104-现金管理二期
|
2 days ago |
|
|
cb0f260acf |
11-21 活动列表筛选,金豆消费优化
|
4 days ago |
|
|
cb391ed5cb |
11-24 导出表头优化
|
2 days ago |
|
|
0c19b8d44e |
Merge branch 'milestone-20251104-现金管理二期' of http://39.101.133.168:8807/huangqizhen/gold-java into lijianlin/feature-20251104110749-现金管理二期
|
2 days ago |
|
|
7e9e5e164b |
11.23 消息推送完善
|
3 days ago |
|
|
0f4a27a743 |
11.21 bug
|
3 days ago |
|
|
32fa066f87 |
11-21 活动列表筛选,金豆消费优化
|
4 days ago |
16 changed files with 174 additions and 39 deletions
-
6pom.xml
-
39src/main/java/com/example/demo/config/RateLimitUtil.java
-
58src/main/java/com/example/demo/controller/cash/CashRefundController.java
-
1src/main/java/com/example/demo/domain/entity/User.java
-
5src/main/java/com/example/demo/domain/vo/cash/CashCollection.java
-
3src/main/java/com/example/demo/domain/vo/cash/CashRecordDone.java
-
2src/main/java/com/example/demo/domain/vo/coin/GoldUser.java
-
3src/main/java/com/example/demo/domain/vo/coin/RechargeActivity.java
-
2src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java
-
7src/main/java/com/example/demo/serviceImpl/bean/BeanConsumeServiceImpl.java
-
20src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java
-
5src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java
-
36src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java
-
3src/main/java/com/example/demo/serviceImpl/cash/MessageServiceImpl.java
-
2src/main/resources/cashMapper/CashCollectionMapper.xml
-
21src/main/resources/cashMapper/CashRefundMapper.xml
@ -0,0 +1,39 @@ |
|||
package com.example.demo.config; |
|||
|
|||
import com.google.common.cache.Cache; |
|||
import com.google.common.cache.CacheBuilder; |
|||
import java.util.concurrent.TimeUnit; |
|||
|
|||
/** |
|||
* 本地限流工具类(基于Guava Cache) |
|||
*/ |
|||
public class RateLimitUtil { |
|||
// 缓存:key=限流标识(用户ID/IP),value=占位符(无实际意义) |
|||
private static final Cache<String, Object> RATE_LIMIT_CACHE = CacheBuilder.newBuilder() |
|||
.expireAfterWrite(3, TimeUnit.SECONDS) // 3秒后自动过期(时间窗口) |
|||
.maximumSize(5000) // 最大缓存容量(防止内存溢出,根据用户量调整) |
|||
.build(); |
|||
|
|||
/** |
|||
* 判断是否允许请求 |
|||
* @param key 限流唯一标识(如用户ID、IP) |
|||
* @return true=允许请求,false=限流中 |
|||
*/ |
|||
public static boolean isAllowed(String key) { |
|||
// 1. 尝试从缓存获取key,存在则说明3秒内已请求过(限流) |
|||
if (RATE_LIMIT_CACHE.getIfPresent(key) != null) { |
|||
return false; |
|||
} |
|||
// 2. 缓存中不存在,存入缓存(占位符用new Object()即可) |
|||
RATE_LIMIT_CACHE.put(key, new Object()); |
|||
return true; |
|||
} |
|||
|
|||
/** |
|||
* 手动移除限流标识(如接口执行失败时,释放限流) |
|||
* @param key 限流唯一标识 |
|||
*/ |
|||
public static void removeKey(String key) { |
|||
RATE_LIMIT_CACHE.invalidate(key); |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue