<?php // +---------------------------------------------------------------------- // | ThinkCMF [ WE CAN DO IT MORE SIMPLE ] // +---------------------------------------------------------------------- // | Copyright (c) 2013-2019 http://www.thinkcmf.com All rights reserved. // +---------------------------------------------------------------------- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) // +---------------------------------------------------------------------- // | Author: 小夏 < 449134904@qq.com> // +---------------------------------------------------------------------- namespace app\portal\controller; use cmf\controller\AdminBaseController; use app\portal\model\PortalPostModel; use app\portal\service\PostService; use app\portal\model\PortalCategoryModel; use app\portal\model\CityCategoryModel; use think\Db; use app\admin\model\ThemeModel; //星球奇境->活力生态 class AdminStarEcologyController extends AdminBaseController { //文章列表 public function index() { $content = hook_one('portal_admin_article_index_view'); if (!empty($content)) { return $content; } $param = $this->request->param(); $param['category'] = CityCategoryModel::hlst; // $categoryId = $this->request->param('category', 0, 'intval'); $categoryId = $param['category']; $postService = new PostService(); $data = $postService->AdminArticleList($param); $data->appends($param); $articles = $data->items(); if($articles){ $articles = json_encode($articles,true); $articles = json_decode($articles,true); foreach($articles as &$value){ $value['city_name'] = $this->getCityCategory($value['city_id']); } } $portalCategoryModel = new PortalCategoryModel(); $categoryTree = $portalCategoryModel->adminCategoryTree($categoryId); $this->assign('start_time', isset($param['start_time']) ? $param['start_time'] : ''); $this->assign('end_time', isset($param['end_time']) ? $param['end_time'] : ''); $this->assign('keyword', isset($param['keyword']) ? $param['keyword'] : ''); $this->assign('articles', $articles); $this->assign('category_tree', $categoryTree); $this->assign('category', $categoryId); $this->assign('page', $data->render()); //城市分类 $city_list = $this->category(); $this->assign('city_list', $city_list); $city_id = empty($param['city_id']) ? 0 : intval($param['city_id']); $this->assign('city_id', $city_id); return $this->fetch(); } //获取城市分类 private function getCityCategory($id){ $city_name = Db::table('cmf_city_category') ->where('id',$id) ->field('name') ->find(); return $city_name['name']; } //添加文章 public function add() { $content = hook_one('portal_admin_article_add_view'); if (!empty($content)) { return $content; } $themeModel = new ThemeModel(); $articleThemeFiles = $themeModel->getActionThemeFiles('portal/Article/index'); $this->assign('article_theme_files', $articleThemeFiles); //城市分类 $arr = $this->category(); $this->assign('list', $arr); //分类 $categories = CityCategoryModel::hlst; $this->assign('categories', $categories); return $this->fetch(); } //城市分类 private function category(){ //城市分类 $portalCategoryModel = new CityCategoryModel(); $parentList = $portalCategoryModel->where(['delete_time'=>0,'pid'=>0])->select()->toArray(); $list = $portalCategoryModel->where(['delete_time'=>0])->select()->toArray(); $arr = []; foreach($parentList as &$item) { $arr[] = $item; foreach ($list as $list_value) { if ($list_value['pid'] == $item['id']) { $list_value['name'] = ' ├─' . $list_value['name']; $arr[] = $list_value; } } } return $arr; } //添加文章提交 public function addPost() { if ($this->request->isPost()) { $data = $this->request->param(); //状态只能设置默认值。未发布、未置顶、未推荐 $data['post']['post_status'] = 0; $data['post']['is_top'] = 0; $data['post']['recommended'] = 0; $post = $data['post']; $result = $this->validate($post, 'AdminStarEcology'); if ($result !== true) { $this->error($result); } $portalPostModel = new PortalPostModel(); if (!empty($data['photo_names']) && !empty($data['photo_urls'])) { $data['post']['more']['photos'] = []; foreach ($data['photo_urls'] as $key => $url) { $photoUrl = cmf_asset_relative_url($url); array_push($data['post']['more']['photos'], ["url" => $photoUrl, "name" => $data['photo_names'][$key]]); } } if (!empty($data['file_names']) && !empty($data['file_urls'])) { $data['post']['more']['files'] = []; foreach ($data['file_urls'] as $key => $url) { $fileUrl = cmf_asset_relative_url($url); array_push($data['post']['more']['files'], ["url" => $fileUrl, "name" => $data['file_names'][$key]]); } } $portalPostModel->adminAddArticle($data['post'], $data['post']['categories']); $data['post']['id'] = $portalPostModel->id; $hookParam = [ 'is_add' => true, 'article' => $data['post'] ]; hook('portal_admin_after_save_article', $hookParam); $this->success('添加成功!', url('AdminStarEcology/edit', ['id' => $portalPostModel->id])); } } //编辑文章 public function edit() { $content = hook_one('portal_admin_article_edit_view'); if (!empty($content)) { return $content; } $id = $this->request->param('id', 0, 'intval'); $portalPostModel = new PortalPostModel(); $post = $portalPostModel->where('id', $id)->find(); $postCategories = $post->categories()->alias('a')->column('a.name', 'a.id'); $postCategoryIds = implode(',', array_keys($postCategories)); $themeModel = new ThemeModel(); $articleThemeFiles = $themeModel->getActionThemeFiles('portal/Article/index'); $this->assign('article_theme_files', $articleThemeFiles); $this->assign('post', $post); $this->assign('post_categories', $postCategories); $this->assign('post_category_ids', $postCategoryIds); //城市分类 $arr = $this->category(); $this->assign('list', $arr); //分类 $categories = CityCategoryModel::hlst; $this->assign('categories', $categories); return $this->fetch(); } //编辑文章提交 public function editPost() { if ($this->request->isPost()) { $data = $this->request->param(); //需要抹除发布、置顶、推荐的修改。 unset($data['post']['post_status']); unset($data['post']['is_top']); unset($data['post']['recommended']); $post = $data['post']; $result = $this->validate($post, 'AdminStarEcology'); if ($result !== true) { $this->error($result); } $portalPostModel = new PortalPostModel(); if (!empty($data['photo_names']) && !empty($data['photo_urls'])) { $data['post']['more']['photos'] = []; foreach ($data['photo_urls'] as $key => $url) { $photoUrl = cmf_asset_relative_url($url); array_push($data['post']['more']['photos'], ["url" => $photoUrl, "name" => $data['photo_names'][$key]]); } } if (!empty($data['file_names']) && !empty($data['file_urls'])) { $data['post']['more']['files'] = []; foreach ($data['file_urls'] as $key => $url) { $fileUrl = cmf_asset_relative_url($url); array_push($data['post']['more']['files'], ["url" => $fileUrl, "name" => $data['file_names'][$key]]); } } $portalPostModel->adminEditArticle($data['post'], $data['post']['categories']); $hookParam = [ 'is_add' => false, 'article' => $data['post'] ]; hook('portal_admin_after_save_article', $hookParam); $this->success('保存成功!'); } } //文章删除 public function delete() { $param = $this->request->param(); $portalPostModel = new PortalPostModel(); if (isset($param['id'])) { $id = $this->request->param('id', 0, 'intval'); $result = $portalPostModel->where('id', $id)->find(); $data = [ 'object_id' => $result['id'], 'create_time' => time(), 'table_name' => 'portal_post', 'name' => $result['post_title'], 'user_id' => cmf_get_current_admin_id() ]; $resultPortal = $portalPostModel ->where('id', $id) ->update(['delete_time' => time()]); if ($resultPortal) { Db::name('portal_category_post')->where('post_id', $id)->update(['status' => 0]); Db::name('portal_tag_post')->where('post_id', $id)->update(['status' => 0]); Db::name('recycleBin')->insert($data); } $this->success("删除成功!", ''); } if (isset($param['ids'])) { $ids = $this->request->param('ids/a'); $recycle = $portalPostModel->where('id', 'in', $ids)->select(); $result = $portalPostModel->where('id', 'in', $ids)->update(['delete_time' => time()]); if ($result) { Db::name('portal_category_post')->where('post_id', 'in', $ids)->update(['status' => 0]); Db::name('portal_tag_post')->where('post_id', 'in', $ids)->update(['status' => 0]); foreach ($recycle as $value) { $data = [ 'object_id' => $value['id'], 'create_time' => time(), 'table_name' => 'portal_post', 'name' => $value['post_title'], 'user_id' => cmf_get_current_admin_id() ]; Db::name('recycleBin')->insert($data); } $this->success("删除成功!", ''); } } } }