fix(uboot-core): 修改分表aop线程参数类型

This commit is contained in:
chuhang
2021-09-13 08:46:45 +08:00
parent 49969bf57e
commit 4b3b0a0f24
4 changed files with 5 additions and 30 deletions

View File

@ -1,23 +0,0 @@
package com.chinaunicom.mall.ebtp.common.sharding.algorithm.handler;
import com.chinaunicom.mall.ebtp.common.sharding.annotation.RequestShardValue;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* redis键值存储类
*
* @author dino
* @date 2021/09/06 10:48
*/
@Data
@NoArgsConstructor
@AllArgsConstructor(staticName = "of")
public class ShardValue {
private String redisKey;
private RequestShardValue requestShardValue;
}

View File

@ -26,7 +26,7 @@ public class YearHintShardingHandler {
/*表名*/
private static final String BIZ_RSMS_BID_EVAL_DETAIL = "biz_rsms_bid_eval_detail";
/**分片值*/
public static final FastThreadLocal<ShardValue> REQUEST_SHARD_VALUE = new FastThreadLocal<>();
public static final FastThreadLocal<String> REQUEST_SHARD_VALUE = new FastThreadLocal<>();
/**分片缓存前缀*/
public static final String REQUEST_SHARD_KEY = "request_shard_key:";

View File

@ -36,7 +36,7 @@ public @interface RequestShardValue {
* 提示信息,可自定义
* @return String
*/
String info() default "无法获取分片规则,请稍后重试";
String info() default "无法获取分片规则,请联系管理员";
/**
* 是否在业务完成后删除key true:删除 false:不删除

View File

@ -4,7 +4,6 @@ import cn.hutool.json.JSONUtil;
import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse;
import com.chinaunicom.mall.ebtp.common.exception.common.CommonExceptionEnum;
import com.chinaunicom.mall.ebtp.common.exception.entity.BusinessException;
import com.chinaunicom.mall.ebtp.common.sharding.algorithm.handler.ShardValue;
import com.chinaunicom.mall.ebtp.common.sharding.algorithm.handler.YearHintShardingHandler;
import com.chinaunicom.mall.ebtp.common.sharding.annotation.RequestShardValue;
import com.chinaunicom.mall.ebtp.common.sharding.expression.KeyResolver;
@ -71,7 +70,7 @@ public class RequestShardValueAspect {
/*新增rsms分表*/
YearHintShardingHandler.addRsmsTableShardingValue(year);
/*新增线程*/
REQUEST_SHARD_VALUE.set(ShardValue.of(redisKey, requestShardValue));
REQUEST_SHARD_VALUE.set(redisKey);
synchronized(this) {
this.redisTemplate.opsForValue().setIfAbsent(redisKey, projectVO, requestShardValue.expireTime(), requestShardValue.timeUnit());
}
@ -84,9 +83,8 @@ public class RequestShardValueAspect {
if (!method.isAnnotationPresent(RequestShardValue.class)) {
return;
}
ShardValue shardValue = REQUEST_SHARD_VALUE.get();
RequestShardValue requestShardValue = shardValue.getRequestShardValue();
String key = shardValue.getRedisKey();
RequestShardValue requestShardValue = method.getAnnotation(RequestShardValue.class);
String key = REQUEST_SHARD_VALUE.get();
Optional<Object> o = Optional.ofNullable(this.redisTemplate.opsForValue().get(key));
if (o.isPresent() && requestShardValue.delKey()) {
this.redisTemplate.delete(key);