ProductAssistSet.php 3.7 KB

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