Groupon.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. namespace app\admin\model\shopro\activity;
  3. use app\admin\model\shopro\Common;
  4. use app\admin\model\shopro\user\User;
  5. use app\admin\model\shopro\goods\Goods;
  6. use app\admin\model\shopro\order\OrderItem;
  7. class Groupon extends Common
  8. {
  9. protected $name = 'shopro_activity_groupon';
  10. protected $type = [
  11. 'finish_time' => 'timestamp',
  12. 'expire_time' => 'timestamp'
  13. ];
  14. // 追加属性
  15. protected $append = [
  16. 'status_text',
  17. ];
  18. public function statusList()
  19. {
  20. return [
  21. 'invalid' => '拼团失败',
  22. 'ing' => '进行中',
  23. 'finish' => '已成团',
  24. 'finish_fictitious' => '已经成团',//finish_fictitious
  25. ];
  26. }
  27. /**
  28. * 查询正在进行中的团
  29. */
  30. public function scopeIng($query)
  31. {
  32. return $query->where('status', 'ing');
  33. }
  34. public function scopeExpire($query){
  35. return $query->where('expire_time','gt',time());
  36. }
  37. public function getStatusTextAttr($value, $data)
  38. {
  39. $value = $value ?: ($data['status'] ?? '');
  40. $list = $this->statusList();
  41. $value = ($value == 'finish_fictitious' && strpos(request()->url(), 'addons/shopro') !== false) ? 'finish' : $value;
  42. return isset($list[$value]) ? $list[$value] : '';
  43. }
  44. public function getExpireTimeUnixAttr($value, $data)
  45. {
  46. return isset($data['expire_time']) ? $this->getData('expire_time') : 0;
  47. }
  48. public function user()
  49. {
  50. return $this->belongsTo(User::class, 'user_id', 'id');
  51. }
  52. public function goods()
  53. {
  54. return $this->belongsTo(Goods::class, 'goods_id', 'id');
  55. }
  56. public function activity()
  57. {
  58. return $this->belongsTo(Activity::class, 'activity_id', 'id');
  59. }
  60. public function grouponLogs()
  61. {
  62. return $this->hasMany(GrouponLog::class, 'groupon_id', 'id');
  63. }
  64. public function leader()
  65. {
  66. return $this->hasOne(GrouponLog::class, 'groupon_id', 'id')->where('is_leader', 1);
  67. }
  68. /**
  69. * 前端拼团详情用
  70. *
  71. * @return void
  72. */
  73. public function my()
  74. {
  75. $user = auth_user();
  76. return $this->hasOne(GrouponLog::class, 'groupon_id', 'id')->where('user_id', ($user ? $user->id : 0))->where('is_fictitious', 0);
  77. }
  78. }