CartItemForm.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. namespace addons\TinyShop\common\forms;
  3. use Yii;
  4. use yii\base\Model;
  5. use common\enums\StatusEnum;
  6. use common\enums\AuditStatusEnum;
  7. use addons\TinyShop\common\models\product\Sku;
  8. use addons\TinyShop\common\models\product\Product;
  9. /**
  10. * Class CartItemForm
  11. * @package addons\TinyShop\common\forms
  12. * @author jianyan74 <751393839@qq.com>
  13. */
  14. class CartItemForm extends Model
  15. {
  16. public $id;
  17. public $sku_id;
  18. public $member_id;
  19. /**
  20. * @var int
  21. */
  22. public $marketing_id = 0;
  23. /**
  24. * @var string
  25. */
  26. public $marketing_type;
  27. /**
  28. * @var int
  29. */
  30. public $number;
  31. /**
  32. * @var Sku
  33. */
  34. private $_sku;
  35. /**
  36. * @return array
  37. */
  38. public function rules()
  39. {
  40. return [
  41. [['sku_id', 'number'], 'required', 'on' => 'create'],
  42. [['id', 'number'], 'required', 'on' => 'updateNumber'],
  43. [['id', 'sku_id'], 'required', 'on' => 'updateSku'],
  44. [['id', 'sku_id', 'marketing_id', 'member_id'], 'integer', 'min' => 0],
  45. [['number'], 'integer', 'min' => 1],
  46. [['sku_id'], 'verifyExist'],
  47. [['marketing_type'], 'string'],
  48. ];
  49. }
  50. public function attributeLabels()
  51. {
  52. return [
  53. 'id' => 'ID',
  54. 'number' => '数量',
  55. 'sku_id' => '规格',
  56. 'marketing_id' => '营销ID',
  57. 'marketing_type' => '营销类型',
  58. 'member_id' => '用户',
  59. ];
  60. }
  61. /**
  62. * @throws \yii\web\NotFoundHttpException
  63. */
  64. public function verifyExist($attribute)
  65. {
  66. $model = Yii::$app->tinyShopService->productSku->findById($this->sku_id);
  67. if (!$model) {
  68. $this->addError($attribute, '找不到商品规格');
  69. return;
  70. }
  71. /** @var $product Product */
  72. if (empty($product = $model['product'])) {
  73. $this->addError($attribute, '找不到商品');
  74. return;
  75. }
  76. if (
  77. $product['audit_status'] == AuditStatusEnum::DELETE ||
  78. $product['status'] != StatusEnum::ENABLED
  79. ) {
  80. $this->addError($attribute, '商品已下架');
  81. return;
  82. }
  83. $this->_sku = $model;
  84. }
  85. public function verifyValid($number)
  86. {
  87. }
  88. /**
  89. * @return Sku
  90. */
  91. public function getSku()
  92. {
  93. return $this->_sku;
  94. }
  95. }
粤ICP备19079148号