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) { $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')); } } }