wangzq 2 gadi atpakaļ
vecāks
revīzija
71d0533601

+ 4 - 1
app/Cache/CacheKeys.php

@@ -37,6 +37,9 @@ class CacheKeys
         'user'     => [
             'info' => 'User:i:%s',
             'data' => 'User:d:%s',
-        ]
+        ],"home" =>[
+            "page" => "Qapp.Home:Page:%s:%s",
+            "rank" => "Qapp.Rank:Page:%s:%s"
+        ],
     ];
 }

+ 118 - 0
app/Cache/Home/HomeCache.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ${CARET}
+ * @file:HomeCache.php
+ * @Created by gnitif
+ * @Date: 2022/12/6
+ * @Time: 17:37
+ */
+
+
+namespace App\Cache\Home;
+
+
+use App\Libs\Utils;
+use Illuminate\Support\Facades\Redis;
+
+
+class HomeCache
+{
+
+    /**
+     * 获取首页数据缓存
+     * name: getHomePageInfo
+     * @param mixed $packageName 包名
+     * @param mixed $sex 性别
+     * @return mixed
+     * date 2022/12/06 17:43
+     */
+    public static function getHomePageInfo($packageName, $sex)
+    {
+        $cacheKey = Utils::getCacheKey("home.page", [$packageName, $sex]);
+        $data = Redis::hget($cacheKey, $sex);
+        if ($data) {
+            $data = json_decode($data, true);
+        }
+        return $data;
+    }
+
+    /**
+     * 首页数据缓存
+     * name: setHomePageInfo
+     * @param mixed $packageName 包名
+     * @param mixed $sex 性别
+     * @param mixed $data 数据
+     * @param int $seconds 有效期
+     * date 2022/12/07 10:59
+     */
+    public static function setHomePageInfo($packageName, $sex, $data, $seconds = 0)
+    {
+        $cacheKey = Utils::getCacheKey("home.page", [$packageName, $sex]);
+        self::setHashData($cacheKey, $sex, $data, $seconds);
+    }
+
+    /**
+     * 排行榜数据缓存
+     * name: setHomePageInfo
+     * @param mixed $packageName 包名
+     * @param mixed $sex 性别
+     * @param mixed $data 数据
+     * @param int $seconds 有效期(秒)
+     * date 2022/12/07 10:59
+     */
+    public static function setRankPageInfo($packageName, $sex, $data, $seconds = 0)
+    {
+        $cacheKey = Utils::getCacheKey("home.rank", [$packageName, $sex]);
+        self::setHashData($cacheKey, $sex, $data, $seconds);
+    }
+
+    /**
+     * 获取排行榜数据缓存
+     * name: getHomePageInfo
+     * @param mixed $packageName 包名
+     * @param mixed $sex 性别
+     * @return mixed
+     * date 2022/12/06 17:43
+     */
+    public static function getRankPageInfo($packageName, $sex)
+    {
+        $cacheKey = Utils::getCacheKey("home.rank", [$packageName, $sex]);
+        return  self::getHashData($cacheKey,$sex);
+    }
+
+    /**
+     * 设置缓存数据
+     * name: setData
+     * @param mixed  $cacheKey 键值
+     * @param mixed $field 字段
+     * @param array $data 数据
+     * @param int $seconds 有效期(秒)
+     * date 2022/12/07 11:13
+     */
+    protected static function setHashData($cacheKey, $field, $data, $seconds = 0)
+    {
+        Redis::hset($cacheKey, $field, json_encode($data));
+        if ($seconds > 0) {
+            Redis::expire($cacheKey, $seconds);
+        }
+    }
+
+    /**
+     *
+     * name: getData
+     * @param mixed $cacheKey 键值
+     * @param mixed $field 字段
+     * @return mixed
+     * date 2022/12/07 11:15
+     */
+    protected static function getHashData($cacheKey, $field)
+    {
+        $data = Redis::hget($cacheKey, $field);
+        if ($data) {
+            $data = json_decode($data, true);
+        }
+
+        return $data;
+    }
+
+}

+ 48 - 18
app/Http/Controllers/QuickApp/Book/BookController.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers\QuickApp\Book;
 
+use App\Cache\Home\HomeCache;
 use App\Consts\BaseConst;
 use App\Libs\Utils;
 use App\Modules\Activity\Services\ActivityService;
@@ -195,20 +196,43 @@ class BookController extends BaseController
         $package     = $request->header('x-package', '');
         $brand       = $request->header('x-nbrand', '');
         $codeVersion = $request->header('x-codeversion', '');
