Jelajahi Sumber

update login rule.

deason 5 tahun lalu
induk
melakukan
abca047d32

+ 38 - 0
examcloud-core-basic-service/src/main/java/cn/com/qmth/examcloud/core/basic/service/cache/LoginRuleCacheBean.java

@@ -0,0 +1,38 @@
+package cn.com.qmth.examcloud.core.basic.service.cache;
+
+import java.io.Serializable;
+
+/**
+ * 登录规则缓存对象
+ */
+public class LoginRuleCacheBean implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 顶级机构ID
+     */
+    private Long rootOrgId;
+
+    /**
+     * 是否白名单
+     */
+    private Boolean white;
+
+    public Long getRootOrgId() {
+        return rootOrgId;
+    }
+
+    public void setRootOrgId(Long rootOrgId) {
+        this.rootOrgId = rootOrgId;
+    }
+
+    public Boolean getWhite() {
+        return white;
+    }
+
+    public void setWhite(Boolean white) {
+        this.white = white;
+    }
+
+}

+ 24 - 1
examcloud-core-basic-service/src/main/java/cn/com/qmth/examcloud/core/basic/service/impl/LoginRuleServiceImpl.java

@@ -3,16 +3,23 @@ package cn.com.qmth.examcloud.core.basic.service.impl;
 import cn.com.qmth.examcloud.commons.logging.ExamCloudLog;
 import cn.com.qmth.examcloud.commons.logging.ExamCloudLogFactory;
 import cn.com.qmth.examcloud.core.basic.dao.LoginRuleRepo;
+import cn.com.qmth.examcloud.core.basic.dao.entity.LoginRuleEntity;
 import cn.com.qmth.examcloud.core.basic.service.LoginRuleService;
+import cn.com.qmth.examcloud.core.basic.service.cache.LoginRuleCacheBean;
 import cn.com.qmth.examcloud.web.redis.RedisClient;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service
 public class LoginRuleServiceImpl implements LoginRuleService {
 
     private static final ExamCloudLog log = ExamCloudLogFactory.getLog("INTERFACE_LOGGER");
 
+    private static final String CACHE_KEY_LOGIN_RULE = "B_LOGIN_RULE";// “登录规则”缓存KEY
+
     @Autowired
     private LoginRuleRepo loginRuleRepo;
 
@@ -21,7 +28,23 @@ public class LoginRuleServiceImpl implements LoginRuleService {
 
     @Override
     public void refreshLoginRule() {
+        log.info("refreshLoginRule start...");
+
+        List<LoginRuleEntity> entities = loginRuleRepo.findAll();
+        redisClient.delete(CACHE_KEY_LOGIN_RULE);
+
+        if (CollectionUtils.isNotEmpty(entities)) {
+            for (LoginRuleEntity entity : entities) {
+                LoginRuleCacheBean cacheBean = new LoginRuleCacheBean();
+                cacheBean.setRootOrgId(entity.getRootOrgId());
+                cacheBean.setWhite(entity.getWhite());
+
+                final String subKey = cacheBean.getRootOrgId().toString();
+                redisClient.set(CACHE_KEY_LOGIN_RULE, subKey, cacheBean);
+            }
+        }
 
+        log.info("refreshLoginRule end...");
     }
 
-}
+}

+ 1 - 1
examcloud-core-basic-starter/src/main/java/cn/com/qmth/examcloud/core/basic/starter/config/ScheduleConfig.java

@@ -20,7 +20,7 @@ public class ScheduleConfig implements Serializable {
     /**
      * 定时刷新登录规则(每N分钟执行)
      */
-    @Scheduled(cron = "0 3/3 * * * ?")
+    @Scheduled(cron = "0 1/1 * * * ?")
     public void execute() {
         loginRuleService.refreshLoginRule();
     }