error('PARAM_ERROR'); } $this->book_info = $book_info; $lists = $this->getChapterCatalog($bid, $lists, $book_info); return response()->collection(new ChapterListTransformer, $lists); } public function getCatalogPerPage(Request $request, $bid) { $bid = BookService::decodeBidStatic($bid); $book_info = BookConfigService::getBookById($bid); if (!$book_info) { return response()->error('PARAM_ERROR'); } $this->book_info = $book_info; $page_size = $request->input('page_size', 15); if ($page_size >= 100) $page_size = 100; $res = ChapterService::getChapterListsPage($bid, $page_size); $lists = $this->getChapterCatalog($bid, $res, $book_info); return response()->pagination(new ChapterListTransformer, $lists); } private function getChapterCatalog(int $bid, $chapters, $book_info) { // 查询书籍是否限免 $isFree = BookConfigService::judgeBookIsFree($bid); //渠道自定义vip章节 //$vip_sequence = Redis::hget('channel:chapterfee:setting:' . $this->distribution_channel_id, $bid); $vip_sequence = BookService::getVipSequence($bid,$this->distribution_channel_id,$this->send_order_id); list($is_split,$is_change_chapter_name) = BookService::splitContent($bid); $change_chapter_name = 0; if($is_split && ($book_info->channel_name == '男频' || $is_change_chapter_name) ){ $change_chapter_name = 1; } switch ($book_info->charge_type) { case 'BOOK': $price = $this->getPrice($book_info); $is_need_charge = $this->isBookNeedCharge($bid, $price); foreach ($chapters as $v) { $v->next_chapter_status = 0; $v->next_price = 0; $v->is_need_charge = $v->is_vip ? $is_need_charge : false; $v->price = $price; // 限免判断 if ($isFree) { $v->is_need_charge = false; $v->price = 0; } if($vip_sequence){ if($v->sequence >= $vip_sequence){ $v->is_vip = 1; }else{ $v->is_vip = 0; } } //拆章 if($change_chapter_name){ $v->name = '第'.$v->sequence.'章'; } } break; default: foreach ($chapters as $v) { if($vip_sequence){ if($v->sequence >= $vip_sequence){ $v->is_vip = 1; }else{ $v->is_vip = 0; } } // 限免判断 if ($isFree) { $v->is_need_charge = false; $v->price = 0; } else { $v->price = $v->is_vip ? $this->getPrice($book_info, $v->size) : 0; $v->is_need_charge = $v->is_vip ? $this->isChapterNeedCharge($bid, $v->id, $v->price) : false; } //下一章付费信息 $v->next_chapter_status = 0; $v->next_price = 0; if($v->is_vip){ $next_chapter_order_status = $this->nextChapterOrderStatus($bid,$v->next_cid); $v->next_chapter_status = $next_chapter_order_status['next_chapter_status']; $v->next_price = $next_chapter_order_status['next_price']; } //拆章 if($change_chapter_name){ $v->name = '第'.$v->sequence.'章'; } } break; } return $chapters; } public function index(Request $request, $bid, $cid) { $send_order_id = $request->header('send_order_id', ''); //每次绑定用户和派单的关系 $this->bindSendOrderId($this->uid,$send_order_id); $oldbid = $bid; $bid = BookService::decodeBidStatic($bid); //获取图书信息 $book_info = BookConfigService::getBookById($bid); if (empty($book_info)) return response()->error('QAPP_SYS_ERROR'); $this->book_info = $book_info; //yuyuedu、xinghe 快应用这两个cp的书屏蔽下 wutong,wutong2,wutong3下所有内容都不放快应用 if(in_array($book_info->cp_source,getHiddenCp())){ return response()->error('QAPP_SYS_ERROR'); } if($this->distribution_channel_id == 7477 && $bid == 13765){ $book_info->is_on_shelf = 2; } if($bid == 58886){ $book_info->is_on_shelf = 0; } if (!in_array($book_info->is_on_shelf, [1,2])) { if ($book_info->is_on_shelf != 4) { return response()->error('QAPP_OFF_SHELF'); } //补充操作:如果该用户未订阅该下架的书籍则删除其阅读记录(书架不予显示) //判断是否属于包年用户 $year_account = YearOrderService::getRecord($this->uid); if(!$year_account){ //获取书籍充值类型 $charge_type = $book_info->charge_type; if($charge_type == 'BOOK'){ //是否购买过该书,购买过则不删除 $res = BookOrderService::getRecordByuidBid($this->uid,$bid); }elseif($charge_type == 'CHAPTER'){ //是否购买过该书章节,购买过则不删除 $res = ChapterOrderService::checkBookIsOrdered($this->uid,$bid); }else{ $res = false; } if (!$res) { ReadRecordService::delReadRecordStatic($this->uid,[$bid]); return response()->error('QAPP_OFF_SHELF'); } } } //wutong,wutong2,wutong3下所有内容都不放快应用 // if(in_array($book_info->cp_source,['wutong','wutong2','wutong3','youyan2'])){ // return response()->error('QAPP_OFF_SHELF'); // } $this->book_info = $book_info; //获取章节信息 $chapter = ChapterService::getChapterNameById($cid, $bid); if (!$chapter) { //短推长 $combination_chapter = $this->chapterNotExists($bid,$cid); if($combination_chapter){ $chapter = $combination_chapter; $bid = $chapter->bid; $book_info = BookConfigService::getBookById($bid); $oldbid = \Hashids::encode($bid); $this->book_info = $book_info; }else{ return response()->error('QAPP_SYS_ERROR'); } } list($is_split,$is_change_chapter_name) = BookService::splitContent($bid); if($is_split && ($book_info->channel_name == '男频' || $is_change_chapter_name) ){ $chapter->name = '第'.$chapter->sequence.'章'; } $is_next_day = date('Y-m-d', strtotime($this->user_info->created_at)) == date('Y-m-d', strtotime('-1 days')); if ($is_next_day) { $job = new UserRententionJob($this->uid, now(), $this->user_info->created_at); dispatch($job)->onConnection('rabbitmq')->onQueue('user_rentention_queue'); } //自定义vip章节 //$vip_sequence = Redis::hget('channel:chapterfee:setting:' . $this->distribution_channel_id, $bid); $vip_sequence = BookService::getVipSequence($bid,$this->distribution_channel_id,$this->send_order_id); if($vip_sequence){ if($chapter->sequence >= $vip_sequence){ $chapter->is_vip = 1; }else{ $chapter->is_vip = 0; } } if ($chapter->is_vip == 0) { ReadRecordService::addReadLog($this->uid, [ 'distribution_channel_id' => $this->distribution_channel_id, 'bid' => $bid, 'cid' => $chapter->id, 'uid' => $this->uid, 'send_order_id' => $this->send_order_id, 'sequence' => $chapter->sequence, ]); ReadRecordService::addReadRecord([ 'uid' => $this->uid, 'bid' => $bid, 'book_name' => $book_info->book_name, 'cid' => $cid, 'chapter_name' => $chapter->name, 'sequence' => $chapter->sequence ]); return response()->item(new ChapterTransformer, $this->getChapter($bid, $chapter->id, $chapter)); } // 书籍是否限免 $free = BookConfigService::judgeBookIsFree($bid); if ($free) { ReadRecordService::addReadLog($this->uid, [ 'distribution_channel_id' => $this->distribution_channel_id, 'bid' => $bid, 'cid' => $chapter->id, 'uid' => $this->uid, 'send_order_id' => $this->send_order_id, 'sequence' => $chapter->sequence, ]); ReadRecordService::addReadRecord([ 'uid' => $this->uid, 'bid' => $bid, 'book_name' => $book_info->book_name, 'cid' => $cid, 'chapter_name' => $chapter->name, 'sequence' => $chapter->sequence ]); if ($chapter->is_vip == 1) { $fee = $this->getPrice($book_info, $chapter->size); $now = date('Y-m-d'); Redis::hincrby('qapp:book:free:virtual:' . $free->id, $now, $fee); Redis::sadd('qapp:free:virtual' . $now, $free->id); Redis::sadd('qapp:free:virtual:uids'.$now.$free->id,$this->uid); Redis::sadd('qapp:free:virtual:uids'.$free->id,$this->uid); } return response()->item(new ChapterTransformer, $this->getChapter($bid, $cid, $chapter)); } //已经付费 if ($this->getOrderRecord($bid, $cid)) { ReadRecordService::addReadLog($this->uid, [ 'distribution_channel_id' => $this->distribution_channel_id, 'bid' => $bid, 'cid' => $chapter->id, 'uid' => $this->uid, 'send_order_id' => $this->send_order_id, 'sequence' => $chapter->sequence, ]); ReadRecordService::addReadRecord([ 'uid' => $this->uid, 'bid' => $bid, 'book_name' => $book_info->book_name, 'cid' => $cid, 'chapter_name' => $chapter->name, 'sequence' => $chapter->sequence ]); return response()->item(new ChapterTransformer, $this->getChapter($bid, $cid, $chapter)); } //未付费 要提醒 $user_info = $this->user_info; //未付费 余额不足 $fee = $this->getPrice($book_info, $chapter->size); $data = [ 'book_id' => $oldbid, 'book_name' => $book_info->book_name, 'chapter_name' => $chapter->name, 'chapter_id' => $cid, 'pay_type' => $book_info->charge_type, 'fee' => $fee, 'user_balance' => $user_info->balance, 'product_id' => $book_info->product_id, 'uid' => $this->uid, 'distribution_channel_id' => $this->distribution_channel_id, 'is_discount' => 0, 'discount_fee' => '', 'discount' => '' ]; if ($user_info['balance'] < $fee) { if ($book_info->charge_type == 'BOOK') { return response()->error('QAPP_BOOK_INSUFFICIENT_BALANCE', $data); } elseif ($book_info->charge_type == 'CHAPTER') { return response()->error('QAPP_CHAPTER_INSUFFICIENT_BALANCE', $data); } else { return response()->error('QAPP_SYS_ERROR'); } } if(!$this->send_order_id){ if($book_info->charge_type == 'BOOK'){ return response()->error('QAPP_BOOK_BUY', $data); }/*else{ return response()->error('QAPP_CHAPTER_BUY', $data); }*/ } //付费 不提醒 if ($this->balancePay($book_info, $cid, $chapter->size, $chapter->name, 0)) { UserTaskService::addUserTaskQueue($this->uid, BaseTask::read, UserTaskService::judge_trigger); ReadRecordService::addReadLog($this->uid, [ 'distribution_channel_id' => $this->distribution_channel_id, 'bid' => $bid, 'cid' => $chapter->id, 'uid' => $this->uid, 'send_order_id' => $this->send_order_id, 'sequence' => $chapter->sequence, ]); ReadRecordService::addReadRecord([ 'uid' => $this->uid, 'bid' => $bid, 'book_name' => $book_info->book_name, 'cid' => $cid, 'chapter_name' => $chapter->name, 'sequence' => $chapter->sequence ]); //限免统计 $free_book = BookConfigService::getByBidNoFilter($bid); if($free_book) { if(strtotime($free_book->end_time)+7*86400 >= strtotime(date('Y-m-d'))) { if(Redis::Sismember('qapp:free:virtual:uids'.$free_book->id,$this->uid)){ $now = date('Y-m-d'); Redis::hincrby('qapp:book:free:actuality:' . $free_book->id, $now, $fee); Redis::sadd('qapp:free:actuality' . $now, $free_book->id); Redis::sadd('qapp:free:actuality:uids'.$now.$free_book->id,$this->uid); } } } if($this->uid == 247081369){ $item = itemTransform(new ChapterTransformer, $this->getChapter($bid, $cid, $chapter)); myLog('xueqi')->info($item); } return response()->item(new ChapterTransformer, $this->getChapter($bid, $cid, $chapter)); } else { if ($book_info->charge_type == 'BOOK') { return response()->error('QAPP_BOOK_INSUFFICIENT_BALANCE', $data); } elseif ($book_info->charge_type == 'CHAPTER') { return response()->error('QAPP_CHAPTER_INSUFFICIENT_BALANCE', $data); } else { return response()->error('QAPP_SYS_ERROR'); } } } public function pay(Request $request, $bid, $cid) { $remind = (int)$request->input('remind'); $oldbid = $bid; $bid = BookService::decodeBidStatic($bid); $book_info = BookConfigService::getBookById($bid);; if (empty($book_info)) response()->error('QAPP_SYS_ERROR'); $this->book_info = $book_info; if($this->distribution_channel_id == 7477 && $bid == 13765){ $book_info->is_on_shelf = 2; } if ($book_info->is_on_shelf == 0 || $book_info->is_on_shelf == 3) { if (!$this->isBookOrdered($bid)) { response()->error('QAPP_OFF_SHELF'); } } //获取章节 $chapter = ChapterService::getChapterNameById($cid, $bid); if (!$chapter) { $combination_chapter = $this->chapterNotExists($bid,$cid); if($combination_chapter){ $chapter = $combination_chapter; $bid = $chapter->bid; $book_info = BookConfigService::getBookById($bid); $oldbid = \Hashids::encode($bid); $this->book_info = $book_info; }else{ return response()->error('QAPP_SYS_ERROR'); } } if ($this->getOrderRecord($bid, $cid)) { ReadRecordService::addReadLog($this->uid, [ 'distribution_channel_id' => $this->distribution_channel_id, 'bid' => $bid, 'cid' => $chapter->id, 'uid' => $this->uid, 'send_order_id' => $this->send_order_id, 'sequence' => $chapter->sequence, ]); ReadRecordService::addReadRecord([ 'uid' => $this->uid, 'bid' => $bid, 'book_name' => $book_info->book_name, 'cid' => $cid, 'chapter_name' => $chapter->name, 'sequence' => $chapter->sequence ]); return response()->item(new ChapterTransformer, $this->getChapter($bid, $cid, $chapter)); } if ($this->balancePay($book_info, $cid, $chapter->size, $chapter->name, $remind)) { UserTaskService::addUserTaskQueue($this->uid, BaseTask::read, UserTaskService::judge_trigger); ReadRecordService::addReadLog($this->uid, [ 'distribution_channel_id' => $this->distribution_channel_id, 'bid' => $bid, 'cid' => $chapter->id, 'uid' => $this->uid, 'send_order_id' => $this->send_order_id, 'sequence' => $chapter->sequence, ]); ReadRecordService::addReadRecord([ 'uid' => $this->uid, 'bid' => $bid, 'book_name' => $book_info->book_name, 'cid' => $cid, 'chapter_name' => $chapter->name, 'sequence' => $chapter->sequence ]); $free_book = BookConfigService::getByBidNoFilter($bid); if($free_book) { if(strtotime($free_book->end_time)+7*86400 >= strtotime(date('Y-m-d'))) { if(Redis::Sismember('qapp:free:virtual:uids'.$free_book->id,$this->uid)){ $now = date('Y-m-d'); $fee = $this->getPrice($book_info, $chapter->size); Redis::hincrby('qapp:book:free:actuality:' . $free_book->id, $now, $fee); Redis::sadd('qapp:free:actuality' . $now, $free_book->id); Redis::sadd('qapp:free:actuality:uids'.$now.$free_book->id,$this->uid); } } } return response()->item(new ChapterTransformer, $this->getChapter($bid, $cid, $chapter)); } else { $fee = $this->getPrice($book_info, $chapter->size); $data = [ 'book_id' => $oldbid, 'book_name' => $book_info->book_name, 'chapter_name' => $chapter->name, 'chapter_id' => $cid, 'pay_type' => $book_info->charge_type, 'fee' => $fee, 'user_balance' => $this->user_info['balance'], 'product_id' => $book_info->product_id, 'uid' => $this->uid, 'distribution_channel_id' => $this->distribution_channel_id, 'is_discount' => 0, 'discount_fee' => '', 'discount' => '' ]; if ($book_info->charge_type == 'BOOK') { return response()->error('QAPP_BOOK_INSUFFICIENT_BALANCE', $data); } elseif ($book_info->charge_type == 'CHAPTER') { return response()->error('QAPP_CHAPTER_INSUFFICIENT_BALANCE', $data); } else { return response()->error('QAPP_SYS_ERROR'); } } } /** * 余额支付 * @param $book_info * @param $chapter_id * @param $chapter_size * @return bool */ protected function balancePay($book_info, $chapter_id, $chapter_size, $chapter_name, $is_remind) { $fee = $this->getPrice($book_info, $chapter_size); if ((int)$this->user_info['balance'] >= $fee) { if ($this->bookOrderOrChapterOrder($book_info, $chapter_id, $fee, $chapter_name, $is_remind)) { return true; } return false; } else { return false; } } /** * 获取章节内容 * @param $bid * @param $cid * @return bool|mixed */ protected function getChapter($bid, $cid, $chapter) { $chapter_content = ChapterService::getChapter($bid, $cid); if (!$chapter_content) return false; $chapter->content = trim(str_replace($chapter_content->name, '', $chapter_content->content)); // 格式特殊处理 $qian=array(" "," ","\t"); $hou=array("","",""); // 去掉所有空格 $chapter->content = str_replace($qian,$hou,$chapter->content); // 2换行变1换行 $chapter->content = str_replace("\n\n", "\n", $chapter->content); $chapter->content = str_replace("\r\n\r\n", "\r\n", $chapter->content); // \Log::info('getChapter_chapter:'.$bid.' cid:'.$cid); // \Log::info($chapter->content); //统计点击率 $key = 'book_click_num_bid_' . $bid; $field = date('Y-m-d'); $old = Redis::hget($key, $field); if (!$old) $old = 0; Redis::hset($key, $field, $old + 1); $force_add_desk_type = $this->addDesktopType($bid, $chapter->sequence); $chapter->force_add_desk_type = $force_add_desk_type; //统计 $this->stats(); $next_chapter_order_status = $this->nextChapterOrderStatus($bid,$chapter->next_cid); $chapter->next_chapter_status = $next_chapter_order_status['next_chapter_status']; $chapter->next_price = $next_chapter_order_status['next_price']; $chapter->charge_type = $this->book_info->charge_type; $this->userBookCombination($chapter); return $chapter; } private function nextChapterOrderStatus($bid,$cid){ $chapter = ChapterService::getChapterNameById($cid, $bid); if(!$chapter || $chapter->is_vip == 0 || $this->book_info->charge_type == 'BOOK'){ return ['next_chapter_status'=>0,'next_price'=>0]; } $is_paid = $this->getOrderRecord($bid,$cid); if($is_paid){ return ['next_chapter_status'=>1,'next_price'=>0]; } $fee = $this->getPrice($this->book_info, $chapter->size); return ['next_chapter_status'=>2,'next_price'=>$fee]; } //短续长 private function userBookCombination($chapter){ if($chapter->prev_cid && $chapter->next_cid){ return ; } if($chapter->next_cid == 0 && $this->book_info->charge_type == 'BOOK'){ $bid = UserBookCombinationConfigService::selectAndSave($this->uid,$this->book_info->bid); if($bid){ $bookInfo = BookConfigService::getBookById($bid); $chapter->next_cid = $bookInfo->first_cid; } } if($chapter->prev_cid == 0 && $this->book_info->charge_type == 'CHAPTER'){ $bid = UserBookCombinationConfigService::getShortBookFromLongBid($this->uid,$this->book_info->bid); if($bid){ $bookInfo = BookConfigService::getBookById($bid); $chapter->prev_cid = $bookInfo->last_cid; } } } private function chapterNotExists($bid,$cid) { //1.全局图书组合配置 $combination = BookConfigService::getCombinationInfo($bid); if($combination){ $chapter = ChapterService::getChapterNameByIdNoCheck($cid); if($chapter){ return $chapter; } return false; } //2.用户图书组合配置 if($this->book_info->charge_type == 'CHAPTER'){ $user_combination = UserBookCombinationConfigService::getShortBookFromLongBook($this->uid,$bid); }else{ $user_combination = UserBookCombinationConfigService::getLongBookFromShortBook($this->uid,$bid); } if($user_combination){ $chapter = ChapterService::getChapterNameByIdNoCheck($cid); if($chapter){ return $chapter; } return false; } return false; } /** * 添加订购记录 * @param $book_info * @param $chapter_id * @param $fee * @return bool */ protected function bookOrderOrChapterOrder($book_info, $chapter_id, $fee, $chapter_name, $is_remind) { if ($book_info['charge_type'] == 'BOOK') { $data = [ 'uid' => $this->uid, 'fee' => $fee, 'u' => $this->send_order_id, 'distribution_channel_id' => $this->distribution_channel_id, 'bid' => $book_info->bid, 'book_name' => $book_info->book_name, 'send_order_id' => $this->send_order_id, ]; return BookOrderService::addOrderRecodeAndDecrUserBalance($data, $this->uid); } else { $data = [ 'uid' => $this->uid, 'fee' => $fee, 'cid' => $chapter_id, 'bid' => $book_info->bid, 'distribution_channel_id' => $this->distribution_channel_id, 'book_name' => $book_info->book_name, 'chapter_name' => $chapter_name, 'send_order_id' => $this->send_order_id, 'is_remind' => $is_remind ]; if ($is_remind) { $this->addOrderRemind($book_info->bid); } return ChapterOrderService::addOrderAndDecrUserBalance($data, $this->uid); } } protected function addOrderRemind($bid) { if (ChapterReminderService::checkIsNoReminder($this->uid, $bid)) { return true; } else { ChapterReminderService::add($this->uid, $bid); return true; } } /** * 是否订购提醒 * @param $chapter_id * @return bool */ protected function isOrderRemind($bid) { $is_no_reminder = ChapterReminderService::checkIsNoReminder($this->uid, $bid) ? 1 : 0; return $is_no_reminder == 0; } /** * 用户是否关注 * @param $uid * @return bool */ protected function getSubscribe() { $res = ForceSubscribeService::forceSubscribeUsersByUid(['uid' => $this->uid]); if ($res) return true; return false; } /** * 获取订购记录 * @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; } /** * 计算价格 * @param $book_info * @param $chapter_size * @return float */ private function getPrice($book_info, $chapter_size = 0) { if ($book_info->charge_type == 'BOOK') { if (BookOrderService::isHasBookOrder($this->uid)) { $this->is_first_book_order = 0; return 1399; } else { $this->is_first_book_order = 1; return 899; } } else { // 获取投放后台账号, $account = ''; $account_send_order = $this->getNowSendOrderInfo(); if($account_send_order){ $account = isset($account_send_order['account'])?$account_send_order['account']:''; } $fee = BookService::getPrice($book_info, $this->distribution_channel_id, $chapter_size,$account); return $fee; } } /** * 用户添加标签 * @param $book_info */ protected function addTag($book_info) { if (!UserDeepReadTagService::isAddTag($this->uid, $book_info->bid)) { try { UserDeepReadTagService::addTag([ 'uid' => $this->uid, 'bid' => $book_info->bid, 'book_name' => $book_info->book_name, 'category_id' => $book_info->category_id, 'category_name' => $book_info->category_name, 'sex_preference' => $book_info->channel_name ? $book_info->channel_name : '', 'distribution_channel_id' => $this->distribution_channel_id ? $this->distribution_channel_id : '0', 'send_order_id' => $this->send_order_id, ]); } catch (\Exception $e) { } } } protected function isBookOrdered($bid) { $chapter_order = ChapterOrderService::checkBookIsOrdered($this->uid, $bid); if ($chapter_order) return true; $res = BookOrderService::getRecordByuidBid($this->uid, $bid); if ($res) 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 stats() { //阅读器统计 WapVisitStatService::recordReaderUvAndPv($this->uid, $this->distribution_channel_id); } //加桌类型 private function addDesktopType($bid, $sequence) { $deault_force_add_desk_type = 0; $send_order_id = $this->GetBindSendOrderId($this->uid); if ($send_order_id) { $send_order_info = SendOrderService::getById($send_order_id); if (!$send_order_info) return $deault_force_add_desk_type; if ($send_order_info->book_id == $bid) { // 派单书籍和观看书籍一致,并设置了强加桌,判断当前章节和设置的强加桌章节 if ($send_order_info->force_add_desk_type == 1 && $send_order_info->force_add_desk_seq) { //在设置的强加桌章节前一章开始 if ($sequence >= ($send_order_info->force_add_desk_seq - 1) ) { $force_add_desk_type = $send_order_info->force_add_desk_type; return $force_add_desk_type; } } if ($send_order_info->force_add_desk_type == 2) { if ($sequence >= $this->book_info->force_subscribe_chapter_seq && $sequence <= $this->book_info->force_subscribe_chapter_seq + 3) { $force_add_desk_type = $send_order_info->force_add_desk_type; return $force_add_desk_type; } } if($send_order_info->force_add_desk_type == 3){ //弱加桌+强加桌 ,即强加桌章节之前的章节均弱加桌,之后的章节显示强加桌: $need_sequence = $send_order_info->force_add_desk_seq; if(!$need_sequence){ $need_sequence = $this->book_info->force_subscribe_chapter_seq; } if( $sequence >= ( $need_sequence-1 ) ){ //之后的章节显示强加桌 return 1; }else{ ////强加桌章节之前的章节均弱加桌 return 2; } } return $deault_force_add_desk_type; } } //无派单,或者派单书籍与 此次书籍不一致,直接使用 原书籍的默认强关章节 $book_info = BookConfigService::getBookById($bid); if ($book_info && $book_info->force_subscribe_chapter_seq) { if ($sequence >= ($book_info->force_subscribe_chapter_seq - 1) ) { return 2; } } return $deault_force_add_desk_type; } /** * [bindSendOrderId description] * @param [type] $uid [description] * @param [type] $send_order_id [description] * @return [type] [description] */ public function bindSendOrderId($uid, $send_order_id) { if ($send_order_id) { $res = Redis::hset('book_read_chapter:' . $uid,'send_order_id', $send_order_id); } } /** * [bindSendOrderId description] * @param [type] $uid [description] * @param [type] $send_order_id [description] * @return [type] [description] */ public function GetBindSendOrderId($uid) { try { $send_order_id = Redis::hget('book_read_chapter:' . $uid, 'send_order_id'); if ($send_order_id) return (int)$send_order_id; } catch (\Exception $e) { } } }