| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 | <?phpnamespace app\common\model;use think\Model;use Redis;/** * 模型 */class Party extends Model{    // 开启自动写入时间戳字段    protected $autoWriteTimestamp = 'int';    // 定义时间戳字段名    protected $createTime = 'createtime';    protected $updateTime = 'updatetime';    /**     * 根据partyid 获取 party 信息     */    public function getPatyInfoByPartyId($party_id,$room_type,$type_id,$is_recommend,$all,$start = 0,$end = 9,$index) {        if(!$party_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($party_id)) {            return [];        }              $redisPartyInfo = [];        foreach($party_id as $k => $v) {            $getredisPartyInfo = $redis->get($room_type.'_'.$k);            $foreachData = json_decode($getredisPartyInfo,true);            if(!$foreachData || $foreachData["is_close"] == 1) continue;            // if(!$foreachData || $foreachData["is_online"] == 0) continue;            if(!$foreachData || $foreachData["party_pass"] != '') continue;            $mod = isset($foreachData["party_type"])?intval($foreachData["party_type"])%5:1;            if(isset($foreachData["type_name"]) && $foreachData["type_name"]) {                $type_name = $foreachData["type_name"];            } else {                $type_name = "普通房";            }            $hasdata = false;            if($all == 1) {                if($is_recommend == 1) {                    if($foreachData["is_recommend"] == 1) $hasdata = true;                } else {                    $hasdata = true;                }            } elseif($type_id > 0) {                if($type_id == $foreachData["party_type"]) $hasdata = true;            }            if($foreachData["status"] != 1) $hasdata = false;            $hasdata && $redisPartyInfo[] = [                "id" => $foreachData["id"],                "party_id" => $foreachData["party_id"],                "r_id" => $foreachData["party_id"],                "party_name" => $foreachData["party_name"],                "party_pass" => $foreachData["party_pass"]?$foreachData["party_pass"]:"",                "party_hot" => $v,                "party_logo" => $this->httpurl($foreachData["party_logo"]),                "party_type" => $type_name,                "avatar" => $room_type == 2 ? $foreachData["avatar"]:"",                "party_type_color" => $mod == 0?5:$mod,                "party_user" => isset($foreachData["party_user"]) ? array_values($foreachData["party_user"]) : [] // 当前麦位人头像            ];        }        $resdata = [];        if($index == 1) {            $num = $end - $start + 1;            $countData = count($redisPartyInfo);            if($num > $countData) $num = $countData;            if($redisPartyInfo) {                $dataRand = array_rand($redisPartyInfo,$num);                $dataRand = is_array($dataRand)?$dataRand:[$dataRand];                if($redisPartyInfo) foreach($redisPartyInfo as $k => $v) if(in_array($k,$dataRand)) $resdata[] = $v;            }        } else {            if($redisPartyInfo) foreach($redisPartyInfo as $k => $v) if($k >= $start && $k <= $end) $resdata[] = $v;        }        return $resdata;    }    /**     * 判断当前url是否为全路径,并返回全路径     */    protected function httpurl($path) {        // 获取当前域名        if(strpos($path,'http://') === false && strpos($path,'https://') === false) {            $host = config("cos")['url'];            $url = $host.$path;        } else {            $url = $path;        }        return $url;    }}
 |