order('sort DESC, id DESC') ->select() ->toArray(); View::assign('bannerList', $bannerList); return View::fetch(); } /** * 获取站点资讯列表 */ public function siteNewslist() { // 获取站点资讯分类(顶级分类id为1的子分类) $categories = ArticlesCategory::where('cid', 1) ->where('delete_time', null) ->select() ->toArray(); $articles = []; $categoryData = []; // 提取分类名称和ID用于前端tab显示 foreach ($categories as $category) { $categoryData[] = [ 'id' => $category['id'], 'name' => $category['name'] ]; // 获取该分类下的文章,限制4条 $articles = Articles::where('cate', $category['id']) ->where('delete_time', null) ->where('status', 2) ->order('id', 'desc') ->field('id, cate, title, image, author, publishdate, views') ->limit(4) ->select() ->toArray(); } return json([ 'code' => 1, 'msg' => '获取成功', 'articles' => $articles, 'categories' => $categoryData ]); } /** * 获取技术文章列表 */ public function technicalArticleslist() { // 获取技术文章分类(顶级分类id为3的子分类) $categories = ArticlesCategory::where('cid', 3) ->where('delete_time', null) ->select() ->toArray(); // 组装分类数据,方便后续查找 $categoryData = []; $categoryImageMap = []; $articlesByCategory = []; foreach ($categories as $category) { $categoryData[] = [ 'id' => $category['id'], 'name' => $category['name'] ]; $categoryImageMap[$category['id']] = $category['image'] ?? ''; // 获取每个分类下的文章,限制12条 $articles = Articles::where('cate', $category['id']) ->where('delete_time', null) ->where('status', 2) ->order('id', 'desc') ->field('id, cate, title, image, author, publishdate, views') ->limit(12) ->select() ->toArray(); // 替换image为空的文章 foreach ($articles as &$article) { if (empty($article['image']) && !empty($categoryImageMap[$article['cate']])) { $article['image'] = $categoryImageMap[$article['cate']]; } } unset($article); $articlesByCategory[$category['id']] = $articles; } return json([ 'code' => 1, 'msg' => '获取成功', 'articles' => $articlesByCategory, 'categories' => $categoryData ]); } /** * 获取banner列表 */ public function bannerlist() { // 获取启用状态的banner列表,按排序倒序 $bannerList = Banner::where('delete_time', null) ->order('sort DESC, id DESC') ->select() ->toArray(); return json(['code' => 1, 'msg' => '获取成功', 'banner' => $bannerList]); } /** * 获取资源下载列表 */ public function resourcesList() { // 获取资源分类(顶级分类id为2的子分类) $categories = ResourcesCategory::where('cid', 2) ->where('delete_time', null) ->select() ->toArray(); // 组装分类数据 $categoryData = []; $categoryImageMap = []; $resourcesByCategory = []; foreach ($categories as $category) { $categoryData[] = [ 'id' => $category['id'], 'name' => $category['name'] ]; $categoryImageMap[$category['id']] = $category['image'] ?? ''; // 获取每个分类下的资源,限制8条 $resources = Resources::where('cate', $category['id']) ->where('delete_time', null) ->where('status', 1) ->order('id', 'desc') ->field('id, cate, title, desc, downloads, create_time, icon, views, uploader') ->limit(8) ->select() ->toArray(); // 替换thumbnail为空的资源 foreach ($resources as &$resource) { if (empty($resource['thumbnail']) && !empty($categoryImageMap[$resource['cate']])) { $resource['thumbnail'] = $categoryImageMap[$resource['cate']]; } } unset($resource); $resourcesByCategory[$category['id']] = $resources; } // 合并所有分类的资源 $allResources = []; foreach ($resourcesByCategory as $resources) { $allResources = array_merge($allResources, $resources); } // 按上传时间排序 usort($allResources, function($a, $b) { return $b['create_time'] - $a['create_time']; }); // 只取最新的8条 $allResources = array_slice($allResources, 0, 8); return json([ 'code' => 1, 'msg' => '获取成功', 'resources' => $allResources, 'categories' => $categoryData ]); } /** * 获取程序下载列表 */ public function programList() { // 获取程序分类(顶级分类id为4的子分类) $categories = ResourcesCategory::where('cid', 1) ->where('delete_time', null) ->select() ->toArray(); // 组装分类数据 $categoryData = []; $categoryImageMap = []; $programsByCategory = []; foreach ($categories as $category) { $categoryData[] = [ 'id' => $category['id'], 'name' => $category['name'] ]; $categoryImageMap[$category['id']] = $category['image'] ?? ''; // 获取每个分类下的程序,限制8条 $programs = Resources::where('cate', $category['id']) ->where('delete_time', null) ->where('status', 1) ->order('id', 'desc') ->field('id, cate, title, desc, downloads, create_time, icon, views, uploader') ->limit(8) ->select() ->toArray(); // 替换thumbnail为空的程序 foreach ($programs as &$program) { if (empty($program['thumbnail']) && !empty($categoryImageMap[$program['cate']])) { $program['thumbnail'] = $categoryImageMap[$program['cate']]; } } unset($program); $programsByCategory[$category['id']] = $programs; } // 合并所有分类的程序 $allPrograms = []; foreach ($programsByCategory as $programs) { $allPrograms = array_merge($allPrograms, $programs); } // 按上传时间排序 usort($allPrograms, function($a, $b) { return $b['create_time'] - $a['create_time']; }); // 只取最新的8条 $allPrograms = array_slice($allPrograms, 0, 8); return json([ 'code' => 1, 'msg' => '获取成功', 'programs' => $allPrograms, 'categories' => $categoryData ]); } /** * 获取游戏下载列表 */ public function gameList() { // 获取游戏分类(顶级分类id为8的子分类) $categories = ResourcesCategory::where('cid', 8) ->where('delete_time', null) ->select() ->toArray(); // 组装分类数据 $categoryData = []; $categoryImageMap = []; $programsByCategory = []; foreach ($categories as $category) { $categoryData[] = [ 'id' => $category['id'], 'name' => $category['name'], 'image' => $category['image'] ?? '' ]; // 获取每个分类下的游戏,限制8条 $programs = Resources::where('cate', $category['id']) ->where('delete_time', null) ->where('status', 1) ->order('id', 'desc') ->field('id, cate, title, desc, downloads, create_time, icon, views, uploader, number, url, code') ->limit(8) ->select() ->toArray(); // 处理游戏数据 foreach ($programs as &$program) { // 如果没有图标,使用分类图片 if (empty($program['icon']) && !empty($category['image'])) { $program['icon'] = $category['image']; } // 格式化时间 $program['create_time'] = date('Y-m-d H:i:s', $program['create_time']); } unset($program); $programsByCategory[$category['id']] = $programs; } // 合并所有分类的游戏 $allPrograms = []; foreach ($programsByCategory as $programs) { $allPrograms = array_merge($allPrograms, $programs); } // 按上传时间排序 usort($allPrograms, function($a, $b) { return strtotime($b['create_time']) - strtotime($a['create_time']); }); // 只取最新的8条 $allPrograms = array_slice($allPrograms, 0, 8); return json([ 'code' => 0, 'msg' => '获取成功', 'data' => [ 'games' => $allPrograms, 'categories' => $categoryData ] ]); } }