qinchao 4 years ago
parent
commit
748ffa6eff

+ 19 - 1
examcloud-core-examwork-api-provider/src/main/java/cn/com/qmth/examcloud/core/examwork/api/controller/ExamController.java

@@ -77,6 +77,8 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.util.*;
 import java.util.Map.Entry;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -311,6 +313,13 @@ public class ExamController extends ControllerSupport {
                 Map<String, String> properties = getProperties(bean.getId(), propertyKeyList);
                 bean.setProperties(properties);
             }
+
+            DynamicEnumManager manager = ExamProperty.getDynamicEnumManager();
+            DynamicEnum ipLimit = manager.getByName("IP_LIMIT");
+
+            ExamPropertyEntity propertyEntity = examPropertyRepo.findByExamIdAndKeyId(next.getId(), ipLimit.getId());
+            boolean ipLimited = null != propertyEntity && StringUtils.isNotBlank(propertyEntity.getValue()) && Boolean.parseBoolean(propertyEntity.getValue());
+            bean.setIpLimitSettingsEnabled(ipLimited);
         }
 
         PageInfo<ExamDomain> ret = new PageInfo<>(page, list);
@@ -1473,8 +1482,17 @@ public class ExamController extends ControllerSupport {
             if (StringUtils.isBlank(ip)) {
                 msg.append("  IP地址不能为空");
                 hasError = true;
+            } else {
+                String reg = "^(?:(?:1[0-9][0-9]\\.)|(?:2[0-4][0-9]\\.)|(?:25[0-5]\\.)|(?:[1-9][0-9]\\.)|(?:[0-9/*]\\.)){3}(?:(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5])|(?:[1-9][0-9])|(?:[0-9/*]))$";
+                Pattern pattern = Pattern.compile(reg);
+                Matcher matcher = pattern.matcher(ip);
+                if (matcher.find()) {
+                    entity.setIp(ip);
+                } else {
+                    msg.append("  ip格式不正确");
+                    hasError = true;
+                }
             }
-            entity.setIp(ip);
 
             if (StringUtils.isBlank(line[1])) {
                 msg.append("  限制类型不能为空");

+ 12 - 0
examcloud-core-examwork-api-provider/src/main/java/cn/com/qmth/examcloud/core/examwork/api/controller/bean/ExamDomain.java

@@ -101,6 +101,11 @@ public class ExamDomain implements JsonSerializable {
 	 */
 	private Boolean specialSettingsEnabled;
 
+	/**
+	 * 是否开启特殊设置
+	 */
+	private Boolean ipLimitSettingsEnabled;
+
 	/**
 	 * 特殊设置类型
 	 */
@@ -253,4 +258,11 @@ public class ExamDomain implements JsonSerializable {
 		this.specialSettingsEnabled = specialSettingsEnabled;
 	}
 
+	public Boolean getIpLimitSettingsEnabled() {
+		return ipLimitSettingsEnabled;
+	}
+
+	public void setIpLimitSettingsEnabled(Boolean ipLimitSettingsEnabled) {
+		this.ipLimitSettingsEnabled = ipLimitSettingsEnabled;
+	}
 }