'require|in:1,2', 'name' => 'checkName', 'phone' => 'checkPhone', 'goods' => 'checkGoods' ]; protected $message = [ 'type.require' => '参数错误', 'type.in' => '参数错误', ]; protected $scene = [ ]; protected function checkName($value,$rule,$data=[]){ if($data['type'] == 1){ if(!$data['name']){ return '未填写入库人'; } }else{ if(!$data['name']){ return '未填写出库人'; } } return true; } protected function checkPhone($value,$rule,$data=[]){ if(!$data['phone']){ return '未填写联系电话'; } return true; } protected function checkGoods($value,$rule,$data=[]){ if(!isset($data['goods'])||empty($data['goods'])){ return '未选择物品'; } if($data['type'] == 1){ // 入库单,检查商品是否存在,物品数量大于0,金额大于等于0 foreach ($data['goods'] as $k=>$v){ if((int)$v['nums'] <= 0){ return '物品数量必须大于0'; } if((int)$v['price'] < 0){ return '物品单价不能小于0'; } $info = Db::name('mate_goods') ->where('org_id',$data['org_id']) ->where('id',$k) ->where('enable',1) ->where('del',0) ->find(); if(!$info){ return '选择的物品不存在'; } } }else{ // 出库单 foreach ($data['goods'] as $k=>$v){ $nums = (int)$v['nums']; if($nums <= 0){ return '物品数量必须大于0'; } $info = Db::name('mate_goods') ->where('org_id',$data['org_id']) ->where('id',$k) ->where('enable',1) ->where('del',0) ->find(); if(!$info){ return '选择的物品不存在'; } if($info['nums'] < $nums){ return '物品数量大于物品剩余数量'; } } } return true; } }