get($key); if ($bookId !== false) { LogService::info("SinglePushOrders callback out_trade_no: {$orderInfo['out_trade_no']}"); //完成购买 $book = BookService::instance()->getBookModel()->getBooksInfo([$bookId]); if (!$book) { LogService::error('书籍不存在'); return $this->setData(true)->getReturn(); } $exists = FinancialService::instance()->getConsumeModel()->setConnect($orderInfo['user_id']) ->where('user_id', $orderInfo['user_id']) ->where('book_id', $bookId) ->where('type', BookConstants::BOOK_BILLING_MODEL_BOOK) ->find(); $recharge = FinancialService::instance()->getRechargeModel()->setConnect($orderInfo['user_id']) ->where('user_id', $orderInfo['user_id']) ->where('orders_id', $orderInfo['id']) ->find(); if ($recharge) { $kandian = $recharge['remain_kandian']; if (!$exists) { //更新剩余书币为0 FinancialService::instance()->getRechargeModel()->setConnect($orderInfo['user_id'])->update(['remain_kandian' => 0], ['id' => $recharge['id']]); $cache = CacheConstants::getKandianUserRechargeListCacheKey($orderInfo['user_id']); Redis::instance()->del($cache); $consume = [ 'user_id' => $orderInfo['user_id'], 'book_id' => $bookId, 'book_name' => $book[$bookId]['name'], 'type' => BookConstants::BOOK_BILLING_MODEL_BOOK, 'chapter_id' => '', 'chapter_name' => '', 'kandian' => intval($kandian), 'dd_kandian' => $recharge['dd'] == 1 ? intval($kandian) : 0, 'createtime' => time(), 'updatetime' => time(), 'extend1' => $bookId, 'extend2' => '', ]; $info = [ 'id' => $recharge['id'], 'kandian' => $recharge['kandian'], 'free_kandian' => 0, 'dd_kandian' => $recharge['dd'] == 1 ? $recharge['kandian'] : 0, 'dd_free_kandian' => 0, 'remark'=>'内推页直接购买书籍' ]; $consume['consume_info'] = json_encode($info,JSON_UNESCAPED_UNICODE); FinancialService::instance()->getConsumeModel()->setConnect($orderInfo['user_id'])->insertGetId($consume); model("PrivateBookPageResource")->where('book_id',$bookId)->setInc('read_num'); } else { LogService::info('书籍已经存在'); } BookService::instance()->setBookShelf($bookId, $orderInfo['user_id']); //删除缓存 $redisKey = CacheConstants::getSinglePushBuyBookCache($orderInfo['user_id']); Redis::instance()->del($redisKey); } else { LogService::error('充值记录不存在'); } } return $this->setData(true)->getReturn(); } /** * @param $bookIds * @param $userInfo * @return array */ public function isPayBook($bookIds,$userInfo) { if ($bookIds == false ){ return []; } $redisKey = CacheConstants::getSinglePushBuyBookCache($userInfo->id); $redisIds = Redis::instance()->get($redisKey); if (empty($redisIds)){ $consumeBook = FinancialService::instance()->getConsumeModel()->setConnect($userInfo->id) ->field('book_id') ->where('user_id', $userInfo->id) ->where('type', BookConstants::BOOK_BILLING_MODEL_BOOK) ->select(); $redisIds = !empty($consumeBook) ? implode(',',array_column($consumeBook,'book_id')) : "1,"; Redis::instance()->set($redisKey,$redisIds,3600*24); } $redisIdsArr = explode(',',$redisIds); $res = array_intersect($redisIdsArr,$bookIds); return $res; } }