CancelOrderForm.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace hd\models\delivery;
  3. use bizHd\express\classes\HdDeliveryOrderClass;
  4. use hd\models\BaseForm;
  5. use Yii;
  6. /**
  7. * 取消配送订单表单模型
  8. * 用于 actionCancelOrder 的参数验证
  9. */
  10. class CancelOrderForm extends BaseForm
  11. {
  12. public $hdOrderId; // 零售订单ID (必需)
  13. public $orderId; // 第三方平台订单ID (可选)
  14. public $platform; // 配送平台 (可选)
  15. public $order_cancel_code; // 订单取消原因代码 (用于蜂鸟平台)
  16. public $order_cancel_reason; // 订单取消原因(20字以内)
  17. public function rules()
  18. {
  19. return [
  20. ['hdOrderId', 'required'],
  21. ['hdOrderId', 'integer'],
  22. ['hdOrderId', 'validateHdOrderId'],
  23. ['orderId', 'string'],
  24. ['platform', 'string'],
  25. ['order_cancel_code', 'string'],
  26. ['order_cancel_reason', 'required'],
  27. ['order_cancel_reason', 'string', 'max' => 20],
  28. ];
  29. }
  30. public function attributeLabels()
  31. {
  32. return [
  33. 'hdOrderId' => '零售订单ID',
  34. 'orderId' => '平台订单ID',
  35. 'platform' => '配送平台',
  36. 'order_cancel_code' => '取消原因代码',
  37. 'order_cancel_reason' => '取消原因',
  38. ];
  39. }
  40. /**
  41. * 验证批发订单ID
  42. * @param $attribute
  43. */
  44. public function validateHdOrderId($attribute)
  45. {
  46. if (!$this->hasErrors()) {
  47. // 检查配送订单是否存在
  48. $gdo = HdDeliveryOrderClass::getByCondition(
  49. ['mainId' => Yii::$app->controller->mainId, 'hdOrderId' => $this->hdOrderId, 'orderStatus!=' => -1],
  50. false,
  51. 'orderId, deliveryId'
  52. );
  53. if (empty($gdo)) {
  54. $this->addError($attribute, '未找到对应的配送订单');
  55. }
  56. }
  57. }
  58. }