From f32e5f7017ae455dbd67fbcb7000562c5d8c443d Mon Sep 17 00:00:00 2001 From: Luthics Date: Wed, 6 Sep 2023 17:12:58 +0800 Subject: [PATCH] 1 --- .../Controller/CommentController.class.php | 297 ------------------ .../CommentsInfoController.class.php | 194 ++++++++++++ .../CommentsReplyController.class.php | 229 ++++++++++++++ .../Controller/ContentResController.class.php | 192 +++++++++++ .../DiscussionCateController.class.php | 170 ++++++++++ .../Controller/DiscussionController.class.php | 179 +++++++++++ .../Controller/IntroduceController.class.php | 126 ++++++++ .../Controller/NoticeUserController.class.php | 200 ++++++++++++ .../RecruitmenNoticeController.class.php | 221 +++++++++++++ app/Common/Model/CommentsInfoModel.class.php | 18 +- app/Common/Model/CommentsReplyModel.class.php | 106 +++++++ app/Common/Model/ContentResModel.class.php | 92 ++++++ .../Model/DiscussionCateModel.class.php | 22 ++ app/Common/Model/DiscussionModel.class.php | 39 +++ app/Common/Model/IntroduceModel.class.php | 92 ++++++ app/Common/Model/NoticeUserModel.class.php | 35 +++ .../Model/RecruitmenNoticeModel.class.php | 24 ++ 17 files changed, 1936 insertions(+), 300 deletions(-) delete mode 100644 app/Admin/Controller/CommentController.class.php create mode 100644 app/Admin/Controller/CommentsInfoController.class.php create mode 100644 app/Admin/Controller/CommentsReplyController.class.php create mode 100644 app/Admin/Controller/ContentResController.class.php create mode 100644 app/Admin/Controller/DiscussionCateController.class.php create mode 100644 app/Admin/Controller/DiscussionController.class.php create mode 100644 app/Admin/Controller/IntroduceController.class.php create mode 100644 app/Admin/Controller/NoticeUserController.class.php create mode 100644 app/Admin/Controller/RecruitmenNoticeController.class.php create mode 100644 app/Common/Model/CommentsReplyModel.class.php create mode 100644 app/Common/Model/ContentResModel.class.php create mode 100644 app/Common/Model/DiscussionCateModel.class.php create mode 100644 app/Common/Model/DiscussionModel.class.php create mode 100644 app/Common/Model/IntroduceModel.class.php create mode 100644 app/Common/Model/NoticeUserModel.class.php create mode 100644 app/Common/Model/RecruitmenNoticeModel.class.php diff --git a/app/Admin/Controller/CommentController.class.php b/app/Admin/Controller/CommentController.class.php deleted file mode 100644 index 719daf9..0000000 --- a/app/Admin/Controller/CommentController.class.php +++ /dev/null @@ -1,297 +0,0 @@ -getListForCount($map); - $per_page = C('ADMIN_PER_PAGE_NUM', null, false); - if ($per_page === false) { - $page = new \Gy_Library\GyPage($count); - } else { - $page = new \Gy_Library\GyPage($count, $per_page); - } - $order = 'id desc'; - $data_list = $model->getListForPage($map, $page->nowPage, $page->listRows, $order); - foreach ($data_list as &$data) { - // dd($data); - $data['news_name'] = $model->getNewsName($data[$this->news_index]); - $data['from_user_name'] = $model->getUserName($data['from_id']); - if (strlen($data['from_user_name']) == 0) $data['from_user_name'] = $data['from_name'] . " (已删除)"; - } - // 使用Builder快速建立列表页面。 - $builder = new ListBuilder(); - - $builder = $builder->setMetaTitle('评论管理'); // 设置页面标题 - $builder->addTopButton('addnew'); - // $builder->addTopButton('save', array('title' => '保存排序')); - $builder - ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') - ->addSearchItem('news_name', 'select_text', '单行输入', array('name' => '名称')) - ->addTableColumn('news_name', '名称') - ->addTableColumn('from_user_name', '发表者') - ->addTableColumn('like_num', '点赞数') - ->addTableColumn('content', '评论内容') - ->addTableColumn('create_time', '创建时间', 'time') - ->addTableColumn('right_button', '操作', 'btn') - ->setTableDataList($data_list) // 数据列表 - ->setTableDataPage($page->show()) // 数据列表分页 - ->addRightButton('edit') // 添加编辑按钮 - ->addRightButton('delete') // 添加删除按钮 - ->addRightButton('forbid') // 添加禁用按钮 - // ->addRightButton('self', ['title' => '查看相关文章', 'href' => U('News/index', ['key' => 'keyword', 'word' => '__name__']), 'class' => 'label label-success']) - ->display(); - } - - public function add() - { - if (IS_POST) { - parent::autoCheckToken(); - $data = I('post.'); - $data['name'] = trim($data['name']); - $data['belong_to'] = $this->belong_to[$data['belong_to']]; - $model = D('SecondaryTitle'); - $n_model = D('SecondaryNews'); - $keyword_ids = D('Keywords')->checkKeywords($data['keywords_id'] ? $data['keywords_id'] : []); - if ($keyword_ids === false) { - $this->error(D('Keywords')->getError()); - } - $data['keywords_id'] = implode(',', $keyword_ids ? $keyword_ids : []); - $data['news_id'] = implode(',', $data['news_id'] ? $data['news_id'] : []); - $data['cate_id'] = implode(',', $data['cate_id'] ? $data['cate_id'] : []); - $r = $model->createAdd($data); - if ($r === false) { - $this->error($model->getError()); - } else { - $data['secondary_id'] = $r; - $n_r = $n_model->createAdd($data); - if ($n_r === false) { - $this->error($n_model->getError()); - } - sysLogs('新增关键词id:' . $r); - $this->success(l('add') . l('success'), U(CONTROLLER_NAME . '/index')); - } - } else { - // 使用FormBuilder快速建立表单页面。 - $builder = new FormBuilder(); - $data_list = array( - "status" => 1, - "sort" => 0, - ); - if ($data_list) { - $builder->setFormData($data_list); - } - - $keywordBuilder = new \Qscmf\Builder\SubTableBuilder(); - $keywordBuilder->addTableHeader('关键词', '30%', '输入关键词可以搜索添加现有关键词,输入@+关键词可以新增'); - $keywordBuilder->addFormItem('keywords_id', 'select2', [ - 'tags' => true, - 'options' => D('Keywords')->order('id desc')->getField('id, name', true) - ]); - - $newsBuilder = new \Qscmf\Builder\SubTableBuilder(); - $newsBuilder->addTableHeader('新闻列表', '30%', '输入新闻可以搜索添加现有新闻'); - $newsBuilder->addFormItem('news_id', 'select2', [ - 'tags' => true, - 'options' => D('News')->order('id desc')->getField('id, title', true) - ]); - - $cates = D('NewsCate')->order('id asc')->getField('id, name', true); - - $builder->setMetaTitle('添加关键词') //设置页面标题 - ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') - ->setPostUrl(U('add')) - ->addFormItem('belong_to', 'radio', '选项', '', $this->belong_to) - ->addFormItem('name', 'text', '名称*') - ->addFormItem('news_id', 'self', '新闻列表', '', $newsBuilder->makeHtml()) - ->addFormItem('keywords_id', 'self', '关键词', '', $keywordBuilder->makeHtml()) - ->addFormItem('cate_id', 'checkbox', '分类', '', $cates) - ->addFormItem('sort', 'num', '排序') - ->addFormItem('status', 'select', '状态', '', DBCont::getStatusList()) - ->display(); - } - } - - - public function save() - { - if (IS_POST) { - $data = I('post.'); - foreach ($data['id'] as $k => $v) { - $save_data['sort'] = $data['sort'][$k]; - D('Keywords')->where('id=' . $v)->save($save_data); - } - $this->success('保存成功', U('index')); - } - } - - public function edit($id) - { - if (IS_POST) { - parent::autoCheckToken(); - $m_id = I('post.id'); - $data = I('post.'); - $data['name'] = trim($data['name']); - $data['belong_to'] = $this->belong_to[$data['belong_to']]; - $model = D('SecondaryTitle'); - if (!$m_id) { - E('缺少内容ID'); - } - $ent = $model->getOne($m_id); - if (!$ent) { - E('不存在内容'); - } - - $keyword_ids = D('Keywords')->checkKeywords($data['keywords_id'] ? $data['keywords_id'] : []); - if ($keyword_ids === false) { - $this->error(D('Keywords')->getError()); - } - $data['keywords_id'] = implode(',', $keyword_ids ? $keyword_ids : []); - $data['news_id'] = implode(',', $data['news_id'] ? $data['news_id'] : []); - $data['cate_id'] = implode(',', $data['cate_id'] ? $data['cate_id'] : []); - - $n_model = D('SecondaryNews'); - $news_ent = $n_model->where(['secondary_id' => $data['id']])->find(); - // todo 保存关联表 - // dd($data, $data['id'], $ent['id'], $news_ent); - - if ($data['keywords_id']) { - $news_ent['keywords_id'] = $data['keywords_id']; - } - if ($data['news_id']) { - $news_ent['news_id'] = $data['news_id']; - } - if ($data['cate_id']) { - $news_ent['cate_id'] = $data['cate_id']; - } - $ent['name'] = $data['name']; - $ent['sort'] = $data['sort']; - $ent['belong_to'] = $data['belong_to']; - $ent['status'] = $data['status']; - if ($model->createSave($ent) === false || $n_model->createSave($news_ent) === false) { - $this->error($model->getError()); - } else { - $this->success('修改成功', U('index')); - } - } else { - $model = D('SecondaryTitle'); - $info = $model->getOne($id); - $is_belong_to_in_list = in_array($info['belong_to'], $this->belong_to); - $info['belong_to'] = array_search($info['belong_to'], $this->belong_to); - - $s_news = $model->getConditionList($info['id']); - if ($s_news) { - $info['news_id'] = $s_news['news_id']; - $info['keywords_id'] = $s_news['keywords_id']; - $info['cate_id'] = $s_news['cate_id']; - } - - $keywordBuilder = new \Qscmf\Builder\SubTableBuilder(); - $keywordBuilder->setData(D('Keywords')->genKeywordId($info['keywords_id'])); - $keywordBuilder->addTableHeader('关键词', '30%', '输入关键词可以搜索添加现有关键词,输入@+关键词可以新增'); - $keywordBuilder->addFormItem('keywords_id', 'select2', [ - 'tags' => true, - 'options' => D('Keywords')->order('id desc')->getField('id, name', true) - ]); - - $newsBuilder = new \Qscmf\Builder\SubTableBuilder(); - $newsBuilder->setData(D('News')->genNewsId($info['news_id'])); - $newsBuilder->addTableHeader('新闻列表', '30%', '输入新闻可以搜索添加现有新闻'); - $newsBuilder->addFormItem('news_id', 'select2', [ - 'tags' => true, - 'options' => D('News')->order('id desc')->getField('id, title', true) - ]); - - $cates = D('NewsCate')->order('id asc')->getField('id, name', true); - - $builder = new FormBuilder(); - $builder->setMetaTitle('编辑关键词') - ->setPostUrl(U('edit')) - // ->setExtraHtml($this->fetch('Keywords/detail')) - ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') - ->addFormItem('id', 'hidden', 'ID'); - if ($is_belong_to_in_list) { - $builder - ->addFormItem('belong_to', 'radio', '选项', '', $this->belong_to) - ->addFormItem('name', 'text', '名称') - ->addFormItem('news_id', 'self', '新闻列表', '', $newsBuilder->makeHtml()) - ->addFormItem('keywords_id', 'self', '关键词', '', $keywordBuilder->makeHtml()) - ->addFormItem('cate_id', 'checkbox', '分类', '', $cates); - } - $builder - ->addFormItem('sort', 'num', '排序', '', $info['sort']) - ->addFormItem('status', 'select', '状态', '', DBCont::getStatusList()) - ->setFormData($info) - ->display(); - } - } - - public function forbid() - { - $ids = I('ids'); - if (!$ids) { - $this->error('请选择要禁用的数据'); - } - $r = parent::_forbid($ids); - if ($r !== false) { - // sysLogs('新闻分类id: ' . $ids . ' 禁用'); - $this->success('禁用成功', U(CONTROLLER_NAME . '/index')); - } else { - $this->error($this->_getError()); - } - } - - public function resume() - { - $ids = I('ids'); - if (!$ids) { - $this->error('请选择要启用的数据'); - } - $r = parent::_resume($ids); - if ($r !== false) { - $this->success('启用成功', U(CONTROLLER_NAME . '/index')); - } else { - $this->error($this->_getError()); - } - } - - public function delete() - { - $ids = I('ids'); - if (!$ids) { - $this->error('请选择要删除的数据'); - } - - $r = parent::_del($ids); - if ($r === false) { - $this->error($this->_getError()); - } else { - $this->success('删除成功', U(MODULE_NAME . '/' . CONTROLLER_NAME . '/index')); - } - } -} diff --git a/app/Admin/Controller/CommentsInfoController.class.php b/app/Admin/Controller/CommentsInfoController.class.php new file mode 100644 index 0000000..0ca5c43 --- /dev/null +++ b/app/Admin/Controller/CommentsInfoController.class.php @@ -0,0 +1,194 @@ +getListForCount(); + $per_page = C('ADMIN_PER_PAGE_NUM', null, false); + if ($per_page === false) { + $page = new \Gy_Library\GyPage($count); + } else { + $page = new \Gy_Library\GyPage($count, $per_page); + } + $order = 'id desc'; + $data_list = $model->getListForPage($map, $page->nowPage, $page->listRows, $order); + foreach ($data_list as &$data) { + // dd($data); + $data['news_name'] = $model->getNewsName($data[$this->news_index]); + $data['from_user_name'] = $model->getUserName($data['from_id']); + if (strlen($data['from_user_name']) == 0) $data['from_user_name'] = $data['from_name'] . " (已删除)"; + } + // 使用Builder快速建立列表页面。 + $builder = new ListBuilder(); + + $builder = $builder->setMetaTitle('评论管理'); // 设置页面标题 + $builder->addTopButton('addnew'); + // $builder->addTopButton('save', array('title' => '保存排序')); + $builder + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + // ->addSearchItem('news_name', 'select_text', '单行输入', array('name' => '名称')) + ->addTableColumn('news_name', '名称') + ->addTableColumn('from_user_name', '发表者') + ->addTableColumn('like_num', '点赞数') + ->addTableColumn('content', '评论内容') + ->addTableColumn('create_time', '创建时间', 'time') + ->addTableColumn('right_button', '操作', 'btn') + ->setTableDataList($data_list) // 数据列表 + ->setTableDataPage($page->show()) // 数据列表分页 + ->addRightButton('edit') // 添加编辑按钮 + ->addRightButton('delete') // 添加删除按钮 + ->addRightButton('forbid') // 添加禁用按钮 + // ->addRightButton('self', ['title' => '查看相关文章', 'href' => U('News/index', ['key' => 'keyword', 'word' => '__name__']), 'class' => 'label label-success']) + ->display(); + } + + public function add() + { + if (IS_POST) { + parent::autoCheckToken(); + $data = I('post.'); + $model = D('CommentsInfo'); + if ($data['like_num'] == '') $data['like_num'] = 0; + $data['from_name'] = $model->getUserName($data['from_id']); + $data['from_avatar'] = $model->getUserAvatar($data['from_id']); + $r = $model->createAdd($data); + if ($r === false) { + $this->error($model->getError()); + } else { + sysLogs('新增评论d:' . $r); + $this->success(l('add') . l('success'), U(CONTROLLER_NAME . '/index')); + } + } else { + // 使用FormBuilder快速建立表单页面。 + $builder = new FormBuilder(); + + $builder->setMetaTitle('添加评论') //设置页面标题 + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + ->setPostUrl(U('add')) + ->addFormItem($this->news_index, 'select', '文章', '', D('News')->order('id desc')->getField('id, title', true)) + ->addFormItem('from_id', 'select', '发表者', '', D('User')->order('id desc')->getField('id, nick_name', true)) + ->addFormItem('content', 'textarea', '内容') + ->addFormItem('like_num', 'num', '点赞数', '', 0) + ->display(); + } + } + + + public function edit($id) + { + if (IS_POST) { + parent::autoCheckToken(); + $m_id = I('post.id'); + $data = I('post.'); + $model = D('CommentsInfo'); + if (!$m_id) { + E('缺少内容ID'); + } + $ent = $model->getOne($m_id); + if (!$ent) { + E('不存在内容'); + } + + $ent[$this->news_index] = $data[$this->news_index]; + $ent['from_id'] = $data['from_id']; + $ent['content'] = $data['content']; + $ent['like_num'] = $data['like_num']; + if ($data['like_num'] == '') $data['like_num'] = 0; + + $ent['from_name'] = $model->getUserName($data['from_id']); + $ent['from_avatar'] = $model->getUserAvatar($data['from_id']); + + if ($model->createSave($ent) === false) { + $this->error($model->getError()); + } else { + $this->success('修改成功', U('index')); + } + } else { + $model = D('CommentsInfo'); + $info = $model->getOne($id); + + $builder = new FormBuilder(); + $builder->setMetaTitle('修改评论') + ->setPostUrl(U('edit')) + // ->setExtraHtml($this->fetch('Keywords/detail')) + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + ->addFormItem('id', 'hidden', 'ID') + ->addFormItem($this->news_index, 'select', '文章', '', D('News')->order('id desc')->getField('id, title', true)) + ->addFormItem('from_id', 'select', '发表者', '', D('User')->order('id desc')->getField('id, nick_name', true)) + ->addFormItem('content', 'textarea', '内容') + ->addFormItem('like_num', 'num', '点赞数', '', 0) + ->setFormData($info) + ->display(); + } + } + + public function forbid() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要禁用的数据'); + } + $r = parent::_forbid($ids); + if ($r !== false) { + // sysLogs('新闻分类id: ' . $ids . ' 禁用'); + $this->success('禁用成功', U(CONTROLLER_NAME . '/index')); + } else { + $this->error($this->_getError()); + } + } + + public function resume() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要启用的数据'); + } + $r = parent::_resume($ids); + if ($r !== false) { + $this->success('启用成功', U(CONTROLLER_NAME . '/index')); + } else { + $this->error($this->_getError()); + } + } + + public function delete() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要删除的数据'); + } + + $r = parent::_del($ids); + if ($r === false) { + $this->error($this->_getError()); + } else { + $this->success('删除成功', U(MODULE_NAME . '/' . CONTROLLER_NAME . '/index')); + } + } +} diff --git a/app/Admin/Controller/CommentsReplyController.class.php b/app/Admin/Controller/CommentsReplyController.class.php new file mode 100644 index 0000000..fd17ad8 --- /dev/null +++ b/app/Admin/Controller/CommentsReplyController.class.php @@ -0,0 +1,229 @@ +getListForCount(); + $per_page = C('ADMIN_PER_PAGE_NUM', null, false); + if ($per_page === false) { + $page = new \Gy_Library\GyPage($count); + } else { + $page = new \Gy_Library\GyPage($count, $per_page); + } + $order = 'id desc'; + $data_list = $model->getListForPage($map, $page->nowPage, $page->listRows, $order); + foreach ($data_list as &$data) { + // dd($data); + $c_model = D('CommentsInfo'); + $c_info = $c_model->getOne($data['comment_id']); + $data['news_name'] = $c_model->getNewsName($c_info[$this->news_index]); + $data['comment_content'] = $c_info['content']; + $data['to_user_name'] = $model->getUserName($data['to_id']); + $data['from_user_name'] = $model->getUserName($data['from_id']); + if (strlen($data['from_user_name']) == 0) $data['from_user_name'] = $data['from_name'] . " (已删除)"; + } + // 使用Builder快速建立列表页面。 + $builder = new ListBuilder(); + + $builder = $builder->setMetaTitle('二级评论管理'); // 设置页面标题 + $builder->addTopButton('addnew'); + // $builder->addTopButton('save', array('title' => '保存排序')); + $builder + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + // ->addSearchItem('news_name', 'select_text', '单行输入', array('name' => '名称')) + ->addTableColumn('news_name', '文章名') + ->addTableColumn('comment_content', '被回复评论') + ->addTableColumn('to_user_name', '原评论发表者') + ->addTableColumn('from_user_name', '发表者') + ->addTableColumn('like_num', '点赞数') + ->addTableColumn('content', '评论内容') + ->addTableColumn('create_time', '创建时间', 'time') + ->addTableColumn('right_button', '操作', 'btn') + ->setTableDataList($data_list) // 数据列表 + ->setTableDataPage($page->show()) // 数据列表分页 + ->addRightButton('edit') // 添加编辑按钮 + ->addRightButton('delete') // 添加删除按钮 + ->addRightButton('forbid') // 添加禁用按钮 + // ->addRightButton('self', ['title' => '查看相关文章', 'href' => U('News/index', ['key' => 'keyword', 'word' => '__name__']), 'class' => 'label label-success']) + ->display(); + } + + public function add() + { + if (IS_POST) { + parent::autoCheckToken(); + $data = I('post.'); + $model = D('CommentsReply'); + $data['content'] = $data['content']; + $data['like_num'] = $data['like_num']; + if ($data['like_num'] == '') $data['like_num'] = 0; + $data['from_name'] = $model->getUserName($data['from_id']); + $data['from_avatar'] = $model->getUserAvatar($data['from_id']); + $c_model = D('CommentsInfo'); + $c_info = $c_model->getOne($data['comment_id']); + $data['to_id'] = $c_info['from_id']; + $data['to_name'] = $c_info['from_name']; + $data['to_avatar'] = $c_info['from_avatar']; + // dd($data); + $r = $model->createAdd($data); + if ($r === false) { + $this->error($model->getError()); + } else { + sysLogs('新增二级评论d:' . $r); + $this->success(l('add') . l('success'), U(CONTROLLER_NAME . '/index')); + } + } else { + $comments = D('Comments_info')->order('id desc')->getField('id, content, from_id, from_name, ' . $this->news_index, true); + foreach ($comments as &$comment) { + $str = $comment['content'] . " "; + $from_name = D('User')->where(['id' => $comment['from_id']])->getField('nick_name'); + if ($from_name == null) $from_name = $comment['from_name'] . " (已删除)"; + $news_title = D('News')->where(['id' => $comment[$this->news_index]])->getField('title'); + $str = $str . ' | ' . $from_name . " | " . $news_title; + $comment = $str; + } + + // 使用FormBuilder快速建立表单页面。 + $builder = new FormBuilder(); + + $builder->setMetaTitle('添加二级评论') //设置页面标题 + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + ->setPostUrl(U('add')) + ->addFormItem('comment_id', 'select', '评论', '', $comments) + ->addFormItem('from_id', 'select', '发表者', '', D('User')->order('id desc')->getField('id, nick_name', true)) + ->addFormItem('content', 'textarea', '内容') + ->addFormItem('like_num', 'num', '点赞数', '', 0) + ->display(); + } + } + + public function edit($id) + { + if (IS_POST) { + parent::autoCheckToken(); + $m_id = I('post.id'); + $data = I('post.'); + $model = D('SecondaryTitle'); + if (!$m_id) { + E('缺少内容ID'); + } + $ent = $model->getOne($m_id); + if (!$ent) { + E('不存在内容'); + } + $model = D('CommentsReply'); + $ent['content'] = $data['content']; + $ent['like_num'] = $data['like_num']; + if ($data['like_num'] == '') $data['like_num'] = 0; + $ent['from_id'] = $data['from_id']; + $ent['from_name'] = $model->getUserName($data['from_id']); + $ent['from_avatar'] = $model->getUserAvatar($data['from_id']); + $c_model = D('CommentsInfo'); + $c_info = $c_model->getOne($data['comment_id']); + $ent['to_id'] = $c_info['from_id']; + $ent['to_name'] = $c_info['from_name']; + $ent['to_avatar'] = $c_info['from_avatar']; + if ($model->createSave($ent) === false) { + $this->error($model->getError()); + } else { + $this->success('修改成功', U('index')); + } + } else { + $model = D('CommentsReply'); + $info = $model->getOne($id); + + $comments = D('Comments_info')->order('id desc')->getField('id, content, from_id, from_name, ' . $this->news_index, true); + foreach ($comments as &$comment) { + $str = $comment['content'] . " "; + $from_name = D('User')->where(['id' => $comment['from_id']])->getField('nick_name'); + if ($from_name == null) $from_name = $comment['from_name'] . " (已删除)"; + $news_title = D('News')->where(['id' => $comment[$this->news_index]])->getField('title'); + $str = $str . ' | ' . $from_name . " | " . $news_title; + $comment = $str; + } + $builder = new FormBuilder(); + $builder->setMetaTitle('编辑关键词') + ->setPostUrl(U('edit')) + // ->setExtraHtml($this->fetch('Keywords/detail')) + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + ->addFormItem('id', 'hidden', 'ID') + ->addFormItem('comment_id', 'select', '评论', '', $comments) + ->addFormItem('from_id', 'select', '发表者', '', D('User')->order('id desc')->getField('id, nick_name', true)) + ->addFormItem('content', 'textarea', '内容') + ->addFormItem('like_num', 'num', '点赞数', '', 0) + ->setFormData($info) + ->display(); + } + } + + public function forbid() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要禁用的数据'); + } + $r = parent::_forbid($ids); + if ($r !== false) { + // sysLogs('新闻分类id: ' . $ids . ' 禁用'); + $this->success('禁用成功', U(CONTROLLER_NAME . '/index')); + } else { + $this->error($this->_getError()); + } + } + + public function resume() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要启用的数据'); + } + $r = parent::_resume($ids); + if ($r !== false) { + $this->success('启用成功', U(CONTROLLER_NAME . '/index')); + } else { + $this->error($this->_getError()); + } + } + + public function delete() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要删除的数据'); + } + + $r = parent::_del($ids); + if ($r === false) { + $this->error($this->_getError()); + } else { + $this->success('删除成功', U(MODULE_NAME . '/' . CONTROLLER_NAME . '/index')); + } + } +} diff --git a/app/Admin/Controller/ContentResController.class.php b/app/Admin/Controller/ContentResController.class.php new file mode 100644 index 0000000..5db2eeb --- /dev/null +++ b/app/Admin/Controller/ContentResController.class.php @@ -0,0 +1,192 @@ + '“解困”播客', 2 => '解困资源库', 3 => '解困者说']; + + public function index() + { + $map = []; + $model = D('ContentRes'); + $count = $model->getListForCount(); + $per_page = C('ADMIN_PER_PAGE_NUM', null, false); + if ($per_page === false) { + $page = new \Gy_Library\GyPage($count); + } else { + $page = new \Gy_Library\GyPage($count, $per_page); + } + $order = 'id desc'; + $data_list = $model->getListForPage($map, $page->nowPage, $page->listRows, $order); + foreach ($data_list as &$data) { + $type = $data['type']; + $data['type_name'] = $this->types[$type]; + $data['res_num'] = empty(trim($data['res_id'])) ? "" : "共 " . count(explode(',', $data['res_id'])) . " 个文件"; + if ($data['cate'] > 0) $data['cate_name'] = $data['cate'] == 1 ? "中国" : "世界"; + } + $builder = new ListBuilder(); + + $builder = $builder->setMetaTitle('资源管理'); + $builder->addTopButton('addnew'); + $builder + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + // ->addSearchItem('news_name', 'select_text', '单行输入', array('name' => '名称')) + ->addTableColumn('type_name', '模块') + ->addTableColumn('content', '内容') + ->addTableColumn('res_num', '文件个数') + ->addTableColumn('url', '跳转链接') + ->addTableColumn('cate_name', '分类名') + ->addTableColumn('right_button', '操作', 'btn') + ->setTableDataList($data_list) // 数据列表 + ->setTableDataPage($page->show()) // 数据列表分页 + ->addRightButton('edit') // 添加编辑按钮 + ->addRightButton('delete') // 添加删除按钮 + ->display(); + } + + public function add() + { + if (IS_POST) { + parent::autoCheckToken(); + $data = I('post.'); + $model = D('ContentRes'); + $data['cate'] = $data['cate'] ?? 0; + + if ($model->createAdd($data) === false) { + $this->error($model->getError()); + } else { + $this->success('增加成功', U('index')); + } + } else { + $model = D('ContentRes'); + + $builder = new FormBuilder(); + $builder->setMetaTitle('增加资源') + ->setPostUrl(U('add')) + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + ->addFormItem('id', 'hidden', 'ID') + ->addFormItem('type', 'radio', '类型', '', $this->types) + ->addFormItem('content', 'textarea', '文字内容') + ->addFormItem('res_id', 'files', '相关资源') + ->addFormItem('url', 'text', '跳转链接') + ->addFormItem('cate', 'radio', '分类', '如果类型不是解困资源库则将此项留空,否则应选择正确的分类', [ + 1 => "解困在中国", + 2 => "解困在世界", + ])->addFormItem('sort', 'num', '排序', '数字越小越靠前') + ->display(); + } + } + + public function edit($id) + { + if (IS_POST) { + parent::autoCheckToken(); + $m_id = I('post.id'); + $data = I('post.'); + $model = D('ContentRes'); + if (!$m_id) { + E('缺少内容ID'); + } + $ent = $model->getOne($m_id); + if (!$ent) { + E('不存在内容'); + } + $ent['content'] = $data['content']; + $ent['res_id'] = $data['res_id']; + $ent['url'] = $data['url']; + $ent['type'] = $data['type']; + $ent['cate'] = $data['cate'] ?? 0; + $ent['sort'] = $data['sort']; + + if ($model->createSave($ent) === false) { + $this->error($model->getError()); + } else { + $this->success('修改成功', U('index')); + } + } else { + $model = D('ContentRes'); + $info = $model->getOne($id); + + $is_res = $info['type'] == 2; + + $builder = new FormBuilder(); + $builder->setMetaTitle('修改资源') + ->setPostUrl(U('edit')) + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + ->addFormItem('id', 'hidden', 'ID') + ->addFormItem('type', 'radio', '类型', '', $this->types) + ->addFormItem('content', 'textarea', '文字内容') + ->addFormItem('res_id', 'files', '相关资源') + ->addFormItem('url', 'text', '跳转链接'); + // ->addFormItem('url', 'text', '跳转链接', '请填写 http:// 或者 https:// 开头的完整链接'); + if ($is_res) { + $builder->addFormItem('cate', 'radio', '分类', '', [ + 1 => "解困在中国", + 2 => "解困在世界", + ]); + } + $builder->addFormItem('sort', 'num', '排序', '数字越小越靠前') + ->setFormData($info) + ->display(); + } + } + + public function forbid() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要禁用的数据'); + } + $r = parent::_forbid($ids); + if ($r !== false) { + // sysLogs('新闻分类id: ' . $ids . ' 禁用'); + $this->success('禁用成功', U(CONTROLLER_NAME . '/index')); + } else { + $this->error($this->_getError()); + } + } + + public function resume() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要启用的数据'); + } + $r = parent::_resume($ids); + if ($r !== false) { + $this->success('启用成功', U(CONTROLLER_NAME . '/index')); + } else { + $this->error($this->_getError()); + } + } + + public function delete() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要删除的数据'); + } + + $r = parent::_del($ids); + if ($r === false) { + $this->error($this->_getError()); + } else { + $this->success('删除成功', U(MODULE_NAME . '/' . CONTROLLER_NAME . '/index')); + } + } +} diff --git a/app/Admin/Controller/DiscussionCateController.class.php b/app/Admin/Controller/DiscussionCateController.class.php new file mode 100644 index 0000000..77681b7 --- /dev/null +++ b/app/Admin/Controller/DiscussionCateController.class.php @@ -0,0 +1,170 @@ +getListForCount(); + $per_page = C('ADMIN_PER_PAGE_NUM', null, false); + if ($per_page === false) { + $page = new \Gy_Library\GyPage($count); + } else { + $page = new \Gy_Library\GyPage($count, $per_page); + } + $order = 'id desc'; + $data_list = $model->getListForPage($map, $page->nowPage, $page->listRows, $order); + + + $builder = new ListBuilder(); + + $builder = $builder->setMetaTitle('议题管理'); + $builder->addTopButton('addnew'); + $builder + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + // ->addSearchItem('news_name', 'select_text', '单行输入', array('name' => '名称')) + ->addTableColumn('topic', '标题') + ->addTableColumn('content', '内容') + ->addTableColumn('create_at', '创建时间', 'time') + ->addTableColumn('sort', '排序', '', '', false) + ->addTableColumn('status', '状态', 'status', '', false) + ->addTableColumn('right_button', '操作', 'btn') + ->setTableDataList($data_list) // 数据列表 + ->setTableDataPage($page->show()) // 数据列表分页 + ->addRightButton('edit') // 添加编辑按钮 + ->addRightButton('forbid') + ->addRightButton('delete') // 添加删除按钮 + ->display(); + } + + public function add() + { + if (IS_POST) { + parent::autoCheckToken(); + $data = I('post.'); + $model = D('DiscussionCate'); + $data['sort'] = $data['sort'] ?? 0; + $data['status'] = 1; + + if ($model->createAdd($data) === false) { + $this->error($model->getError()); + } else { + $this->success('增加成功', U('index')); + } + } else { + $builder = new FormBuilder(); + $builder->setMetaTitle('添加议题') + ->setPostUrl(U('add')) + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + ->addFormItem('topic', 'text', '标题') + ->addFormItem('content', 'text', '内容') + ->addFormItem('sort', 'num', '排序', '数字越小越靠前') + ->addFormItem('status', 'select', '状态', '', DBCont::getStatusList()) + ->display(); + } + } + + public function edit($id) + { + if (IS_POST) { + parent::autoCheckToken(); + $m_id = I('post.id'); + $data = I('post.'); + $model = D('DiscussionCate'); + if (!$m_id) { + E('缺少内容ID'); + } + $ent = $model->getOne($m_id); + if (!$ent) { + E('不存在内容'); + } + $ent['topic'] = $data['topic']; + $ent['content'] = $data['content']; + $ent['type'] = $data['type']; + $ent['sort'] = $data['sort']; + $ent['status'] = $data['status']; + + if ($model->createSave($ent) === false) { + $this->error($model->getError()); + } else { + $this->success('修改成功', U('index')); + } + } else { + $model = D('DiscussionCate'); + $info = $model->getOne($id); + + $builder = new FormBuilder(); + $builder->setMetaTitle('修改议题') + ->setPostUrl(U('edit')) + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + ->addFormItem('id', 'hidden', 'ID', 'ID') + ->addFormItem('topic', 'text', '标题') + ->addFormItem('content', 'text', '内容') + ->addFormItem('sort', 'num', '排序', '数字越小越靠前') + ->addFormItem('status', 'select', '状态', '', DBCont::getStatusList()) + ->setFormData($info) + ->display(); + } + } + + public function forbid() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要禁用的数据'); + } + $r = parent::_forbid($ids); + if ($r !== false) { + // sysLogs('新闻分类id: ' . $ids . ' 禁用'); + $this->success('禁用成功', U(CONTROLLER_NAME . '/index')); + } else { + $this->error($this->_getError()); + } + } + + public function resume() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要启用的数据'); + } + $r = parent::_resume($ids); + if ($r !== false) { + $this->success('启用成功', U(CONTROLLER_NAME . '/index')); + } else { + $this->error($this->_getError()); + } + } + + public function delete() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要删除的数据'); + } + + $r = parent::_del($ids); + if ($r === false) { + $this->error($this->_getError()); + } else { + $this->success('删除成功', U(MODULE_NAME . '/' . CONTROLLER_NAME . '/index')); + } + } +} diff --git a/app/Admin/Controller/DiscussionController.class.php b/app/Admin/Controller/DiscussionController.class.php new file mode 100644 index 0000000..cdb563f --- /dev/null +++ b/app/Admin/Controller/DiscussionController.class.php @@ -0,0 +1,179 @@ +getListForCount(); + $per_page = C('ADMIN_PER_PAGE_NUM', null, false); + if ($per_page === false) { + $page = new \Gy_Library\GyPage($count); + } else { + $page = new \Gy_Library\GyPage($count, $per_page); + } + $order = 'id desc'; + $data_list = $model->getListForPage($map, $page->nowPage, $page->listRows, $order); + + foreach ($data_list as &$data) { + $data['d_name'] = $model->getDiscussionName($data['discussion_cate_id']); + $data['u_name'] = $model->getUserName($data['user_id']); + } + + $builder = new ListBuilder(); + + $builder = $builder->setMetaTitle('议题管理'); + $builder->addTopButton('addnew'); + $builder + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + // ->addSearchItem('news_name', 'select_text', '单行输入', array('name' => '名称')) + ->addTableColumn('d_name', '议题名') + ->addTableColumn('u_name', '发表者') + ->addTableColumn('content', '内容') + ->addTableColumn('create_at', '创建时间', 'time') + ->addTableColumn('sort', '排序', '', '', false) + ->addTableColumn('status', '状态', 'status', '', false) + ->addTableColumn('right_button', '操作', 'btn') + ->setTableDataList($data_list) // 数据列表 + ->setTableDataPage($page->show()) // 数据列表分页 + ->addRightButton('edit') // 添加编辑按钮 + ->addRightButton('forbid') + ->addRightButton('delete') // 添加删除按钮 + ->display(); + } + + public function add() + { + if (IS_POST) { + parent::autoCheckToken(); + $data = I('post.'); + $model = D('Discussion'); + $data['click_time'] = $data['click_time'] ?? 0; + $data['status'] = $data['status'] ?? DBCont::NORMAL_STATUS; + if ($model->createAdd($data) === false) { + $this->error($model->getError()); + } else { + $this->success('增加成功', U('index')); + } + } else { + $builder = new FormBuilder(); + $builder->setMetaTitle('添加议题') + ->setPostUrl(U('add')) + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + ->addFormItem('discussion_cate_id', 'select', '议题名', '', D('DiscussionCate')->order('id desc')->getField('id, topic', true)) + ->addFormItem('user_id', 'select', '发表者', '', D('User')->order('id desc')->getField('id, nick_name', true)) + ->addFormItem('content', 'text', '内容') + ->addFormItem('click_time', 'num', '点击量') + ->addFormItem('sort', 'num', '排序', '数字越小越靠前') + ->addFormItem('status', 'select', '状态', '', DBCont::getStatusList()) + ->display(); + } + } + + public function edit($id) + { + if (IS_POST) { + parent::autoCheckToken(); + $m_id = I('post.id'); + $data = I('post.'); + $model = D('Discussion'); + if (!$m_id) { + E('缺少内容ID'); + } + $ent = $model->getOne($m_id); + if (!$ent) { + E('不存在内容'); + } + $ent['user_id'] = $data['user_id']; + $ent['discussion_cate_id'] = $data['discussion_cate_id']; + $ent['content'] = $data['content']; + $ent['click_time'] = $data['click_time'] ?? 0; + $ent['sort'] = $data['sort'] ?? 0; + $ent['status'] = $data['status'] ?? DBCont::NORMAL_STATUS; + + if ($model->createSave($ent) === false) { + $this->error($model->getError()); + } else { + $this->success('修改成功', U('index')); + } + } else { + $model = D('Discussion'); + $info = $model->getOne($id); + + $builder = new FormBuilder(); + $builder->setMetaTitle('修改议题') + ->setPostUrl(U('edit')) + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + ->addFormItem('id', 'hidden', 'ID', 'ID') + ->addFormItem('discussion_cate_id', 'select', '议题名', '', D('DiscussionCate')->order('id desc')->getField('id, topic', true)) + ->addFormItem('user_id', 'select', '发表者', '', D('User')->order('id desc')->getField('id, nick_name', true)) + ->addFormItem('content', 'text', '内容') + ->addFormItem('click_time', 'num', '点击量') + ->addFormItem('sort', 'num', '排序', '数字越小越靠前') + ->addFormItem('status', 'select', '状态', '', DBCont::getStatusList()) + ->setFormData($info) + ->display(); + } + } + + public function forbid() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要禁用的数据'); + } + $r = parent::_forbid($ids); + if ($r !== false) { + // sysLogs('新闻分类id: ' . $ids . ' 禁用'); + $this->success('禁用成功', U(CONTROLLER_NAME . '/index')); + } else { + $this->error($this->_getError()); + } + } + + public function resume() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要启用的数据'); + } + $r = parent::_resume($ids); + if ($r !== false) { + $this->success('启用成功', U(CONTROLLER_NAME . '/index')); + } else { + $this->error($this->_getError()); + } + } + + public function delete() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要删除的数据'); + } + + $r = parent::_del($ids); + if ($r === false) { + $this->error($this->_getError()); + } else { + $this->success('删除成功', U(MODULE_NAME . '/' . CONTROLLER_NAME . '/index')); + } + } +} diff --git a/app/Admin/Controller/IntroduceController.class.php b/app/Admin/Controller/IntroduceController.class.php new file mode 100644 index 0000000..ec2a2a8 --- /dev/null +++ b/app/Admin/Controller/IntroduceController.class.php @@ -0,0 +1,126 @@ +getListForCount(); + // } + $order = 'id desc'; + $data_list = $model->getListForPage($map, 1, 3, $order); + $builder = new ListBuilder(); + + $builder = $builder->setMetaTitle('简介管理'); + $builder + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + // ->addSearchItem('news_name', 'select_text', '单行输入', array('name' => '名称')) + ->addTableColumn('belong_to', '模块') + ->addTableColumn('content', '内容') + ->addTableColumn('right_button', '操作', 'btn') + ->setTableDataList($data_list) // 数据列表 + ->addRightButton('edit') // 添加编辑按钮 + ->display(); + } + + public function edit($id) + { + if (IS_POST) { + parent::autoCheckToken(); + $m_id = I('post.id'); + $data = I('post.'); + $model = D('Introduce'); + if (!$m_id) { + E('缺少内容ID'); + } + $ent = $model->getOne($m_id); + if (!$ent) { + E('不存在内容'); + } + + $ent['content'] = $data['content']; + + if ($model->createSave($ent) === false) { + $this->error($model->getError()); + } else { + $this->success('修改成功', U('index')); + } + } else { + $model = D('Introduce'); + $info = $model->getOne($id); + $builder = new FormBuilder(); + $builder->setMetaTitle('修改简介') + ->setPostUrl(U('edit')) + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + ->addFormItem('id', 'hidden', 'ID') + // belong_to 不允许修改 + ->addFormItem('belong_to', 'text', '模块', '请勿修改此字段') + ->addFormItem('content', 'textarea', '内容') + ->setFormData($info) + ->display(); + } + } + + public function forbid() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要禁用的数据'); + } + $r = parent::_forbid($ids); + if ($r !== false) { + // sysLogs('新闻分类id: ' . $ids . ' 禁用'); + $this->success('禁用成功', U(CONTROLLER_NAME . '/index')); + } else { + $this->error($this->_getError()); + } + } + + public function resume() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要启用的数据'); + } + $r = parent::_resume($ids); + if ($r !== false) { + $this->success('启用成功', U(CONTROLLER_NAME . '/index')); + } else { + $this->error($this->_getError()); + } + } + + public function delete() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要删除的数据'); + } + + $r = parent::_del($ids); + if ($r === false) { + $this->error($this->_getError()); + } else { + $this->success('删除成功', U(MODULE_NAME . '/' . CONTROLLER_NAME . '/index')); + } + } +} diff --git a/app/Admin/Controller/NoticeUserController.class.php b/app/Admin/Controller/NoticeUserController.class.php new file mode 100644 index 0000000..2c03675 --- /dev/null +++ b/app/Admin/Controller/NoticeUserController.class.php @@ -0,0 +1,200 @@ +getListForCount(); + $per_page = C('ADMIN_PER_PAGE_NUM', null, false); + if ($per_page === false) { + $page = new \Gy_Library\GyPage($count); + } else { + $page = new \Gy_Library\GyPage($count, $per_page); + } + $order = 'id desc'; + $data_list = $model->getListForPage($map, $page->nowPage, $page->listRows, $order); + + foreach ($data_list as &$data) { + $data['r_name'] = $model->getRecruitmenName($data['notice_id']); + $data['r_name'] = $data['r_name'] ?? '(已删除的圆桌 ' . $data['notice_id'] . ')'; + $data['u_name'] = $model->getUserName($data['user_id']); + } + + $builder = new ListBuilder(); + + $builder = $builder->setMetaTitle('圆桌招募管理'); + $builder->addTopButton('addnew'); + $builder + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + // ->addSearchItem('news_name', 'select_text', '单行输入', array('name' => '名称')) + ->addTableColumn('r_name', '圆桌主题') + ->addTableColumn('u_name', '参与者') + ->addTableColumn('contact_way', '联系方式') + ->addTableColumn('topic', '主题') + ->addTableColumn('reason', '参与原因') + ->addTableColumn('more', '更多信息') + ->addTableColumn('right_button', '操作', 'btn') + ->setTableDataList($data_list) // 数据列表 + ->setTableDataPage($page->show()) // 数据列表分页 + ->addRightButton('edit') // 添加编辑按钮 + ->addRightButton('delete') // 添加删除按钮 + ->display(); + } + + public function add() + { + if (IS_POST) { + parent::autoCheckToken(); + $data = I('post.'); + $model = D('NoticeUser'); + + // 判断是否已经参与 + $is_exist = $model->where(['user_id' => $data['user_id'], 'notice_id' => $data['notice_id']])->find(); + if ($is_exist) { + $this->error('该用户已经参与'); + } + + $data['nickname'] = D('User')->where(['id' => $data['user_id']])->getField('nick_name'); + $data['contact_way'] = D('User')->where(['id' => $data['user_id']])->getField('telephone'); + + $r = $model->createAdd($data); + if ($r === false) { + $this->error($model->getError()); + } else { + $this->updateNoticeCurPeople($data['notice_id']); + $this->success('增加成功', U('index')); + } + } else { + $builder = new FormBuilder(); + $builder->setMetaTitle('添加圆桌参与') + ->setPostUrl(U('add')) + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + ->addFormItem('notice_id', 'select', '圆桌主题', '', D('RecruitmenNotice')->order('id desc')->getField('id, title', true)) + ->addFormItem('user_id', 'radio', '参与者', '', D('User')->order('id desc')->getField('id, nick_name', true)) + ->addFormItem('topic', 'text', '主题') + ->addFormItem('reason', 'textarea', '原因') + ->addFormItem('more', 'textarea', '更多') + ->display(); + } + } + + public function edit($id) + { + if (IS_POST) { + parent::autoCheckToken(); + $m_id = I('post.id'); + $data = I('post.'); + $model = D('NoticeUser'); + if (!$m_id) { + E('缺少内容ID'); + } + $ent = $model->getOne($m_id); + if (!$ent) { + E('不存在内容'); + } + + $ent['user_id'] = $data['user_id']; + $ent['notice_id'] = $data['notice_id']; + $ent['nickname'] = $data['nickname']; + $ent['contact_way'] = $data['contact_way']; + $ent['topic'] = $data['topic']; + $ent['reason'] = $data['reason']; + $ent['more'] = $data['more']; + + $r = $model->createSave($ent); + if ($r === false) { + $this->error($model->getError()); + } else { + $this->success('修改成功', U('index')); + } + } else { + $model = D('NoticeUser'); + $info = $model->getOne($id); + + $builder = new FormBuilder(); + $builder->setMetaTitle('修改圆桌参与') + ->setPostUrl(U('edit')) + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + ->addFormItem('id', 'hidden', 'ID', 'ID') + ->addFormItem('notice_id', 'select', '圆桌主题', '', D('RecruitmenNotice')->order('id desc')->getField('id, title', true)) + ->addFormItem('user_id', 'radio', '参与者', '', D('User')->order('id desc')->getField('id, nick_name', true)) + ->addFormItem('nickname', 'text', '用户名') + ->addFormItem('contact_way', 'text', '联系方式') + ->addFormItem('topic', 'text', '主题') + ->addFormItem('reason', 'textarea', '原因') + ->addFormItem('more', 'textarea', '更多') + ->setFormData($info) + ->display(); + } + } + + public function updateNoticeCurPeople($notice_id) + { + $model = D('RecruitmenNotice'); + $info = $model->getOne($notice_id); + $info['cur_people'] = D('NoticeUser')->where(['notice_id' => $notice_id])->count(); + $model->createSave($info); + } + + public function forbid() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要禁用的数据'); + } + $r = parent::_forbid($ids); + if ($r !== false) { + // sysLogs('新闻分类id: ' . $ids . ' 禁用'); + $this->success('禁用成功', U(CONTROLLER_NAME . '/index')); + } else { + $this->error($this->_getError()); + } + } + + public function resume() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要启用的数据'); + } + $r = parent::_resume($ids); + if ($r !== false) { + $this->success('启用成功', U(CONTROLLER_NAME . '/index')); + } else { + $this->error($this->_getError()); + } + } + + public function delete() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要删除的数据'); + } + + $r = parent::_del($ids); + if ($r === false) { + $this->error($this->_getError()); + } else { + $this->success('删除成功', U(MODULE_NAME . '/' . CONTROLLER_NAME . '/index')); + } + } +} diff --git a/app/Admin/Controller/RecruitmenNoticeController.class.php b/app/Admin/Controller/RecruitmenNoticeController.class.php new file mode 100644 index 0000000..d7f2793 --- /dev/null +++ b/app/Admin/Controller/RecruitmenNoticeController.class.php @@ -0,0 +1,221 @@ +getListForCount(); + $per_page = C('ADMIN_PER_PAGE_NUM', null, false); + if ($per_page === false) { + $page = new \Gy_Library\GyPage($count); + } else { + $page = new \Gy_Library\GyPage($count, $per_page); + } + $order = 'id desc'; + $data_list = $model->getListForPage($map, $page->nowPage, $page->listRows, $order); + + foreach ($data_list as &$data) { + $data['people'] = $data['cur_people'] . ' / ' . $data['max_people']; + } + + $builder = new ListBuilder(); + + $builder = $builder->setMetaTitle('圆桌招募管理'); + $builder->addTopButton('addnew'); + $builder + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + // ->addSearchItem('news_name', 'select_text', '单行输入', array('name' => '名称')) + ->addTableColumn('title', '主题') + ->addTableColumn('content', '内容') + ->addTableColumn('people', '人数') + ->addTableColumn('holding_at', '举办时间', 'time') + ->addTableColumn('sort', '排序', '', '', false) + ->addTableColumn('status', '状态', 'status', '', false) + ->addTableColumn('right_button', '操作', 'btn') + ->setTableDataList($data_list) // 数据列表 + ->setTableDataPage($page->show()) // 数据列表分页 + ->addRightButton('edit') // 添加编辑按钮 + ->addRightButton('forbid') + ->addRightButton('delete') // 添加删除按钮 + ->display(); + } + + public function add() + { + if (IS_POST) { + parent::autoCheckToken(); + $data = I('post.'); + $model = D('RecruitmenNotice'); + $data['status'] = $data['status'] ?? DBCont::NORMAL_STATUS; + $data['cur_people'] = count($data['cur_peoples']); + $r = $model->createAdd($data); + if ($r === false) { + $this->error($model->getError()); + } else { + if ($data['cur_people'] > 0) { + $datas = $data['cur_peoples']; + foreach ($datas as $id) { + $rmodel = D('NoticeUser'); + $data['user_id'] = $id; + $data['notice_id'] = $r; + $data['nickname'] = D('User')->where(['id' => $id])->getField('nick_name'); + $data['contact_way'] = D('User')->where(['id' => $id])->getField('telephone'); + $rr = $rmodel->createAdd($data); + if ($rr === false) { + $this->error($rmodel->getError()); + } + } + } + $this->success('增加成功', U('index')); + } + } else { + $builder = new FormBuilder(); + $builder->setMetaTitle('添加议题') + ->setPostUrl(U('add')) + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + ->addFormItem('title', 'text', '主题') + ->addFormItem('content', 'textarea', '内容') + ->addFormItem('cur_peoples', 'checkbox', '报名者', '', D('User')->order('id desc')->getField('id, nick_name', true)) + ->addFormItem('max_people', 'num', '最大人数') + ->addFormItem('sort', 'num', '排序', '数字越小越靠前') + ->addFormItem('status', 'select', '状态', '', DBCont::getStatusList()) + ->display(); + } + } + + public function edit($id) + { + if (IS_POST) { + parent::autoCheckToken(); + $m_id = I('post.id'); + $data = I('post.'); + $model = D('RecruitmenNotice'); + if (!$m_id) { + E('缺少内容ID'); + } + $ent = $model->getOne($m_id); + if (!$ent) { + E('不存在内容'); + } + $ent['title'] = $data['title']; + $ent['content'] = $data['content']; + $ent['max_people'] = $data['max_people']; + $ent['sort'] = $data['sort'] ?? 0; + $ent['holding_at'] = $data['holding_at']; + $ent['status'] = $data['status'] ?? DBCont::NORMAL_STATUS; + $ent['cur_people'] = count($data['cur_peoples']); + + $r = $model->createSave($ent); + if ($r === false) { + $this->error($model->getError()); + } else { + if ($ent['cur_people'] > 0) { + $datas = $data['cur_peoples']; + $select_users = D('NoticeUser')->where(['notice_id' => $m_id])->getField('user_id', true); + $to_delete_users = array_diff($select_users, $datas); + $rmodel = D('NoticeUser'); + foreach ($datas as $uid) { + $is_exist = $rmodel->where(['user_id' => $id, 'notice_id' => $m_id])->find(); + if ($is_exist) { + continue; + } else { + $rdata['user_id'] = $uid; + $rdata['notice_id'] = $id; + $rdata['nickname'] = D('User')->where(['id' => $uid])->getField('nick_name'); + $rdata['contact_way'] = D('User')->where(['id' => $uid])->getField('telephone'); + $rr = $rmodel->createAdd($rdata); + if ($rr === false) { + $this->error($rmodel->getError()); + } + } + } + if ($to_delete_users) { + $rmodel->where(['user_id' => ['in', $to_delete_users], 'notice_id' => $m_id])->delete(); + } + } + $this->success('修改成功', U('index')); + } + } else { + $model = D('RecruitmenNotice'); + $info = $model->getOne($id); + + $info['cur_peoples'] = D('NoticeUser')->where(['notice_id' => $id])->getField('user_id', true); + + $builder = new FormBuilder(); + $builder->setMetaTitle('修改议题') + ->setPostUrl(U('edit')) + ->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index') + ->addFormItem('id', 'hidden', 'ID', 'ID') + ->addFormItem('title', 'text', '主题') + ->addFormItem('content', 'textarea', '内容') + ->addFormItem('cur_peoples', 'checkbox', '报名者', '', D('User')->order('id desc')->getField('id, nick_name', true)) + ->addFormItem('max_people', 'num', '最大人数') + ->addFormItem('sort', 'num', '排序', '数字越小越靠前') + ->addFormItem('status', 'select', '状态', '', DBCont::getStatusList()) + ->setFormData($info) + ->display(); + } + } + + public function forbid() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要禁用的数据'); + } + $r = parent::_forbid($ids); + if ($r !== false) { + // sysLogs('新闻分类id: ' . $ids . ' 禁用'); + $this->success('禁用成功', U(CONTROLLER_NAME . '/index')); + } else { + $this->error($this->_getError()); + } + } + + public function resume() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要启用的数据'); + } + $r = parent::_resume($ids); + if ($r !== false) { + $this->success('启用成功', U(CONTROLLER_NAME . '/index')); + } else { + $this->error($this->_getError()); + } + } + + public function delete() + { + $ids = I('ids'); + if (!$ids) { + $this->error('请选择要删除的数据'); + } + + $r = parent::_del($ids); + if ($r === false) { + $this->error($this->_getError()); + } else { + $this->success('删除成功', U(MODULE_NAME . '/' . CONTROLLER_NAME . '/index')); + } + } +} diff --git a/app/Common/Model/CommentsInfoModel.class.php b/app/Common/Model/CommentsInfoModel.class.php index a5eb380..a8402d0 100644 --- a/app/Common/Model/CommentsInfoModel.class.php +++ b/app/Common/Model/CommentsInfoModel.class.php @@ -7,17 +7,22 @@ use \Gy_Library\DBCont; class CommentsInfoModel extends \Gy_Library\GyListModel { protected $model_name = '评论列表'; + protected $table_name = 'comments_info'; protected $_auto = array( // array('created_at', "date", parent::MODEL_INSERT, 'function', array('Y-m-d H:i:s')), - array('from_name', 'getUserName', parent::MODEL_INSERT, 'callback'), - array('from_avatar', 'getUserAvatar', parent::MODEL_INSERT, 'callback'), + // array('from_name', 'getUserName', parent::MODEL_BOTH, 'callback'), + // array('from_avatar', 'getUserAvatar', parent::MODEL_BOTH, 'callback'), array('create_time', 'time', parent::MODEL_INSERT, 'function'), array('update_time', 'time', parent::MODEL_BOTH, 'function') ); protected $_validate = array( - array('name', 'require', '请填写名称'), + array('tz_news_id', 'require', '请选择文章'), + array('from_id', 'require', '请选择发表者'), + array('content', 'require', '请填写内容'), + // 检验是否为整数 + array('like_num', 'number', '点赞数必须为整数'), ); @@ -38,6 +43,13 @@ class CommentsInfoModel extends \Gy_Library\GyListModel return $k_data['nick_name']; } + public function getUserAvatar($id) + { + $k_model = D('UserAvatar'); + $k_data = $k_model->where(array('user_id' => $id))->find(); + return $k_data['avatar']; + } + public function getNewsName($id) { $k_model = D('News'); diff --git a/app/Common/Model/CommentsReplyModel.class.php b/app/Common/Model/CommentsReplyModel.class.php new file mode 100644 index 0000000..34d88af --- /dev/null +++ b/app/Common/Model/CommentsReplyModel.class.php @@ -0,0 +1,106 @@ +createAdd($data); + } + + public function updateTitle($data) + { + return $this->createSave($data); + } + + public function getComment($id) + { + $k_model = D('CommentsInfo'); + $k_data = $k_model->where(array('id' => $id))->find(); + return $k_data; + } + + public function getUserName($id) + { + $k_model = D('User'); + $k_data = $k_model->where(array('id' => $id))->find(); + return $k_data['nick_name']; + } + + public function getUserAvatar($id) + { + $k_model = D('UserAvatar'); + $k_data = $k_model->where(array('user_id' => $id))->find(); + return $k_data['avatar']; + } + + public function getNewsName($id) + { + $k_model = D('News'); + $k_data = $k_model->where(array('id' => $id))->find(); + return $k_data['title']; + } + + public function getKeywordName($id) + { + $k_model = D('Keywords'); + $k_data = $k_model->where(array('id' => $id))->find(); + return $k_data['name']; + } + + public function getCateName($id) + { + $k_model = D('NewsCate'); + $k_data = $k_model->where(array('id' => $id))->find(); + return $k_data['name']; + } + + public function extraKeyword($str) + { + $str = trim($str); + if ($str == '') { + return ''; + } + $arr = explode(',', $str); + foreach ($arr as &$a) { + $a = $this->getKeywordName($a); + } + $re = join(',', $arr); + return $re; + } + + public function extraCate($str) + { + $str = trim($str); + if ($str == '') { + return ''; + } + $arr = explode(',', $str); + foreach ($arr as &$a) { + $a = $this->getCateName($a); + } + $re = join(',', $arr); + return $re; + } +} diff --git a/app/Common/Model/ContentResModel.class.php b/app/Common/Model/ContentResModel.class.php new file mode 100644 index 0000000..05acf75 --- /dev/null +++ b/app/Common/Model/ContentResModel.class.php @@ -0,0 +1,92 @@ +createSave($data); + } + + public function getUserName($id) + { + $k_model = D('User'); + $k_data = $k_model->where(array('id' => $id))->find(); + return $k_data['nick_name']; + } + + public function getUserAvatar($id) + { + $k_model = D('UserAvatar'); + $k_data = $k_model->where(array('user_id' => $id))->find(); + return $k_data['avatar']; + } + + public function getNewsName($id) + { + $k_model = D('News'); + $k_data = $k_model->where(array('id' => $id))->find(); + return $k_data['title']; + } + + public function getKeywordName($id) + { + $k_model = D('Keywords'); + $k_data = $k_model->where(array('id' => $id))->find(); + return $k_data['name']; + } + + public function getCateName($id) + { + $k_model = D('NewsCate'); + $k_data = $k_model->where(array('id' => $id))->find(); + return $k_data['name']; + } + + public function extraKeyword($str) + { + $str = trim($str); + if ($str == '') { + return ''; + } + $arr = explode(',', $str); + foreach ($arr as &$a) { + $a = $this->getKeywordName($a); + } + $re = join(',', $arr); + return $re; + } + + public function extraCate($str) + { + $str = trim($str); + if ($str == '') { + return ''; + } + $arr = explode(',', $str); + foreach ($arr as &$a) { + $a = $this->getCateName($a); + } + $re = join(',', $arr); + return $re; + } +} diff --git a/app/Common/Model/DiscussionCateModel.class.php b/app/Common/Model/DiscussionCateModel.class.php new file mode 100644 index 0000000..a2ffb69 --- /dev/null +++ b/app/Common/Model/DiscussionCateModel.class.php @@ -0,0 +1,22 @@ +where(['id' => $id])->find(); + return $data['topic']; + } + + public function getUserName($id) + { + $model = M('User'); + $data = $model->where(['id' => $id])->find(); + return $data['nick_name']; + } +} diff --git a/app/Common/Model/IntroduceModel.class.php b/app/Common/Model/IntroduceModel.class.php new file mode 100644 index 0000000..9e29911 --- /dev/null +++ b/app/Common/Model/IntroduceModel.class.php @@ -0,0 +1,92 @@ +createSave($data); + } + + public function getUserName($id) + { + $k_model = D('User'); + $k_data = $k_model->where(array('id' => $id))->find(); + return $k_data['nick_name']; + } + + public function getUserAvatar($id) + { + $k_model = D('UserAvatar'); + $k_data = $k_model->where(array('user_id' => $id))->find(); + return $k_data['avatar']; + } + + public function getNewsName($id) + { + $k_model = D('News'); + $k_data = $k_model->where(array('id' => $id))->find(); + return $k_data['title']; + } + + public function getKeywordName($id) + { + $k_model = D('Keywords'); + $k_data = $k_model->where(array('id' => $id))->find(); + return $k_data['name']; + } + + public function getCateName($id) + { + $k_model = D('NewsCate'); + $k_data = $k_model->where(array('id' => $id))->find(); + return $k_data['name']; + } + + public function extraKeyword($str) + { + $str = trim($str); + if ($str == '') { + return ''; + } + $arr = explode(',', $str); + foreach ($arr as &$a) { + $a = $this->getKeywordName($a); + } + $re = join(',', $arr); + return $re; + } + + public function extraCate($str) + { + $str = trim($str); + if ($str == '') { + return ''; + } + $arr = explode(',', $str); + foreach ($arr as &$a) { + $a = $this->getCateName($a); + } + $re = join(',', $arr); + return $re; + } +} diff --git a/app/Common/Model/NoticeUserModel.class.php b/app/Common/Model/NoticeUserModel.class.php new file mode 100644 index 0000000..189dc2d --- /dev/null +++ b/app/Common/Model/NoticeUserModel.class.php @@ -0,0 +1,35 @@ +where(['id' => $id])->find(); + return $data['title']; + } + + public function getUserName($id) + { + $model = M('User'); + $data = $model->where(['id' => $id])->find(); + return $data['nick_name']; + } +} diff --git a/app/Common/Model/RecruitmenNoticeModel.class.php b/app/Common/Model/RecruitmenNoticeModel.class.php new file mode 100644 index 0000000..3735c55 --- /dev/null +++ b/app/Common/Model/RecruitmenNoticeModel.class.php @@ -0,0 +1,24 @@ +