UpdateForm.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <?php
  2. namespace hd\models\goods;
  3. use hd\models\BaseForm;
  4. /**
  5. * 商品更新表单模型
  6. */
  7. class UpdateForm extends BaseForm
  8. {
  9. /**
  10. * 商品ID
  11. * @var int
  12. */
  13. public $id;
  14. /**
  15. * 商品名称
  16. * @var string
  17. */
  18. public $name;
  19. /**
  20. * 商品价格
  21. * @var float
  22. */
  23. public $price;
  24. /**
  25. * 价格类型
  26. * @var int
  27. */
  28. public $priceType;
  29. /**
  30. * 已售数量
  31. * @var int
  32. */
  33. public $sold;
  34. /**
  35. * 花朵数量
  36. * @var int
  37. */
  38. public $flowerNum;
  39. /**
  40. * 重量
  41. * @var float
  42. */
  43. public $weight;
  44. /**
  45. * 自动涨价
  46. * @var int
  47. */
  48. public $autoRise;
  49. /**
  50. * 商品图片
  51. * @var array
  52. */
  53. public $shopImg;
  54. /**
  55. * 商品封面图
  56. * @var string
  57. */
  58. public $cover;
  59. /**
  60. * 库存状态
  61. * @var int
  62. */
  63. public $stockSet;
  64. /**
  65. * 商品库存
  66. * @var int
  67. */
  68. public $stock;
  69. /**
  70. * 商品分类ID列表
  71. * @var array
  72. */
  73. public $categoryIdList;
  74. /**
  75. * 商品状态
  76. * @var int
  77. */
  78. public $status;
  79. /**
  80. * 删除状态
  81. * @var int
  82. */
  83. public $delStatus;
  84. /**
  85. * 商品子项数量
  86. * @var int
  87. */
  88. public $setItemNum;
  89. /**
  90. * 是否需要发货
  91. * @var int
  92. */
  93. public $needSend;
  94. /**
  95. * 运费类型
  96. * @var int
  97. */
  98. public $freightType;
  99. /**
  100. * {@inheritdoc}
  101. */
  102. public function rules()
  103. {
  104. return [
  105. // 必填字段验证
  106. [['id'], 'required', 'message' => '商品ID不能为空'],
  107. [['name'], 'required', 'message' => '请填写商品名称'],
  108. [['categoryIdList'], 'required', 'message' => '请选择商品分类'],
  109. // 数据类型验证
  110. [['id', 'status', 'delStatus', 'setItemNum'], 'integer'],
  111. [['name', 'cover'], 'string'],
  112. [['price'], 'number', 'min' => 0, 'message' => '商品价格必须大于或等于0'],
  113. [['sold'], 'integer', 'min' => 0, 'message' => '已售数量必须大于或等于0'],
  114. ['flowerNum', 'integer', 'min' => 0, 'message' => '花朵数量必须大于或等于0'],
  115. ['weight', 'number', 'min' => 0, 'message' => '重量必须大于或等于0'],
  116. [['autoRise'], 'in', 'range' => [0, 1]],
  117. [['stockSet'], 'in', 'range' => [0, 1]],
  118. [['stock'], 'integer', 'min' => 0, 'message' => '库存不能小于0'],
  119. [['priceType'], 'in', 'range' => [0, 1]],
  120. [['delStatus'], 'in', 'range' => [0, 1]],
  121. [['needSend'], 'in', 'range' => [0, 1]],
  122. [['freightType'], 'in', 'range' => [0, 1]],
  123. [['status'], 'in', 'range' => [0, 1]],
  124. // 数组类型验证
  125. [['shopImg'], 'validateShopImg'],
  126. [['categoryIdList'], 'validateCategoryIdList'],
  127. // 默认值设置
  128. ['flowerNum', 'default', 'value' => 0],
  129. ['weight', 'default', 'value' => 1],//当没有重量时,默认给1千克
  130. ['setItemNum', 'default', 'value' => 0],// 在更新时,没传值,会为 NULL 而导致报错
  131. ['status', 'default', 'value' => 1],
  132. ['delStatus', 'default', 'value' => 0],
  133. ['categoryIdList', 'default', 'value' => []],
  134. ['stock', 'default', 'value' => 0],
  135. ];
  136. }
  137. /**
  138. * 验证商品图片
  139. * @param string $attribute 属性名
  140. * @param array $params 参数
  141. */
  142. public function validateShopImg($attribute, $params)
  143. {
  144. if (!empty($this->$attribute) && !is_array($this->$attribute)) {
  145. $this->addError($attribute, '商品图片格式不正确');
  146. }
  147. }
  148. /**
  149. * 验证分类ID列表
  150. * @param string $attribute 属性名
  151. * @param array $params 参数
  152. */
  153. public function validateCategoryIdList($attribute, $params)
  154. {
  155. if (!empty($this->$attribute) && !is_array($this->$attribute)) {
  156. $this->addError($attribute, '商品分类格式不正确');
  157. }
  158. }
  159. /**
  160. * 获取属性标签
  161. * @return array
  162. */
  163. public function attributeLabels()
  164. {
  165. return [
  166. 'id' => '商品ID',
  167. 'name' => '商品名称',
  168. 'price' => '商品价格',
  169. 'priceType' => '价格类型',
  170. 'flowerNum' => '花朵数量',
  171. 'shopImg' => '商品图片',
  172. 'cover' => '商品封面图',
  173. 'stock' => '商品库存',
  174. 'categoryIdList' => '商品分类',
  175. 'status' => '商品状态',
  176. 'delStatus' => '删除状态',
  177. 'setItemNum' => '商品子项数量',
  178. 'itemList' => '商品子项列表',
  179. ];
  180. }
  181. }