wangwei 5 éve
szülő
commit
f7a665de6a

+ 0 - 1
.gitignore

@@ -16,7 +16,6 @@ buildNumber.properties
 target/
 .idea/
 *.iml
-*test/
 # Package Files #
 *.jar
 

+ 5 - 4
src/main/java/cn/com/qmth/examcloud/support/redis/RedisKeyBuilder.java

@@ -1,14 +1,15 @@
 package cn.com.qmth.examcloud.support.redis;
 
 /**
- * Redis key构建器
+ * Redis key构建器接口
  *
  * @author WANGWEI
  * @date 2019年8月16日
  * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
  */
-public class RedisKeyBuilder {
-	
-	
+public interface RedisKeyBuilder {
+
+	@RedisKeyDefine(value = "网考考试记录", Prefix = "OE_ERD")
+	String buildExamRecordDataKey(Long examRecordDateId);
 
 }

+ 24 - 0
src/main/java/cn/com/qmth/examcloud/support/redis/RedisKeyDefine.java

@@ -0,0 +1,24 @@
+package cn.com.qmth.examcloud.support.redis;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * redis key定义
+ *
+ * @author WANGWEI
+ * @date 2019年12月12日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface RedisKeyDefine {
+
+	String value();
+
+	String Prefix();
+}

+ 59 - 0
src/main/java/cn/com/qmth/examcloud/support/redis/RedisKeyHelper.java

@@ -0,0 +1,59 @@
+package cn.com.qmth.examcloud.support.redis;
+
+import java.lang.reflect.Method;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.cglib.proxy.Enhancer;
+import org.springframework.cglib.proxy.MethodInterceptor;
+import org.springframework.cglib.proxy.MethodProxy;
+
+/**
+ * redis key helper
+ *
+ * @author WANGWEI
+ * @date 2019年12月12日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public class RedisKeyHelper {
+
+	private static RedisKeyBuilder redisKeyBuilder;
+
+	/**
+	 * 创建 {@link RedisKeyBuilder} 实例
+	 *
+	 * @author WANGWEI
+	 */
+	private static void newInstance() {
+		Enhancer enhancer = new Enhancer();
+		enhancer.setSuperclass(RedisKeyBuilder.class);
+		enhancer.setCallback(new MethodInterceptor() {
+			@Override
+			public Object intercept(Object obj, Method method, Object[] objects,
+					MethodProxy methodProxy) throws Throwable {
+				RedisKeyDefine define = method.getAnnotation(RedisKeyDefine.class);
+				String prefix = define.Prefix();
+				String key = prefix + ":" + StringUtils.join(objects, '_');
+				return key;
+			}
+		});
+		redisKeyBuilder = (RedisKeyBuilder) enhancer.create();
+	}
+
+	/**
+	 * 获取 {@link RedisKeyBuilder} 实例
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	public static RedisKeyBuilder getBuilder() {
+		if (null == redisKeyBuilder) {
+			synchronized (RedisKeyHelper.class) {
+				if (null == redisKeyBuilder) {
+					newInstance();
+				}
+			}
+		}
+		return redisKeyBuilder;
+	}
+
+}

+ 14 - 0
src/test/java/cn/com/qmth/examcloud/support/test/RedisKeyBuilderTest.java

@@ -0,0 +1,14 @@
+package cn.com.qmth.examcloud.support.test;
+
+import cn.com.qmth.examcloud.support.redis.RedisKeyHelper;
+
+public class RedisKeyBuilderTest {
+
+	public static void main(String[] args) {
+
+		String key = RedisKeyHelper.getBuilder().buildExamRecordDataKey(10L);
+		System.out.println(key);
+
+	}
+
+}