GoodsReserveTimeSpec.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace common\models\goods;
  3. use common\enums\StatusEnum;
  4. use Exception;
  5. use Yii;
  6. /**
  7. * 预约商品SKU模型
  8. * This is the model class for table "{{%goods_reserve_time}}"
  9. * @property int $int $id
  10. * @property string $spec_time spec标题
  11. * @property string $start 开始时间点
  12. * @property string $end 结束时间点
  13. * @property int $reserve_time_id 商城id
  14. * @property int $reserve_sku_id 预约商品SKU
  15. * @property int $checked 是否选中
  16. * @property int $is_next 结束时间[0当日 1次日]
  17. * @property int $stock 库存
  18. * @property int $price 售价
  19. * @property int $original_price 原价(划线价仅展示)
  20. * @property int $cost_price 成本价
  21. * @property int $reserve_max_buy 每天最大预约数量
  22. * @property int $created_at 创建时间
  23. * @property int $updated_at 修改时间
  24. */
  25. class GoodsReserveTimeSpec extends \common\models\base\BaseActiveRecord
  26. {
  27. /**
  28. * {@inheritdoc}
  29. */
  30. public static function tableName()
  31. {
  32. return '{{%goods_reserve_time_spec}}';
  33. }
  34. /**
  35. * {@inheritdoc}
  36. */
  37. public function rules()
  38. {
  39. return [
  40. [['reserve_time_id','reserve_sku_id','checked','is_next','stock','reserve_max_buy','created_at', 'updated_at'], 'integer'],
  41. [['price', 'original_price', 'cost_price'], 'number'],
  42. [['spec_time','start','end'], 'string'],
  43. ];
  44. }
  45. /**
  46. * {@inheritdoc}
  47. */
  48. public function attributeLabels()
  49. {
  50. return [
  51. 'id' => 'ID',
  52. 'spec_time' => 'spec标题',
  53. 'start' => '开始时间点',
  54. 'end' => '结束时间点',
  55. 'reserve_time_id' => '商城id',
  56. 'reserve_sku_id' => '预约商品SKU',
  57. 'checked' => '是否选中',
  58. 'is_next' => '结束时间[0当日 1次日]',
  59. 'stock' => '库存',
  60. 'price' => '售价',
  61. 'original_price' => '原价(划线价仅展示)',
  62. 'cost_price' => '成本价',
  63. 'reserve_max_buy' => '每天最大预约数量',
  64. 'created_at' => '创建时间',
  65. 'updated_at' => '修改时间',
  66. ];
  67. }
  68. // 设置sku的可预约时间
  69. public static function setTimeSpec($reserveTime, $timeSpecs,&$totalStock)
  70. {
  71. try {
  72. array_map(function ($val) use (&$reserveTime,&$totalStock) {
  73. $model = new self();
  74. $model->loadDefaultValues();
  75. $attributes = [
  76. 'spec_time' => $val['spec_time'],
  77. 'start' => $val['start'],
  78. 'end' => $val['end'],
  79. 'reserve_time_id' => $reserveTime['id'],
  80. 'price' => $val['price'] ?? 0,
  81. 'original_price' => $val['original_price'] ?? 0,
  82. 'cost_price' => $val['cost_price'] ?? 0,
  83. 'reserve_max_buy' => $val['reserve_max_buy'] ?? 0,
  84. 'reserve_sku_id' => $reserveTime['reserve_sku_id'] ?? 0,
  85. 'stock' => $val['reserve_max_buy'] ?? 0,
  86. 'checked' => $val['checked'],
  87. 'is_next' => strpos($val['is_next'], "次日") !== false ? StatusEnum::ENABLED : StatusEnum::DISABLED,
  88. ];
  89. Yii::error("setTimeSpec -> " . var_export($attributes, true));
  90. $totalStock += $val['reserve_max_buy'];
  91. if (!$model->load($attributes, '') || !$model->save()) {
  92. throw new Exception($model->getErrorMessage());
  93. }
  94. }, $timeSpecs);
  95. } catch (Exception $e) {
  96. if (isset($trans)) $trans->rollback();
  97. self::$static_error = $e->getMessage();
  98. return false;
  99. }
  100. }
  101. }