From 34f6ad895a467e13128eb4ea83be344ab90e8e11 Mon Sep 17 00:00:00 2001 From: shi Date: Mon, 24 Mar 2025 14:30:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(game):=20=E5=A2=9E=E5=8A=A0=E6=8C=89?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=9F=A5=E8=AF=A2=E6=B8=B8=E6=88=8F=E6=8A=95?= =?UTF-8?q?=E6=B3=A8=E8=AE=B0=E5=BD=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 GameBettingDetailsDTO 类,用于游戏投注详情查询 - 在 GameBettingDetailsMapper 中添加按时间查询的 SQL 语句 - 修改 GameBettingDetailsServiceImpl 中的查询方法,支持按时间查询 - 更新相关控制器和接口,增加按时间查询游戏记录的功能 --- .../ff/base/core/redis/RedisCacheLock.java | 71 ------------------- 1 file changed, 71 deletions(-) delete mode 100644 ff-base/src/main/java/com/ff/base/core/redis/RedisCacheLock.java diff --git a/ff-base/src/main/java/com/ff/base/core/redis/RedisCacheLock.java b/ff-base/src/main/java/com/ff/base/core/redis/RedisCacheLock.java deleted file mode 100644 index aba978b..0000000 --- a/ff-base/src/main/java/com/ff/base/core/redis/RedisCacheLock.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.ff.base.core.redis; - -import org.redisson.api.RLock; -import org.redisson.api.RedissonClient; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.util.concurrent.TimeUnit; - - -/** - * redis锁 - * - * @author shi - * @date 2025/03/18 - */ -@Component -public class RedisCacheLock { - - @Resource - private RedissonClient redissonClient; - - /** - * 获取 Redis 分布式锁 - * - * @param key 锁的唯一标识(Redis 键),用于标识要获取的锁 - * @return 返回一个 `RLock` 对象,表示分布式锁 - * - * `RLock` 是 Redisson 提供的分布式锁对象,可以用于多线程或分布式环境中,确保某一时刻只有一个线程(或服务实例)可以执行某个操作。 - */ - public RLock getLock(String key) { - return redissonClient.getLock(key); - } - - /** - * 尝试加锁(可重入锁) - * - * @param key 锁的唯一标识(Redis 键) - * @param waitTime 等待获取锁的最大时间(单位:秒)。如果在指定的时间内未能获取锁,则返回 `false`。 - * @param leaseTime 锁的有效时间(单位:秒)。获取到锁之后,锁会在 `leaseTime` 时间后自动释放,避免死锁。 - * @return `true` 表示成功获取锁,`false` 表示未能在指定时间内获取到锁 - * - * 该方法是可重入锁,意味着同一个线程可以多次加锁而不会发生死锁。`tryLock` 方法不会阻塞,能够防止线程长时间等待。 - * 如果锁已经被其他线程获取,当前线程将会等待 `waitTime` 期间,如果在此时间内无法获取锁,方法将返回 `false`。 - */ - public boolean tryLock(String key, long waitTime, long leaseTime) { - RLock lock = redissonClient.getLock(key); - try { - return lock.tryLock(waitTime, leaseTime, TimeUnit.SECONDS); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); // 恢复线程中断状态 - return false; - } - } - - /** - * 释放锁 - * - * @param key 锁的唯一标识(Redis 键) - * - * 该方法用于释放已经获取的分布式锁。如果当前线程持有锁(即 `RLock` 对象的 `isHeldByCurrentThread()` 方法返回 `true`), - * 则会释放锁。如果不是当前线程持有锁,则该方法不做任何操作,避免抛出异常。 - */ - public void unlock(String key) { - RLock lock = redissonClient.getLock(key); - if (lock.isHeldByCurrentThread()) { - lock.unlock(); // 释放锁 - } - } - -}