【fix sonar】SysCheckRuleServiceImpl文件
This commit is contained in:
+52
-44
@@ -9,6 +9,7 @@ import org.apache.commons.lang.StringUtils;
|
||||
import com.jero.modules.system.entity.SysCheckRule;
|
||||
import com.jero.modules.system.mapper.SysCheckRuleMapper;
|
||||
import com.jero.modules.system.service.ISysCheckRuleService;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
@@ -46,53 +47,60 @@ public class SysCheckRuleServiceImpl extends ServiceImpl<SysCheckRuleMapper, Sys
|
||||
if (checkRule != null && StringUtils.isNotBlank(value)) {
|
||||
String ruleJson = checkRule.getRuleJson();
|
||||
if (StringUtils.isNotBlank(ruleJson)) {
|
||||
// 开始截取的下标,根据规则的顺序递增,但是 * 号不计入递增范围
|
||||
int beginIndex = 0;
|
||||
JSONArray rules = JSON.parseArray(ruleJson);
|
||||
for (int i = 0; i < rules.size(); i++) {
|
||||
JSONObject result = new JSONObject();
|
||||
JSONObject rule = rules.getJSONObject(i);
|
||||
// 位数
|
||||
String digits = rule.getString("digits");
|
||||
result.put("digits", digits);
|
||||
// 验证规则
|
||||
String pattern = rule.getString("pattern");
|
||||
result.put("pattern", pattern);
|
||||
// 未通过时的提示文本
|
||||
String message = rule.getString("message");
|
||||
result.put("message", message);
|
||||
|
||||
// 根据用户设定的区间,截取字符串进行验证
|
||||
String checkValue;
|
||||
// 是否检查整个值而不截取
|
||||
if (CHECK_ALL_SYMBOL.equals(digits)) {
|
||||
checkValue = value;
|
||||
} else {
|
||||
int num = Integer.parseInt(digits);
|
||||
int endIndex = beginIndex + num;
|
||||
// 如果结束下标大于给定的值的长度,则取到最后一位
|
||||
endIndex = endIndex > value.length() ? value.length() : endIndex;
|
||||
// 如果开始下标大于结束下标,则说明用户还尚未输入到该位置,直接赋空值
|
||||
if (beginIndex > endIndex) {
|
||||
checkValue = "";
|
||||
} else {
|
||||
checkValue = value.substring(beginIndex, endIndex);
|
||||
}
|
||||
result.put("beginIndex", beginIndex);
|
||||
result.put("endIndex", endIndex);
|
||||
beginIndex += num;
|
||||
}
|
||||
result.put("checkValue", checkValue);
|
||||
boolean passed = Pattern.matches(pattern, checkValue);
|
||||
result.put("passed", passed);
|
||||
// 如果没有通过校验就返回错误信息
|
||||
if (!passed) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
JSONObject result = getJsonObject(value, ruleJson);
|
||||
if (result != null) return result;
|
||||
}
|
||||
}
|
||||
return new JSONObject();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private JSONObject getJsonObject(String value, String ruleJson) {
|
||||
// 开始截取的下标,根据规则的顺序递增,但是 * 号不计入递增范围
|
||||
int beginIndex = 0;
|
||||
JSONArray rules = JSON.parseArray(ruleJson);
|
||||
for (int i = 0; i < rules.size(); i++) {
|
||||
JSONObject result = new JSONObject();
|
||||
JSONObject rule = rules.getJSONObject(i);
|
||||
// 位数
|
||||
String digits = rule.getString("digits");
|
||||
result.put("digits", digits);
|
||||
// 验证规则
|
||||
String pattern = rule.getString("pattern");
|
||||
result.put("pattern", pattern);
|
||||
// 未通过时的提示文本
|
||||
String message = rule.getString("message");
|
||||
result.put("message", message);
|
||||
|
||||
// 根据用户设定的区间,截取字符串进行验证
|
||||
String checkValue;
|
||||
// 是否检查整个值而不截取
|
||||
if (CHECK_ALL_SYMBOL.equals(digits)) {
|
||||
checkValue = value;
|
||||
} else {
|
||||
int num = Integer.parseInt(digits);
|
||||
int endIndex = beginIndex + num;
|
||||
// 如果结束下标大于给定的值的长度,则取到最后一位
|
||||
endIndex = endIndex > value.length() ? value.length() : endIndex;
|
||||
// 如果开始下标大于结束下标,则说明用户还尚未输入到该位置,直接赋空值
|
||||
if (beginIndex > endIndex) {
|
||||
checkValue = "";
|
||||
} else {
|
||||
checkValue = value.substring(beginIndex, endIndex);
|
||||
}
|
||||
result.put("beginIndex", beginIndex);
|
||||
result.put("endIndex", endIndex);
|
||||
beginIndex += num;
|
||||
}
|
||||
result.put("checkValue", checkValue);
|
||||
boolean passed = Pattern.matches(pattern, checkValue);
|
||||
result.put("passed", passed);
|
||||
// 如果没有通过校验就返回错误信息
|
||||
if (!passed) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user