12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /* eslint-disable */
- const validatorUtil = require('./validatorUtil');
- const responseFormat = require('./responseFormat');
- module.exports = {
- validate (value, rules) {
- let conclusion = {
- success: true,
- message: ""
- },
- success = true,
- rule;
- if(!rules || rules.length == 0){
- return conclusion;
- }
- for(let i = 0, len = rules.length; i < len; i++){
- rule = rules[i];
- switch (rule.type){
- case 'is':
- success = rule.reg.test(value);//个性化的正则表达式校验
- break;
- case 'isRequired':
- success = !!validatorUtil.toString(value);
- break;
- case 'isFilled':
- success = !!validatorUtil.toString(value).trim();
- break;
- case 'isEmail':
- success = validatorUtil.isEmail(value);
- break;
- case 'isMobilePhone':
- success = validatorUtil.isMobilePhone(value, 'zh-CN');
- break;
- case 'isURL':
- success = validatorUtil.isURL(value);
- break;
- case 'isNumber':
- success = validatorUtil.isInt(value, rule); //同int
- break;
- case 'isId':
- success = validatorUtil.isId(value); //isInt 的首位不能为0, isID可以
- break;
- case 'isInt':
- success = validatorUtil.isInt(value, rule);
- break;
- case 'isFloat':
- success = validatorUtil.isFloat(value, rule);
- break;
- case 'isSoftDecimal2':
- success = validatorUtil.isSoftDecimal2(value, rule.min, rule.max);
- break;
- case 'isLength':
- success = validatorUtil.isLength(value, rule.min, rule.max);
- break;
- default:
- if(!rule.method){
- conclusion = {
- success: false,
- message: "找不到此规则的校验方法"
- }
- }else {
- success = rule.method(val); //个性化函数,校验特定的变量+特定规则
- }
- break;
- }
- if(!success || !conclusion.success){
- conclusion.message = rule.message || conclusion.message;
- conclusion.success = false;
- break; // 有错误则跳出
- }
- }
- return conclusion;
- },
- /**
- * 校验参数字段是否完整,验证数据完整性
- *
- * @param {Object} params post请求参数对象
- * @param {Array} rules 校验字段对象
- * @param {Object} ctx 请求对象
- * @return {void}
- */
- validateParamsField (params, rules, ctx) {
- for (let key of Object.keys(params)) {
- let conslution = this.validate(params[key], rules[key]);
- if (!conslution.success) {
- ctx.body = responseFormat.responseFormat(200, conslution.message, false);
- return;
- }
- }
- }
- }
|