deason 1 рік тому
батько
коміт
5f62768129

+ 9 - 1
examcloud-exchange-api-provider/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/provider/ExamOuterServiceProvider.java

@@ -8,6 +8,7 @@ import cn.com.qmth.examcloud.examwork.api.request.GetExamReq;
 import cn.com.qmth.examcloud.examwork.api.request.SaveExamReq;
 import cn.com.qmth.examcloud.examwork.api.request.SaveExamReq;
 import cn.com.qmth.examcloud.examwork.api.response.GetExamResp;
 import cn.com.qmth.examcloud.examwork.api.response.GetExamResp;
 import cn.com.qmth.examcloud.examwork.api.response.SaveExamResp;
 import cn.com.qmth.examcloud.examwork.api.response.SaveExamResp;
+import cn.com.qmth.examcloud.exchange.helper.XmlPropertyHelper;
 import cn.com.qmth.examcloud.exchange.outer.api.ExamOuterService;
 import cn.com.qmth.examcloud.exchange.outer.api.ExamOuterService;
 import cn.com.qmth.examcloud.exchange.outer.api.request.OuterGetExamReq;
 import cn.com.qmth.examcloud.exchange.outer.api.request.OuterGetExamReq;
 import cn.com.qmth.examcloud.exchange.outer.api.request.OuterSaveExamReq;
 import cn.com.qmth.examcloud.exchange.outer.api.request.OuterSaveExamReq;
@@ -16,6 +17,7 @@ import cn.com.qmth.examcloud.exchange.outer.api.response.OuterSaveExamResp;
 import cn.com.qmth.examcloud.web.support.ControllerSupport;
 import cn.com.qmth.examcloud.web.support.ControllerSupport;
 import cn.com.qmth.examcloud.web.support.StatusResponse;
 import cn.com.qmth.examcloud.web.support.StatusResponse;
 import io.swagger.annotations.*;
 import io.swagger.annotations.*;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -84,7 +86,13 @@ public class ExamOuterServiceProvider extends ControllerSupport implements ExamO
         saveExamReq.setEnableExamStage(req.getEnableExamStage());
         saveExamReq.setEnableExamStage(req.getEnableExamStage());
         saveExamReq.setCallType(req.getCallType());
         saveExamReq.setCallType(req.getCallType());
         saveExamReq.setEnableTimingEnd(req.getEnableTimingEnd());
         saveExamReq.setEnableTimingEnd(req.getEnableTimingEnd());
-        saveExamReq.setIpWhitelist(req.getIpWhitelist());
+
+        if(CollectionUtils.isNotEmpty(req.getIpWhitelist())){
+            saveExamReq.setIpWhitelist(req.getIpWhitelist());
+        }else {
+            saveExamReq.setIpWhitelist(XmlPropertyHelper.getIpWhiteListFormXml(rootOrgId));
+        }
+
         if(req.getLateMinuteLimit()!=null&&req.getLateMinuteLimit()<=0) {
         if(req.getLateMinuteLimit()!=null&&req.getLateMinuteLimit()<=0) {
         	throw new StatusException("lateMinuteLimit 必须大于零");
         	throw new StatusException("lateMinuteLimit 必须大于零");
         }
         }

+ 25 - 0
examcloud-exchange-service/src/main/java/cn/com/qmth/examcloud/exchange/helper/OrgInfo.java

@@ -0,0 +1,25 @@
+package cn.com.qmth.examcloud.exchange.helper;
+
+public class OrgInfo {
+
+    private Long rootOrgId;
+
+    private String ipWhitelist;
+
+    public Long getRootOrgId() {
+        return rootOrgId;
+    }
+
+    public void setRootOrgId(Long rootOrgId) {
+        this.rootOrgId = rootOrgId;
+    }
+
+    public String getIpWhitelist() {
+        return ipWhitelist;
+    }
+
+    public void setIpWhitelist(String ipWhitelist) {
+        this.ipWhitelist = ipWhitelist;
+    }
+
+}

+ 55 - 0
examcloud-exchange-service/src/main/java/cn/com/qmth/examcloud/exchange/helper/XmlPropertyHelper.java

@@ -0,0 +1,55 @@
+package cn.com.qmth.examcloud.exchange.helper;
+
+import cn.com.qmth.examcloud.commons.exception.StatusException;
+import cn.com.qmth.examcloud.commons.helpers.XStreamBuilder;
+import cn.com.qmth.examcloud.commons.util.PathUtil;
+import com.thoughtworks.xstream.XStream;
+import org.apache.commons.lang3.StringUtils;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+public class XmlPropertyHelper {
+
+    public static List<String> getIpWhiteListFormXml(Long rootOrgId) {
+        String resoucePath = PathUtil.getResoucePath("ip-white-list.xml");
+        if (resoucePath == null) {
+            return new ArrayList<>();
+        }
+
+        XStream xStream = XStreamBuilder.newInstance().build();
+        xStream.allowTypes(new Class[]{OrgInfo.class, List.class});
+        xStream.alias("orgs", List.class);
+        xStream.alias("org", OrgInfo.class);
+
+        List<OrgInfo> list;
+        try {
+            File file = new File(resoucePath);
+            list = (List<OrgInfo>) xStream.fromXML(file);
+        } catch (Exception e) {
+            throw new StatusException("500", "读取配置文件错误", e);
+        }
+
+        List<String> result = new ArrayList<>();
+        for (OrgInfo cur : list) {
+            if (cur.getRootOrgId().equals(rootOrgId)) {
+                String values = cur.getIpWhitelist();
+                if (values != null) {
+                    String[] ips = values.trim().split(",");
+                    for (String ip : ips) {
+                        if (StringUtils.isNotEmpty(ip.trim())) {
+                            result.add(ip.trim());
+                        }
+                    }
+                    return result;
+                }
+                break;
+            }
+        }
+
+        return result;
+    }
+
+}
+

+ 9 - 0
examcloud-exchange-starter/src/main/resources/ip-white-list.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<orgs>
+    <org>
+        <rootOrgId>0</rootOrgId>
+        <ipWhitelist>
+            192.168.10.39,192.168.10.41
+        </ipWhitelist>
+    </org>
+</orgs>