ProductAssistSet.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\common\model\store\product;
  12. use app\common\model\BaseModel;
  13. use app\common\model\system\merchant\Merchant;
  14. use app\common\model\user\User;
  15. use app\common\repositories\store\product\ProductAssistUserRepository;
  16. use app\common\repositories\system\merchant\MerchantRepository;
  17. class ProductAssistSet extends BaseModel
  18. {
  19. /**
  20. * TODO
  21. * @return string
  22. * @author Qinii
  23. * @day 2020-10-12
  24. */
  25. public static function tablePk(): string
  26. {
  27. return 'product_assist_set_id';
  28. }
  29. /**
  30. * TODO
  31. * @return string
  32. * @author Qinii
  33. * @day 2020-10-12
  34. */
  35. public static function tableName(): string
  36. {
  37. return 'store_product_assist_set';
  38. }
  39. public function product()
  40. {
  41. return $this->hasOne(Product::class,'product_id','product_id');
  42. }
  43. public function assistSku()
  44. {
  45. return$this->hasMany(ProductAssistSku::class,'product_assist_id','product_assist_id');
  46. }
  47. public function merchant()
  48. {
  49. return $this->hasOne(Merchant::class,'mer_id','mer_id');
  50. }
  51. public function assist()
  52. {
  53. return $this->hasOne(ProductAssist::class,'product_assist_id','product_assist_id');
  54. }
  55. public function getStopTimeAttr()
  56. {
  57. return isset($this->assist->end_time) ? strtotime($this->assist->end_time) : '';
  58. }
  59. public function user()
  60. {
  61. return $this->hasOne(User::class,'uid','uid');
  62. }
  63. public function getCheckAttr()
  64. {
  65. if(in_array($this->status,[0,1])){
  66. if($this->assist_count == $this->yet_assist_count){
  67. $this->status = 10;
  68. $this->save();
  69. }else{
  70. if(isset($this->stop_time) && $this->stop_time < time()){
  71. $this->status = -1;
  72. $this->save();
  73. }
  74. }
  75. }
  76. return true;
  77. }
  78. /**
  79. * TODO 所有助力者数量
  80. * @return mixed
  81. * @author Qinii
  82. * @day 2020-10-30
  83. */
  84. public function getUserCountAttr()
  85. {
  86. $make = app()->make(ProductAssistUserRepository::class);
  87. return $make->getSearch(['product_assist_set_id' => $this->product_assist_set_id])->count();
  88. }
  89. public function getViweNumAttr()
  90. {
  91. return self::getDB()->sum('view_num');
  92. }
  93. public function getShareNumAttr()
  94. {
  95. return self::getDB()->sum('share_num');
  96. }
  97. public function searchProductAssistIdAttr($query,$value)
  98. {
  99. $query->where('product_assist_id',$value);
  100. }
  101. public function searchProductAssistSetIdAttr($query,$value)
  102. {
  103. $query->where('product_assist_set_id',$value);
  104. }
  105. public function searchUidAttr($query,$value)
  106. {
  107. $query->where('uid',$value);
  108. }
  109. public function searchStatusAttr($query, $value)
  110. {
  111. is_array($value) ? $query->whereIn('status', $value) : $query->where('status', $value);
  112. }
  113. public function searchUserNameAttr($query,$value)
  114. {
  115. $uid = User::whereLike('nickname',"%{$value}%")->column('uid');
  116. $query->where('uid','in',$uid);
  117. }
  118. public function searchMerIdAttr($query,$value)
  119. {
  120. $query->where('mer_id',$value);
  121. }
  122. public function searchIsTraderAttr($query,$value)
  123. {
  124. $make = app()->make(MerchantRepository::class);
  125. $mer_id = $make->search(['is_trader' => $value])->column('mer_id');
  126. $query->where('mer_id','in',$mer_id);
  127. }
  128. }