deason 1 年之前
父节点
当前提交
e44b46563b

+ 32 - 0
src/main/java/com/qmth/exam/reserve/bean/category/CategoryCacheBean.java

@@ -0,0 +1,32 @@
+package com.qmth.exam.reserve.bean.category;
+
+import com.qmth.exam.reserve.bean.IModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class CategoryCacheBean implements IModel {
+
+    private static final long serialVersionUID = 7281573122925814645L;
+
+    @ApiModelProperty(value = "父级ID")
+    private Long parentId;
+
+    @ApiModelProperty(value = "分类ID")
+    private Long id;
+
+    @ApiModelProperty(value = "分类代码")
+    private String code;
+
+    @ApiModelProperty(value = "分类名称")
+    private String name;
+
+    @ApiModelProperty(value = "分类层级")
+    private Integer level;
+
+    @ApiModelProperty(value = "是否启用")
+    private Boolean enable;
+
+}

+ 6 - 0
src/main/java/com/qmth/exam/reserve/cache/CacheConstants.java

@@ -5,6 +5,12 @@ package com.qmth.exam.reserve.cache;
  */
 public interface CacheConstants {
 
+    /**
+     * 某个分类缓存
+     * $cache:category:{categoryId}
+     */
+    String CACHE_CATEGORY = "$cache:category:%s";
+
     /**
      * 某个学校缓存
      * $cache:org:{orgId}

+ 3 - 3
src/main/java/com/qmth/exam/reserve/cache/impl/ApplyTaskCacheService.java

@@ -50,7 +50,7 @@ public class ApplyTaskCacheService implements CacheConstants {
             return null;
         }
 
-        redisClient.set(cacheKey, value, 3, TimeUnit.HOURS);
+        redisClient.set(cacheKey, value, 5, TimeUnit.MINUTES);
         log.info("{} = id:{} name:{}", cacheKey, value.getTaskId(), value.getTaskName());
 
         return value;
@@ -73,7 +73,7 @@ public class ApplyTaskCacheService implements CacheConstants {
         }
 
         value = studentService.findStudentApplyNumberById(studentId);
-        redisClient.set(cacheKey, value, 3, TimeUnit.HOURS);
+        redisClient.set(cacheKey, value, 5, TimeUnit.MINUTES);
         log.info("{} = {}", cacheKey, value);
 
         return value;
@@ -96,7 +96,7 @@ public class ApplyTaskCacheService implements CacheConstants {
         }
 
         value = examSiteService.countExamSiteCapacityById(examSiteId);
-        redisClient.set(cacheKey, value, 3, TimeUnit.HOURS);
+        redisClient.set(cacheKey, value, 5, TimeUnit.MINUTES);
         log.info("{} = {}", cacheKey, value);
 
         return value;

+ 74 - 0
src/main/java/com/qmth/exam/reserve/cache/impl/CategoryCacheService.java

@@ -0,0 +1,74 @@
+package com.qmth.exam.reserve.cache.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.qmth.exam.reserve.bean.category.CategoryCacheBean;
+import com.qmth.exam.reserve.cache.CacheConstants;
+import com.qmth.exam.reserve.cache.RedisClient;
+import com.qmth.exam.reserve.entity.CategoryEntity;
+import com.qmth.exam.reserve.service.CategoryService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CategoryCacheService implements CacheConstants {
+
+    private static final Logger log = LoggerFactory.getLogger(CategoryCacheService.class);
+
+    @Autowired
+    private RedisClient redisClient;
+
+    @Autowired
+    private CategoryService categoryService;
+
+    /**
+     * 获取某个分类缓存
+     */
+    public CategoryCacheBean getCategoryById(Long categoryId) {
+        String cacheKey = String.format(CACHE_CATEGORY, categoryId);
+        CategoryCacheBean value = redisClient.get(cacheKey, CategoryCacheBean.class);
+        if (value != null) {
+            return value;
+        }
+
+        value = this.findInfoById(categoryId);
+        if (value == null) {
+            return null;
+        }
+
+        redisClient.set(cacheKey, value, 5, TimeUnit.MINUTES);
+        log.info("{} = id:{} name:{}", cacheKey, value.getId(), value.getName());
+
+        return value;
+    }
+
+    public void clearCategoryByIdCache(Long orgId) {
+        String cacheKey = String.format(CACHE_CATEGORY, orgId);
+        redisClient.delete(cacheKey);
+        log.warn("清理缓存!cacheKey:{}", cacheKey);
+    }
+
+    private CategoryCacheBean findInfoById(Long categoryId) {
+        LambdaQueryWrapper<CategoryEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.select(CategoryEntity::getId, CategoryEntity::getCode, CategoryEntity::getName,
+                CategoryEntity::getLevel, CategoryEntity::getEnable, CategoryEntity::getParentId);
+        wrapper.eq(CategoryEntity::getId, categoryId);
+        CategoryEntity category = categoryService.getOne(wrapper);
+        if (category == null) {
+            return null;
+        }
+
+        CategoryCacheBean bean = new CategoryCacheBean();
+        bean.setId(category.getId());
+        bean.setCode(category.getCode());
+        bean.setName(category.getName());
+        bean.setLevel(category.getLevel());
+        bean.setEnable(category.getEnable());
+        bean.setParentId(category.getParentId());
+        return bean;
+    }
+
+}

+ 1 - 1
src/main/java/com/qmth/exam/reserve/cache/impl/OrgCacheService.java

@@ -37,7 +37,7 @@ public class OrgCacheService implements CacheConstants {
             return null;
         }
 
-        redisClient.set(cacheKey, value, 3, TimeUnit.HOURS);
+        redisClient.set(cacheKey, value, 5, TimeUnit.MINUTES);
         log.info("{} = id:{} name:{}", cacheKey, value.getOrgId(), value.getOrgName());
 
         return value;