UserCoupon.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
  8. // +----------------------------------------------------------------------
  9. // | Author: 萤火科技 <admin@yiovo.com>
  10. // +----------------------------------------------------------------------
  11. declare (strict_types=1);
  12. namespace app\common\model;
  13. use cores\BaseModel;
  14. use app\common\library\helper;
  15. /**
  16. * 用户优惠券模型
  17. * Class UserCoupon
  18. * @package app\common\model
  19. */
  20. class UserCoupon extends BaseModel
  21. {
  22. // 定义表名
  23. protected $name = 'user_coupon';
  24. // 定义主键
  25. protected $pk = 'user_coupon_id';
  26. /**
  27. * 追加字段
  28. * @var array
  29. */
  30. protected $append = ['state'];
  31. /**
  32. * 关联用户表
  33. * @return \think\model\relation\BelongsTo
  34. */
  35. public function user()
  36. {
  37. return $this->belongsTo('User');
  38. }
  39. /**
  40. * 优惠券状态
  41. * @param $value
  42. * @param $data
  43. * @return array
  44. */
  45. public function getStateAttr($value, $data)
  46. {
  47. if ($data['is_use']) {
  48. return ['text' => '已使用', 'value' => 0];
  49. }
  50. if ($data['is_expire']) {
  51. return ['text' => '已过期', 'value' => 0];
  52. }
  53. return ['text' => '正常', 'value' => 1];
  54. }
  55. /**
  56. * 获取器:格式化折扣率
  57. * @param $value
  58. * @return mixed
  59. */
  60. public function getDiscountAttr($value)
  61. {
  62. return $value / 10;
  63. }
  64. /**
  65. * 有效期-开始时间
  66. * @param $value
  67. * @return string
  68. */
  69. public function getStartTimeAttr($value)
  70. {
  71. return date('Y/m/d', $value);
  72. }
  73. /**
  74. * 有效期-结束时间
  75. * @param $value
  76. * @return string
  77. */
  78. public function getEndTimeAttr($value)
  79. {
  80. return date('Y/m/d', $value);
  81. }
  82. /**
  83. * 获取器:适用范围配置
  84. * @param $value
  85. * @return mixed
  86. */
  87. public function getApplyRangeConfigAttr($value)
  88. {
  89. return $value ? helper::jsonDecode($value) : [];
  90. }
  91. /**
  92. * 修改器:格式化折扣率
  93. * @param $value
  94. * @return mixed
  95. */
  96. public function setDiscountAttr($value)
  97. {
  98. return $value * 10;
  99. }
  100. /**
  101. * 修改器:适用范围配置
  102. * @param $array
  103. * @return mixed
  104. */
  105. public function setApplyRangeConfigAttr($array)
  106. {
  107. return helper::jsonEncode($array);
  108. }
  109. /**
  110. * 优惠券详情
  111. * @param $couponId
  112. * @return null|static
  113. */
  114. public static function detail($couponId)
  115. {
  116. return static::get($couponId);
  117. }
  118. /**
  119. * 设置优惠券使用状态
  120. * @param int $couponId 用户的优惠券id
  121. * @param bool $isUse 是否已使用
  122. * @return false|int
  123. */
  124. public static function setIsUse(int $couponId, $isUse = true)
  125. {
  126. return static::updateBase(['is_use' => (int)$isUse], ['user_coupon_id' => $couponId]);
  127. }
  128. }