StoreProductAttrValue.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\model\product\sku;
  12. use app\model\activity\integral\StoreIntegral;
  13. use crmeb\basic\BaseModel;
  14. use crmeb\traits\ModelTrait;
  15. use think\Model;
  16. use app\model\product\product\StoreProduct;
  17. /**
  18. * Class StoreProductAttrValue
  19. * @package app\common\model\product
  20. */
  21. class StoreProductAttrValue extends BaseModel
  22. {
  23. use ModelTrait;
  24. /**
  25. * 模型名称
  26. * @var string
  27. */
  28. protected $name = 'store_product_attr_value';
  29. protected $insert = ['unique'];
  30. /**
  31. * sku 字段写入
  32. * @param $value
  33. * @return string
  34. */
  35. public function setSukAttr($value)
  36. {
  37. return is_array($value) ? implode(',', $value) : $value;
  38. }
  39. /**
  40. * Unique字段写入
  41. * @param $value
  42. * @param $data
  43. * @return mixed
  44. */
  45. public function setUniqueAttr($value, $data)
  46. {
  47. if (is_array($data['suk'])) {
  48. $data['suk'] = $this->setSukAttr($data['suk']);
  49. }
  50. return $data['unique'] ?: substr(md5($data['product_id'] . $data['suk'] . uniqid(true)), 12, 8);
  51. }
  52. /**
  53. * 商品搜索器
  54. * @param Model $query
  55. * @param $value
  56. * @param $data
  57. */
  58. public function searchProductIdAttr($query, $value)
  59. {
  60. if (is_array($value)) {
  61. $query->whereIn('product_id', $value);
  62. } else {
  63. $query->where('product_id', $value);
  64. }
  65. }
  66. /**
  67. * 商品类型搜索器
  68. * @param Model $query
  69. * @param $value
  70. * @param $data
  71. */
  72. public function searchTypeAttr($query, $value)
  73. {
  74. $query->where('type', $value);
  75. }
  76. /**
  77. * 商品属性名称搜索器
  78. * @param Model $query
  79. * @param $value
  80. * @param $data
  81. */
  82. public function searchSukAttr($query, $value)
  83. {
  84. if ($value) {
  85. $query->where('suk', $value);
  86. }
  87. }
  88. /**
  89. * 规格唯一值搜索器
  90. * @param Model $query
  91. * @param $value
  92. * @param $data
  93. */
  94. public function searchUniqueAttr($query, $value)
  95. {
  96. if (is_array($value)) {
  97. $query->whereIn('unique', $value);
  98. } else {
  99. if ($value) {
  100. $query->where('unique', $value);
  101. }
  102. }
  103. }
  104. /**
  105. * 关联商品
  106. * @return \think\model\relation\HasOne
  107. */
  108. public function product()
  109. {
  110. return $this->hasOne(StoreProduct::class, 'id', 'product_id')->field('store_name,id')->bind(['store_name']);
  111. }
  112. /**
  113. * 关联积分商城表
  114. * @return \think\model\relation\HasOne
  115. */
  116. public function storeIntegral()
  117. {
  118. return $this->hasOne(StoreIntegral::class, 'id', 'product_id')->field('title store_name,id')->where('is_show', 1)->where('is_del', 0)->bind(['store_name']);
  119. }
  120. /**
  121. * 编号搜索器
  122. * @param Model $query
  123. * @param $value
  124. * @param $data
  125. */
  126. public function searchBarCodeAttr($query, $value)
  127. {
  128. if (is_array($value)) {
  129. $query->whereIn('bar_code', $value);
  130. } else {
  131. $query->where('bar_code', $value);
  132. }
  133. }
  134. }