<?php 
namespace wstmart\common\validate;
use think\Validate;
/**
 * ============================================================================
 * 店铺验证器
 */
class Shops extends Validate{
	protected $rule = [
	    //申请入驻
        ['shopName'  ,'require','请输入店铺名'],
        ['userName'  ,'require|chs','请输入直营人姓名|直营人姓名请输入汉字'],
        ['phone'  ,'require','请输入联系电话'],
        ['provinceId'  ,'require','请选择省'],
        ['cityId'  ,'require','请选择市'],
        ['countyId'  ,'require','请选择区县'],
        ['townId'  ,'require','请选择乡镇'],
        ['villageId'  ,'require','请选择村社区'],
        ['shopAddress'  ,'require','请输入店铺地址'],
        ['lng'  ,'require','请在地图点击坐标'],
        ['lat'  ,'require','请在地图点击坐标'],
        ['bankName'  ,'require|chs','请输入银行名|银行名请输入汉字'],
        ['accountName'  ,'require|chs','请输入开户名|开户名请输入汉字'],
        ['bankNo'  ,'require','请输入银行卡号'],
        ['idCardFrontImg'  ,'require','请上传身份证正面照'],
        ['idCardBackImg'  ,'require','请上传身份证反面照'],
        ['commissionImg'  ,'require','请上传直营人委托书照片'],
        ['businessLicenceImg'  ,'require','请上传手持身份证和营业执照,背影为店铺照片'],
        ['confirmationImg'  ,'require','请上传确认书照片'],

        //上传产品
        ['goodsName'  ,'require','请输入产品名'],
        ['largeCat'  ,'require|number','请选择一级分类|请选择一级分类!'],
        ['mediumCat'  ,'require|number','请选择二级分类|请选择二级分类!'],
        ['smallCat'  ,'require|number','请选择三级分类|请选择三级分类!'],
        ['discountRate'  ,'require|float|between:0,100','请输入优惠率|请输入优惠率!|优惠率范围0%-100%!'],
        ['freight'  ,'require|float','请输入运费|请输入运费!'],
        ['goodsImg'  ,'require','请上传商品主图'],
        ['gallery'  ,'require','请上传商品相册'],
        ['isSale'  ,'require|in:0,1','请选择商品通过审核后上下架|请选择商品通过审核后上下架!'],
    ];

    protected $scene = [
        'join'   =>  ['shopName','userName','phone','provinceId','cityId','countyId','townId','villageId','shopAddress','lng','lat','bankName','accountName','bankNo','idCardFrontImg','idCardBackImg','commissionImg','businessLicenceImg','confirmationImg'],//商家入驻人认证
        'addGoods'=>['goodsName' ,'largeCat','mediumCat' ,'smallCat', 'discountRate'  ,'freight'  ,'goodsImg'  ,'gallery'  ,'isSale'],
    ];

    // 自定义验证规则
    // protected function checkName($value,$rule,$data)
    // {
    //     return $rule == $value ? true : '名称错误';
    // }
     /**
     * 身份证验证 start
     */
    function validation_filter_id_card($id_card){
        if(strlen($id_card)==18){
            return $this->idcard_checksum18($id_card);
        }elseif((strlen($id_card)==15)){
            $id_card=$this->idcard_15to18($id_card);
            return $this->idcard_checksum18($id_card);
        }else{
            return false;
        }
    }
     // 计算身份证校验码,根据国家标准GB 11643-1999
     function idcard_verify_number($idcard_base){
        if(strlen($idcard_base)!=17){
            return false;
        }
        //加权因子
        $factor=array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
        //校验码对应值
        $verify_number_list=array('1','0','X','9','8','7','6','5','4','3','2');
        $checksum=0;
        for($i=0;$i<strlen($idcard_base);$i++){
            $checksum += substr($idcard_base,$i,1) * $factor[$i];
        }
        $mod=$checksum % 11;
        $verify_number=$verify_number_list[$mod];
        return $verify_number;
     }
     // 将15位身份证升级到18位
     function idcard_15to18($idcard){
        if(strlen($idcard)!=15){
            return false;
        }else{
            // 如果身份证顺序码是996 997 998 999,这些是为百岁以上老人的特殊编码
            if(array_search(substr($idcard,12,3),array('996','997','998','999')) !== false){
                $idcard=substr($idcard,0,6).'18'.substr($idcard,6,9);
            }else{
                $idcard=substr($idcard,0,6).'19'.substr($idcard,6,9);
            }
        }
        $idcard=$idcard.$this->idcard_verify_number($idcard);
        return $idcard;
     }
     // 18位身份证校验码有效性检查
     function idcard_checksum18($idcard){
        if(strlen($idcard)!=18){
            return false;
        }
        $idcard_base=substr($idcard,0,17);
        if($this->idcard_verify_number($idcard_base)!=strtoupper(substr($idcard,17,1))){
            return false;
    return $user;
        }else{
            return true;
        }
     }
     /***身份证验证 end */
}