WebPageModuleController.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. namespace App\Http\Controllers\Game;
  3. use App\Game\GameCard;
  4. use App\Game\GlobalUserInfo;
  5. use App\Game\PageModule;
  6. use App\Game\Route;
  7. use App\Http\Controllers\Controller;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Support\Facades\Redis;
  10. // use Yansongda\Pay\Log;
  11. class WebPageModuleController extends Controller
  12. {
  13. public function PageModules(Request $request,$page_id){
  14. $key="pages_".$page_id;
  15. // $data=Redis::get($key);
  16. $data=null;
  17. if(!$data){
  18. $modules = PageModule::with(['subs' => function ($query) {
  19. $query->with('subs'); // 递归加载子模块
  20. }])->where('page_id', $page_id)->whereNull('parent_id')->orderBy('pos_index')->get();
  21. if ($request->input('abc')) {
  22. // 遍历打印每个模块及其子模块
  23. foreach ($modules as $module) {
  24. echo "=== Module ID: {$module->id} ===\n";
  25. echo "Type: {$module->type}\n";
  26. echo "Subs Count: " . $module->subs->count() . "\n";
  27. //echo "Subs Data:\n";
  28. //print_r($module->subs->toArray());
  29. echo "\n\n";
  30. echo "\br\br";
  31. }
  32. }
  33. $data=$modules->map(function (PageModule $module) {
  34. return $module->getSpecificDataAttribute();
  35. });
  36. Redis::setex($key,600,json_encode($data));
  37. }else{
  38. $data=json_decode($data,true);
  39. }
  40. return response()->json([
  41. 'code' => 0,
  42. 'data' => $data,
  43. 'msg' => '',
  44. ]);
  45. }
  46. public function GameList(Request $request)
  47. {
  48. $type=$request->input('type');
  49. $id=$request->input('id');
  50. PageModule::$enableStateCheck=false;
  51. if($id){
  52. $module = PageModule::where('id', $id)->first();
  53. }else{
  54. $module = PageModule::where('tabtype', $type)->where('type','ModuleGameList')->first();
  55. }
  56. $pageSize = $request->input('pageSize', PageModule::getDefaultPageSize()); // 从请求获取pageSize或使用默认值
  57. $page = $request->input('page', 1); // 从请求获取当前页或使用默认值
  58. // 根据模块获取游戏ID列表
  59. // 获取与模块相关的游戏列表并应用分页
  60. $gamesQuery = $module->games();
  61. $total = $gamesQuery->count();
  62. $games = $gamesQuery->forPage($page, $pageSize)->get();
  63. $games=GameCard::formatGames($games);
  64. $totalPage = ceil($total / $pageSize);
  65. return response()->json([
  66. 'tabtype' =>$type,
  67. 'data' => $games,
  68. 'page' => $page,
  69. 'pageSize' => $pageSize,
  70. 'total' => $total,
  71. 'totalPage' => $totalPage,
  72. ]);
  73. }
  74. public function addFavorite(Request $request)
  75. {
  76. if($request->has('id'))GlobalUserInfo::$me->addFavoGame($request->id);
  77. return apiReturnSuc();
  78. }
  79. public function removeFavorite(Request $request)
  80. {
  81. if($request->has('id'))GlobalUserInfo::$me->removeFavoGame($request->id);
  82. return apiReturnSuc();
  83. }
  84. public function getFavorite(Request $request)
  85. {
  86. $user=$request->user();
  87. $favorites=[];
  88. if($user&&!empty(GlobalUserInfo::$me->FavoriteGames)){
  89. $gameids=trim(GlobalUserInfo::$me->FavoriteGames,',');
  90. $orderClause = 'FIELD(id, ' . $gameids . ')';
  91. $gameids=explode(',', $gameids);
  92. $favorites = GameCard::whereIn('id', $gameids)->orderByRaw($orderClause)->get(); // 只获取状态为 1 的游戏
  93. $favorites = GameCard::formatGames($favorites);
  94. }
  95. return apiReturnSuc($favorites);
  96. }
  97. }