TransferOutThirdPartyValidation.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. namespace App\Module\Transfer\Validations;
  3. use App\Module\Transfer\Models\TransferOrder;
  4. use App\Module\Transfer\Validators\TransferOrderOutValidator;
  5. use UCore\ValidationCore;
  6. use App\Module\Transfer\Validators\TransferBalanceValidator;
  7. /**
  8. * 第三方应用转出验证类
  9. * 专门为第三方应用提取请求设计,跳过密码验证
  10. */
  11. class TransferOutThirdPartyValidation extends ValidationCore
  12. {
  13. /** @var \App\Module\Transfer\Models\TransferApp|null 转账应用对象,由验证器设置 */
  14. public ?\App\Module\Transfer\Models\TransferApp $transfer_app = null;
  15. /**
  16. * 验证规则
  17. */
  18. public function rules($rules = []): array
  19. {
  20. return [
  21. // 基础验证
  22. [
  23. 'transfer_app_id,user_id,out_order_id', 'required'
  24. ],
  25. [ 'transfer_app_id,user_id', 'integer', 'min' => 1 ],
  26. [ 'amount', 'required' ],
  27. [ 'amount', 'string' ], // 第三方应用金额作为字符串处理,避免精度问题
  28. ['amount', 'float', 'min' =>10, 'max' => 10000000], // 限制最大金额为1000万,防止异常大金额
  29. // 余额验证:确保用户余额充足
  30. [ 'amount', new TransferBalanceValidator($this), 'msg' => '用户余额不足' ],
  31. // 注意:这里不要求password字段,因为第三方应用不需要密码验证
  32. [ 'google_code', 'string', 'size' => 6 ],
  33. [ 'out_user_id', 'string', 'max' => 50 ],
  34. [ 'remark', 'string', 'max' => 255 ],
  35. [ 'callback_data', 'array' ],
  36. [
  37. 'out_order_id', new TransferOrderOutValidator($this, []),
  38. 'msg' => '重复的订单'
  39. ]
  40. ];
  41. }
  42. /**
  43. * 默认值
  44. */
  45. public function default(): array
  46. {
  47. return [];
  48. }
  49. public function validatrTransferOrder()
  50. {
  51. }
  52. }