提交新功能 分销商 积分 会员体系

This commit is contained in:
xwxuan
2024-02-08 20:44:58 +08:00
parent 0e255d6c3a
commit 6f5e6e4662
928 changed files with 39318 additions and 1408 deletions

View File

@ -1,5 +1,7 @@
package co.yixiang.yshop.framework.redis.config;
import co.yixiang.yshop.framework.redis.util.RedissonUtil;
import org.redisson.api.RedissonClient;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.data.redis.connection.RedisConnectionFactory;
@ -30,4 +32,14 @@ public class YshopRedisAutoConfiguration {
return template;
}
/**
* /
* @param redissonClient /
* @return Redisson 操作工具类
*/
@Bean
public RedissonUtil redissonUtil(RedissonClient redissonClient){
return new RedissonUtil(redissonClient);
}
}

View File

@ -0,0 +1,87 @@
package co.yixiang.yshop.framework.redis.util;
import co.yixiang.yshop.framework.common.exception.ErrorCode;
import co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil;
import org.redisson.api.RBlockingDeque;
import org.redisson.api.RDelayedQueue;
import org.redisson.api.RedissonClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.concurrent.TimeUnit;
/**
* @author pepis
* @apiNote Redisson 操作工具类
**/
public class RedissonUtil {
private final RedissonClient redissonClient;
Logger logger = LoggerFactory.getLogger(RedissonUtil.class);
public RedissonUtil(RedissonClient redissonClient) {
this.redissonClient = redissonClient;
}
/**
* 向指定key的延时队列中添加任务
* @param key 延时队列
* @param v 订单id
* @param delay 延时时长
* @param timeUnit 延时单位
* @param <V> id类型
*/
public <V> void delayedOffer(String key,V v,long delay, TimeUnit timeUnit){
try {
RBlockingDeque<Object> blockingDeque = redissonClient.getBlockingDeque(key);
RDelayedQueue<Object> delayedQueue = redissonClient.getDelayedQueue(blockingDeque);
delayedQueue.offer(v, delay, timeUnit);
String s = delay + timeUnit.toString();
logger.info("添加延时队列成功 ,延迟时间:" + s + "订单id: " + v);
} catch (Exception e) {
logger.error(e.getMessage());
}
}
/**
* 向指定key的延时队列中添加任务
* @param key 延时队列
* @param v 订单id
* @param delay 延时时长
* @param timeUnit 延时单位
* @param code 添加失败抛出异常
* @param <V> id类型
*/
public <V> void delayedOfferThrow(String key, V v, long delay, TimeUnit timeUnit, ErrorCode code){
try {
RBlockingDeque<Object> blockingDeque = redissonClient.getBlockingDeque(key);
RDelayedQueue<Object> delayedQueue = redissonClient.getDelayedQueue(blockingDeque);
delayedQueue.offer(v, delay, timeUnit);
String s = delay + timeUnit.toString();
logger.info("添加延时队列成功 ,延迟时间:" + s + "订单id: " + v);
} catch (Exception e) {
logger.error(e.getMessage());
throw ServiceExceptionUtil.exception(code,e.getMessage());
}
}
/**
* 向指定key的延时队列中删除任务
* @param key 延时队列
* @param v 订单id
* @param code 添加失败抛出异常
* @param <V> id类型
*/
public <V> void delayedRemoveThrow(String key, V v, ErrorCode code){
try {
RBlockingDeque<Object> blockingDeque = redissonClient.getBlockingDeque(key);
RDelayedQueue<Object> delayedQueue = redissonClient.getDelayedQueue(blockingDeque);
delayedQueue.remove(v);
logger.info("删除延时队列成功 订单id: " + v);
} catch (Exception e) {
logger.error(e.getMessage());
throw ServiceExceptionUtil.exception(code,e.getMessage());
}
}
}