Program.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace app\common\validate;
  3. use think\Db;
  4. use think\Validate;
  5. class Program extends Validate{
  6. protected $rule = [
  7. 'title|名称' => 'require|length:1,100|checkUnique',
  8. 'sn|标识' => 'require|length:1,5|alpha|upper|checkUniqueSn',
  9. 'company_id|公司' => 'require',
  10. ];
  11. protected $message = [
  12. 'company_id.require' => '未选择公司',
  13. 'title.length' => '名称必须100字以内',
  14. 'sn.length' => '标识必须是1-5个大写字母',
  15. 'sn.alpha' => '标识必须是1-5个大写字母',
  16. 'sn.upper' => '标识必须是1-5个大写字母',
  17. ];
  18. protected $scene = [
  19. ];
  20. // 自定义验证规则
  21. protected function checkUnique($value,$rule,$data=[])
  22. {
  23. $info = Db::name('program')->where('title',$value)->where('org_id',$data['org_id'])->where('del',0)->find();
  24. if($data['id'] <= 0 && $info){
  25. return '名称已被使用';
  26. }
  27. if($info && $data['id'] > 0 && $info['id'] != $data['id']){
  28. return '名称已被使用';
  29. }
  30. return true;
  31. }
  32. protected function checkUniqueSn($value,$rule,$data=[])
  33. {
  34. $info = Db::name('program')
  35. ->where('sn',$value)
  36. ->where('org_id',$data['org_id'])
  37. ->where('del',0)
  38. ->find();
  39. if($data['id'] <= 0 && $info){
  40. return '标识已被使用';
  41. }
  42. if($info && $data['id'] > 0 && $info['id'] != $data['id']){
  43. return '标识已被使用';
  44. }
  45. return true;
  46. }
  47. }