<?php

namespace app\common\validate;

use think\Validate;
/**
 * ============================================================================
 * 
 * ============================================================================
 * 版权所有 2014-2028 浙江惠利玛产业互联网有限公司，并保留所有权利。
 * 网站地址: https://www.valimart.net/
 * ----------------------------------------------------------------------------
 * 
 * ============================================================================
 * 验证器
 */
class  Member extends Validate
{
    protected $rule = [
        'member_name'=>'require|length:3,13',
        'member_truename'=>'require|checkTruename',
        'member_idcard'=>'require|checkIdcard',
        'member_password'=>'require|length:6,20',
        'member_email'=>'email',
        'member_mobile'=>'length:11,11',
        'member_nickname'=>'max:10',
    ];
    protected $message  =   [
        'member_name.require'=>'用户名必填',
        'member_name.length'=>'用户名长度在3到13位',
        'member_truename.require'=>'真实姓名必填',
        'member_truename.checkTruename'=>'真实姓名错误',
        'member_idcard.require'=>'身份证必填',
        'member_idcard.checkIdcard'=>'身份证错误',
        'member_password.require'=>'密码为必填',
        'member_password.length'=>'密码长度必须为6-20之间',
        'member_email.email'=>'邮箱格式错误',
        'member_mobile.length'=>'手机格式错误',
        'member_nickname.max'=>'真实姓名长度超过10位',
    ];
    protected $scene = [
        'add' => ['member_name', 'member_password', 'member_email'],
        'edit' => ['member_email', 'member_mobile', 'member_email'],
        'edit_information' => ['member_nickname'],
        'login' => ['member_name', 'member_password'],
        'register' => ['member_name', 'member_password'],
        'auth' => ['member_truename', 'member_idcard'],
    ];
    protected function checkTruename($value,$rule,$data)
    {
        return preg_match('/^[\x{4e00}-\x{9fa5}]{2,4}$/u',$value)?true:false;
    }
    protected function checkIdcard($value,$rule,$data)
    {
        return preg_match('/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/',$value)?true:false;
    }
}