diff --git a/pom.xml b/pom.xml
index 3a8b845..564b9f9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,47 +21,6 @@
org.springframework.boot
spring-boot-starter-web
-
-
-
-
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-starter-data-redis
-
-
- org.springframework.kafka
- spring-kafka
-
-
-
- com.mysql
- mysql-connector-j
- 8.2.0
- runtime
-
-
-
- com.baomidou
- mybatis-plus-boot-starter
- 3.5.9
-
-
-
- org.jooq
- jooq-codegen-maven
- 3.14.8
-
-
- javax.validation
- validation-api
- 2.0.1.Final
-
org.projectlombok
@@ -93,24 +52,6 @@
guava
33.0.0-jre
-
-
- org.bouncycastle
- bcprov-jdk15on
- 1.70
-
-
-
- org.bouncycastle
- bcmail-jdk15on
- 1.70
-
-
-
- org.apache.directory.studio
- org.apache.commons.codec
- 1.8
-
@@ -128,21 +69,6 @@
-
- org.jooq
- jooq-codegen-maven
- 3.14.8
-
-
-
- generate
-
-
-
-
- ${project.basedir}/src/main/resources/jooq-config.xml
-
-
diff --git a/src/main/java/com/cecilia/Application.java b/src/main/java/com/cecilia/Application.java
index f44003a..9e6d27f 100644
--- a/src/main/java/com/cecilia/Application.java
+++ b/src/main/java/com/cecilia/Application.java
@@ -1,11 +1,9 @@
package com.cecilia;
-import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
-@MapperScan("com.cecilia.api.mapper")
public class Application {
public static void main(String[] args) {
diff --git a/src/main/java/com/cecilia/api/mapper/base/DicMapper.java b/src/main/java/com/cecilia/api/mapper/base/DicMapper.java
deleted file mode 100644
index 0d20bbb..0000000
--- a/src/main/java/com/cecilia/api/mapper/base/DicMapper.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.cecilia.api.mapper.base;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.cecilia.pojo.entity.tables.pojos.BaseDic;
-
-public interface DicMapper extends BaseMapper {
-}
diff --git a/src/main/java/com/cecilia/api/mapper/base/DicTypeMapper.java b/src/main/java/com/cecilia/api/mapper/base/DicTypeMapper.java
deleted file mode 100644
index 4428f21..0000000
--- a/src/main/java/com/cecilia/api/mapper/base/DicTypeMapper.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.cecilia.api.mapper.base;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.cecilia.pojo.entity.tables.pojos.BaseDicType;
-
-public interface DicTypeMapper extends BaseMapper {
-}
diff --git a/src/main/java/com/cecilia/api/service/demo/DemoService.java b/src/main/java/com/cecilia/api/service/demo/DemoService.java
deleted file mode 100644
index 911f567..0000000
--- a/src/main/java/com/cecilia/api/service/demo/DemoService.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package com.cecilia.api.service.demo;
-
-public interface DemoService {
-}
diff --git a/src/main/java/com/cecilia/api/service/test/TestService.java b/src/main/java/com/cecilia/api/service/test/TestService.java
deleted file mode 100644
index cf5f6da..0000000
--- a/src/main/java/com/cecilia/api/service/test/TestService.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package com.cecilia.api.service.test;
-
-public interface TestService {
-}
diff --git a/src/main/java/com/cecilia/common/util/Base64Utils.java b/src/main/java/com/cecilia/common/util/Base64Utils.java
deleted file mode 100644
index e376214..0000000
--- a/src/main/java/com/cecilia/common/util/Base64Utils.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package com.cecilia.common.util;
-
-import org.apache.commons.codec.binary.Base64;
-
-import java.io.*;
-
-public class Base64Utils {
-
- /**
- * BASE64编码解码工具包
- * 依赖javabase64-1.3.1.jar
- *
- * @date 2012-5-19
- * @version 1.0
- */
-
- /**
- * 文件读取缓冲区大小
- */
- private static final int CACHE_SIZE = 1024;
-
- /**
- * BASE64字符串解码为二进制数据
- */
- public static byte[] decode(String base64) throws Exception {
- return Base64.decodeBase64(base64.getBytes());
- // return Base64.decode(base64.getBytes());
- }
-
- /**
- * 二进制数据编码为BASE64字符串
- */
- public static String encode(byte[] bytes) throws Exception {
- return new String(Base64.encodeBase64(bytes));
- // return new String(Base64.encode(bytes));
- }
-
- /**
- * 将文件编码为BASE64字符串
- * 大文件慎用,可能会导致内存溢出
- *
- * @param filePath 文件绝对路径
- */
- public static String encodeFile(String filePath) throws Exception {
- byte[] bytes = fileToByte(filePath);
- return encode(bytes);
- }
-
- /**
- * BASE64字符串转回文件
- * @param filePath 文件绝对路径
- * @param base64 编码字符串
- */
- public static void decodeToFile(String filePath, String base64) throws Exception {
- byte[] bytes = decode(base64);
- byteArrayToFile(bytes, filePath);
- }
-
- /**
- * 文件转换为二进制数组
- * @param filePath 文件路径
- */
- public static byte[] fileToByte(String filePath) throws Exception {
- byte[] data = new byte[0];
- File file = new File(filePath);
- if (file.exists()) {
- FileInputStream in = new FileInputStream(file);
- ByteArrayOutputStream out = new ByteArrayOutputStream(2048);
- byte[] cache = new byte[CACHE_SIZE];
- int nRead = 0;
- while ((nRead = in.read(cache)) != -1) {
- out.write(cache, 0, nRead);
- out.flush();
- }
- out.close();
- in.close();
- data = out.toByteArray();
- }
- return data;
- }
-
- /**
- * 二进制数据写文件
- * @param bytes 二进制数据
- * @param filePath 文件生成目录
- */
- public static void byteArrayToFile(byte[] bytes, String filePath) throws Exception {
- InputStream in = new ByteArrayInputStream(bytes);
- File destFile = new File(filePath);
- if (!destFile.getParentFile().exists()) {
- destFile.getParentFile().mkdirs();
- }
- destFile.createNewFile();
- OutputStream out = new FileOutputStream(destFile);
- byte[] cache = new byte[CACHE_SIZE];
- int nRead = 0;
- while ((nRead = in.read(cache)) != -1) {
- out.write(cache, 0, nRead);
- out.flush();
- }
- out.close();
- in.close();
- }
-}
diff --git a/src/main/java/com/cecilia/common/util/CryptoUtils.java b/src/main/java/com/cecilia/common/util/CryptoUtils.java
deleted file mode 100644
index 2bc801e..0000000
--- a/src/main/java/com/cecilia/common/util/CryptoUtils.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.cecilia.common.util;
-
-import org.apache.commons.codec.binary.Hex;
-
-import javax.crypto.Cipher;
-import javax.crypto.NoSuchPaddingException;
-import javax.crypto.spec.IvParameterSpec;
-import javax.crypto.spec.SecretKeySpec;
-import java.nio.charset.StandardCharsets;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-import java.security.Security;
-
-public class CryptoUtils {
-
- static {
- if (Security.getProvider("BC") == null) {
- Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
- } else {
- Security.removeProvider("BC");
- Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
- }
- }
-
- /**
- * 使用AES-128-CBC加密模式,key需要为16位,key和iv可以相同,也可以不同!
- */
- private static final String KEY = "UNo49jvVsvz5idwx";
- private static final String IV = "UNo49jvVsvz5idwx";
- private static Cipher cipher = null;
- private static final byte[] raw = KEY.getBytes(StandardCharsets.UTF_8);
- private static final SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
- private static final IvParameterSpec iv = new IvParameterSpec(IV.getBytes(StandardCharsets.UTF_8));// 使用CBC模式,需要一个向量iv,可增加加密算法的强度
-
- static {
- try {
- cipher = Cipher.getInstance("AES/CBC/PKCS7Padding","BC");
- } catch (NoSuchAlgorithmException | NoSuchProviderException | NoSuchPaddingException e) {
- e.printStackTrace();
- }
- }
-
- /**
- * 加密
- */
- public static String encryptAESPkcs7(String sourceStr) throws Exception{
- cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
- byte[] encrypted = cipher.doFinal(sourceStr.getBytes(StandardCharsets.UTF_8));
- return Hex.encodeHexString(encrypted);
-
- }
-
- public static String decryptAESPkcs7(String sourceStr) throws Exception{
- cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
- byte[] original = cipher.doFinal(Hex.decodeHex(sourceStr));
- return new String(original, StandardCharsets.UTF_8);
- }
-
- // 文章参考 https://blog.csdn.net/haoyafei_/article/details/106826423
- public static void main(String[] args) throws Exception{
- String str = "3.141592653579";
- String enc = encryptAESPkcs7(str);
- String dec = decryptAESPkcs7(enc);
- System.out.println(enc);
- System.out.println(dec);
- }
-}
diff --git a/src/main/java/com/cecilia/common/util/SM2Util.java b/src/main/java/com/cecilia/common/util/SM2Util.java
deleted file mode 100644
index ca8b0b1..0000000
--- a/src/main/java/com/cecilia/common/util/SM2Util.java
+++ /dev/null
@@ -1,293 +0,0 @@
-package com.cecilia.common.util;
-
-import org.bouncycastle.asn1.gm.GMNamedCurves;
-import org.bouncycastle.asn1.gm.GMObjectIdentifiers;
-import org.bouncycastle.asn1.x9.X9ECParameters;
-import org.bouncycastle.crypto.engines.SM2Engine;
-import org.bouncycastle.crypto.params.ECDomainParameters;
-import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
-import org.bouncycastle.crypto.params.ECPublicKeyParameters;
-import org.bouncycastle.crypto.params.ParametersWithRandom;
-import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey;
-import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey;
-import org.bouncycastle.jce.provider.BouncyCastleProvider;
-import org.bouncycastle.jce.spec.ECParameterSpec;
-import org.bouncycastle.jce.spec.ECPrivateKeySpec;
-import org.bouncycastle.jce.spec.ECPublicKeySpec;
-import org.bouncycastle.util.encoders.Hex;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.math.BigInteger;
-import java.nio.charset.StandardCharsets;
-import java.security.*;
-import java.security.spec.ECGenParameterSpec;
-import java.util.HashMap;
-import java.util.Map;
-
-
-public class SM2Util {
- private static final Logger logger = LoggerFactory.getLogger(SM2Util.class.getSimpleName());
- //ECC 曲线 SM2命名曲线
- private final static String NAME_CURVE = "sm2p256v1";
- private final static ECGenParameterSpec SM2_SPEC = new ECGenParameterSpec(NAME_CURVE);
-
- //椭圆曲线ECParameters ASN.1 结构
- private static final X9ECParameters x9ECParameters = GMNamedCurves.getByName(NAME_CURVE);
- //椭圆曲线公钥或私钥的基本域参数。
- private static final ECParameterSpec ecDomainParameters = new ECParameterSpec(x9ECParameters.getCurve(), x9ECParameters.getG(), x9ECParameters.getN());
-
- /**
- * 生成密钥
- */
- public static Map generateKey() {
- Map resultMap = new HashMap<>();
- KeyPair keyPair = initECKeyPair();
- if (null != keyPair) {
- //生成公钥
- PublicKey publicKey = keyPair.getPublic();
- if (publicKey instanceof BCECPublicKey) {
- byte[] publicKeyByte = ((BCECPublicKey) publicKey).getQ().getEncoded(false);
- logger.info("publicKey is : " + Hex.toHexString(publicKeyByte));
- logger.info("publicKey byte size : " + publicKeyByte.length);
- if (publicKeyByte.length > 0) {
- resultMap.put("PublicKey", Hex.toHexString(publicKeyByte));
- }
- }
- //生成私钥
- PrivateKey privateKey = keyPair.getPrivate();
- if (privateKey instanceof BCECPrivateKey) {
- byte[] privateKeyByte = ((BCECPrivateKey) privateKey).getD().toByteArray();
- logger.info("privateKey is : " + Hex.toHexString(privateKeyByte));
- logger.info("privateKey byte size : " + privateKeyByte.length);
- if (privateKeyByte.length > 0)
- resultMap.put("PrivateKey", Hex.toHexString(privateKeyByte));
- }
- }
- return resultMap;
- }
-
- /**
- * 初始化密钥
- */
- private static KeyPair initECKeyPair() {
- KeyPairGenerator kpg;
- try {
- kpg = KeyPairGenerator.getInstance("EC", new BouncyCastleProvider());
- kpg.initialize(SM2_SPEC, new SecureRandom());
- return kpg.generateKeyPair();
- } catch (Exception e) {
- logger.error("生成密钥错误:" + e.getMessage());
- return null;
- }
- }
-
- /**
- * 内容加密
- */
- public static byte[] encrypt(byte[] publicKeyByte, byte[] data) {
- //通过公钥对象获取公钥的基本与参数
- BCECPublicKey publicKey = getECPublicKeyByPublicKeyHex(Hex.toHexString(publicKeyByte));
- ECParameterSpec ecParameterSpec = publicKey.getParameters();
- ECDomainParameters ecDomainParameters = new ECDomainParameters(ecParameterSpec.getCurve(), ecParameterSpec.getG(), ecParameterSpec.getN());
- ECPublicKeyParameters ecPublicKeyParameters = new ECPublicKeyParameters(publicKey.getQ(), ecDomainParameters);
-
- SM2Engine sm2Engine = new SM2Engine(SM2Engine.Mode.C1C3C2);
- sm2Engine.init(true, new ParametersWithRandom(ecPublicKeyParameters, new SecureRandom()));
- byte[] arrayOfBytes = null;
- try {
- arrayOfBytes = sm2Engine.processBlock(data, 0, data.length);
- } catch (Exception e) {
- logger.error("加密错误:" + e.getMessage());
- }
- return arrayOfBytes;
- }
-
- /**
- * 内容公钥加密 返回字符串
- */
- public static String encrypt(String publicKeyHex, String data) {
- byte[] publicKeyByte = Hex.decode(publicKeyHex);
- byte[] dataByte = data.getBytes(StandardCharsets.UTF_8);
- byte[] encryptByte = encrypt(publicKeyByte, dataByte);
- return Hex.toHexString(encryptByte);
- }
-
- /**
- * 私钥解密
- */
- public static byte[] decrypt(byte[] privateKeyByte, byte[] data) {
- //通过私钥对象获取私钥的基本域参数。
- BCECPrivateKey privateKey = getBCECPrivateKeyByPrivateKeyHex(Hex.toHexString(privateKeyByte));
- ECParameterSpec ecParameterSpec = privateKey.getParameters();
- ECDomainParameters ecDomainParameters = new ECDomainParameters(ecParameterSpec.getCurve(),
- ecParameterSpec.getG(), ecParameterSpec.getN());
-
- //通过私钥值和私钥钥基本参数创建私钥参数对象
- ECPrivateKeyParameters ecPrivateKeyParameters = new ECPrivateKeyParameters(privateKey.getD(),
- ecDomainParameters);
-
- //通过解密模式创建解密引擎并初始化
- SM2Engine sm2Engine = new SM2Engine(SM2Engine.Mode.C1C3C2);
- sm2Engine.init(false, ecPrivateKeyParameters);
-
- try {
- //通过解密引擎对密文字节串进行解密
- //将解密后的字节串转换为utf8字符编码的字符串(需要与明文加密时字符串转换成字节串所指定的字符编码保持一致)
- return sm2Engine.processBlock(data, 0, data.length);
- } catch (Exception e) {
- logger.error("解密错误:" + e.getMessage());
- return null;
- }
-
- }
-
- /**
- * 私钥解密 返回字符串
- */
- public static String decrypt(String privateKeyHex, String data) {
- byte[] privateKeyByte = Hex.decode(privateKeyHex);
- byte[] dataByte = Hex.decode(data);
- byte[] decryptByte = decrypt(privateKeyByte, dataByte);
- return new String(decryptByte, StandardCharsets.UTF_8);
- }
-
- /**
- * 签名
- */
- public static byte[] sign(String privateKeyHex, byte[] message) {
- try {
- Signature signature = Signature.getInstance(GMObjectIdentifiers.sm2sign_with_sm3.toString(), new BouncyCastleProvider());
- signature.initSign(getBCECPrivateKeyByPrivateKeyHex(privateKeyHex));
- signature.update(message);
- return signature.sign();
- } catch (Exception e) {
- logger.error("签名错误:" + e.getMessage());
- return null;
- }
-
- }
-
- /**
- * 私钥生成签名 返回字符串
- */
- public static String sign(String privateKeyHex, String message) {
- byte[] messageByte = message.getBytes(StandardCharsets.UTF_8);
- byte[] signByte = sign(privateKeyHex, messageByte);
- return Hex.toHexString(signByte);
- }
-
- /**
- * 验签
- */
- public static boolean verifySign(String publicKeyHex, byte[] signedMsg, byte[] originMsg) {
- try {
- Signature signature = Signature.getInstance(GMObjectIdentifiers.sm2sign_with_sm3.toString(), new BouncyCastleProvider());
- signature.initVerify(getECPublicKeyByPublicKeyHex(publicKeyHex));
- signature.update(originMsg);
- return signature.verify(signedMsg);
- } catch (Exception e) {
- logger.error("验签错误:" + e.getMessage());
- return false;
- }
-
- }
-
- /**
- * 公钥验签 返回布尔值
- */
- public static boolean verifySign(String publicKeyHex, String signedMsg, String originMsg) {
- byte[] signedMsgByte = Hex.decode(signedMsg);
- byte[] originMsgByte = originMsg.getBytes(StandardCharsets.UTF_8);
- return verifySign(publicKeyHex, signedMsgByte, originMsgByte);
- }
-
- /**
- * 根据16进制内容生成公钥
- */
- public static BCECPublicKey getECPublicKeyByPublicKeyHex(String pubKeyHex) {
- //截取64字节有效的SM2公钥(如果公钥首个字节为0x04)
- if (pubKeyHex.length() > 128) {
- pubKeyHex = pubKeyHex.substring(pubKeyHex.length() - 128);
- }
- //将公钥拆分为x,y分量(各32字节)
- String stringX = pubKeyHex.substring(0, 64);
- String stringY = pubKeyHex.substring(stringX.length());
- //将公钥x、y分量转换为BigInteger类型
- BigInteger x = new BigInteger(stringX, 16);
- BigInteger y = new BigInteger(stringY, 16);
- //通过公钥x、y分量创建椭圆曲线公钥规范
- ECPublicKeySpec ecPublicKeySpec = new ECPublicKeySpec(x9ECParameters.getCurve().createPoint(x, y), ecDomainParameters);
- //通过椭圆曲线公钥规范,创建出椭圆曲线公钥对象(可用于SM2加密及验签)
- return new BCECPublicKey("EC", ecPublicKeySpec, BouncyCastleProvider.CONFIGURATION);
- }
-
-
- /**
- * 私钥字符串转换为 BCECPrivateKey 私钥对象
- *
- * @param privateKeyHex: 32字节十六进制私钥字符串
- * @return BCECPrivateKey:SM2私钥对象
- */
- public static BCECPrivateKey getBCECPrivateKeyByPrivateKeyHex(String privateKeyHex) {
- //将十六进制私钥字符串转换为BigInteger对象
- BigInteger d = new BigInteger(privateKeyHex, 16);
- //通过私钥和私钥域参数集创建椭圆曲线私钥规范
- ECPrivateKeySpec ecPrivateKeySpec = new ECPrivateKeySpec(d, ecDomainParameters);
- //通过椭圆曲线私钥规范,创建出椭圆曲线私钥对象(可用于SM2解密和签名)
- return new BCECPrivateKey("EC", ecPrivateKeySpec, BouncyCastleProvider.CONFIGURATION);
- }
-
-
- public static void main(String[] args) {
- // 生成密钥对
- Map map = generateKey();
-
- /*
- * 密钥对
- * 通常加解密 和 签名验签 所用的公私钥不是一套
- * 公钥加密 私钥解密 私钥签名 公钥验签
- */
- String signPublicKey = map.get("PublicKey");
- String signPrivateKey = map.get("PrivateKey");
-
- //加密内容
- String info = "Test123Test123Test1234567";
-
-// //加密
-// byte[] encodeInfoBytes = encrypt(Hex.decode(signPublicKey),info.getBytes(StandardCharsets.UTF_8));
-// String encodeInfo = Hex.toHexString(encodeInfoBytes);
-// logger.info("加密内容"+encodeInfo);
-//
-// // 解密
-// byte[] decodeInfoBytes = decrypt(Hex.decode(signPrivateKey),Hex.decode(encodeInfo));
-// String decodeInfo = null;
-// if (decodeInfoBytes != null) {
-// decodeInfo = new String(decodeInfoBytes);
-// }
-// logger.info("解密内容"+decodeInfo);
-//
-// String signedInfo = Hex.toHexString(Objects.requireNonNull(sign(signPrivateKey, encodeInfo.getBytes(StandardCharsets.UTF_8))));
-// logger.info("签名:" + signedInfo);
-//
-// boolean isSigned = verifySign(signPublicKey,Hex.decode(signedInfo),encodeInfo.getBytes(StandardCharsets.UTF_8));
-// logger.info("验签:" + isSigned);
-
- //加密
- String encodeInfo = encrypt(signPublicKey,info);
- logger.info("加密内容"+encodeInfo);
-
- //解密
- String decodeInfo = decrypt(signPrivateKey,encodeInfo);
- logger.info("解密内容"+decodeInfo);
-
- //签名
- String signedInfo = sign(signPrivateKey,encodeInfo);
- logger.info("签名:" + signedInfo);
-
- //验签
- boolean isSigned = verifySign(signPublicKey,signedInfo,encodeInfo);
- logger.info("验签:" + isSigned);
-
- }
-}
diff --git a/src/main/java/com/cecilia/common/util/redis/RedisCacheUtils.java b/src/main/java/com/cecilia/common/util/redis/RedisCacheUtils.java
deleted file mode 100644
index 57a1af4..0000000
--- a/src/main/java/com/cecilia/common/util/redis/RedisCacheUtils.java
+++ /dev/null
@@ -1,177 +0,0 @@
-package com.cecilia.common.util.redis;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.core.script.DefaultRedisScript;
-import org.springframework.data.redis.serializer.StringRedisSerializer;
-import org.springframework.stereotype.Component;
-
-import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author fuhouyin
- * @time 2023/4/11 9:30
- */
-@Slf4j
-@Component
-public class RedisCacheUtils {
-
- @Autowired
- private RedisTemplateProvider redisTemplateProvider;
- @Autowired
- private RedisTemplate redisTemplate;
- private final StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
- public static final String SETNX_SCRIPT = "return redis.call('setnx',KEYS[1], ARGV[1])";
-
- public void setValue(String key, Object value){
- RedisTemplate redisTemplate = getRedisTemplate();
- redisTemplate.opsForValue().set(key,value);
- }
-
- public void setValue(String key, Object value,Long timeout, TimeUnit timeUnit){
- RedisTemplate redisTemplate = getRedisTemplate();
- redisTemplate.opsForValue().set(key,value,timeout, timeUnit);
- }
-
- public Object getValue(String key){
- RedisTemplate redisTemplate = getRedisTemplate();
- return redisTemplate.opsForValue().get(key);
- }
-
- public String getCacheKey(Object... keys) {
- return StringUtils.join(Arrays.asList(keys), ":");
- }
-
- public Long hashIncrement(String key, String hashKey){
- RedisTemplate redisTemplate = getRedisTemplate();
- Long increment = redisTemplate.opsForHash().increment(key, hashKey, 1);
- return increment;
- }
-
- public boolean hasKey(String key){
- return getRedisTemplate().hasKey(key);
- }
-
- public boolean delKey(String key){
- if (StringUtils.isEmpty(key)) {
- return Boolean.FALSE;
- }
- RedisTemplate redisTemplate = getRedisTemplate();
- if (redisTemplate.hasKey(key)) {
- return redisTemplate.delete(key);
- }
- return Boolean.TRUE;
- }
-
- public boolean hashHasKey(String key, String hashKey){
- return getRedisTemplate().opsForHash().hasKey(key, hashKey);
- }
-
- public Object hashGet(String key, String hashKey){
- return getRedisTemplate().opsForHash().get(key, hashKey);
- }
-
- private RedisTemplate getRedisTemplate(){
- RedisTemplate template = redisTemplateProvider.getTemplate(stringRedisSerializer);
- return template;
- }
-
- public void hashPut(String key,String hashKey, String value){
- getRedisTemplate().opsForHash().put(key,hashKey,value);
- }
-
- public void hashPutIfAbsent(String key, String hashKey, String value) {
- getRedisTemplate().opsForHash().putIfAbsent(key,hashKey,value);
- }
-
- public Boolean expire(String key, long time, TimeUnit timeUnit){
- Boolean result = getRedisTemplate().expire(key, time, timeUnit);
- return result;
- }
-
- /**
- * 指定缓存失效时间
- */
- public void expire(String key, long time) {
- redisTemplate.expire(key, time, TimeUnit.MILLISECONDS);
- }
- /**
- * 根据key 获取过期时间
- *
- * @param key 键 不能为null
- * @return 时间(毫秒) 返回0代表为永久有效
- */
- public long getExpire(String key) {
- return redisTemplate.getExpire(key, TimeUnit.MILLISECONDS);
- }
-
- public Boolean lock(String key){
- return getRedisTemplate().opsForValue().setIfAbsent(key, BigDecimal.ZERO.intValue());
- }
-
- /**
- * redis实现分布式锁
- * @param key time是:毫秒毫秒毫秒毫秒毫秒
- * @return
- */
- public boolean lock(String key,Long time) {
- //自定义脚本
- DefaultRedisScript script = new DefaultRedisScript<>(SETNX_SCRIPT, List.class);
- //执行脚本,传入参数,由于value没啥用,这里随便写死的"1"
- List rst = (List) redisTemplate.execute(script, Collections.singletonList(key), "1");
- //返回1,表示设置成功,拿到锁
- if(rst.get(0) == 1){
- log.info(key+"成功拿到锁");
- //设置过期时间
- expire(key,time);
- log.info(key+"已成功设置过期时间:"+time +" 秒");
- return true;
- }else{
- long expire = getExpire(key);
- log.info(key+"未拿到到锁,还有"+expire+"释放");
- return false;
- }
- }
-
- public Boolean tryLock(String key){
- try {
- for (int i = 0; i < 3; i++) {
- if (lock(key)) {
- return Boolean.TRUE;
- }
- Thread.sleep(100L);
- }
- } catch (InterruptedException e) {
- return Boolean.FALSE;
- }
- return Boolean.FALSE;
- }
-
- public void unlock(String key){
- getRedisTemplate().delete(key);
- }
-
-
- public Long increment(String key, Long delta){
- return getRedisTemplate().opsForValue().increment(key,delta);
- }
-
- public Boolean setIfAbsent(String key, Object value){
- return getRedisTemplate().opsForValue().setIfAbsent(key,value);
- }
-
- public Set keys(String keyPattern) {
- return getRedisTemplate().keys(keyPattern);
- }
-
- public Object getAndSet(String key, Object value){
- return getRedisTemplate().opsForValue().getAndSet(key,value);
- }
-}
diff --git a/src/main/java/com/cecilia/common/util/redis/RedisTemplateProvider.java b/src/main/java/com/cecilia/common/util/redis/RedisTemplateProvider.java
deleted file mode 100644
index fdc1ee9..0000000
--- a/src/main/java/com/cecilia/common/util/redis/RedisTemplateProvider.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.cecilia.common.util.redis;
-
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.serializer.RedisSerializer;
-
-/**
- * @author fuhouyin
- * @time 2023/4/11 9:30
- */
-public interface RedisTemplateProvider {
- RedisTemplate getTemplate();
-
- RedisTemplate getTemplate(RedisSerializer valueSerializer);
-}
diff --git a/src/main/java/com/cecilia/common/util/redis/RedisTemplateProviderImpl.java b/src/main/java/com/cecilia/common/util/redis/RedisTemplateProviderImpl.java
deleted file mode 100644
index b39f370..0000000
--- a/src/main/java/com/cecilia/common/util/redis/RedisTemplateProviderImpl.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package com.cecilia.common.util.redis;
-
-import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
-import org.springframework.data.redis.serializer.RedisSerializer;
-import org.springframework.data.redis.serializer.StringRedisSerializer;
-import org.springframework.stereotype.Component;
-import org.springframework.util.Assert;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-/**
- * @author fuhouyin
- * @time 2023/4/11 9:30
- */
-@Component
-public class RedisTemplateProviderImpl implements RedisTemplateProvider {
- public static final RedisSerializer