Live.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. namespace app\common\model;
  3. use think\Model;
  4. use Redis;
  5. /**
  6. * 模型
  7. */
  8. class Live extends Model
  9. {
  10. // 开启自动写入时间戳字段
  11. protected $autoWriteTimestamp = 'int';
  12. // 定义时间戳字段名
  13. protected $createTime = 'createtime';
  14. /**
  15. * 根据liveid 获取 live 信息
  16. */
  17. public function getLiveInfoByLiveId($live_id,$type_id,$is_recommend,$all) {
  18. if(!$live_id) return false;
  19. // 判断派对是否存在
  20. $redis = new Redis();
  21. $redisconfig = config("redis");
  22. $redis->connect($redisconfig["host"], $redisconfig["port"]);
  23. if ($redisconfig['redis_pwd']) {
  24. $redis->auth($redisconfig['redis_pwd']);
  25. }
  26. if($redisconfig['redis_selectdb'] > 0){
  27. $redis->select($redisconfig['redis_selectdb']);
  28. }
  29. if(is_array($live_id)) {
  30. $redisLiveInfo = [];
  31. foreach($live_id as $k => $v) {
  32. $getredisLiveInfo = $redis->get('live_'.$v);
  33. if(!$getredisLiveInfo) {
  34. // redis 中数据丢失 (每天凌晨四点更新数据到数据库做备份用)
  35. $where = [];
  36. $where["a.id"] = $v;
  37. if($all != 1) {
  38. $type_id > 0 && $where["live_type"] = $type_id;
  39. $is_recommend == 1 && $where["is_recommend"] = 1;
  40. }
  41. $getredisLiveInfo = $this->alias("a")
  42. ->field("a.*,b.id as live_type,b.name as live_type_name,u.nickname,u.avatar,at.name as anchor_type_name")
  43. ->join("hx_live_type b","a.live_type = b.id","left")
  44. ->join("hx_user u","a.user_id = u.id","left")
  45. ->join("hx_user_anchor an","a.user_id = an.user_id","left")
  46. ->join("hx_user_anchor_type at","an.type_id = an.type_id")
  47. ->where($where)->find();
  48. $getredisLiveInfo && $redis->set('live_'.$live_id,json_encode($getredisLiveInfo));
  49. // $redisLiveInfo[] = $getredisLiveInfo;
  50. $foreachData = $getredisLiveInfo;
  51. } else {
  52. $foreachData = json_decode($getredisLiveInfo,true);
  53. }
  54. if(!$foreachData) {
  55. return [];
  56. }
  57. if(($is_recommend == 1 && $foreachData["is_recommend"] == 1) || ($type_id == $foreachData["live_type"]) || ($all == 1)) {
  58. $redisLiveInfo[] = [
  59. "id" => $foreachData["id"],
  60. "live_id" => $foreachData["live_id"],
  61. "live_notice" => $foreachData["live_notice"],
  62. "avatar" => $foreachData["avatar"],
  63. "live_hot" => $foreachData["live_hot"],
  64. "live_type_name" => $foreachData["live_type_name"],
  65. ];
  66. }
  67. }
  68. } else {
  69. $data = $redis->get('live_'.$live_id);
  70. if(!$data) {
  71. // redis 中数据丢失 (每天凌晨四点更新数据到数据库做备份用)
  72. $data = $this->where(["live_id"=>$live_id])->find();
  73. $redis->set('live_'.$live_id,json_encode($data));
  74. } else {
  75. $data = json_decode($data,true);
  76. }
  77. if(($is_recommend == 1 && $data["is_recommend"] == 1) || ($type_id == $data["live_type"]) || ($all == 1)) {
  78. $redisLiveInfo = [
  79. "id" => $data["id"],
  80. "live_id" => $data["live_id"],
  81. "live_notice" => $data["live_notice"],
  82. "avatar" => $data["avatar"],
  83. "live_hot" => $data["live_hot"],
  84. "live_type_name" => $data["live_type_name"],
  85. ];
  86. }
  87. }
  88. return $redisLiveInfo;
  89. }
  90. }