Cart.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  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\cart;
  12. use addon\mall\app\model\goods\Goods;
  13. use addon\mall\app\model\goods\GoodsSku;
  14. use addon\mall\app\model\goods\GoodsSpec;
  15. use app\model\site\Site;
  16. use core\base\BaseModel;
  17. use think\model\relation\HasMany;
  18. use think\model\relation\HasOne;
  19. /**
  20. * 购物车模型
  21. */
  22. class Cart extends BaseModel
  23. {
  24. /**
  25. * 数据表主键
  26. * @var string
  27. */
  28. protected $pk = 'id';
  29. /**
  30. * 模型名称
  31. * @var string
  32. */
  33. protected $name = 'mall_cart';
  34. //类型
  35. protected $type = [
  36. ];
  37. /**
  38. * 搜索器:购物车表ID
  39. * @param $value
  40. * @param $data
  41. */
  42. public function searchIdAttr($query, $value, $data)
  43. {
  44. if ($value) {
  45. $query->where('id', $value);
  46. }
  47. }
  48. /**
  49. * 搜索器:购物车会员ID
  50. * @param $value
  51. * @param $data
  52. */
  53. public function searchMemberIdAttr($query, $value, $data)
  54. {
  55. if ($value) {
  56. $query->where('member_id', $value);
  57. }
  58. }
  59. /**
  60. * 搜索器:购物车商品ID
  61. * @param $value
  62. * @param $data
  63. */
  64. public function searchGoodsIdAttr($query, $value, $data)
  65. {
  66. if ($value) {
  67. $query->where('goods_id', $value);
  68. }
  69. }
  70. /**
  71. * 搜索器:购物车sku id
  72. * @param $value
  73. * @param $data
  74. */
  75. public function searchSkuIdAttr($query, $value, $data)
  76. {
  77. if ($value) {
  78. $query->where('sku_id', $value);
  79. }
  80. }
  81. /**
  82. * 搜索器:购物车活动类型
  83. * @param $value
  84. * @param $data
  85. */
  86. public function searchMarketTypeAttr($query, $value, $data)
  87. {
  88. if ($value) {
  89. $query->where('market_type', $value);
  90. }
  91. }
  92. /**
  93. * 搜索器:购物车活动id
  94. * @param $value
  95. * @param $data
  96. */
  97. public function searchMarketTypeIdAttr($query, $value, $data)
  98. {
  99. if ($value) {
  100. $query->where('market_type_id', $value);
  101. }
  102. }
  103. /**
  104. * 搜索器:购物车添加时间
  105. * @param $value
  106. * @param $data
  107. */
  108. public function searchCreateTimeAttr($query, $value, $data)
  109. {
  110. if ($value) {
  111. $query->where('create_time', $value);
  112. }
  113. }
  114. /**
  115. * 搜索器:购物车商品状态
  116. * @param $value
  117. * @param $data
  118. */
  119. public function searchStatusAttr($query, $value, $data)
  120. {
  121. if ($value) {
  122. $query->where('status', $value);
  123. }
  124. }
  125. /**
  126. * 搜索器:购物车失效原因
  127. * @param $value
  128. * @param $data
  129. */
  130. public function searchInvalidRemarkAttr($query, $value, $data)
  131. {
  132. if ($value) {
  133. $query->where('invalid_remark', $value);
  134. }
  135. }
  136. /**
  137. * 关联商品主表
  138. * @return HasOne
  139. */
  140. public function goods()
  141. {
  142. return $this->hasOne(Goods::class, 'goods_id', 'goods_id')
  143. ->joinType('inner')
  144. ->withTrashed()
  145. ->withField('goods_id, site_id, goods_name, goods_type, sub_title, goods_cover, unit, stock, sale_num + virtual_sale_num as sale_num, status,delete_time')
  146. ->append([ 'goods_type_name', 'goods_cover_thumb_small', 'goods_cover_thumb_mid', 'goods_cover_thumb_big' ]);
  147. }
  148. /**
  149. * 关联商品规格
  150. * @return HasOne
  151. */
  152. public function goodsSku()
  153. {
  154. return $this->hasOne(GoodsSku::class, 'sku_id', 'sku_id')
  155. ->joinType('inner')
  156. ->field('sku_id, site_id, sku_name, sku_image, sku_no, goods_id, sku_spec_format, price, market_price, sale_price, stock, weight, volume, is_default')
  157. ->append([ 'sku_image_thumb_small', 'sku_image_thumb_mid', 'sku_image_thumb_big' ]);
  158. }
  159. /**
  160. * 关联商品规格列表
  161. * @return HasMany
  162. */
  163. public function goodsSpec()
  164. {
  165. return $this->hasMany(GoodsSpec::class, 'goods_id', 'goods_id');
  166. }
  167. /**
  168. * 关联店铺信息
  169. * @return HasOne
  170. */
  171. public function site()
  172. {
  173. return $this->hasOne(Site::class, 'site_id', 'site_id');
  174. }
  175. }