|
@@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.fdkankan.project.tieta.httpclient.HttpClient;
|
|
|
import lombok.Data;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.ibatis.logging.Log;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
@@ -13,6 +15,7 @@ import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
|
|
|
+@Slf4j
|
|
|
@Component
|
|
|
public class RedisClient {
|
|
|
|
|
@@ -22,6 +25,10 @@ public class RedisClient {
|
|
|
|
|
|
public final static String url_str_del = "/redis/string/delete";
|
|
|
|
|
|
+ public final static String URL_REDISSON_LOCKLEASETIME = "/redis/redisson/lockLeaseTime";
|
|
|
+
|
|
|
+ public final static String URL_REDISSON_UNLOCK = "/redis/redisson/unlock";
|
|
|
+
|
|
|
@Value("${redis.host}")
|
|
|
private String host;
|
|
|
|
|
@@ -68,6 +75,35 @@ public class RedisClient {
|
|
|
return jsonObject.getString("data");
|
|
|
}
|
|
|
|
|
|
+ public Map<String, Object> lockLeaseTime(String key, long expirTime){
|
|
|
+ Map<String, Object> result = new HashMap<>();
|
|
|
+ result.put("lock", false);
|
|
|
+ String url = host + URL_REDISSON_LOCKLEASETIME;
|
|
|
+ Map<String, Object> params = new HashMap<>();
|
|
|
+ params.put("lockName", this.genKey(key));
|
|
|
+ params.put("leaseTime", expirTime);
|
|
|
+ JSONObject jsonObject = httpClient.postJson(url, params);
|
|
|
+ log.info("获取分布式锁,key:{}, result:{}", this.genKey(key), jsonObject);
|
|
|
+ if(Objects.nonNull(jsonObject) && "0".equals(jsonObject.getString("status"))){
|
|
|
+ result.put("lock", true);
|
|
|
+ result.put("uniqueFlag", jsonObject.getString("data"));
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean unLock(String key, String uniqueFlag){
|
|
|
+ String url = host + URL_REDISSON_UNLOCK;
|
|
|
+ Map<String, Object> params = new HashMap<>();
|
|
|
+ params.put("lockName", this.genKey(key));
|
|
|
+ params.put("uniqueFlag", uniqueFlag);
|
|
|
+ JSONObject jsonObject = httpClient.postJson(url, params);
|
|
|
+ log.info("释放分布式锁,key:{},uniqueFlag:{}, result:{}", this.genKey(key), uniqueFlag, jsonObject);
|
|
|
+ if(Objects.nonNull(jsonObject) && "0".equals(jsonObject.getString("status"))){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
private String genKey(String key){
|
|
|
return sysCode + "_" + serverName + "_" + key;
|
|
|
}
|