You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

StoreCouponUser.php 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <?php
  2. namespace app\model\activity\coupon;
  3. use app\model\user\User;
  4. use crmeb\basic\BaseModel;
  5. use crmeb\traits\ModelTrait;
  6. use think\Model;
  7. /**
  8. * 优惠券发放Model
  9. * Class StoreCouponUser
  10. * @package app\model\activity\coupon
  11. */
  12. class StoreCouponUser extends BaseModel
  13. {
  14. use ModelTrait;
  15. /**
  16. * 数据表主键
  17. * @var string
  18. */
  19. protected $pk = 'id';
  20. /**
  21. * 模型名称
  22. * @var string
  23. */
  24. protected $name = 'store_coupon_user';
  25. /**
  26. * 获取类型
  27. * @var string[]
  28. */
  29. protected $gainType = ['send' => '后台发放', 'get' => '手动领取'];
  30. /**
  31. * 类型获取器
  32. * @param $value
  33. * @return string
  34. */
  35. public function getTypeAttr($value)
  36. {
  37. return $this->gainType[$value];
  38. }
  39. /**
  40. * 使用状态
  41. * @var string[]
  42. */
  43. protected $statusType = [0 => '未使用', 1 => '已使用', 2 => '已过期'];
  44. /**
  45. * 状态获取器
  46. * @param $value
  47. * @return string
  48. */
  49. public function getStatusAttr($value)
  50. {
  51. return $this->statusType[$value];
  52. }
  53. /**
  54. * @return \think\model\relation\HasOne
  55. */
  56. public function issue()
  57. {
  58. return $this->hasOne(StoreCouponIssue::class, 'id', 'cid')->field(['id', 'end_use_time', 'start_use_time', 'coupon_type', 'type', 'coupon_time', 'product_id', 'category_id', 'receive_type'])->bind([
  59. 'applicable_type' => 'type',
  60. 'coupon_time' => 'coupon_time',
  61. 'product_id',
  62. 'category_id',
  63. 'receive_type',
  64. 'coupon_type',
  65. 'start_use_time',
  66. 'end_use_time'
  67. ]);
  68. }
  69. /**
  70. * 获取领取人名称头像
  71. * @return \think\model\relation\HasOne
  72. */
  73. public function userInfo()
  74. {
  75. return $this->hasOne(User::class, 'uid', 'uid')->field('uid,nickname,avatar')->bind(['nickname', 'avatar']);
  76. }
  77. /**
  78. * 优惠券ID搜索器
  79. * @param Model $query
  80. * @param $value
  81. * @param $data
  82. */
  83. public function searchCidAttr($query, $value, $data)
  84. {
  85. $query->where('cid', $value);
  86. }
  87. /**
  88. * 用户ID搜索器
  89. * @param Model $query
  90. * @param $value
  91. * @param $data
  92. */
  93. public function searchUidAttr($query, $value, $data)
  94. {
  95. $query->where('uid', $value);
  96. }
  97. /**
  98. * 优惠券名称搜索器
  99. * @param Model $query
  100. * @param $value
  101. * @param $data
  102. */
  103. public function searchCouponTitleAttr($query, $value, $data)
  104. {
  105. $query->where('coupon_title', 'like', '%' . $value . '%');
  106. }
  107. /**
  108. * 获取方式搜索器
  109. * @param Model $query
  110. * @param $value
  111. * @param $data
  112. */
  113. public function searchTypeAttr($query, $value, $data)
  114. {
  115. $query->where('type', $value);
  116. }
  117. /**
  118. * 用户ID搜索器
  119. * @param Model $query
  120. * @param $value
  121. * @param $data
  122. */
  123. public function searchStatusAttr($query, $value, $data)
  124. {
  125. if ($value !== '' && $value != -1) {
  126. if (is_array($value)) {
  127. $query->whereIn('status', $value);
  128. } else {
  129. $query->where('status', $value);
  130. }
  131. }
  132. }
  133. /**
  134. * 是否失效
  135. * @param Model $query
  136. * @param $value
  137. * @param $data
  138. */
  139. public function searchIsFailAttr($query, $value, $data)
  140. {
  141. $query->where('is_fail', $value);
  142. }
  143. /**
  144. * 是否在使用期限内搜索器
  145. * @param Model $query
  146. * @param $value
  147. * @param $data
  148. */
  149. public function searchTimeAttr($query, $value, $data)
  150. {
  151. $query->whereTime('add_time', '>=', $value)->whereTime('end_time', '<=', $value);
  152. }
  153. }