AttributeValueService.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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\enums\AttributeValueTypeEnum;
  7. use addons\TinyShop\common\models\product\AttributeValue;
  8. /**
  9. * Class AttributeValueService
  10. * @package addons\TinyShop\services\product
  11. * @author jianyan74 <751393839@qq.com>
  12. */
  13. class AttributeValueService
  14. {
  15. /**
  16. * @param $product_id
  17. * @param $merchant_id
  18. * @param $data
  19. */
  20. public function create($product_id, $merchant_id, $data)
  21. {
  22. AttributeValue::deleteAll(['product_id' => $product_id]);
  23. if (empty($data)) {
  24. return;
  25. }
  26. $rows = [];
  27. !is_array($data) && $data = Json::decode($data);
  28. foreach ($data as $key => $item) {
  29. if (!empty($item['title'])) {
  30. if ($item['data'] && is_array($item['data'])) {
  31. $item['data'] = implode(',', $item['data']);
  32. }
  33. if (isset($item['value']) && is_array($item['value'])) {
  34. $item['value'] = implode(',', $item['value']);
  35. }
  36. empty($item['data']) && $item['data'] = '';
  37. empty($item['value']) && $item['value'] = '';
  38. $row = [
  39. 'merchant_id' => $merchant_id,
  40. 'product_id' => $product_id,
  41. 'title' => $item['title'],
  42. 'type' => $item['type'] ?? 1,
  43. 'sort' => $item['sort'],
  44. 'data' => $item['data'] ?? '',
  45. 'value' => $item['value'] ?? '',
  46. ];
  47. $rows[] = $row;
  48. }
  49. }
  50. // 判断插入
  51. $field = ['merchant_id', 'product_id', 'title', 'type', 'sort', 'data', 'value'];
  52. !empty($rows) && Yii::$app->db->createCommand()->batchInsert(AttributeValue::tableName(), $field, $rows)->execute();
  53. }
  54. /**
  55. * @param $product_id
  56. * @param $data
  57. * @throws \yii\db\Exception
  58. */
  59. public function createByCopy($product_id, $data)
  60. {
  61. $rows = $field = [];
  62. foreach ($data as $datum) {
  63. $rows[] = [
  64. 'merchant_id' => $datum['merchant_id'],
  65. 'product_id' => $product_id,
  66. 'type' => $datum['type'],
  67. 'data' => $datum['data'],
  68. 'title' => $datum['title'],
  69. 'value' => $datum['value'],
  70. 'sort' => $datum['sort'],
  71. 'status' => $datum['status'],
  72. 'created_at' => time(),
  73. 'updated_at' => time(),
  74. ];
  75. empty($field) && $field = array_keys($rows[0]);
  76. }
  77. !empty($rows) && Yii::$app->db->createCommand()->batchInsert(AttributeValue::tableName(), $field, $rows)->execute();
  78. }
  79. /**
  80. * @param $product_id
  81. * @return array|\yii\db\ActiveRecord[]
  82. */
  83. public function findByProductId($product_id)
  84. {
  85. $data = AttributeValue::find()
  86. ->where([
  87. 'product_id' => $product_id,
  88. 'status' => StatusEnum::ENABLED
  89. ])
  90. ->orderBy('sort asc')
  91. ->asArray()
  92. ->all();
  93. foreach ($data as &$datum) {
  94. if ($datum['type'] != AttributeValueTypeEnum::TEXT) {
  95. $datum['value'] = explode(',', $datum['value']);
  96. }
  97. if ($datum['type'] == AttributeValueTypeEnum::CHECK) {
  98. $datum['data'] = explode(',', $datum['data']);
  99. }
  100. }
  101. return $data;
  102. }
  103. }
粤ICP备19079148号