where('type', $this->request->param('type', 1)) ->order('id desc'); $category_id = $this->request->param('category_id', 0); if (!empty($category_id)) { $model_list = $model_list->where('category_id', $category_id); } $list = $model_list->paginate([ 'query' => $this->request->get(), ]); View::assign('list', $list); return View::fetch(); } public function indexOutput() { $platform_type = $this->request->param('platform_type', ''); if (empty($platform_type)) { $this->error('参数platform_type不能为空'); } $platform_status = $this->request->param('platform_status', ''); $model_list = ModelPost::with(['categorys.category', 'tags.tag']) ->where('type', $this->request->param('type', 1)) ->order('id desc'); if($platform_status == 1){ $model_list = $model_list->where('post_platform_status', 'like', "%,{$platform_type},%"); }else if ($platform_status === '0'){ $model_list = $model_list->where('post_platform_status', 'not like', "%,{$platform_type},%"); } $list = $model_list->paginate([ 'query' => $this->request->get(), ]); foreach ($list as $model_post) { if (empty($model_post->post_platform_status)) { $model_post->platform_status = 0; } else { if (strpos($model_post->post_platform_status, ",$platform_type,") === false) { $model_post->platform_status = 0; } else { $model_post->platform_status = 1; } } $model_post->platform_status_title = ModelPost::LIST_POST_PLATFORM_STATUS[$model_post->platform_status]; } View::assign('list', $list); View::assign('platform_type', $platform_type); return View::fetch(); } /** * 显示创建资源表单页. * * @return \think\Response */ public function create() { // return View::fetch(); } /** * 保存新建的资源. * * @param Request $request * @return \think\Response */ public function save(Request $request) { // $post_data = $request->post(); $post_data['uid'] = uniqid(); $categorys = []; $tags = []; if (isset($post_data['categorys'])) { $categorys = $post_data['categorys']; unset($post_data['categorys']); } if (isset($post_data['tags'])) { $tags = $post_data['tags']; unset($post_data['tags']); } $model_post = ModelPost::create($post_data); foreach ($categorys as $category) { PostCategory::create([ 'post_id' => $model_post->id, 'category_id' => $category, ]); } foreach ($tags as $tag) { PostTag::create([ 'post_id' => $model_post->id, 'tag_id' => $tag, ]); } return $this->success('添加成功', url('index', [ 'type' => $this->request->param('type'), 'category_id' => $this->request->param('category_id'), ])); } public function convertHtml2Markdown() { $content = $this->request->post('content'); $converter = new HtmlConverter(); $markdown = $converter->convert($content); return json_message(['markdown' => $markdown]); } /** * 显示指定的资源. * * @param int $id * @return \think\Response */ public function read($id) { // } /** * 显示编辑资源表单页. * * @param int $id * @return \think\Response */ public function edit($id) { // $model_post = ModelPost::find($id); View::assign('post', $model_post); return View::fetch(); } public function editContent($id) { $model_post = ModelPost::find($id); View::assign('post', $model_post); return View::fetch(); } public function output($id) { $model_post = ModelPost::find($id); $list_post_platform = list_post_platform(); foreach ($list_post_platform as $model_platform) { $platform_info = explode("\n", $model_platform->desc); $model_platform->home_url = $platform_info[0] ?? ''; $model_platform->account = $platform_info[1] ?? ''; } View::assign('post', $model_post); View::assign('list_post_platform', $list_post_platform); return View::fetch(); } /** * 保存更新的资源. * * @param Request $request * @param int $id * @return \think\Response */ public function update(Request $request, $id) { // $post_data = $request->post(); $model_post = ModelPost::find($id); $categorys = []; $tags = []; if (isset($post_data['categorys'])) { $categorys = $post_data['categorys']; unset($post_data['categorys']); $old_category_list = PostCategory::where('post_id', $id)->select(); $old_category_id_list = array_column((array) $old_category_list, 'id'); // 旧的有新的没有 foreach ($old_category_list as $model_category) { if (!in_array($model_category->id, $categorys)) { $model_category->delete(); } } // 旧的没有新的有 foreach ($categorys as $category) { if (!in_array($category, $old_category_id_list)) { PostCategory::create([ 'post_id' => $model_post->id, 'category_id' => $category, ]); } } } if (isset($post_data['tags'])) { $tags = $post_data['tags']; unset($post_data['tags']); $old_tag_list = PostTag::where('post_id', $id)->select(); $old_tag_id_list = array_column((array) $old_tag_list, 'id'); foreach ($old_tag_list as $model_tag) { if (!in_array($model_tag->id, $tags)) { $model_tag->delete(); } } foreach ($tags as $tag) { if (!in_array($tag, $old_tag_id_list)) { PostTag::create([ 'post_id' => $model_post->id, 'tag_id' => $tag, ]); } } } $model_post->save($post_data); Cache::delete('sitemap_last_etag'); return $this->success('保存成功', url('index', ['type' => $model_post->getData('type')])); } public function setPostPlatformData() { $type = $this->request->param('type', 1); $value = $this->request->param('value', ''); $post_id = $this->request->param('post_id', 0); $model_post = ModelPost::find($post_id); if (empty($model_post)) { return json_message('文章不存在'); } $post_platform_data = $model_post->post_platform_data_array; $post_platform_data[$type] = $value; $model_post->post_platform_data = json_encode($post_platform_data); $model_post->post_platform_status = ',' . implode(',', array_keys($post_platform_data)) . ','; $model_post->save(); return htmx()->message('文章设置成功'); } /** * 删除指定资源. * * @param int $id * @return \think\Response */ public function delete($id) { // $model_post = ModelPost::find($id); $model_post->delete(); PostCategory::where('post_id', $id)->delete(); PostTag::where('post_id', $id)->delete(); return json_message(); } }