| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | <?phpnamespace 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;    }}
 |