GoodsSku.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Niucloud-admin 企业快速开发的多应用管理平台
  4. // +----------------------------------------------------------------------
  5. // | 官方网址:https://www.niucloud.com
  6. // +----------------------------------------------------------------------
  7. // | niucloud团队 版权所有 开源版本可自由商用
  8. // +----------------------------------------------------------------------
  9. // | Author: Niucloud Team
  10. // +----------------------------------------------------------------------
  11. namespace addon\mall\app\model\goods;
  12. use app\dict\sys\FileDict;
  13. use core\base\BaseModel;
  14. use think\model\relation\HasMany;
  15. use think\model\relation\HasOne;
  16. /**
  17. * 商品规格模型
  18. * Class GoodsSku
  19. * @package addon\mall\app\model\goods_sku
  20. */
  21. class GoodsSku extends BaseModel
  22. {
  23. /**
  24. * 数据表主键
  25. * @var string
  26. */
  27. protected $pk = 'sku_id';
  28. /**
  29. * 模型名称
  30. * @var string
  31. */
  32. protected $name = 'mall_goods_sku';
  33. /**
  34. * 获取商品缩略图(小)
  35. */
  36. public function getSkuImageThumbSmallAttr($value, $data)
  37. {
  38. if (isset($data[ 'sku_image' ]) && $data[ 'sku_image' ] != '') {
  39. return get_thumb_images($data['site_id'], $data[ 'sku_image' ], FileDict::SMALL);
  40. }
  41. return [];
  42. }
  43. /**
  44. * 获取商品缩略图(中)
  45. */
  46. public function getSkuImageThumbMidAttr($value, $data)
  47. {
  48. if (isset($data[ 'sku_image' ]) && $data[ 'sku_image' ] != '') {
  49. return get_thumb_images($data['site_id'], $data[ 'sku_image' ], FileDict::MID);
  50. }
  51. return [];
  52. }
  53. /**
  54. * 获取商品缩略图(大)
  55. */
  56. public function getSkuImageThumbBigAttr($value, $data)
  57. {
  58. if (isset($data[ 'sku_image' ]) && $data[ 'sku_image' ] != '') {
  59. return get_thumb_images($data['site_id'], $data[ 'sku_image' ], FileDict::BIG);
  60. }
  61. return [];
  62. }
  63. /**
  64. * 搜索器:商品规格商品sku_id
  65. * @param $value
  66. * @param $data
  67. */
  68. public function searchSkuIdAttr($query, $value, $data)
  69. {
  70. if ($value) {
  71. $query->where('sku_id', $value);
  72. }
  73. }
  74. /**
  75. * 搜索器:商品规格商品sku名称
  76. * @param $value
  77. * @param $data
  78. */
  79. public function searchSkuNameAttr($query, $value, $data)
  80. {
  81. if ($value) {
  82. $query->where('sku_name', 'like', '%' . $value . '%');
  83. }
  84. }
  85. /**
  86. * 搜索器:商品规格商品sku编码
  87. * @param $value
  88. * @param $data
  89. */
  90. public function searchSkuNoAttr($query, $value, $data)
  91. {
  92. if ($value) {
  93. $query->where('sku_no', 'like', '%' . $value . '%');
  94. }
  95. }
  96. /**
  97. * 搜索器:商品规格商品id
  98. * @param $value
  99. * @param $data
  100. */
  101. public function searchGoodsIdAttr($query, $value, $data)
  102. {
  103. if ($value) {
  104. $query->where('goods_id', $value);
  105. }
  106. }
  107. /**
  108. * 搜索器:商品规格sku规格格式
  109. * @param $value
  110. * @param $data
  111. */
  112. public function searchSkuSpecFormatAttr($query, $value, $data)
  113. {
  114. if ($value) {
  115. $query->where('sku_spec_format', $value);
  116. }
  117. }
  118. /**
  119. * 搜索器:商品规格sku单价
  120. * @param $value
  121. * @param $data
  122. */
  123. public function searchPriceAttr($query, $value, $data)
  124. {
  125. if ($value) {
  126. $query->where('price', $value);
  127. }
  128. }
  129. /**
  130. * 搜索器:商品规格划线价
  131. * @param $value
  132. * @param $data
  133. */
  134. public function searchMarketPriceAttr($query, $value, $data)
  135. {
  136. if ($value) {
  137. $query->where('market_price', $value);
  138. }
  139. }
  140. /**
  141. * 搜索器:商品规格实际卖价(有活动显示活动价,默认原价)
  142. * @param $value
  143. * @param $data
  144. */
  145. public function searchSalePriceAttr($query, $value, $data)
  146. {
  147. if ($value) {
  148. $query->where('sale_price', $value);
  149. }
  150. }
  151. /**
  152. * 搜索器:商品规格sku成本价
  153. * @param $value
  154. * @param $data
  155. */
  156. public function searchCostPriceAttr($query, $value, $data)
  157. {
  158. if ($value) {
  159. $query->where('cost_price', $value);
  160. }
  161. }
  162. /**
  163. * 搜索器:商品规格商品sku库存
  164. * @param $value
  165. * @param $data
  166. */
  167. public function searchStockAttr($query, $value, $data)
  168. {
  169. if ($value) {
  170. $query->where('stock', $value);
  171. }
  172. }
  173. /**
  174. * 搜索器:商品规格重量(单位kg)
  175. * @param $value
  176. * @param $data
  177. */
  178. public function searchWeightAttr($query, $value, $data)
  179. {
  180. if ($value) {
  181. $query->where('weight', $value);
  182. }
  183. }
  184. /**
  185. * 搜索器:商品规格体积(单位立方米)
  186. * @param $value
  187. * @param $data
  188. */
  189. public function searchVolumeAttr($query, $value, $data)
  190. {
  191. if ($value) {
  192. $query->where('volume', $value);
  193. }
  194. }
  195. /**
  196. * 搜索器:商品规格销量
  197. * @param $value
  198. * @param $data
  199. */
  200. public function searchSaleNumAttr($query, $value, $data)
  201. {
  202. if ($value) {
  203. $query->where('sale_num', $value);
  204. }
  205. }
  206. /**
  207. * 搜索器:商品规格sku主图
  208. * @param $value
  209. * @param $data
  210. */
  211. public function searchSkuImageAttr($query, $value, $data)
  212. {
  213. if ($value) {
  214. $query->where('sku_image', $value);
  215. }
  216. }
  217. /**
  218. * 搜索器:商品规格是否默认
  219. * @param $value
  220. * @param $data
  221. */
  222. public function searchIsDefaultAttr($query, $value, $data)
  223. {
  224. if ($value) {
  225. $query->where('is_default', $value);
  226. }
  227. }
  228. /**
  229. * 关联商品主表
  230. * @return HasOne
  231. */
  232. public function goods()
  233. {
  234. return $this->hasOne(Goods::class, 'goods_id', 'goods_id')
  235. ->joinType('left')
  236. ->withField('goods_id, is_discount, site_id, goods_name, goods_type, sub_title, goods_cover, goods_image,goods_desc,brand_id,label_ids,service_ids, unit, stock, sale_num + virtual_sale_num as sale_num, status, is_free_shipping, fee_type, delivery_type, delivery_money, delivery_template_id, goods_category, member_discount, goods_mall_category')
  237. ->append([ 'goods_type_name', 'goods_cover_thumb_small', 'goods_cover_thumb_mid', 'goods_cover_thumb_big', 'delivery_type_list', 'goods_image_thumb_small', 'goods_image_thumb_mid', 'goods_image_thumb_big' ]);
  238. }
  239. /**
  240. * 关联商品规格列表
  241. * @return HasMany
  242. */
  243. public function skuList()
  244. {
  245. return $this->hasMany(GoodsSku::class, 'goods_id', 'goods_id');
  246. }
  247. /**
  248. * 关联商品规格列表
  249. * @return HasMany
  250. */
  251. public function goodsSpec()
  252. {
  253. return $this->hasMany(GoodsSpec::class, 'goods_id', 'goods_id');
  254. }
  255. }