diff --git a/app/api/controller/Home/Home.php b/app/api/controller/Home/Home.php index b6297f2..1af6705 100644 --- a/app/api/controller/Home/Home.php +++ b/app/api/controller/Home/Home.php @@ -76,7 +76,7 @@ class Home extends BaseController */ public function getHomeInfoArticleList() { - $query = ModelinfoArticle::where('info_article_status', 2) + $info_article_data = ModelinfoArticle::where('info_article_status', 2) ->field([ 'a.info_article_id', 'a.info_article_type_guid', @@ -85,14 +85,15 @@ class Home extends BaseController 'a.info_article_title', 'a.info_article_create_time', 'a.info_article_cover', + 'a.info_article_order', + 'b.info_article_type_sort', ]) ->alias('a') ->leftjoin('info_article_type b', 'a.info_article_type_guid = b.info_article_type_guid') ->hidden(['info_article_type_guid']) - ->order('info_article_order', 'asc') - ->select(); + ->select()->toArray(); - return $query; + return ModelinfoArticle::buildApiHomeInfoArticleList($info_article_data); } @@ -136,8 +137,7 @@ class Home extends BaseController */ public function getJointAchievementList() { - $query = ModelJointAchievement:: - field([ + $query = ModelJointAchievement::field([ 'joint_achievement_id', 'joint_achievement_title', 'joint_achievement_cover', diff --git a/app/common/model/ExaminationInformation/InfoArticle.php b/app/common/model/ExaminationInformation/InfoArticle.php index 9f4a830..8bf250a 100644 --- a/app/common/model/ExaminationInformation/InfoArticle.php +++ b/app/common/model/ExaminationInformation/InfoArticle.php @@ -188,11 +188,11 @@ class InfoArticle extends BaseModel $info_article_order = $value['info_article_order']; $info_article_status = $value['info_article_status']; - $info_article_type = ModelInfoArticleType::where('info_article_type_name',$info_article_type_name)->find(); - if(!$info_article_type) throwErrorMsg($info_article_type_name . "不存在,请重新确认!"); + $info_article_type = ModelInfoArticleType::where('info_article_type_name', $info_article_type_name)->find(); + if (!$info_article_type) throwErrorMsg($info_article_type_name . "不存在,请重新确认!"); $info_article_type_guid = $info_article_type->info_article_type_guid; - $show_status = ModelDictionary::getDictionaryData('show_status'); + $show_status = ModelDictionary::getDictionaryData('show_status'); $info_article_status = ModelDictionary::getDataDictionaryValue($show_status, $info_article_status); return self::create([ @@ -203,4 +203,53 @@ class InfoArticle extends BaseModel 'info_article_status' => $info_article_status, ]); } + + /** + * 构建前台首页新闻接口数据 + */ + public static function buildApiHomeInfoArticleList(array $info_article_data): array + { + $info_article_type_arr = []; + $info_article_arr = []; + $data = []; + + //【步骤一】新闻标题数组构建 + foreach ($info_article_data as $info_article) { + $info_article_type_name = $info_article['info_article_type_name']; + $info_article_type_sort = $info_article['info_article_type_sort']; + if (!in_array($info_article_type_name, $info_article_type_arr)) { + $info_article_type_arr[$info_article_type_sort] = $info_article_type_name; + } + }; + //新闻标题数组按照下标升序处理 + ksort($info_article_type_arr); + //排序后,只保留值 + $info_article_type_arr = array_values($info_article_type_arr); + + //【步骤二】新闻数组构建 + foreach ($info_article_data as $info_article) { + $info_article_type_name = $info_article['info_article_type_name']; + $info_article_order = $info_article['info_article_order']; + $info_article_arr[$info_article_type_name][$info_article_order] = $info_article; + }; + //新闻标题数组按照下标升序处理 + foreach ($info_article_arr as &$info_article) { + ksort($info_article); + //排序后,只保留值 + $info_article = array_values($info_article); + }; + + //【步骤二】最终数据合并 + //类型名称数据构建 + foreach ($info_article_type_arr as $info_article_type_name) { + $data[$info_article_type_name] = []; + }; + //文章数据匹配添加 + foreach ($info_article_data as $info_article) { + $info_article_type_name = $info_article['info_article_type_name']; + $data[$info_article_type_name][] = $info_article; + }; + + return $data; + } }