<?php 
namespace wstmart\home\validate;
use think\Validate;
/**
 * ============================================================================
 * 商品验证器
 */
class Goods extends Validate{
	protected $rule = [
        ['goodsName'  ,'require|max:300','请输入商品名称|商品名称不能超过100个字符'],
        ['goodsImg'  ,'require','请上传商品图片'],
        ['goodsType'  ,'in:,0,1','无效的商品类型'],
        ['goodsSn'  ,'checkGoodsSn:1','请输入商品编号'],
        ['productNo'  ,'checkProductNo:1','请输入商品货号'],
        ['marketPrice'  ,'checkMarketPrice:1','请输入市场价格'],
        ['shopPrice'  ,'checkShopPrice:1','请输入店铺价格'],
        ['goodsUnit'  ,'require','请输入商品单位'],
        ['isSale'  ,'in:,0,1','无效的上架状态'],
        ['isRecom'  ,'in:,0,1','无效的推荐状态'],
        ['isBest'  ,'in:,0,1','无效的精品状态'],
        ['isNew'  ,'in:,0,1','无效的新品状态'],
        ['isHot'  ,'in:,0,1','无效的热销状态'],
        ['isFreeShipping','in:,0,1','无效的包邮状态'],
        ['goodsCatId'  ,'require','请选择完整商品分类'],
        ['goodsDesc','require','请输入商品描述'],
        ['specsIds','checkSpecsIds:1','请填写完整商品规格信息']
    ];
    /**
     * 检测商品编号
     */
    protected function checkGoodsSn($value){
    	$goodsId = Input('post.goodsId/d',0);
    	$key = Input('post.goodsSn');
    	if($key=='')return '请输入商品编号';
    	$isChk = model('Goods')->checkExistGoodsKey('goodsSn',$key,$goodsId);
    	if($isChk)return '对不起,该商品编号已存在';
    	return true;
    }
    /**
     * 检测商品货号
     */
    protected function checkProductNo($value){
    	$goodsId = Input('post.goodsId/d',0);
    	$key = Input('post.productNo');
    	if($key=='')return '请输入商品货号';
    	$isChk = model('Goods')->checkExistGoodsKey('productNo',$key,$goodsId);
    	if($isChk)return '对不起,该商品货号已存在';
    	return true;
    }
    /**
     * 检测价格
     */
    public function checkMarketPrice(){
        $marketPrice = floatval(input('post.marketPrice'));
        if($marketPrice<0.01)return '市场价格不能小于0.01';
        return true;
    }
    public function checkShopPrice(){
        $shopPrice = floatval(input('post.shopPrice'));
        if($shopPrice<0.01)return '店铺价格不能小于0.01';
        return true;
    }
    /**
     * 检测商品规格是否填写完整
     */
    public function checkSpecsIds(){
    	$specsIds = input('post.specsIds');
    	if($specsIds!=''){
	    	$str = explode(',',$specsIds);
	    	$specsIds = [];
	    	foreach ($str as $v){
	    		$vs = explode('-',$v);
	    		foreach ($vs as $vv){
	    		   if(!in_array($vv,$specsIds))$specsIds[] = $vv;
	    		}
	    	}
    		//检测规格名称是否填写完整
    		foreach ($specsIds as $v){
    			if(input('post.specName_'.$v)=='')return '请填写完整商品规格值';
    		}
    		//检测销售规格是否完整	
    		foreach ($str as $v){
    			if(input('post.productNo_'.$v)=='')return '请填写完整商品销售规格-货号';
                if(input('post.marketPrice_'.$v)=='')return '请填写完整商品销售规格-市场价';
                if(floatval(input('post.marketPrice_'.$v))<0.01)return '商品销售规格-市场价不能小于0.01';
                if(input('post.specPrice_'.$v)=='')return '请填写完整商品销售规格-本店价';
                if(floatval(input('post.specPrice_'.$v))<0.01)return '商品销售规格-本店价不能小于0.01';
                if(input('post.specStock_'.$v)=='')return '请填写完整商品销售规格-库存';
                if(intval(input('post.specStock_'.$v))<0)return '商品销售规格-库存不能小于0';
                if(input('post.warnStock_'.$v)=='')return '请填写完整商品销售规格-预警库存';
                if(intval(input('post.warnStock_'.$v))<0)return '商品销售规格-预警库存不能小于0';
    		}
    		if(input('post.defaultSpec')=='')return '请选择推荐规格';
    	}
    	return true;
    }
}