From 9edafa66e752d736fc9ffc9c5d698f038c9c175f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E5=BC=BA?= <357099073@qq.com> Date: Fri, 26 Dec 2025 15:30:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E7=AB=A0=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 4 +- app/index/controller/ArticlesController.php | 117 +++++++++++++++--- app/index/controller/ResourcesController.php | 65 +++++++++- app/index/view/game/detail.php | 39 ++++-- .../temp/745a6917c29d4d1aec94c5bc5dbce0b2.php | 4 +- 5 files changed, 199 insertions(+), 30 deletions(-) diff --git a/.env b/.env index e99162b..2e712da 100644 --- a/.env +++ b/.env @@ -5,11 +5,11 @@ DEFAULT_TIMEZONE = Asia/Shanghai [DATABASE] TYPE = mysql -HOSTNAME = 192.168.31.10 +HOSTNAME = 212.64.112.158 DATABASE = yunzertest USERNAME = yunzertest PASSWORD = zKMDMEs7YP3SLDEF -HOSTPORT = 3306 +HOSTPORT = 3388 CHARSET = utf8 DEBUG = true diff --git a/app/index/controller/ArticlesController.php b/app/index/controller/ArticlesController.php index a4e5134..b40b997 100644 --- a/app/index/controller/ArticlesController.php +++ b/app/index/controller/ArticlesController.php @@ -325,38 +325,123 @@ class ArticlesController extends BaseController // 构建查询条件 $where = [ - ['r.id', '=', $id], - ['r.delete_time', '=', null], - ['r.status', '=', 1], // 已审核的资源 - ['r.push', '=', 1], // 已推送的资源 + ['a.id', '=', $id], + ['a.delete_time', '=', null], + ['a.status', '=', 2], // 已发布的文章 ]; - // 查询资源详情,联查分类名称 - $resource = Resources::where($where) - ->field('r.id,r.title,r.cate,r.icon,r.price,r.code,r.desc,r.number,r.content,r.views,r.downloads,r.create_time,r.update_time,r.url,r.fileurl,c.name as cate_name') - ->alias('r') - ->join('resources_category c', 'r.cate = c.id') + // 查询文章详情,联查分类信息 + $article = Articles::where($where) + ->field('a.id,a.title,a.cate,a.image,a.desc,a.author,a.content,a.publishdate,a.views,a.likes,a.is_trans,a.transurl,a.push,a.create_time,ac.name as cate_name') + ->alias('a') + ->join('articles_category ac', 'a.cate = ac.id', 'LEFT') ->find(); - if (!$resource) { + if (!$article) { return json([ 'code' => 1, - 'msg' => '资源不存在或已删除' + 'msg' => '文章不存在或已删除' ]); } // 转换为数组并处理数据 - $resource = $resource->toArray(); + $article = $article->toArray(); - // 将cate字段替换为分类名称 - $resource['cate'] = $resource['cate_name']; - unset($resource['cate_name']); + // 获取当前文章的分类ID和作者(用于查询相关内容) + $currentCateId = $article['cate']; + $currentAuthor = $article['author']; + + // 查询上一篇(同分类,ID更小的,按ID倒序取第一个) + $prevArticle = Articles::where([ + ['id', '<', $id], + ['cate', '=', $currentCateId], + ['delete_time', '=', null], + ['status', '=', 2] + ]) + ->field('id,title,image') + ->order('id', 'desc') + ->find(); + + // 查询下一篇(同分类,ID更大的,按ID正序取第一个) + $nextArticle = Articles::where([ + ['id', '>', $id], + ['cate', '=', $currentCateId], + ['delete_time', '=', null], + ['status', '=', 2] + ]) + ->field('id,title,image') + ->order('id', 'asc') + ->find(); + + // 查询相关文章(同分类,排除当前文章,按发布时间倒序取5个) + $relatedArticles = Articles::where([ + ['id', '<>', $id], + ['cate', '=', $currentCateId], + ['delete_time', '=', null], + ['status', '=', 2] + ]) + ->field('id,title,image,views,likes,publishdate') + ->order('publishdate', 'desc') + ->limit(5) + ->select(); + + // 查询当前作者的文章发布数量 + $articleCount = Articles::where([ + ['author', '=', $currentAuthor], + ['delete_time', '=', null], + ['status', '=', 2] + ])->count(); + + // 查询当前作者的资源发布数量 + $resourceCount = Resources::where([ + ['delete_time', '=', null], + ['status', '=', 1], + ['push', '=', 1] + ])->count(); + + // 格式化时间 + $article['publishdate'] = date('Y-m-d H:i:s', strtotime($article['publishdate'])); + $article['create_time'] = date('Y-m-d H:i:s', strtotime($article['create_time'])); + + // 分类名称 + $article['category_name'] = $article['cate_name'] ?? ''; + unset($article['cate_name']); + + // 添加作者统计信息 + $article['articlecount'] = $articleCount; + $article['resourcecount'] = $resourceCount; + + // 处理相关文章数据 + $relatedData = []; + if ($relatedArticles) { + foreach ($relatedArticles as $related) { + $relatedData[] = [ + 'id' => $related['id'], + 'title' => $related['title'], + 'image' => $related['image'], + 'views' => $related['views'], + 'likes' => $related['likes'], + 'publishdate' => date('Y-m-d H:i:s', strtotime($related['publishdate'])) + ]; + } + } // 返回数据 return json([ 'code' => 0, 'msg' => '获取成功', - 'data' => $resource + 'data' => [ + 'article' => $article, + 'prev_article' => $prevArticle ? [ + 'id' => $prevArticle['id'], + 'title' => $prevArticle['title'] + ] : null, + 'next_article' => $nextArticle ? [ + 'id' => $nextArticle['id'], + 'title' => $nextArticle['title'] + ] : null, + 'related_articles' => $relatedData + ] ]); } catch (\Exception $e) { diff --git a/app/index/controller/ResourcesController.php b/app/index/controller/ResourcesController.php index 1438ac8..320324e 100644 --- a/app/index/controller/ResourcesController.php +++ b/app/index/controller/ResourcesController.php @@ -73,11 +73,74 @@ class ResourcesController extends BaseController // 转换为数组并处理数据 $resource = $resource->toArray(); + // 获取当前资源的分类ID(用于查询相关内容) + $currentCateId = $resource['cate']; + + // 查询上一篇(同分类,ID更小的,按ID倒序取第一个) + $prevResource = Resources::where([ + ['id', '<', $id], + ['cate', '=', $currentCateId], + ['delete_time', '=', null], + ['status', '=', 1], + ['push', '=', 1] + ]) + ->field('id,title,icon') + ->order('id', 'desc') + ->find(); + + // 查询下一篇(同分类,ID更大的,按ID正序取第一个) + $nextResource = Resources::where([ + ['id', '>', $id], + ['cate', '=', $currentCateId], + ['delete_time', '=', null], + ['status', '=', 1], + ['push', '=', 1] + ]) + ->field('id,title,icon') + ->order('id', 'asc') + ->find(); + + // 查询相关文章(同分类,排除当前文章,按时间倒序取5个) + $relatedResources = Resources::where([ + ['id', '<>', $id], + ['cate', '=', $currentCateId], + ['delete_time', '=', null], + ['status', '=', 1], + ['push', '=', 1] + ]) + ->field('id,title,icon,views,downloads,create_time') + ->order('create_time', 'desc') + ->limit(5) + ->select(); + // 将cate字段替换为分类名称 $resource['cate'] = $resource['cate_name']; unset($resource['cate_name']); - // 返回数据 + // 处理相关文章数据 + $relatedData = []; + if ($relatedResources) { + foreach ($relatedResources as $related) { + $relatedData[] = [ + 'id' => $related['id'], + 'title' => $related['title'], + 'icon' => $related['icon'] + ]; + } + } + + // 将相关数据添加到资源对象中,保持原有数据结构 + $resource['prev_resource'] = $prevResource ? [ + 'id' => $prevResource['id'], + 'title' => $prevResource['title'] + ] : null; + $resource['next_resource'] = $nextResource ? [ + 'id' => $nextResource['id'], + 'title' => $nextResource['title'] + ] : null; + $resource['related_resources'] = $relatedData; + + // 返回数据,保持原有结构 return json([ 'code' => 0, 'msg' => '获取成功', diff --git a/app/index/view/game/detail.php b/app/index/view/game/detail.php index 34893bd..abe3a19 100644 --- a/app/index/view/game/detail.php +++ b/app/index/view/game/detail.php @@ -44,17 +44,36 @@
Free
-
更新时间: +
+ 更新时间: + + + +
+
+ 所属分类: + + + +
+
+ 程序编号: + + + +
+
+ 查看: + + + +
+
+ 下载: + + +
-
所属分类:
-
程序编号:
-
查看:
-
下载:
diff --git a/runtime/index/temp/745a6917c29d4d1aec94c5bc5dbce0b2.php b/runtime/index/temp/745a6917c29d4d1aec94c5bc5dbce0b2.php index ebea299..b8d3c52 100644 --- a/runtime/index/temp/745a6917c29d4d1aec94c5bc5dbce0b2.php +++ b/runtime/index/temp/745a6917c29d4d1aec94c5bc5dbce0b2.php @@ -1,4 +1,4 @@ - + @@ -10,8 +10,10 @@ + +