UserValidate.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\validate\merchant;
  12. use think\Validate;
  13. use app\common\repositories\store\CityAreaRepository;
  14. class UserValidate extends Validate
  15. {
  16. protected $rule = [
  17. 'phone|手机号' => 'require|mobile',
  18. 'nickname|用户昵称' => 'require|max:16',
  19. 'uid|用户id' => 'require',
  20. 'real_name|姓名' => 'require|max:32',
  21. 'province|省' => 'require',
  22. 'province_id|省id' => 'require|number',
  23. 'city|市' => 'require',
  24. 'city_id|市id' => 'require|number',
  25. 'district|区' => 'require',
  26. 'district_id|区id' => 'require|number',
  27. 'street|街道' => 'require',
  28. 'street_id|街道id' => 'require|number',
  29. 'detail|详细地址' => 'require|max:256',
  30. 'cart_ids|购物车ids' => 'array',
  31. ];
  32. protected $message = [
  33. 'phone.require' => '手机号不能为空',
  34. 'phone.mobile' => '手机号格式错误',
  35. 'nickname.require' => '用户昵称不能为空',
  36. 'nickname.max' => '用户昵称长度不能超过16个字符',
  37. 'uid.require' => '用户id不能为空',
  38. 'real_name.require' => '姓名不能为空',
  39. 'province.require' => '省不能为空',
  40. 'province_id.require' => '省id不能为空',
  41. 'city.require' => '市不能为空',
  42. 'city_id.require' => '市id不能为空',
  43. 'district.require' => '区不能为空',
  44. 'district_id.require' => '区id不能为空',
  45. 'street.require' => '街道不能为空',
  46. 'street_id.require' => '街道id不能为空',
  47. 'detail.require' => '详细地址不能为空',
  48. ];
  49. protected $scene = [
  50. 'user' => ['phone'],
  51. 'userAddress' => ['uid', 'real_name', 'phone', 'province', 'province_id', 'city', 'city_id', 'district', 'district_id', 'street', 'street_id', 'detail'],
  52. 'coupon' => ['uid', 'cart_ids'],
  53. ];
  54. /**
  55. * 验证商户注册信息是否合法
  56. *
  57. * @param array $data
  58. * @return boolean
  59. */
  60. public function userCreateCheck(array $data): bool
  61. {
  62. if (!$this->scene('user')->check($data)) {
  63. return false;
  64. }
  65. return true;
  66. }
  67. /**
  68. * 验证用户地址信息是否合法
  69. *
  70. * @param array $data
  71. * @return boolean
  72. */
  73. public function userAddressCreateCheck(array $data): bool
  74. {
  75. if (!$this->scene('userAddress')->check($data)) {
  76. return false;
  77. }
  78. if($data['uid'] == 0 && empty($data['tourist_unique_key'])) {
  79. $this->error = '请传入游客唯一标识';
  80. return false;
  81. }
  82. // 验证最后行政区是否存在
  83. $make = app()->make(CityAreaRepository::class);
  84. if (!$make->existsWhere(['id' => $data['street_id'], 'snum' => 0])) {
  85. $this->error = '请选择正确的所在地区';
  86. return false;
  87. }
  88. return true;
  89. }
  90. public function couponCheck(array $data): bool
  91. {
  92. if (!$this->scene('coupon')->check($data)) {
  93. return false;
  94. }
  95. return true;
  96. }
  97. }