123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- <?php
- namespace app\common\model;
- use think\Model;
- use Redis;
- /**
- * 模型
- */
- class Live extends Model
- {
- // 开启自动写入时间戳字段
- protected $autoWriteTimestamp = 'int';
- // 定义时间戳字段名
- protected $createTime = 'createtime';
- /**
- * 根据liveid 获取 live 信息
- */
- public function getLiveInfoByLiveId($live_id,$type_id,$is_recommend,$all) {
- if(!$live_id) return false;
- // 判断派对是否存在
- $redis = new Redis();
- $redisconfig = config("redis");
- $redis->connect($redisconfig["host"], $redisconfig["port"]);
- if ($redisconfig['redis_pwd']) {
- $redis->auth($redisconfig['redis_pwd']);
- }
- if($redisconfig['redis_selectdb'] > 0){
- $redis->select($redisconfig['redis_selectdb']);
- }
- if(is_array($live_id)) {
- $redisLiveInfo = [];
- foreach($live_id as $k => $v) {
- $getredisLiveInfo = $redis->get('live_'.$v);
- if(!$getredisLiveInfo) {
- // redis 中数据丢失 (每天凌晨四点更新数据到数据库做备份用)
- $where = [];
- $where["a.id"] = $v;
- if($all != 1) {
- $type_id > 0 && $where["live_type"] = $type_id;
- $is_recommend == 1 && $where["is_recommend"] = 1;
- }
- $getredisLiveInfo = $this->alias("a")
- ->field("a.*,b.id as live_type,b.name as live_type_name,u.nickname,u.avatar,at.name as anchor_type_name")
- ->join("hx_live_type b","a.live_type = b.id","left")
- ->join("hx_user u","a.user_id = u.id","left")
- ->join("hx_user_anchor an","a.user_id = an.user_id","left")
- ->join("hx_user_anchor_type at","an.type_id = an.type_id")
- ->where($where)->find();
- $getredisLiveInfo && $redis->set('live_'.$live_id,json_encode($getredisLiveInfo));
- // $redisLiveInfo[] = $getredisLiveInfo;
- $foreachData = $getredisLiveInfo;
- } else {
- $foreachData = json_decode($getredisLiveInfo,true);
- }
- if(!$foreachData) {
- return [];
- }
- if(($is_recommend == 1 && $foreachData["is_recommend"] == 1) || ($type_id == $foreachData["live_type"]) || ($all == 1)) {
- $redisLiveInfo[] = [
- "id" => $foreachData["id"],
- "live_id" => $foreachData["live_id"],
- "live_notice" => $foreachData["live_notice"],
- "avatar" => $foreachData["avatar"],
- "live_hot" => $foreachData["live_hot"],
- "live_type_name" => $foreachData["live_type_name"],
- ];
- }
- }
- } else {
- $data = $redis->get('live_'.$live_id);
- if(!$data) {
- // redis 中数据丢失 (每天凌晨四点更新数据到数据库做备份用)
- $data = $this->where(["live_id"=>$live_id])->find();
- $redis->set('live_'.$live_id,json_encode($data));
- } else {
- $data = json_decode($data,true);
- }
- if(($is_recommend == 1 && $data["is_recommend"] == 1) || ($type_id == $data["live_type"]) || ($all == 1)) {
- $redisLiveInfo = [
- "id" => $data["id"],
- "live_id" => $data["live_id"],
- "live_notice" => $data["live_notice"],
- "avatar" => $data["avatar"],
- "live_hot" => $data["live_hot"],
- "live_type_name" => $data["live_type_name"],
- ];
- }
- }
- return $redisLiveInfo;
- }
- }
|