wangliang 2 жил өмнө
parent
commit
e00a7b7d20

+ 2 - 56
themis-admin/src/main/java/com/qmth/themis/admin/api/SysConfigController.java

@@ -1,12 +1,9 @@
 package com.qmth.themis.admin.api;
 
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.google.common.reflect.TypeToken;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dto.response.SysConfigBean;
 import com.qmth.themis.business.entity.SysConfig;
-import com.qmth.themis.business.enums.UploadFileEnum;
 import com.qmth.themis.business.service.SysConfigService;
 import com.qmth.themis.business.service.ThemisCacheService;
 import com.qmth.themis.business.util.OssUtil;
@@ -15,11 +12,9 @@ import com.qmth.themis.common.util.GsonUtil;
 import com.qmth.themis.common.util.Result;
 import com.qmth.themis.common.util.ResultUtil;
 import io.swagger.annotations.*;
-import org.apache.commons.io.IOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -27,12 +22,6 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
 import java.util.Optional;
 
 /**
@@ -78,7 +67,7 @@ public class SysConfigController {
         sysConfig.setEditor(1);
         sysConfig.setEnable(true);
         sysConfigService.saveOrUpdate(sysConfig);
-        updateSysconfig(sysConfig);
+        SystemConstant.updateSysconfig(sysConfig);
         return ResultUtil.ok(true);
     }
 
@@ -93,50 +82,7 @@ public class SysConfigController {
 
         sysConfig.setEnable(enable);
         sysConfigService.saveOrUpdate(sysConfig);
-        updateSysconfig(sysConfig);
+        SystemConstant.updateSysconfig(sysConfig);
         return ResultUtil.ok(true);
     }
-
-    /**
-     * 刷新系统参数并写入json文件
-     */
-    public void updateSysconfig(SysConfig sysConfig) {
-        File file = null;
-        try {
-            themisCacheService.updateSysConfigCache(sysConfig.getConfigKey());
-            file = SystemConstant.getFileTempVar(SystemConstant.JSON_PREFIX);
-            JSONObject jsonObject = JSONObject
-                    .parseObject(new String(ossUtil.download(true, UploadFileEnum.client.name() + "/" + SystemConstant.EXAM_CONFIG_FILE_NAME), StandardCharsets.UTF_8));
-            List<SysConfigBean> sysConfigBeanList = null;
-            if (Objects.isNull(jsonObject) || jsonObject.size() == 0) {
-                jsonObject = new JSONObject();
-                sysConfigBeanList = new ArrayList<>();
-            } else {
-                sysConfigBeanList = (List<SysConfigBean>) jsonObject.get(SystemConstant.SYS_CONFIG_LIST);
-                sysConfigBeanList = CollectionUtils.isEmpty(sysConfigBeanList) ? new ArrayList<>() : sysConfigBeanList;
-                sysConfigBeanList = GsonUtil.fromJson(GsonUtil.toJson(sysConfigBeanList), new TypeToken<List<SysConfigBean>>() {
-                }.getType());
-            }
-            SysConfigBean sysConfigBean = GsonUtil.fromJson(GsonUtil.toJson(sysConfig), SysConfigBean.class);
-            sysConfigBeanList.removeIf(e -> Objects.equals(e.getConfigKey(), sysConfigBean.getConfigKey()));
-            if (Objects.nonNull(sysConfigBean.getEnable()) && sysConfigBean.getEnable()) {
-                sysConfigBeanList.add(sysConfigBean);
-            }
-            jsonObject.put(SystemConstant.SYS_CONFIG_LIST, sysConfigBeanList);
-
-            IOUtils.write(jsonObject.toJSONString().getBytes(StandardCharsets.UTF_8), new FileOutputStream(file));
-            ossUtil.upload(true, UploadFileEnum.client.name() + "/" + SystemConstant.EXAM_CONFIG_FILE_NAME, file);
-        } catch (Exception e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-            if (e instanceof BusinessException) {
-                throw new BusinessException(e.getMessage());
-            } else {
-                throw new RuntimeException(e);
-            }
-        } finally {
-            if (Objects.nonNull(file)) {
-                file.delete();
-            }
-        }
-    }
 }

+ 50 - 0
themis-business/src/main/java/com/qmth/themis/business/constant/SystemConstant.java

@@ -13,6 +13,8 @@ import com.qmth.themis.business.cache.ExamRecordCacheUtil;
 import com.qmth.themis.business.cache.RedisKeyHelper;
 import com.qmth.themis.business.dto.ExpireTimeDTO;
 import com.qmth.themis.business.dto.cache.TEStudentCacheDto;
+import com.qmth.themis.business.dto.response.SysConfigBean;
+import com.qmth.themis.business.entity.SysConfig;
 import com.qmth.themis.business.entity.TOeExamRecord;
 import com.qmth.themis.business.enums.*;
 import com.qmth.themis.business.service.TEExamPaperService;
@@ -219,6 +221,7 @@ public class SystemConstant {
     public static final String STATUS = "status";
     public static final String WEBSOCKET_OE_PREFIX = "/ws/oe";
     public static final String WEBSOCKET_MOBILE_PREFIX = "/ws/mobile";
+    public static final String LOGIN_LIMIT = "login limit";
 
 
     public static final String OBJECTIVE_SCORE_PUSH = "objectiveScorePush";
@@ -1155,4 +1158,51 @@ public class SystemConstant {
         }
         return stringJoiner;
     }
