UseageGeneralInfoValidate.php 2.1 KB
<?php
namespace app\em\validate;
use think\Validate;
use app\em\model\Useage;

class UseageGeneralInfoValidate extends Validate
{
    protected $rule = [
        'em_id' => 'require',
        'last_numb' => 'require',
        'last_date' => 'require|date',
        'current_numb' => 'require|checkNumb',
        'current_date' => 'require|date|checkDate',
        'photo_id' => 'require',
        'staff_id' => 'require',
        'price' => 'require',
        'amount' =>'require|checkAmount'
    ];

    protected $message = [
        'em_id.require' => '电表参数错误',
        'last_numb.require' => '上次抄表数不能为空',
        'last_date.require' => '上次查表日期不正确',
        'current_numb.require' => '请填写本次读数',
        'current_date.require' => '请选择本次抄表日期',
        'current_date.date' => '本次抄表日期格式不正确',
        'photo_id.require' => '请上传电表照片',
        'staff_id.require' => '请选择抄表员',
        'price' => '单价必填且只能是数字或小数',
        'amount.require' =>'实缴电费未填写'
    ];

    protected $scene = [
        's1' => 'em_id,last_numb,last_date,current_numb,current_date,photo_id,staff_id,price',
        's2' => 'em_id,last_numb,last_date,current_numb,current_date,photo_id,staff_id,price,amount',
    ];

    protected  function checkDate($value,$rule,$data=[]){
        $curr = strtotime($value);
        $last = strtotime($data['last_date']);
        
        $useage = Useage::where('em_id','=',$data['em_id'])->order('id desc')->find();
        if($useage){        
          if($useage->current_date >= $value) return '本次抄表日期必须大于上次抄表日期';
        }
        return $curr > $last ? true : '本次抄表日期必须大于上次抄表日期';
    }

    protected function checkNumb($value,$rule,$data=[]){
        return $value > $data['last_numb'] ? true : '本次抄表度数必须大于上次抄表度数';
    }

    protected function checkAmount($value,$rule,$data=[]){
        return $value > 0 ? true : '实缴电费未填写';
    }
}