|
@@ -4,12 +4,17 @@ import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
|
|
|
import cn.com.qmth.stmms.biz.exam.model.Marker;
|
|
import cn.com.qmth.stmms.biz.exam.model.Marker;
|
|
import cn.com.qmth.stmms.common.redis.RedisKeyBuilder;
|
|
import cn.com.qmth.stmms.common.redis.RedisKeyBuilder;
|
|
|
|
+import org.springframework.data.redis.core.ZSetOperations;
|
|
|
|
+
|
|
|
|
+import java.util.Iterator;
|
|
|
|
+import java.util.Set;
|
|
|
|
|
|
public class MarkRedisUtil {
|
|
public class MarkRedisUtil {
|
|
|
|
|
|
public static void addCurrentTask(StringRedisTemplate redisTemplate, Marker marker, int libraryId) {
|
|
public static void addCurrentTask(StringRedisTemplate redisTemplate, Marker marker, int libraryId) {
|
|
String key = getKey(marker);
|
|
String key = getKey(marker);
|
|
redisTemplate.opsForZSet().add(key, String.valueOf(libraryId), marker.getId());
|
|
redisTemplate.opsForZSet().add(key, String.valueOf(libraryId), marker.getId());
|
|
|
|
+ redisTemplate.opsForZSet().add(RedisKeyBuilder.getCurrentTaskTimeKey(marker.getExamId(), marker.getSubjectCode(),marker.getNumber()),String.valueOf(libraryId),System.currentTimeMillis());
|
|
}
|
|
}
|
|
|
|
|
|
public static int countCurrentTask(StringRedisTemplate redisTemplate, int examId, String subjectCode, int number) {
|
|
public static int countCurrentTask(StringRedisTemplate redisTemplate, int examId, String subjectCode, int number) {
|
|
@@ -28,6 +33,7 @@ public class MarkRedisUtil {
|
|
int libraryId) {
|
|
int libraryId) {
|
|
String key = RedisKeyBuilder.getCurrentTaskKey(examId, subjectCode, number);
|
|
String key = RedisKeyBuilder.getCurrentTaskKey(examId, subjectCode, number);
|
|
redisTemplate.opsForZSet().remove(key, String.valueOf(libraryId));
|
|
redisTemplate.opsForZSet().remove(key, String.valueOf(libraryId));
|
|
|
|
+ redisTemplate.opsForZSet().remove(RedisKeyBuilder.getCurrentTaskTimeKey(examId, subjectCode,number),String.valueOf(libraryId));
|
|
}
|
|
}
|
|
|
|
|
|
public static boolean isCurrentTask(StringRedisTemplate redisTemplate, int examId, String subjectCode, int number,
|
|
public static boolean isCurrentTask(StringRedisTemplate redisTemplate, int examId, String subjectCode, int number,
|
|
@@ -45,9 +51,32 @@ public class MarkRedisUtil {
|
|
public static void clearCurrentTask(StringRedisTemplate redisTemplate, int examId, String subjectCode, int number) {
|
|
public static void clearCurrentTask(StringRedisTemplate redisTemplate, int examId, String subjectCode, int number) {
|
|
String key = RedisKeyBuilder.getCurrentTaskKey(examId, subjectCode, number);
|
|
String key = RedisKeyBuilder.getCurrentTaskKey(examId, subjectCode, number);
|
|
redisTemplate.delete(key);
|
|
redisTemplate.delete(key);
|
|
|
|
+ redisTemplate.delete(RedisKeyBuilder.getCurrentTaskTimeKey(examId, subjectCode,number));
|
|
}
|
|
}
|
|
|
|
|
|
private static String getKey(Marker marker) {
|
|
private static String getKey(Marker marker) {
|
|
return RedisKeyBuilder.getCurrentTaskKey(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
|
|
return RedisKeyBuilder.getCurrentTaskKey(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
|
|
}
|
|
}
|
|
|
|
+ public static void QuartzClearTask(StringRedisTemplate redisTemplate, long cleanMapinterval) {
|
|
|
|
+ Set<String> keys = redisTemplate.keys(RedisKeyBuilder.getCurrentTaskTimePrefix()+"*");
|
|
|
|
+ Iterator<String> iterators =keys.iterator();
|
|
|
|
+ while (iterators.hasNext()){
|
|
|
|
+ String key = iterators.next();
|
|
|
|
+ Set<ZSetOperations.TypedTuple<String>> rangeWithScores =
|
|
|
|
+ redisTemplate.opsForZSet().rangeWithScores(key, 0 , -1);
|
|
|
|
+
|
|
|
|
+ Iterator<ZSetOperations.TypedTuple<String>> iterator = rangeWithScores.iterator();
|
|
|
|
+ while(iterator.hasNext()){
|
|
|
|
+ ZSetOperations.TypedTuple<String> next = iterator.next();
|
|
|
|
+ if ((System.currentTimeMillis() - next.getScore()) > cleanMapinterval * 1000 * 60) {
|
|
|
|
+
|
|
|
|
+ redisTemplate.opsForZSet().remove(RedisKeyBuilder.getCurrentTaskKeyByTimeKey(key), next.getValue());
|
|
|
|
+
|
|
|
|
+ redisTemplate.opsForZSet().remove(key, next.getValue());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
}
|
|
}
|