homepagePHP/app/Admin/Controller/RecruitmenNoticeController....

223 lines
8.7 KiB
PHP

<?php
namespace Admin\Controller;
use Gy_Library\GyListController;
use Gy_Library\DBCont;
use Qscmf\Builder\FormBuilder;
use Qscmf\Builder\ListBuilder;
use Qscmf\Builder\TSubBuilder;
/*
* 关键词
*/
class RecruitmenNoticeController extends GyListController
{
use TSubBuilder;
public function index()
{
$map = [];
$model = D('RecruitmenNotice');
$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) {
$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;
if ($data['cur_peoples']) $data['cur_people'] = count($data['cur_peoples']);
else $data['cur_people'] = 0;
$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'));
}
}
}