LiveUser.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\wap\model\live;
  12. use basic\ModelBasic;
  13. use traits\ModelTrait;
  14. /**直播间用户表
  15. * Class LiveUser
  16. * @package app\wap\model\live
  17. */
  18. class LiveUser extends ModelBasic
  19. {
  20. use ModelTrait;
  21. /**直播间用户信息记录
  22. * @param $uid
  23. * @param $live_id
  24. * @param int $lastCd
  25. * @return array|bool|false|object|\PDOStatement|string|\think\Model
  26. * @throws \think\db\exception\DataNotFoundException
  27. * @throws \think\db\exception\ModelNotFoundException
  28. * @throws \think\exception\DbException
  29. */
  30. public static function setLiveUser($uid, $live_id, $lastCd = 3600)
  31. {
  32. $liveUser = self::where(['uid' => $uid, 'live_id' => $live_id])->find();
  33. $ip = \think\Request::instance()->ip();
  34. if ($liveUser) {
  35. if ($liveUser->is_open_ben && $liveUser->open_ben_time > time()) return self::setErrorInfo('您已被禁止访问此直播间!');
  36. $liveUser->last_ip = $ip;
  37. $liveUser->visit_num = ($liveUser->last_time + $lastCd) < time() ? $liveUser->visit_num++ : $liveUser->visit_num;
  38. $liveUser->last_time = time();
  39. if ($liveUser->is_ban && $liveUser->ban_time && $liveUser->ban_time < time()) {
  40. $liveUser->is_ban = 0;
  41. $liveUser->ban_time = 0;
  42. }
  43. $liveUser->save();
  44. return $liveUser;
  45. } else {
  46. $data = [
  47. 'uid' => $uid,
  48. 'live_id' => $live_id,
  49. 'add_time' => time(),
  50. 'last_time' => time(),
  51. 'visit_num' => 1,
  52. 'last_ip' => $ip,
  53. 'add_ip' => $ip,
  54. 'is_ban' => 0,
  55. ];
  56. return self::set($data);
  57. }
  58. }
  59. /**
  60. * 设置用户上下线
  61. * @param int $live_id 直播间号
  62. * @param int $uid 用户id
  63. * @param int $is_online 上下线
  64. * @return object
  65. * */
  66. public static function setLiveUserOnline($live_id, $uid, $is_online = 1)
  67. {
  68. if (self::be(['live_id' => $live_id, 'uid' => $uid, 'is_online' => $is_online])) return true;
  69. return self::where(['live_id' => $live_id, 'uid' => $uid])->update(['is_online' => $is_online]);
  70. }
  71. }