fix:前台首页模块-新闻列表获取方法修改

This commit is contained in:
xjh 2023-05-09 11:47:02 +08:00
parent 39552d829c
commit c7035d14ef
2 changed files with 58 additions and 9 deletions

View File

@ -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',

View File

@ -188,8 +188,8 @@ 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');
@ -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;
}
}