+
+    /**
+     * 刷新系统参数并写入json文件
+     *
+     * @param sysConfig
+     */
+    public static void updateSysconfig(SysConfig sysConfig) {
+        File file = null;
+        try {
+            OssUtil ossUtil = SpringContextHolder.getBean(OssUtil.class);
+            ThemisCacheService themisCacheService = SpringContextHolder.getBean(ThemisCacheService.class);
+            themisCacheService.updateSysConfigCache(sysConfig.getConfigKey());
+            file = SystemConstant.getFileTempVar(SystemConstant.JSON_PREFIX);
+            JSONObject jsonObject = JSONObject
+                    .parseObject(new String(ossUtil.download(true, UploadFileEnum.client.name() + "/" + SystemConstant.EXAM_CONFIG_FILE_NAME), StandardCharsets.UTF_8));
+            List<SysConfigBean> sysConfigBeanList = null;
+            if (Objects.isNull(jsonObject) || jsonObject.size() == 0) {
+                jsonObject = new JSONObject();
+                sysConfigBeanList = new ArrayList<>();
+            } else {
+                sysConfigBeanList = (List<SysConfigBean>) jsonObject.get(SystemConstant.SYS_CONFIG_LIST);
+                sysConfigBeanList = CollectionUtils.isEmpty(sysConfigBeanList) ? new ArrayList<>() : sysConfigBeanList;
+                sysConfigBeanList = GsonUtil.fromJson(GsonUtil.toJson(sysConfigBeanList), new TypeToken<List<SysConfigBean>>() {
+                }.getType());
+            }
+            SysConfigBean sysConfigBean = GsonUtil.fromJson(GsonUtil.toJson(sysConfig), SysConfigBean.class);
+            sysConfigBeanList.removeIf(e -> Objects.equals(e.getConfigKey(), sysConfigBean.getConfigKey()));
+            if (Objects.nonNull(sysConfigBean.getEnable()) && sysConfigBean.getEnable()) {
+                sysConfigBeanList.add(sysConfigBean);
+            }
+            jsonObject.put(SystemConstant.SYS_CONFIG_LIST, sysConfigBeanList);
+
+            IOUtils.write(jsonObject.toJSONString().getBytes(StandardCharsets.UTF_8), new FileOutputStream(file));
+            ossUtil.upload(true, UploadFileEnum.client.name() + "/" + SystemConstant.EXAM_CONFIG_FILE_NAME, file);
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+            if (e instanceof BusinessException) {
+                throw new BusinessException(e.getMessage());
+            } else {
+                throw new RuntimeException(e);
+            }
+        } finally {
+            if (Objects.nonNull(file)) {
+                file.delete();
+            }
+        }
+    }
 }

+ 4 - 0
themis-business/src/main/java/com/qmth/themis/business/service/impl/SysConfigServiceImpl.java

@@ -15,6 +15,7 @@ import org.springframework.util.CollectionUtils;
 import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 /**
  * @Description: 系统参数 服务实现类
@@ -47,6 +48,9 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
             if (!CollectionUtils.isEmpty(sysConfigList)) {
                 for (SysConfig s : sysConfigList) {
                     themisCacheService.updateSysConfigCacheForDb(s.getConfigKey(), s);
+                    if (Objects.nonNull(s.getConfigKey()) && s.getConfigKey().equalsIgnoreCase(SystemConstant.LOGIN_LIMIT)) {
+                        SystemConstant.updateSysconfig(s);
+                    }
                 }
             }
         } catch (Exception e) {

+ 1 - 1
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEExamServiceImpl.java

@@ -255,7 +255,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
                 .eq(TOeExamRecord::getExamActivityId, activityId).eq(TOeExamRecord::getExamStudentId, examStudentId)
                 .eq(TOeExamRecord::getStatus, ExamRecordStatusEnum.FIRST_PREPARE);
         TOeExamRecord tOeExamRecord = toeExamRecordService.getOne(tOeExamRecordQueryWrapper);
-        if (Objects.nonNull(tOeExamRecord) && Objects.nonNull(tOeExamRecord.getStatus()) && (ExamRecordStatusEnum.FINISHED == tOeExamRecord.getStatus() || ExamRecordStatusEnum.PERSISTED == tOeExamRecord.getStatus()) || tOeExamRecord.getStatus() == ExamRecordStatusEnum.JUNK) {
+        if (Objects.nonNull(tOeExamRecord) && Objects.nonNull(tOeExamRecord.getStatus()) && (ExamRecordStatusEnum.FINISHED == tOeExamRecord.getStatus() || ExamRecordStatusEnum.PERSISTED == tOeExamRecord.getStatus() || tOeExamRecord.getStatus() == ExamRecordStatusEnum.JUNK)) {
             throw new BusinessException(ExceptionResultEnum.EXAM_FINISH);
         }
         Long unFinishedRecordId = Objects.nonNull(tOeExamRecord) ? tOeExamRecord.getId() : null;