StoreBargain.php 6.4 KB

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