SpecValueService.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace addons\TinyShop\services\product;
  3. use Yii;
  4. use yii\helpers\Json;
  5. use common\enums\StatusEnum;
  6. use addons\TinyShop\common\models\product\SpecValue;
  7. use addons\TinyShop\common\models\product\Product;
  8. /**
  9. * Class SpecValueService
  10. * @package addons\TinyShop\services\product
  11. */
  12. class SpecValueService
  13. {
  14. /**
  15. * @param Product $product
  16. * @param $data
  17. */
  18. public function create(Product $product, $data)
  19. {
  20. !is_array($data) && $data = Json::decode($data);
  21. SpecValue::deleteAll(['product_id' => $product->id]);
  22. $rows = [];
  23. $field = [];
  24. foreach ($data as $datum) {
  25. $row = [
  26. 'product_id' => $product->id,
  27. 'merchant_id' => $product->merchant_id,
  28. 'common_spec_id' => $datum['spec_id'],
  29. 'common_spec_value_id' => $datum['id'],
  30. 'title' => $datum['title'],
  31. 'data' => $datum['data'] ?? '',
  32. 'sort' => $datum['sort'] ?? 999,
  33. 'pitch_on' => $datum['pitch_on'] ?? 0,
  34. 'status' => StatusEnum::ENABLED,
  35. 'created_at' => time(),
  36. 'updated_at' => time(),
  37. ];
  38. $rows[] = $row;
  39. empty($field) && $field = array_keys($row);
  40. }
  41. !empty($rows) && Yii::$app->db->createCommand()->batchInsert(SpecValue::tableName(), $field, $rows)->execute();
  42. }
  43. /**
  44. * @param $product_id
  45. * @param $data
  46. * @throws \yii\db\Exception
  47. */
  48. public function createByCopy($product_id, $data)
  49. {
  50. $rows = $field = [];
  51. foreach ($data as $datum) {
  52. $rows[] = [
  53. 'product_id' => $product_id,
  54. 'merchant_id' => $datum['merchant_id'],
  55. 'common_spec_id' => $datum['common_spec_id'],
  56. 'common_spec_value_id' => $datum['common_spec_value_id'],
  57. 'title' => $datum['title'],
  58. 'data' => $datum['data'],
  59. 'sort' => $datum['sort'],
  60. 'status' => $datum['status'],
  61. 'pitch_on' => $datum['pitch_on'],
  62. 'created_at' => time(),
  63. 'updated_at' => time(),
  64. ];
  65. empty($field) && $field = array_keys($rows[0]);
  66. }
  67. !empty($rows) && Yii::$app->db->createCommand()->batchInsert(SpecValue::tableName(), $field, $rows)->execute();
  68. }
  69. /**
  70. * @param $product_id
  71. * @return array|\yii\db\ActiveRecord[]
  72. */
  73. public function findByProductId($product_id)
  74. {
  75. return SpecValue::find()
  76. ->where(['status' => StatusEnum::ENABLED])
  77. ->andWhere(['product_id' => $product_id])
  78. ->asArray()
  79. ->all();
  80. }
  81. }
粤ICP备19079148号