StoreBargain.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. <?php
  2. /**
  3. *
  4. * @author: xaboy<365615158@qq.com>
  5. * @day: 2017/12/18
  6. */
  7. namespace app\ebapi\model\store;
  8. use basic\ModelBasic;
  9. use traits\ModelTrait;
  10. class StoreBargain extends ModelBasic
  11. {
  12. use ModelTrait;
  13. /**
  14. * 正在开启的砍价活动
  15. * @return $this
  16. */
  17. public static function validWhere($status = 1){
  18. return self::where('is_del',0)->where('status',$status)->where('start_time','LT',time())->where('stop_time','GT',time());
  19. }
  20. /**
  21. * 判断砍价产品是否开启
  22. * @param int $bargainId
  23. * @return int|string
  24. */
  25. public static function validBargain($bargainId = 0){
  26. $model = self::validWhere();
  27. return $bargainId ? $model->where('id',$bargainId)->count() : $model->count();
  28. }
  29. /**
  30. * TODO 获取正在开启的砍价产品编号
  31. * @return array
  32. */
  33. public static function validBargainNumber(){
  34. return self::validWhere()->column('id');
  35. }
  36. /**
  37. * TODO 获取正在进行中的砍价产品
  38. * @param int $offset
  39. * @param int $limit
  40. * @param string $field
  41. * @return array
  42. * @throws \think\db\exception\DataNotFoundException
  43. * @throws \think\db\exception\ModelNotFoundException
  44. * @throws \think\exception\DbException
  45. */
  46. public static function getList($offset = 0,$limit = 20,$field = 'id,product_id,title,price,min_price,image'){
  47. $model = self::validWhere();
  48. $list = $model->field($field)->limit($offset,$limit)->select()->each(function ($item){ $item['people'] = count(StoreBargainUser::getUserIdList($item['id']));});
  49. if($list) return $list->toArray();
  50. else return [];
  51. }
  52. /**
  53. * TODO 获取一条正在进行中的砍价产品
  54. * @param int $bargainId $bargainId 砍价产品编号
  55. * @param string $field
  56. * @return array
  57. * @throws \think\Exception
  58. * @throws \think\db\exception\DataNotFoundException
  59. * @throws \think\db\exception\ModelNotFoundException
  60. * @throws \think\exception\DbException
  61. */
  62. public static function getBargainTerm($bargainId = 0,$field = 'id,product_id,bargain_num,num,unit_name,image,title,price,min_price,image,description,start_time,stop_time,rule'){
  63. if(!$bargainId) return [];
  64. $model = self::validWhere();
  65. $bargain = $model->field($field)->where('id',$bargainId)->find();
  66. if($bargain) return $bargain->toArray();
  67. else return [];
  68. }
  69. /**
  70. * 获取一条砍价产品
  71. * @param int $bargainId
  72. * @param string $field
  73. * @return array
  74. */
  75. public static function getBargain($bargainId = 0,$field = 'id,product_id,title,price,min_price,image'){
  76. if(!$bargainId) return [];
  77. $model = new self();
  78. $bargain = $model->field($field)->where('id',$bargainId)->find();
  79. if($bargain) return $bargain->toArray();
  80. else return [];
  81. }
  82. /**
  83. * 获取最高价和最低价
  84. * @param int $bargainId
  85. * @return array
  86. */
  87. public static function getBargainMaxMinPrice($bargainId = 0){
  88. if(!$bargainId) return [];
  89. return self::where('id',$bargainId)->field('bargain_min_price,bargain_max_price')->find()->toArray();
  90. }
  91. /**
  92. * 获取砍价次数
  93. * @param int $bargainId
  94. * @return mixed
  95. */
  96. public static function getBargainNum($bargainId = 0){
  97. return self::where('id',$bargainId)->value('bargain_num');
  98. }
  99. /**
  100. * 判断当前砍价是否活动进行中
  101. * @param int $bargainId
  102. * @return bool
  103. */
  104. public static function setBargainStatus($bargainId = 0){
  105. $model = self::validWhere();
  106. $count = $model->where('id',$bargainId)->count();
  107. if($count) return true;
  108. else return false;
  109. }
  110. /**
  111. * 获取库存
  112. * @param int $bargainId
  113. * @return mixed
  114. */
  115. public static function getBargainStock($bargainId = 0){
  116. return self::where('id',$bargainId)->value('stock');
  117. }
  118. /**
  119. * 修改销量和库存
  120. * @param $num
  121. * @param $CombinationId
  122. * @return bool
  123. */
  124. public static function decBargainStock($num,$bargainId)
  125. {
  126. $res = false !== self::where('id',$bargainId)->dec('stock',$num)->inc('sales',$num)->update();
  127. return $res;
  128. }
  129. /**
  130. * 增加库存减销量
  131. * @param $num
  132. * @param $CombinationId
  133. * @return bool
  134. */
  135. public static function IncBargainStock($num,$bargainId)
  136. {
  137. $bargain=self::where('id',$bargainId)->field(['stock','sales'])->find();
  138. if(!$bargain) return true;
  139. if($bargain->sales > 0) $bargain->sales=bcsub($bargain->sales,$num,0);
  140. if($bargain->sales < 0) $bargain->sales=0;
  141. $bargain->stock=bcadd($bargain->stock,$num,0);
  142. return $bargain->save();
  143. }
  144. /**
  145. * TODO 获取所有砍价产品的浏览量
  146. * @return mixed
  147. */
  148. public static function getBargainLook(){
  149. return self::sum('look');
  150. }
  151. /**
  152. * TODO 获取所有砍价产品的分享量
  153. * @return mixed
  154. */
  155. public static function getBargainShare(){
  156. return self::sum('share');
  157. }
  158. /**
  159. * TODO 添加砍价产品分享次数
  160. * @param int $id
  161. * @return StoreBargain|bool
  162. */
  163. public static function addBargainShare($id = 0){
  164. if(!$id) return false;
  165. return self::where('id',$id)->inc('share',1)->update();
  166. }
  167. /**
  168. * TODO 添加砍价产品浏览次数
  169. * @param int $id $id 砍价产品编号
  170. * @return StoreBargain|bool
  171. */
  172. public static function addBargainLook($id = 0){
  173. if(!$id) return false;
  174. return self::where('id',$id)->inc('look',1)->update();
  175. }
  176. }