exists($key)) { $data = $redis->get($key); $books = json_decode($data, true); } else { $map = array(); if ($sex != 0) { $map['sex'] = $sex; } $map['state'] = 1; switch ($type) { case 'free': //免费榜 $now = time(); $map['free_stime'] = array('lt', $now); $map['free_etime'] = array('gt', $now); $books = model('Book')->where($map)->order("idx", "desc")->page($page, 10)->select(); foreach ($books as $key => $book) { $from_date = date('m月d日', $book['free_stime']); $end_date = date('m月d日', $book['free_etime']); $books[$key]['free_period'] = $from_date . '至' . $end_date; } break; case 'finish': //完结榜 $map['is_finish'] = 1; $map['id'] = array('gt', 1); $books = model('Book')->where($map)->order("idx", "desc")->page($page, 10)->select(); break; case 'click': //点击榜 $books = model('Book')->where($map)->order("read_num", "desc")->page($page, 10)->select(); break; case 'sell': //畅销榜 按权重 $books = model('Book')->where($map)->order("idx", "desc")->page($page, 10)->select(); break; default: //默认就按阅读量排 $books = model('Book')->where($map)->order("idx", "desc")->page($page, 10)->select(); break; } if ($books) { $categoryArr = model("BookCategory")->getCategoryList(); foreach ($books as $key=>$v) { $books[$key]['author'] = $categoryArr[$v['book_category_id']]; } } $json = json_encode($books); $redis->setex($key, 900, $json); } return $books; } /** * 首页配置的指定区块书籍列表接口 * @param int $block_id 区块id * @param int $page 页数 * @return array */ public static function blockbooklist($block_id, $page) { $redis = Redis::instance(); $key = 'CBBL:' . $block_id; if (!$redis->exists($key)) { $where = array(); $where['block_id'] = $block_id; $where['type'] = 1; $resources = model('client_manage_block_resource') ->where($where) ->select(); if (!empty($resources)) { foreach ($resources as $k => $r) { $redis->zadd($key,$r['weigh'],'B:'.$r['book_id']); } $redis->expire($key,86400*7); } } $books = $redis->zrevrangebyscore($key,'+inf','-inf',array('withscores'=>false,'limit'=>array(($page-1)*10,10))); $categoryArr = model("BookCategory")->getCategoryList(); $data = array(); foreach ($books as $bookkey) { if($redis->exists($bookkey)){ $b = $redis->hgetall($bookkey); }else{ $res = explode(':',$bookkey); $b = model('Book')->bookInfo($res[1]); } if($b){ if ($b['state'] != 1) { continue; } $data[] = array( 'id'=>$b['id'], 'name'=>$b['name'], 'description'=>$b['description'], 'author'=>$categoryArr[$b['book_category_id']], 'image'=>$b['image'], 'read_num'=>$b['read_num'], ); } } return $data; } }