-        $isAuth = check_qapp_auth($package ,0);
+
+        // $isAuth = check_qapp_auth($package ,0);
         // 根据包名、平台、版本号判断是否审核
 
+       $result = HomeCache::getHomePageInfo($package,$sex);
+       if(is_empty($result)){
+           $result = $this->getHomeDataFromDb($request,$sex);
+           HomeCache::setHomePageInfo($package,$sex,$result,86400+rand(0,100));
+       }
+       return response()->success($result);
+
+    }
+
+    /****
+     * 从数据库获取首页数据
+     * name: getHomeDataFromDb
+     * @param Request $request
+     * @param $sex
+     * @return array|array[]
+     * date 2022/12/06 15:51
+     */
+    protected  function getHomeDataFromDb(Request $request, $sex){
+
+        $package     = $request->header('x-package', '');
+        $brand       = $request->header('x-nbrand', '');
+        $codeVersion = $request->header('x-codeversion', '');
+        $isAuth = check_qapp_auth($package ,0);
+        $isAuth = check_qapp_auth($package ,0);
         if (Utils::checkIsAudit($package, $brand, $codeVersion) || $isAuth == false) {
-            $result = BookAuditService::getHomeBooksData($sex, $package,$isAuth);
-            return response()->success($result);
+            return BookAuditService::getHomeBooksData($sex, $package,$isAuth);
         }
         $user =  (new QappUserService)->getGolableUser();
-         if($package == "com.beidao.kuaiying.yueai" && $sex == "male" && isset($user->uid) && !empty($user->uid) &&  $user->send_order_id  >  0){
+        if($package == "com.beidao.kuaiying.yueai" && $sex == "male" && isset($user->uid) && !empty($user->uid) &&  $user->send_order_id  >  0){
 
             $orderRecord = ChapterOrderService::hasUserRecord($user->uid);
             if($orderRecord){
-                $result  = BookAuditService::getYueaiHomeBooksData($sex, $package,$isAuth,1);
-                return  response()->success($result);
+                return BookAuditService::getYueaiHomeBooksData($sex, $package,$isAuth,1);
             }
         }
 
@@ -243,10 +267,9 @@ class BookController extends BaseController
                 \Log::info('un_send_order_book:uid:'.$this->uid.' $package:'.$package);
                 $result = $this->getCheckBids($channel,$books,$package_id,$package);
                 if(isset($result[1]['books']) && count((array)$result[1]['books']) > 1){
-                    return response()->success($result);
+                    return  $result;
                 }
-                $result = $this->getCheckBids($channel,$books,0,$package);
-                return response()->success($result);
+                return $this->getCheckBids($channel,$books,0,$package);
             }else{
                 $package_id = 0;
             }
@@ -255,9 +278,7 @@ class BookController extends BaseController
             $package_id = 0;
         }
         \Log::info('un_send_order_book:package_id3:'.$package_id.' $package:'.$package);
-        $result = $this->getCheckBids($channel,$books,$package_id,$package);
-        return response()->success($result);
-
+        return $this->getCheckBids($channel,$books,$package_id,$package);
     }
 
     /**
@@ -519,6 +540,18 @@ class BookController extends BaseController
             return response()->error('PARAM_ERROR');
         }
 
+        $result = HomeCache::getRankPageInfo($package,$sex);
+        if(is_empty($result)){
+            $result = $this->getRankData($package,$sex,$channel_id);
+            if(!is_empty($result)) {
+                HomeCache::setRankPageInfo($package, $sex, $result, 86400 + rand(0, 100));
+            }
+        }
+
+        return response()->success($result);
+
+    }
+    protected function getRankData($package,$sex,$channel_id){
         $bids =  BookConfigService::getAvailableBIdsbyBids( BookConfigService::getRankList($package,$sex),$channel_id,false);
         if (count($bids) >  30){
             $bids = array_chunk($bids,30)[0];
@@ -531,13 +564,10 @@ class BookController extends BaseController
                     11680, 11926, 12462, 7836, 11681, 11664, 11928, 8631];
             }
         }
-
-        $books = collectionTransform(new BookTransformer, BookConfigService::getBookLists(compact('bids','channel_id')));
-
-        return response()->success($books);
-
+        
+        return collectionTransform(new BookTransformer, BookConfigService::getBookLists(compact('bids','channel_id')));
     }
-
+    
     public function rankOld(Request $request)
     {
         // 1:男频,2:女频

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 56 - 49
app/Modules/Book/Services/BookConfigService.php