liding
3 天以前 7f9e375391e30fd3c367cb5a080a609a6e25e524
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
package com.zbkj.common.utils;
 
import cn.hutool.core.util.ReUtil;
import com.zbkj.common.constants.RegularConstants;
import com.zbkj.common.exception.CarException;
import com.zbkj.common.model.system.SystemConfig;
import org.apache.commons.lang3.StringUtils;
 
import java.util.*;
import java.util.regex.Pattern;
 
/**
 * 表单验证类
 
 */
public class ValidateFormUtil {
    /**
     * 检测类型
     * @param systemConfig SystemConfig 需要验证的类
     * @author Mr.Zhang
     * @since 2020-05-11
     */
    public static void checkType(SystemConfig systemConfig, String rule){
        if(StringUtils.isBlank(rule)){
           return;
        }
 
        //required:true,min:0,max:100,number:true
        List<String> list = CarUtil.stringToArrayStr(rule);
 
        for (String value : list) {
            List<String> val = CarUtil.stringToArrayStrRegex(value, ":");
 
            ////必填
            if(val.get(0).equals("required") && val.get(1).equals("true")){
                isRequire(systemConfig.getValue(), systemConfig.getTitle());
                continue;
            }
 
            //数字
            if(val.get(0).equals("number") && val.get(1).equals("true")){
                isNumber(systemConfig.getValue(), systemConfig.getTitle());
                continue;
            }
 
            //最大值
            if(val.get(0).equals("max")){
                isNumber(systemConfig.getValue(), systemConfig.getTitle());
                continue;
            }
 
            //最小值
            if(val.get(0).equals("min")){
                isNumber(systemConfig.getValue(), systemConfig.getTitle());
                continue;
            }
 
            //邮箱
            if(val.get(0).equals("email") && val.get(1).equals("true")){
                isEmail(systemConfig.getValue(), systemConfig.getTitle());
                continue;
            }
 
            //手机
            if(val.get(0).equals("phone") && val.get(1).equals("true")){
                isPhone(systemConfig.getValue(), systemConfig.getTitle());
            }
        }
    }
 
    /**
     * 邮箱
     * @param value String 值
     * @param info String 字段名
     * @author Mr.Zhang
     * @since 2020-05-11
     */
    public static void isEmail(String value, String info) {
        regularException(value, info, RegularConstants.EMAIL, "邮箱");
    }
 
    /**
     * 手机
     * @param value String 值
     * @param info String 字段名
     */
    public static void isPhone(String value, String info) {
        regularException(value, info, RegularConstants.PHONE_TWO, "手机");
    }
 
    /**
     * 验证必填
     * @param value String 值
     * @param info String 字段名
     * @author Mr.Zhang
     * @since 2020-05-11
     */
    public static void isRequire(String value, String info){
        if(StringUtils.isBlank(value) ){
            throw new CarException("请填写/选择" + info);
        }
    }
 
    /**
     * 数字验证
     * @param value String 值
     * @param info String 字段名
     * @author Mr.Zhang
     * @since 2020-05-11
     */
    public static void isNumber(String value, String info){
        regularException(value, info, RegularConstants.NUMBER, "数字");
    }
 
    /**
     * 数字范围
     * @param value String 值
     * @param info String 字段名
     * @author Mr.Zhang
     * @since 2020-05-11
     */
    public static void range(String value, String info, Integer max, Integer min){
        isNumber(value, info);
        max(value, info, max);
        min(value, info, min);
    }
 
    /**
     * 最大数值
     * @param value String 值
     * @param info String 字段名
     * @author Mr.Zhang
     * @since 2020-05-11
     */
    public static void max(String value, String info, Integer max){
        isNumber(value, info);
        int number = Integer.parseInt(value);
        if(number > max ){
            throw new CarException(info + "不在取值范围内,最大不能大于" + max);
        }
    }
 
    /**
     * 最小数值
     * @param value String 值
     * @param info String 字段名
     * @author Mr.Zhang
     * @since 2020-05-11
     */
    public static void min(String value, String info, Integer min){
        isNumber(value, info);
        int number = Integer.parseInt(value);
        if(number > min ){
            throw new CarException(info + "不在取值范围内,最小不能小于" + min);
        }
    }
 
    /**
     * 正则表达式验证
     * @param value String 值
     * @param info String 字段名
     * @param regular String 正则表达式
     * @author Mr.Zhang
     * @since 2020-05-11
     */
    public static void regularException(String value, String info, String regular, String title){
        if(!regular(value, info, regular)){
            //正则验证
            throw new CarException(info + " 格式必须为 " + title);
        }
    }
 
    /**
     * 正则表达式验证
     * @param value String 值
     * @param info String 字段名
     * @param regular String 正则表达式
     * @author Mr.Zhang
     * @since 2020-05-11
     */
    public static boolean regular(String value, String info, String regular){
        isRequire(value, info);
        Pattern pattern = Pattern.compile(regular);
        return pattern.matcher(value).matches();
    }
 
    /**
     * 校验是否是手机号,不是则抛出异常
     * @param phone 手机号
     * @param errMsg 异常内容
     */
    public static void isPhoneException(String phone, String errMsg) {
        boolean match = ReUtil.isMatch(RegularConstants.PHONE_TWO, phone);
        if (!match) {
            throw new CarException(errMsg);
        }
    }
 
    /**
     * 校验是否是手机号,不是则抛出异常
     * @param phone 手机号
     */
    public static void isPhoneException(String phone) {
        boolean match = ReUtil.isMatch(RegularConstants.PHONE_TWO, phone);
        if (!match) {
            throw new CarException("请输入正确的手机号");
        }
    }
}