skitsLibraryReposotpry = new SkitsLibraryReposotpry; $this->signinReposotpry = new SigninReposotpry; $this->userReposotpry = new UserReposotpry; $this->bookCaseReposotpry = new BookCaseReposotpry; $this->historyReposotpry = new HistoryReposotpry; } /** * 推荐过程 function * * @author dotdotdot <6383846@qq.com> * @date 2022-08-09 * @param array $params * @return array */ public function recommend() { $recommendModelOneFields = ['id', 'cover', 'name', 'description']; $recommendModelOneTop = 1; $recommendModelOneLimit = 2; $recommendModelOneData = $this->skitsLibraryReposotpry->selectFindInTop($recommendModelOneFields, $recommendModelOneTop, $recommendModelOneLimit); $recommendModelTwoFields = ['id', 'cover', 'name', 'description']; $recommendModelTwoTop = 2; $recommendModelTwoLimit = 3; $recommendModelTwoData = $this->skitsLibraryReposotpry->selectFindInTop($recommendModelTwoFields, $recommendModelTwoTop, $recommendModelTwoLimit); $maxCount = count($recommendModelTwoData); foreach ($recommendModelTwoData as $recommendModelTwoKey => $recommendModelTwo) { $recommendModelTwoData[$recommendModelTwoKey]['heat_degree'] = sprintf("%d%d", $maxCount--, mt_rand(1000, 9999)); } $recommendModelThreeFields = ['id', 'cover', 'name', 'description']; $recommendModelThreeTop = 3; $recommendModelThreeLimit = 2; $recommendModelThreeData = $this->skitsLibraryReposotpry->selectFindInTop($recommendModelThreeFields, $recommendModelThreeTop, $recommendModelThreeLimit); $recommendModelFourFields = ['id', 'cover']; $recommendModelFourTop = 4; $recommendModelFourLimit = 4; $recommendModelFourData = $this->skitsLibraryReposotpry->selectFindInTop($recommendModelFourFields, $recommendModelFourTop, $recommendModelFourLimit); return [ 'recommend_model_one_data' => $recommendModelOneData, 'recommend_model_two_data' => $recommendModelTwoData, 'recommend_model_three_data' => $recommendModelThreeData, 'recommend_model_four_data' => $recommendModelFourData ]; } /** * 追剧过程 function * * @author dotdotdot <6383846@qq.com> * @date 2022-08-09 * @param array $params * @return array */ public function chasingDrama(array $params) { $uid = $params['uid']; $skitsLibraryRandFields = ['id', 'cover', 'name']; $skitsLibraryRandOrder = ['rand()']; $randData = $this->skitsLibraryReposotpry->selectByRand($skitsLibraryRandFields, $skitsLibraryRandOrder); $signinFields = ['uid']; $signinData = $this->signinReposotpry->selectByUidCount($signinFields, $uid); $chasingDramaData = []; $bookCaseFields = ['uid', 'articleid']; $chasingDramaData = $this->bookCaseReposotpry->selectByUid($bookCaseFields, $uid); $tmpSkitsLibraryData = []; $tmpHistrotyData = []; if (!empty($chasingDramaData)) { $articleId = array_column($chasingDramaData, 'articleid'); $historyFields = ['articleid', 'chapterid', 'order']; $historyData = $this->historyReposotpry->selectByUidInArticleid($historyFields, $uid, $articleId); $skitsLibraryFields = ['id', 'cover', 'name']; $skitsLibraryData = $this->skitsLibraryReposotpry->selectInId($skitsLibraryFields, $articleId); $tmpHistrotyData = array_columns($historyData, 'articleid', ['order' , 'chapterid']); $tmpSkitsLibraryData = array_columns($skitsLibraryData, 'id', ['cover', 'name']); } foreach ($chasingDramaData as $chasingDramaKey => $chasingDramaValue) { $chasingDramaData[$chasingDramaKey]['cover'] = $tmpSkitsLibraryData[$chasingDramaValue['articleid']]['cover']; $chasingDramaData[$chasingDramaKey]['name'] = $tmpSkitsLibraryData[$chasingDramaValue['articleid']]['name']; $chasingDramaData[$chasingDramaKey]['order'] = 0; $chasingDramaData[$chasingDramaKey]['sid'] = 0; if(isset($tmpHistrotyData[$chasingDramaValue['articleid']]['chapterid'])){ $chasingDramaData[$chasingDramaKey]['order'] = $tmpHistrotyData[$chasingDramaValue['articleid']]['order']; $chasingDramaData[$chasingDramaKey]['sid'] = $tmpHistrotyData[$chasingDramaValue['articleid']]['chapterid']; } if (!isset($tmpSkitsLibraryData[$chasingDramaValue['articleid']])) { unset($chasingDramaData[$chasingDramaKey]); } } $chasingDramaData = array_values($chasingDramaData); return [ 'chasing_drama_data' => $chasingDramaData, 'rand_data' => $randData, 'signin' => $signinData ]; } /** * 签到过程 function * * @author dotdotdot <6383846@qq.com> * @date 2022-08-09 * @param array $params * @return array */ public function signin(array $params) { $uid = $params['uid']; $signinFields = ['uid']; $countData = $this->signinReposotpry->selectByUidCount($signinFields, $uid); if (!empty($countData)) { throw new ApiException('今日已签到', EnumCode::SigninIsExist); } Db::startTrans(); try { $eGold = rand(15, 30); $signiniInsertData = [ 'uid' => $uid, 'money' => $eGold, 'addtime' => time() ]; $this->signinReposotpry->insert($signiniInsertData); $this->userReposotpry->updateIncEgoldByUid($uid, $eGold); Db::commit(); return $eGold; } catch (\Exception $e) { Db::rollback(); throw new ApiException('签到失败,请稍后再试!', EnumCode::ServiceError); } } }