public function actionDellPoll() { $options = Yii::$app->request->post('options', false); // $options = json_decode($options); //判断是否登录 if (!($user = Yii::$app->util->isLogin())) { echo Yii::$app->util->formatResEncode('1004', '未登录'); return; } //判断用户是否已经投票 $mPollVoter = new PollVoter(); if ($mPollVoter->isVote($user['uid'], Poll::DELL_POLL)) { echo Yii::$app->util->formatResEncode('1003', '用户已投票'); return; } //是否ajax请求 if (!Yii::$app->util->isAjax()) { echo Yii::$app->util->formatResEncode('1001', '不是Ajax请求'); return; } //获取投票项id数组 $mPollOption = new PollOption(); $opIds = $mPollOption->getOptionIds(Poll::DELL_POLL); //参数处理 if (!$options || !is_array($options) || array_diff($options, $opIds)) { echo Yii::$app->util->formatResEncode('1002', '参数错误'); return; } else { $options = array_map('intval', $options); } //入库 $voteDate = ['user_id' => $user['uid'], 'poll_id' => Poll::DELL_POLL, 'poll_type_id' => PollType::WORD_POLLTYPE, 'voter_ipaddress' => Yii::$app->request->userIP, 'voter_useragent' => $_SERVER['HTTP_USER_AGENT']]; $store = true; foreach ($options as $option) { $voteDate['option_id'] = $option; $mPollVoter->isNewRecord = true; $mPollVoter->store($voteDate) !== false ? '' : ($store = false); $store ? $mPollOption->addVoteNum($option) : ''; $mPollVoter->voter_id = 0; } if ($store) { echo Yii::$app->util->formatResEncode('0', '成功'); return; } else { echo Yii::$app->util->formatResEncode('1005', '程序异常'); return; } }
/** * 投票项列表页 * @author * @param int $poll_id 投票id * * @return **/ public function actionView() { //菜单权限检测 Yii::$app->util->adminAuth() ? '' : $this->redirect('/admin/login'); $id = Yii::$app->request->get('poll_id', false); $id = intval($id); if (!$id) { Yii::$app->util->msg('参数错误'); } //获取投票项id数组 $mPollOption = new PollOption(); $ids = $mPollOption->getOptionIds($id) ? $mPollOption->getOptionIds($id) : []; $searchModel = new OptionSearch(); $dataProvider = $searchModel->search($ids, Yii::$app->request->queryParams); return $this->render('view', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider]); }