deason 1 year ago
parent
commit
41be6fcb94

+ 29 - 0
src/main/java/com/qmth/exam/reserve/bean/examsite/ExamSiteCacheBean.java

@@ -0,0 +1,29 @@
+package com.qmth.exam.reserve.bean.examsite;
+
+import com.qmth.exam.reserve.bean.IModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class ExamSiteCacheBean implements IModel {
+
+    private static final long serialVersionUID = 7281573122925814645L;
+
+    @ApiModelProperty(value = "分类ID")
+    private Long categoryId;
+
+    @ApiModelProperty(value = "分类名称")
+    private String categoryName;
+
+    @ApiModelProperty(value = "考点ID")
+    private Long examSiteId;
+
+    @ApiModelProperty(value = "考点名称")
+    private String examSiteName;
+
+    @ApiModelProperty(value = "考点地址")
+    private String examSiteAddress;
+
+}

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

@@ -11,6 +11,12 @@ public interface CacheConstants {
      */
     String CACHE_CATEGORY = "$cache:category:%s";
 
+    /**
+     * 某个考点缓存
+     * $cache:exam_site:{examSiteId}
+     */
+    String CACHE_EXAM_SITE = "$cache:exam_site:%s";
+
     /**
      * 某个学校缓存
      * $cache:org:{orgId}

+ 52 - 0
src/main/java/com/qmth/exam/reserve/cache/impl/ExamSiteCacheService.java

@@ -0,0 +1,52 @@
+package com.qmth.exam.reserve.cache.impl;
+
+import com.qmth.exam.reserve.bean.examsite.ExamSiteCacheBean;
+import com.qmth.exam.reserve.cache.CacheConstants;
+import com.qmth.exam.reserve.cache.RedisClient;
+import com.qmth.exam.reserve.dao.ExamSiteDao;
+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 ExamSiteCacheService implements CacheConstants {
+
+    private static final Logger log = LoggerFactory.getLogger(ExamSiteCacheService.class);
+
+    @Autowired
+    private RedisClient redisClient;
+
+    @Autowired
+    private ExamSiteDao examSiteDao;
+
+    /**
+     * 获取某个考点缓存
+     */
+    public ExamSiteCacheBean getExamSiteById(Long examSiteId) {
+        String cacheKey = String.format(CACHE_EXAM_SITE, examSiteId);
+        ExamSiteCacheBean value = redisClient.get(cacheKey, ExamSiteCacheBean.class);
+        if (value != null) {
+            return value;
+        }
+
+        value = examSiteDao.findInfoById(examSiteId);
+        if (value == null) {
+            return null;
+        }
+
+        redisClient.set(cacheKey, value, 5, TimeUnit.MINUTES);
+        log.info("SET cacheKey:{}", cacheKey);
+
+        return value;
+    }
+
+    public void clearExamSiteByIdCache(Long examSiteId) {
+        String cacheKey = String.format(CACHE_EXAM_SITE, examSiteId);
+        redisClient.delete(cacheKey);
+        log.warn("DELETE cacheKey:{}", cacheKey);
+    }
+
+}

+ 3 - 0
src/main/java/com/qmth/exam/reserve/dao/ExamSiteDao.java

@@ -1,6 +1,7 @@
 package com.qmth.exam.reserve.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.exam.reserve.bean.examsite.ExamSiteCacheBean;
 import com.qmth.exam.reserve.entity.ExamSiteEntity;
 import org.apache.ibatis.annotations.Param;
 
@@ -8,4 +9,6 @@ public interface ExamSiteDao extends BaseMapper<ExamSiteEntity> {
 
     Integer countExamSiteCapacityById(@Param("examSiteId") Long examSiteId);
 
+    ExamSiteCacheBean findInfoById(@Param("examSiteId") Long examSiteId);
+
 }

+ 11 - 0
src/main/resources/mapper/ExamSiteMapper.xml

@@ -9,4 +9,15 @@
           and enable = 1
     </select>
 
+    <select id="findInfoById" resultType="com.qmth.exam.reserve.bean.examsite.ExamSiteCacheBean">
+        select es.id          examSiteId,
+               es.name        examSiteName,
+               es.address     examSiteAddress,
+               es.category_id categoryId,
+               c.name         categoryName
+        from t_exam_site es
+                 inner join t_category c on c.id = es.category_id
+        where es.id = #{examSiteId}
+    </select>
+
 </mapper>