error('QAPP_SYS_ERROR'); } if (!in_array($book_info->is_on_shelf, [2])) { return response()->error('QAPP_OFF_SHELF'); } $is_on_shelf = UserShelfBooksService::getUserShelfBooksListByUidAndBid($this->uid, $bid); $book_info['is_on_user_shelf'] = 0; if ($is_on_shelf) { $book_info['is_on_user_shelf'] = 1; } $last_chapter = ChapterService::getChapterNameById($book_info['last_cid'], $bid); $book_info['last_chapter_is_vip'] = $last_chapter['is_vip']; $book_info['is_need_charge'] = true; try { $book_info['is_need_charge'] = $this->isNeedCharge($bid, $last_chapter, $book_info); } catch (\Exception $e) { \Log::info('bid is :' . $bid); } $record = ReadRecordService::getBookReadRecordStatic($this->uid, $bid); if ($record) { $book_info['record_chapter_id'] = $record['record_chapter_id']; $book_info['record_chapter_name'] = $record['record_chapter_name']; } return response()->item(new BookTransformer(), $book_info); } /** * 获取订购记录 * @param $book_info * @param $chapter_id * @return bool */ protected function getOrderRecord($bid, $chapter_id) { //包年记录 $uid = $this->uid; $res = YearOrderService::getRecord($uid); if ($res) return true; $res = null; //单本订购记录 $res = BookOrderService::getRecordByuidBid($uid, $bid); if ($res) return true; $res = null; //章节订购记录 $chapterOrder = new ChapterOrderService(); if ($chapterOrder->checkIsOrdered($uid, $bid, $chapter_id)) return true; return false; } /** * 判断是否需要充值 */ private function isBookNeedCharge(int $bid, float $price) { $book_order = $this->getOrderRecord($bid, 0); if ($book_order) { return false; } else { $user_info = $this->user_info; return $user_info['balance'] < $price; } } /** * 判断章节是否需要充值 */ private function isChapterNeedCharge(int $bid, int $cid, float $price) { $book_order = $this->getOrderRecord($bid, $cid); if ($book_order) { return false; } else { $user_info = $this->user_info; return $user_info['balance'] < $price; } } /** * 判断是否需要充值 */ private function isNeedCharge(int $bid, $last_chapter, $book_info) { switch ($book_info->charge_type) { case 'BOOK': $price = $this->getPrice($book_info); return $this->isBookNeedCharge($bid, $price); default: $price = $last_chapter->is_vip ? $this->getPrice($book_info, $last_chapter->size) : 0; return $last_chapter->is_vip ? $this->isChapterNeedCharge($bid, $last_chapter->id, $price) : false; } } /** * 计算价格 * @param $book_info * @param $chapter_size * @return float */ protected function getPrice($book_info, $chapter_size = 0) { if ($book_info->charge_type == 'BOOK') return $book_info->price * 100; return ceil($chapter_size / 100); } /** * @apiVersion 1.0.0 * @apiDescription 首页(male|female) * @api {get} books/{sex}/index 首页(male|female) * @apiGroup Book * @apiParam {String} [token] token * @apiHeader {String} [Authorization] token 两个token任选其一 * @apiName getBookLists * @apiSuccess {int} code 状态码 * @apiSuccess {String} msg 信息 * @apiSuccess {object} data 结果集 * @apiSuccessExample {json} Success-Response: * HTTP/1.1 200 OK * { * code: 0, * msg: "", * data: [ * { * type: "lunbo", * lable: "男频", * books: [ * {},{} * ] * }, * { * type: "hot", * lable: "热门推荐", * books: [ * {},{} * ] * } * ] * } */ public function getBookLists(Request $request, $sex) { if ($sex == 'male') { $type = [ 'BOOK_MALE_LOOP', 'BOOK_MALE_HOT', 'BOOK_MALE_ZHIBO', 'BOOK_MALE_RECOM', 'BOOK_MALE_NEW_RECOM' ]; $channel = 1; $reco_banner_type = ['MALE', 'PUBLIC']; } else { $type = [ 'BOOK_FEMALE_LOOP', 'BOOK_FEMALE_HOT', 'BOOK_FEMALE_ZHIBO', 'BOOK_FEMALE_RECOM', 'BOOK_FEMALE_NEW_RECOM' ]; $reco_banner_type = ['FEMALE', 'PUBLIC']; $channel = 2; } $books = RecoBannerService::getByTypeStatic($reco_banner_type, 2); $books->transform(function ($item) { $result = $this->getBidCidFromUrl($item->redirect_url); $item->bid = $result['bid']; $item->cid = $result['cid']; if ($result['cid']) { $item->redirect_url = "views/Reader"; } else { $item->redirect_url = "views/Detail"; } return $item; }); $result = [ ['type' => 'reco_banner', 'lable' => '首页banner', 'books' => $books], ['type' => 'hot', 'lable' => '热门推荐', 'books' => collectionTransform(new BookTransformer, BookConfigService::getBooksByIds(RecommendService::getRecommendIdsStatic($channel, 'hot'))->where('is_on_shelf', '=', 2))], ['type' => 'zhibo', 'lable' => '神书直播', 'books' => collectionTransform(new BookTransformer, BookConfigService::getBooksByIds(RecommendService::getRecommendIdsStatic($channel, 'live'))->where('is_on_shelf', '=', 2))], ['type' => 'recom', 'lable' => '编辑推荐', 'books' => collectionTransform(new BookTransformer, BookConfigService::getBooksByIds(RecommendService::getRecommendIdsStatic($channel, 'recom'))->where('is_on_shelf', '=', 2))], ['type' => 'new_recom', 'lable' => '新书推荐', 'books' => collectionTransform(new BookTransformer, BookConfigService::getBooksByIds(RecommendService::getRecommendIdsStatic($channel, 'new_recom'))->where('is_on_shelf', '=', 2))], ]; return response()->success($result); } private function getBidCidFromUrl(string $url) { if (preg_match('/\?bid=(\w+)\S+cid=(\w+)/', $url, $matches) || preg_match('/\?id=(\w+)/', $url, $matches)) { return [ 'bid' => $matches[1], 'cid' => isset($matches[2]) ? $matches[2] : 0, ]; } else { return [ 'bid' => '', 'cid' => 0, ]; } } /** * @apiVersion 1.0.0 * @apiDescription 书库 * @api {get} books/library 书库 * @apiParam {String} key * @apiParam {Int} category_id 分类id * @apiParam {String} order_field 排序字段(推荐指数:recommend_index|点击数:click_count|字数:size|update:时间) * @apiParam {String} order_seq 排序顺序(顺序:asc|逆序:desc) * @apiParam {String} [page_size] 分页大小 * @apiParam {String} [page] 页码 * @apiParam {String} [status] 完结与否(0|1)完结1 连载0 * @apiParam {String} [token] token * @apiHeader {String} [Authorization] token 两个token任选其一 * @apiGroup Book * @apiName library * @apiSuccess {int} code 状态码 * @apiSuccess {String} msg 信息 * @apiSuccess {object} data 结果集 * @apiSuccess {Array} data.list 结果数据集 * @apiSuccess {Int} data.list.book_id bid * @apiSuccess {String} data.list.book_name 书名 * @apiSuccess {String} data.list.book_summary 简介 * @apiSuccess {String} data.list.book_author 作者 * @apiSuccess {String} data.list.cover_url 封面 * @apiSuccess {Int} data.list.book_word_count 字数 * @apiSuccess {Int} data.list.book_chapter_total 章节数 * @apiSuccess {Int} data.list.book_category_id 分类 * @apiSuccess {String} data.list.book_category 分类名 * @apiSuccess {String} data.list.book_end_status 是否完结 * @apiSuccess {String} data.list.book_published_time 发布时间 * @apiSuccess {String} data.list.copyright 版权信息 * @apiSuccess {Int} data.list.force_subscribe_chapter_id 强制关注的章节数 * @apiSuccess {String} data.list.update_time 更新时间 * @apiSuccess {Int} data.list.is_on_shelf 是否上架 * @apiSuccess {String} data.list.book_price 是否上架 * @apiSuccess {String} data.list.recommend_index 推荐指数 * @apiSuccess {Int} data.list.charge_type 收费类型 * @apiSuccess {Int} data.list.keyword 关键词 * @apiSuccess {Int} data.list.is_show_index_content 是否显示推荐指数文本 * @apiSuccess {Int} data.list.click_count 点击数 * @apiSuccess {Int} data.list.product_id product_id * @apiSuccess {Int} data.list.last_cid 1224 * @apiSuccess {Int} data.list.last_chapter 第254章 婚礼(大结局) * @apiSuccess {object} data.meta 分页信息 * @apiSuccess {Int} data.meta.total 总条数 * @apiSuccess {Int} data.meta.per_page 每页条数 * @apiSuccess {Int} data.meta.current_page 当前页 * @apiSuccess {Int} data.meta.last_page 最后页 * @apiSuccess {String} data.meta.next_page_url 下一页 * @apiSuccess {String} data.meta.prev_page_url 上一页 * @apiSuccessExample {json} Success-Response: * HTTP/1.1 200 OK * { * code: 0, * msg: "", * data: { * list: [ * { * book_id: 5, * book_name: "肌缘巧合", * book_summary: "    他是权势倾天,纵横商界的王者,却偏偏钟情于她,一宠成瘾。“女人,我要你......只要你能满足我,别墅、游轮、支票,你随便挑。”她羞涩的半低着头:“我只想要你。”他挑眉,“你野心不小啊!”她妩媚一笑,解开他的领带,“难道你不愿意!”他宠她爱她,给她所有想要的。只是有一天她终于忍不住暴走,“靠,你有没有节制呀?我要离婚。”", * book_author: "妖火", * cover_url: "http://www.leyuee.com/cover/0/8.jpg", * book_word_count: 0, * book_chapter_total: 0, * book_category_id: null, * book_category: "爆笑,宠文,潜规则", * book_end_status: 8, * book_published_time: null, * copyright: null, * charge_type: null, * force_subscribe_chapter_id: 0, * update_time: null, * is_on_shelf: 1, * book_price: null, * keyword: "温馨,虐心,清水", * recommend_index:2, * is_show_index_content:0, * click_count:0, * product_id:0, * last_cid:0, * last_chapter:第254章 婚礼(大结局), * }, * ], * meta: { * total: 18, * per_page: 15, * current_page: 1, * last_page: 2, * next_page_url: "http://myapi.cn/api/hotrank/books?page=2", * prev_page_url: "" * } * } * } */ public function library(Request $request) { $where = []; $order = []; $where['is_on_shelf'] = [2]; $category_id = $request->input('category_id'); if ($category_id) { if ($category_id == 1) { $where['channel_name'] = '男频'; } elseif ($category_id == 2) { $where['channel_name'] = '女频'; } else { $where['category_id'] = $category_id; } } $key = $request->input('key'); $where['key'] = $key; $order_field = $request->input('order_field'); $order_seq = $request->input('order_seq'); if ($order_field != '' && in_array($order_field, ['recommend_index', 'click_count', 'update', 'size', 'create'])) { if ($order_field == 'update') { $order = ['book_configs.updated_at', 'desc']; } elseif ($order_field == 'create') { $order = ['book_configs.created_at', 'desc']; } else { $order = [$order_field, 'desc']; } if ($order_seq == 'asc') { $order = [$order_field, 'asc']; } if ($order_seq == 'desc') { $order = [$order_field, 'desc']; } } $status = $request->input('status'); if ($status != '') { $where['status'] = $status; } $page_size = $request->input('page_size', 15); $books = BookConfigService::getBooks($where, $order, $page_size); return response()->pagination(new BookTransformer, $books); } /** * @apiVersion 1.0.0 * @apiDescription 相似推荐 * @api {get} books/similar 相似推荐 * @apiParam {Int} category_id * @apiParam {Int} bid * @apiGroup Book * @apiName similarRecom * @apiParam {String} [token] token * @apiHeader {String} [Authorization] token 两个token任选其一 * @apiSuccess {int} code 状态码 * @apiSuccess {String} msg 信息 * @apiSuccess {object} data 结果集 * @apiSuccess {Array} data 结果数据集 * @apiSuccess {Int} data.book_id bid * @apiSuccess {String} data.book_name 书名 * @apiSuccess {String} data.book_summary 简介 * @apiSuccess {String} data.book_author 作者 * @apiSuccess {String} data.cover_url 封面 * @apiSuccess {Int} data.book_word_count 字数 * @apiSuccess {Int} data.book_chapter_total 章节数 * @apiSuccess {Int} data.book_category_id 分类 * @apiSuccess {String} data.book_category 分类名 * @apiSuccess {String} data.book_end_status 是否完结 * @apiSuccess {String} data.book_published_time 发布时间 * @apiSuccess {String} data.copyright 版权信息 * @apiSuccess {Int} data.force_subscribe_chapter_id 强制关注的章节数 * @apiSuccess {String} data.update_time 更新时间 * @apiSuccess {Int} data.is_on_shelf 是否上架 * @apiSuccess {String} data.book_price 是否上架 * @apiSuccess {String} data.recommend_index 推荐指数 * @apiSuccess {Int} data.charge_type 收费类型 * @apiSuccess {Int} data.keyword 关键词 * @apiSuccess {Int} data.is_show_index_content 是否显示推荐指数文本 * @apiSuccess {Int} data.click_count 点击数 * @apiSuccess {Int} data.product_id product_id * @apiSuccess {Int} data.last_cid 123 * @apiSuccess {Int} data.last_chapter 第254章 婚礼(大结局) * @apiSuccessExample {json} Success-Response: * HTTP/1.1 200 OK * { * code: 0, * msg: "", * data: { * [ * { * book_id: 5, * book_name: "肌缘巧合", * book_summary: "    他是权势倾天,纵横商界的王者,却偏偏钟情于她,一宠成瘾。“女人,我要你......只要你能满足我,别墅、游轮、支票,你随便挑。”她羞涩的半低着头:“我只想要你。”他挑眉,“你野心不小啊!”她妩媚一笑,解开他的领带,“难道你不愿意!”他宠她爱她,给她所有想要的。只是有一天她终于忍不住暴走,“靠,你有没有节制呀?我要离婚。”", * book_author: "妖火", * cover_url: "http://www.leyuee.com/cover/0/8.jpg", * book_word_count: 0, * book_chapter_total: 0, * book_category_id: null, * book_category: "爆笑,宠文,潜规则", * book_end_status: 8, * book_published_time: null, * copyright: null, * charge_type: null, * force_subscribe_chapter_id: 0, * update_time: null, * is_on_shelf: 1, * book_price: null, * keyword: "温馨,虐心,清水", * recommend_index:2, * is_show_index_content:0, * click_count:0, * product_id:0, * last_cid:0, * last_chapter:第254章 婚礼(大结局), * }, * ], * } * } */ public function similarRecom(Request $request) { $category_id = $request->input('category_id'); $bid = $request->input('bid'); if (empty($bid) || empty($category_id)) { return response()->error('PARAM_ERROR'); } $bid = BookService::decodeBidStatic($bid); $where = ['category_id' => $category_id, 'is_on_shelf' => [2]]; $books = BookConfigService::getBooks($where, [], 4); $data = []; foreach ($books as $v) { if ($v->bid != $bid && count($data) < 3) { $data[] = $v; } } return response()->collection(new BookTransformer(), $data); } /** * @apiVersion 1.0.0 * @apiDescription 尾页推荐 * @api {get} books/readOverRecommend 尾页推荐 * @apiParam {Int} bid * @apiGroup Book * @apiParam {String} [token] token * @apiHeader {String} [Authorization] token 两个token任选其一 * @apiName readOverRecommend * @apiSuccess {int} code 状态码 * @apiSuccess {String} msg 信息 * @apiSuccess {object} data 结果集 * @apiSuccess {Array} data 结果数据集 * @apiSuccess {Int} data.book_id bid * @apiSuccess {String} data.book_name 书名 * @apiSuccess {String} data.book_summary 简介 * @apiSuccess {String} data.book_author 作者 * @apiSuccess {String} data.cover_url 封面 * @apiSuccess {Int} data.book_word_count 字数 * @apiSuccess {Int} data.book_chapter_total 章节数 * @apiSuccess {Int} data.book_category_id 分类 * @apiSuccess {String} data.book_category 分类名 * @apiSuccess {String} data.book_end_status 是否完结 * @apiSuccess {String} data.book_published_time 发布时间 * @apiSuccess {String} data.copyright 版权信息 * @apiSuccess {Int} data.force_subscribe_chapter_id 强制关注的章节数 * @apiSuccess {String} data.update_time 更新时间 * @apiSuccess {Int} data.is_on_shelf 是否上架 * @apiSuccess {String} data.book_price 是否上架 * @apiSuccess {String} data.recommend_index 推荐指数 * @apiSuccess {Int} data.charge_type 收费类型 * @apiSuccess {Int} data.keyword 关键词 * @apiSuccess {Int} data.is_show_index_content 是否显示推荐指数文本 * @apiSuccess {Int} data.click_count 点击数 * @apiSuccess {Int} data.product_id product_id * @apiSuccess {Int} data.last_cid 123 * @apiSuccess {Int} data.last_chapter 第254章 婚礼(大结局) * @apiSuccessExample {json} Success-Response: * HTTP/1.1 200 OK * { * code: 0, * msg: "", * data: { * [ * { * book_id: 5, * book_name: "肌缘巧合", * book_summary: "    他是权势倾天,纵横商界的王者,却偏偏钟情于她,一宠成瘾。“女人,我要你......只要你能满足我,别墅、游轮、支票,你随便挑。”她羞涩的半低着头:“我只想要你。”他挑眉,“你野心不小啊!”她妩媚一笑,解开他的领带,“难道你不愿意!”他宠她爱她,给她所有想要的。只是有一天她终于忍不住暴走,“靠,你有没有节制呀?我要离婚。”", * book_author: "妖火", * cover_url: "http://www.leyuee.com/cover/0/8.jpg", * book_word_count: 0, * book_chapter_total: 0, * book_category_id: null, * book_category: "爆笑,宠文,潜规则", * book_end_status: 8, * book_published_time: null, * copyright: null, * charge_type: null, * force_subscribe_chapter_id: 0, * update_time: null, * is_on_shelf: 1, * book_price: null, * keyword: "温馨,虐心,清水", * recommend_index:2, * is_show_index_content:0, * click_count:0, * product_id:0, * last_cid:0, * last_chapter:第254章 婚礼(大结局), * }, * ], * } * } */ public function readOverRecommend(Request $request) { $bid = $request->input('bid'); if (empty($bid)) { return response()->error('PARAM_ERROR'); } $bid = BookService::decodeBidStatic($bid); $book_info = BookConfigService::getBookById($bid); $res = BookConfigService::getRecommendBooks($bid, $book_info->channel_name); $urge_status = 0; if ($book_info->status == 0 && !BookUrgeUpdateService::isHadUrged($this->uid, $bid)) { $urge_status = 1; } $recommend_result = collectionTransform(new BookTransformer(), $res); $book_status = [ 'status' => $book_info->status, 'urge_status' => $urge_status ]; $data = [ 'recommend_result' => $recommend_result, 'book_status' => $book_status ]; return response()->success($data); } /** * @apiVersion 1.0.0 * @apiDescription 排行帮 * @api {get} books/rank 排行帮 * @apiParam {Int} type (点击帮:1|字数帮:2|新书榜|3) * @apiParam {Int} time (周:1|月:2|总|3) * @apiParam {String} [token] token * @apiHeader {String} [Authorization] token 两个token任选其一 * @apiGroup Book * @apiName rank * @apiSuccess {int} code 状态码 * @apiSuccess {String} msg 信息 * @apiSuccess {object} data 结果集 * @apiSuccess {Array} data 结果数据集 * @apiSuccess {Int} data.book_id bid * @apiSuccess {String} data.book_name 书名 * @apiSuccess {String} data.book_summary 简介 * @apiSuccess {String} data.book_author 作者 * @apiSuccess {String} data.cover_url 封面 * @apiSuccess {Int} data.book_word_count 字数 * @apiSuccess {Int} data.book_chapter_total 章节数 * @apiSuccess {Int} data.book_category_id 分类 * @apiSuccess {String} data.book_category 分类名 * @apiSuccess {String} data.book_end_status 是否完结 * @apiSuccess {String} data.book_published_time 发布时间 * @apiSuccess {String} data.copyright 版权信息 * @apiSuccess {Int} data.force_subscribe_chapter_id 强制关注的章节数 * @apiSuccess {String} data.update_time 更新时间 * @apiSuccess {Int} data.is_on_shelf 是否上架 * @apiSuccess {String} data.book_price 是否上架 * @apiSuccess {String} data.recommend_index 推荐指数 * @apiSuccess {Int} data.charge_type 收费类型 * @apiSuccess {Int} data.keyword 关键词 * @apiSuccess {Int} data.is_show_index_content 是否显示推荐指数文本 * @apiSuccess {Int} data.click_count 点击数 * @apiSuccess {Int} data.product_id product_id * @apiSuccess {Int} data.last_cid 123 * @apiSuccess {Int} data.last_chapter 第254章 婚礼(大结局) * @apiSuccessExample {json} Success-Response: * HTTP/1.1 200 OK * { * code: 0, * msg: "", * data: { * male:[ * { * book_id: 5, * book_name: "肌缘巧合", * book_summary: "    他是权势倾天,纵横商界的王者,却偏偏钟情于她,一宠成瘾。“女人,我要你......只要你能满足我,别墅、游轮、支票,你随便挑。”她羞涩的半低着头:“我只想要你。”他挑眉,“你野心不小啊!”她妩媚一笑,解开他的领带,“难道你不愿意!”他宠她爱她,给她所有想要的。只是有一天她终于忍不住暴走,“靠,你有没有节制呀?我要离婚。”", * book_author: "妖火", * cover_url: "http://www.leyuee.com/cover/0/8.jpg", * book_word_count: 0, * book_chapter_total: 0, * book_category_id: null, * book_category: "爆笑,宠文,潜规则", * book_end_status: 8, * book_published_time: null, * copyright: null, * charge_type: null, * force_subscribe_chapter_id: 0, * update_time: null, * is_on_shelf: 1, * book_price: null, * keyword: "温馨,虐心,清水", * recommend_index:2, * is_show_index_content:0, * click_count:0, * product_id:0, * last_cid:0, * last_chapter:第254章 婚礼(大结局), * }, * ], * female:[{},{}] * } * } */ public function rank(Request $request) { $type = $request->input('type'); $time = $request->input('time'); if ($type == 1) { //点击帮 if ($time == 1) { //周 $midstr = env('CLICK_RANK_MALE_WEEK', '677,694,638,642,641,673,635,639,637,4'); $fidstr = env('CLICK_RANK_FEMALE_WEEK', '614,636,587,48,1,6,354,99,159,355'); } elseif ($time == 2) { //月 $midstr = env('CLICK_RANK_MALE_MONTH', '757,775,780,612,638,635,694,639,642,693'); $fidstr = env('CLICK_RANK_FEMALE_MONTH', '324,614,6,1,5,10,48,57,41,58'); } else { $midstr = env('CLICK_RANK_MALE_TOTAL', '757,775,780,612,634,677,694,638,642,635'); $fidstr = env('CLICK_RANK_FEMALE_TOTAL', '324,614,636,1,5,6,521,10,41,48'); } $female = collectionTransform(new BookTransformer, BookConfigService::getBooksByIds(explode(',', $fidstr))); $male = collectionTransform(new BookTransformer, BookConfigService::getBooksByIds(explode(',', $midstr))); } elseif ($type == 2) { //字数帮 if ($time == 1) { //周 $midstr = env('WORD_RANK_MALE_WEEK', '638,673,635,637,680,642,86,774,764,736'); $fidstr = env('WORD_RANK_FEMALE_WEEK', '48,58,324,354,159,262,7,9,11,525'); } elseif ($time == 2) { //月 $midstr = env('WORD_RANK_MALE_MONTH', '2,638,642,635,639,4,743,680,736,73'); $fidstr = env('WORD_RANK_FEMALE_MONTH', '1,10,48,58,324,354,159,442,355,464'); } else { $midstr = env('WORD_RANK_MALE_TOTAL', '638,677,694,635,612,693,634,642,775,780'); $fidstr = env('WORD_RANK_FEMALE_TOTAL', '57,636,614,1,10,48,58,324,354,99'); } $female = collectionTransform(new BookTransformer, BookConfigService::getBooksByIds(explode(',', $fidstr))); $male = collectionTransform(new BookTransformer, BookConfigService::getBooksByIds(explode(',', $midstr))); } elseif ($type == 3) { //新书榜 if ($time == 1) { //周 $midstr = env('NEW_RANK_MALE_WEEK', '635,639,4,642,629,446,741,737,731,86'); $fidstr = env('NEW_RANK_FEMALE_WEEK', '135,587,617,625,627,467,213,233,529,357'); } elseif ($time == 2) { //月 $midstr = env('NEW_RANK_MALE_MONTH', '757,775,780,612,634,677,694,638,642,635'); $fidstr = env('NEW_RANK_FEMALE_MONTH', '33,39,40,51,587,617,625,627,50,60'); } else { $midstr = env('NEW_RANK_MALE_TOTAL', '693,641,673,637,4,3,612,634,677,694'); $fidstr = env('NEW_RANK_FEMALE_TOTAL', '284,30,33,39,40,51,587,50,60,357'); } $female = collectionTransform(new BookTransformer, BookConfigService::getBooksByIds(explode(',', $fidstr))); $male = collectionTransform(new BookTransformer, BookConfigService::getBooksByIds(explode(',', $midstr))); } else { return response()->error('PARAM_ERROR'); } $data = ['male' => $male, 'female' => $female]; return response()->success($data); } /** * 推荐书 */ public function recommen() { $reco_banner_type = ['FEMALE', 'PUBLIC']; $books = (new RecoBannerService)->getByType($reco_banner_type, 2); $books->transform(function ($item) { $result = $this->getBidCidFromUrl($item->redirect_url); $item->bid = $result['bid']; $item->cid = $result['cid']; if ($result['cid']) { $item->redirect_url = "views/Reader"; } else { $item->redirect_url = "views/Detail"; } return $item; }); return response()->success($books); } }