UserCoupon.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?php
  2. /**
  3. *
  4. * @copyright ©2020 点小铺
  5. * @author hanj
  6. * @link: https://dyuit.com
  7. * Created by VSCode
  8. */
  9. namespace app\common\model;
  10. use think\Hook;
  11. /**
  12. * 用户优惠券模型
  13. * Class UserCoupon
  14. * @package app\common\model
  15. */
  16. class UserCoupon extends BaseModel
  17. {
  18. protected $name = 'user_coupon';
  19. /**
  20. * 追加字段
  21. * @var array
  22. */
  23. protected $append = ['state'];
  24. /**
  25. * 订单模型初始化
  26. */
  27. public static function init()
  28. {
  29. parent::init();
  30. // 监听优惠券处理事件
  31. $static = new static;
  32. Hook::listen('UserCoupon', $static);
  33. }
  34. /**
  35. * 关联用户表
  36. * @return \think\model\relation\BelongsTo
  37. */
  38. public function user()
  39. {
  40. return $this->belongsTo('User');
  41. }
  42. /**
  43. * 优惠券状态
  44. * @param $value
  45. * @param $data
  46. * @return array
  47. */
  48. public function getStateAttr($value, $data)
  49. {
  50. if ($data['is_use']) {
  51. return ['text' => '已使用', 'value' => 0];
  52. }
  53. if ($data['is_expire']) {
  54. return ['text' => '已过期', 'value' => 0];
  55. }
  56. return ['text' => '', 'value' => 1];
  57. }
  58. /**
  59. * 优惠券颜色
  60. * @param $value
  61. * @return mixed
  62. */
  63. public function getColorAttr($value)
  64. {
  65. $status = [10 => 'blue', 20 => 'red', 30 => 'violet', 40 => 'yellow'];
  66. return ['text' => $status[$value], 'value' => $value];
  67. }
  68. /**
  69. * 优惠券类型
  70. * @param $value
  71. * @return mixed
  72. */
  73. public function getCouponTypeAttr($value)
  74. {
  75. $status = [10 => '满减券', 20 => '折扣券'];
  76. return ['text' => $status[$value], 'value' => $value];
  77. }
  78. /**
  79. * 折扣率
  80. * @param $value
  81. * @return mixed
  82. */
  83. public function getDiscountAttr($value)
  84. {
  85. return $value / 10;
  86. }
  87. /**
  88. * 有效期-开始时间
  89. * @param $value
  90. * @return mixed
  91. */
  92. public function getStartTimeAttr($value)
  93. {
  94. return ['text' => date('Y/m/d', $value), 'value' => $value];
  95. }
  96. /**
  97. * 有效期-结束时间
  98. * @param $value
  99. * @return mixed
  100. */
  101. public function getEndTimeAttr($value)
  102. {
  103. return ['text' => date('Y/m/d', $value), 'value' => $value];
  104. }
  105. /**
  106. * 优惠券详情
  107. * @param $coupon_id
  108. * @return null|static
  109. * @throws \think\exception\DbException
  110. */
  111. public static function detail($coupon_id)
  112. {
  113. return static::get($coupon_id);
  114. }
  115. /**
  116. * 设置优惠券使用状态
  117. * @param int $couponId 用户的优惠券id
  118. * @param bool $isUse 是否已使用
  119. * @return false|int
  120. */
  121. public static function setIsUse($couponId, $isUse = true)
  122. {
  123. return (new static)->save(['is_use' => (int)$isUse], ['user_coupon_id' => $couponId]);
  124. }
  125. }