StoreBargainUser.php 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <?php
  2. namespace app\routine\model\store;
  3. use app\routine\model\user\User;
  4. use basic\ModelBasic;
  5. use traits\ModelTrait;
  6. /**
  7. * 参与砍价Model
  8. * Class StoreBargainUser
  9. * @package app\routine\model\store
  10. */
  11. class StoreBargainUser extends ModelBasic
  12. {
  13. use ModelTrait;
  14. /**
  15. * 根据砍价产品获取正在参与的用户头像
  16. * @param array $bargain
  17. * @return array
  18. */
  19. public static function getUserList($bargain = array(),$limit = 10){
  20. if(count($bargain) < 1) return [];
  21. foreach ($bargain as $k=>$v){
  22. if(is_array($v)){
  23. $uid = self::getUserIdList($v['id']);
  24. if(count($uid) > 0) {
  25. $userInfo = User::where('uid','IN',implode(',',$uid))->limit($limit)->column('avatar','uid');
  26. $bargain[$k]['userInfo'] = $userInfo;
  27. $bargain[$k]['userInfoCount'] = count($userInfo);
  28. }
  29. else {
  30. $bargain[$k]['userInfo'] = [];
  31. $bargain[$k]['userInfoCount'] = 0;
  32. }
  33. }else{
  34. $uid = self::getUserIdList($bargain['id']);
  35. if(count($uid) > 0) $bargain['userInfo'] = User::where('uid','IN',implode(',',$uid))->column('avatar','uid');
  36. else $bargain['userInfo'] = [];
  37. }
  38. }
  39. return $bargain;
  40. }
  41. /**
  42. * 根据砍价产品ID获取正在参与人的uid
  43. * @param int $bargainId $bargainId 砍价产品ID
  44. * @param int $status $status 状态 1 进行中 2 结束失败 3结束成功
  45. * @return array
  46. */
  47. public static function getUserIdList($bargainId = 0,$status = 1){
  48. if(!$bargainId) return [];
  49. return self::where('bargain_id',$bargainId)->where('status',$status)->column('uid','id');
  50. }
  51. /**
  52. * 获取参与的ID
  53. * @param int $bargainId
  54. * @param int $uid
  55. * @param int $status
  56. * @return array|mixed
  57. */
  58. public static function setUserBargain($bargainId = 0,$uid = 0,$status = 1){
  59. if(!$bargainId || !$uid) return [];
  60. $bargainIdUserTableId = self::where('bargain_id',$bargainId)->where('uid',$uid)->where('status',$status)->value('id');
  61. return $bargainIdUserTableId;
  62. }
  63. /**
  64. * 添加一条砍价记录
  65. * @param int $bargainId
  66. * @param int $uid
  67. * @return bool|object
  68. */
  69. public static function setBargain($bargainId = 0,$uid = 0){
  70. if(!$bargainId || !$uid || !StoreBargain::validBargain($bargainId) || self::be(['bargain_id'=>$bargainId,'uid'=>$uid,'status'=>1])) return false;
  71. $data['bargain_id'] = $bargainId;
  72. $data['uid'] = $uid;
  73. $data['bargain_price_min'] = StoreBargain::where('id',$bargainId)->value('min_price');
  74. $data['bargain_price'] = StoreBargain::where('id',$bargainId)->value('price');
  75. $data['price'] = 0;
  76. $data['status'] = 1;
  77. $data['add_time'] = time();
  78. return self::set($data);
  79. }
  80. /**
  81. * 判断当前人是否已经参与砍价
  82. * @param int $bargainId
  83. * @param int $uid
  84. * @return bool|mixed
  85. */
  86. public static function isBargainUser($bargainId = 0,$uid = 0){
  87. if(!$bargainId || !$uid || !StoreBargain::validBargain($bargainId)) return false;
  88. return self::where('bargain_id',$bargainId)->where('uid',$uid)->value('uid');
  89. }
  90. /**
  91. * 获取用户砍掉的价格
  92. * @param int $bargainUserId
  93. * @return mixed
  94. */
  95. public static function getBargainUserPrice($bargainUserId = 0){
  96. return (float)self::where('id',$bargainUserId)->value('price');
  97. }
  98. /**
  99. * 获取用户可以砍掉的价格
  100. * @param int $bargainUserId
  101. * @return string
  102. */
  103. public static function getBargainUserDiffPrice($bargainId = 0,$bargainUserId = 0){
  104. $price = self::where('bargain_id',$bargainId)->where('uid',$bargainUserId)->field('bargain_price,bargain_price_min')->find()->toArray();
  105. return (float)bcsub($price['bargain_price'],$price['bargain_price_min'],2);
  106. }
  107. /**
  108. * 获取砍价表ID
  109. * @param int $bargainId
  110. * @param int $bargainUserId
  111. * @return mixed
  112. */
  113. public static function getBargainUserTableId($bargainId = 0,$bargainUserId = 0,$status = 1){
  114. return self::where('bargain_id',$bargainId)->where('uid',$bargainUserId)->where('status',$status)->value('id');
  115. }
  116. /**
  117. * 修改砍价价格
  118. * @param int $bargainUserTableId
  119. * @param array $price
  120. * @return $this|bool
  121. */
  122. public static function setBargainUserPrice($bargainUserTableId = 0, $price = array()){
  123. if(!$bargainUserTableId) return false;
  124. return self::where('id',$bargainUserTableId)->update($price);
  125. }
  126. /**
  127. * 获取用户的砍价产品
  128. * @param $uid
  129. * @return array
  130. */
  131. public static function getBargainUserAll($uid = 0){
  132. if(!$uid) return [];
  133. $model = new self;
  134. $model = $model->alias('u');
  135. $model = $model->field('u.id,u.bargain_id,u.bargain_price,u.bargain_price_min,u.price,u.status,b.title,b.image,b.stop_time');
  136. $model = $model->join('StoreBargain b','b.id=u.bargain_id');
  137. $model = $model->where('u.uid',$uid);
  138. $model = $model->order('u.id desc');
  139. $list = $model->select();
  140. if($list) return $list->toArray();
  141. else return [];
  142. }
  143. /**
  144. * 修改用户砍价状态 支付订单
  145. * @param int $bargainId
  146. * @param int $uid
  147. * @return $this|bool
  148. */
  149. public static function setBargainUserStatus($bargainId = 0, $uid = 0){
  150. $count = self::where('uid',$uid)->where('bargain_id',$bargainId)->where('status',1)->count();
  151. if(!$count) return false;
  152. $userPrice = (float)self::where('uid',$uid)->where('bargain_id',$bargainId)->where('status',1)->value('price');
  153. $price = self::getBargainUserDiffPrice($bargainId,$uid);
  154. if(bcsub($price,$userPrice,0) > 0) return false;
  155. return self::where('uid',$uid)->where('bargain_id',$bargainId)->where('status',1)->update(['status'=>3]);
  156. }
  157. /**
  158. * 修改砍价状态为 砍价失败
  159. * @param int $bargainUserTableId
  160. * @return $this|bool
  161. */
  162. public static function editBargainUserStatus($bargainUserTableId = 0){
  163. if(!$bargainUserTableId) return false;
  164. return self::where('id',$bargainUserTableId)->update(['status'=>2]);
  165. }
  166. /**
  167. * 获取砍价成功的用户信息
  168. * @return array|false|\PDOStatement|string|\think\Collection
  169. */
  170. public static function getBargainUserStatusSuccess(){
  171. $bargainUser = self::where('status',3)->order('id desc')->field('uid,bargain_price_min,bargain_id')->select();
  172. if($bargainUser) {
  173. $bargainUser = $bargainUser->toArray();
  174. foreach ($bargainUser as $k=>$v){
  175. $bargainUser[$k]['info'] = User::where('uid',$v['uid'])->value('nickname').'砍价成功了'.$v['bargain_price_min'].'砍到了'.StoreBargain::where('id',$v['bargain_id'])->value('title');
  176. }
  177. }
  178. else{
  179. $bargainUser[]['info'] = '砍价上线了,快邀请您的好友来砍价';
  180. }
  181. return $bargainUser;
  182. }
  183. }