public function loadModel($id) { if (($model = UserToken::model()->findByPk($id)) === null) { throw new CHttpException(404, 'Страница не найдена'); } return $model; }
/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * * @param int $id - record ID * * @return UserToken * * @throws CHttpException */ public function loadModel($id) { if (($model = UserToken::model()->findByPk($id)) === null) { throw new CHttpException(404, Yii::t('UserModule.user', 'requested page was not found!')); } return $model; }
/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * * @param int $id - record ID * * @return UserToken * * @throws CHttpException */ public function loadModel($id) { if ($this->_model === null || $this->_model instanceof UserToken && $this->_model->id !== $id) { if (($this->_model = UserToken::model()->findbyPk($id)) === null) { throw new CHttpException(404, 'Страница не найдена'); } } return $this->_model; }
public function activate(UserToken $token, $invalidate = true) { $token->status = UserToken::STATUS_ACTIVATE; if ($token->save()) { if ($invalidate) { UserToken::model()->deleteAll('id != :id AND user_id = :user_id AND type = :type', array(':user_id' => $token->user_id, ':type' => $token->type, ':id' => $token->id)); } return true; } throw new CDbException(Yii::t('UserModule.user', 'Error activate token!')); }
/** * 用户获取试卷进行测试,获取5题 进行测试 * @param $userId * @param $token * @param $subject * @return array|int */ public function getTestList($userId, $token, $subject) { $nowTime = date("Y-m-d H-i-s", strtotime("now")); $data = array(); try { // 用户ID验证 $user = User::model()->IsUserId($userId); if (!$user) { return 20008; // MSG_ERR_FAIL_USER } // 用户token验证 $userToken = UserToken::model()->IsToken($userId, $token); // var_dump($userToken);exit; if (!$userToken) { return 20007; // MSG_ERR_FAIL_TOKEN } // 验证测试类别 $subjects = self::IsSubject(); $userSubject = in_array($subject, $subjects); if (!$userSubject) { return 20010; // MSG_ERR_FAIL_SUBJECT } if ($subject == 1) { $result = Yii::app()->cnhutong_user->createCommand()->select('id, type, content, answer_a, answer_b, answer_c, answer_d, answer')->from('com_question')->order('rand()')->limit('5')->queryAll(); } else { $result = Yii::app()->cnhutong_user->createCommand()->select('id, type, content, answer_a, answer_b, answer_c, answer_d, answer')->from('com_question')->where('subject = :subject', array(':subject' => $subject))->order('rand()')->limit('5')->queryAll(); } $question_id = ''; $answers = ''; foreach ($result as $value) { $question_id .= $value['id'] . '|'; $answers .= $value['answer'] . '|'; } $question_id = rtrim($question_id, "|"); $answers = rtrim($answers, "|"); // // 测试用 // $data['question_id'] = $question_id; // $data['answers'] = $answers; // 生成题目记录到user_question_history $question_history = Yii::app()->cnhutong_user->createCommand()->insert('user_question_history', array('user_id' => $userId, 'question_id' => $question_id, 'answers' => $answers, 'create_ts' => $nowTime, 'score' => 0, 'subject' => $subject)); // 取得插入题目的测试编号 $testId = Yii::app()->cnhutong_user->getLastInsertID(); $data['testId'] = $testId; foreach ($result as $row) { // 获取数据 $questions = array(); $questions['questionId'] = $row['id']; $questions['questionType'] = $row['type']; $questions['content'] = $row['content']; $questions['answerA'] = $row['answer_a']; $questions['answerB'] = $row['answer_b']; $questions['answerC'] = $row['answer_c']; $questions['answerD'] = $row['answer_d']; $question_filter = array_filter($questions); $data['questions'][] = $question_filter; } // 增加题库类型相应测试人数 $testUsers = self::getTestUsers($subject); $testUsers++; // 测试人数相应加1 $addTestUsers = Yii::app()->cnhutong_user->createCommand()->update('com_subject', array('testUsers' => $testUsers), 'id = :subject', array(':subject' => $subject)); } catch (Exception $e) { error_log($e); } return $data; }
/** * 用户忘记密码后使用手机号获得验证码重置密码 * @param $mobile * @param $password * @param $checkNum * @return array|int */ public function resetPassword($mobile, $password, $checkNum) { // $passwordMd5 = md5($password); $data = array(); try { $userId = self::getUserByMobile($mobile); if (!$userId) { return 10006; // MSG_ERR_UN_REGISTER_MOBILE } $mobile_checkcode = LogMobileCheckcode::model()->checkCode($mobile, $checkNum); if (!$mobile_checkcode) { return 10005; // MSG_ERR_CODE_OVER_TIME } //手机号码已注册且验证码正确 update Yii::app()->cnhutong_user->createCommand()->update('user', array('password' => $password), 'mobile = :mobile', array(':mobile' => $mobile)); //修改成功,验证码使用后改变验证码status状态 Yii::app()->cnhutong_user->createCommand()->update('log_mobile_checkcode', array('status' => 1), 'mobile = :mobile', array(':mobile' => $mobile)); //userId $data['userId'] = $userId; //token $data['token'] = UserToken::model()->getToken($userId); //用户昵称,积分,等级 $userMessage = self::getUserMessageByUserId($userId); $data['mobile'] = $userMessage['mobile']; $data['nickname'] = $userMessage['username']; $data['points'] = $userMessage['score']; $data['level'] = $userMessage['level']; //members $data['members'] = UserMember::model()->getMembers($userId); if (!$data['members']) { $data['members'] = []; } } catch (Exception $e) { error_log($e); } return $data; }
/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * * @param int $id - record ID * * @return UserToken * * @throws CHttpException */ public function loadModel($id) { if ($this->_model === null || $this->_model instanceof UserToken && $this->_model->id !== $id) { if (($this->_model = UserToken::model()->findbyPk($id)) === null) { throw new CHttpException(404, Yii::t('UserModule.user', 'requested page was not found!')); } } return $this->_model; }
/** * action_id : 2114 * 用户在app中获取积分历史 * @token $token string --登录token * @userId $userId int --用户id * @return result 调用返回结果 * @return msg 调用返回结果说明 * @return data 调用返回数据 */ public function actionGetUserPointHistory() { if (!isset($_REQUEST['token']) || !isset($_REQUEST['userId']) || !isset($_REQUEST['historyId'])) { $this->_return('MSG_ERR_LESS_PARAM'); } $token = Yii::app()->request->getParam('token', NULL); $userId = Yii::app()->request->getParam('userId', NULL); $historyId = Yii::app()->request->getParam('historyId', NULL); if (!ctype_digit($userId)) { $this->_return('MSG_ERR_FAIL_USER'); } if (!ctype_digit($historyId)) { $this->_return('MSG_ERR_HISTORY_ID'); } // 用户user/token验证 $userToken = UserToken::model()->IsToken($userId, $token); if (!$userToken) { $this->_return('MSG_ERR_FAIL_TOKEN'); // MSG_ERR_FAIL_TOKEN } $data = UserScoreHistory::model()->userPointHistory($userId, $historyId); if ($data === 20030) { $this->_return('MSG_ERR_NULL_HISTORY'); } // TODO : add log $actionId = 2114; $params = ''; foreach ($_REQUEST as $key => $value) { $params .= $key . '=' . $value . '&'; } LogUserAction::model()->userAction($userId, $actionId, $params); $this->_return('MSG_SUCCESS', $data); }
public function safeUp() { UserToken::model()->deleteAll(); $this->addColumn('{{user_tokens}}', 'expire', 'datetime NOT NULL'); }
/** * 用户解除绑定学员id * @param $userId * @param $token * @param $memberId * @return array */ public function removeMember($userId, $token, $memberId) { $data = array(); try { // 验证userId $user = User::model()->IsUserId($userId); if (!$user) { return 20008; // MSG_ERR_FAIL_USER } // 验证token $userToken = UserToken::model()->IsToken($userId, $token); if (!$userToken) { return 20007; // MSG_ERR_FAIL_TOKEN } // 验证要删除的memberId 是否存在 $userMemberId = self::IsExistMemberId($userId, $memberId); if (!$userMemberId) { return 20017; // MSG_ERR_FAIL_MEMBER } // 验证通过后,解除学员id的绑定 $delete_member = Yii::app()->cnhutong_user->createCommand()->update('user_member', array('status' => 9), 'user_id = :userId And member_id = :memberId', array(':userId' => $userId, ':memberId' => $memberId)); //members $data['members'] = self::getMembers($userId); if (!$data['members']) { $data['members'] = []; } } catch (Exception $e) { error_log($e); } return $data; }
/** * 学员对上过的课时进行评价和打分 * @param $userId -- 用户ID * @param $token -- 用户验证token * @param $memberId -- 用户当前绑定的学员对对应的ID * @param $lessonStudentId -- 课时唯一编号 * @param $score -- 学员给课时的评分,1-5分 * @param $stateComment -- 课时评价,可以为空 * @return array|int */ public function lessonStudent($userId, $token, $memberId, $lessonStudentId, $score, $stateComment) { $data = array(); try { // 用户ID验证 $user = User::model()->IsUserId($userId); if (!$user) { return 10010; // MSG_ERR_FAIL_USER } // 用户token验证 $userToken = UserToken::model()->IsToken($userId, $token); // var_dump($userToken);exit; if (!$userToken) { return 10009; // MSG_ERR_FAIL_TOKEN } $isExistUserMemberId = UserMember::model()->IsExistMemberId($userId, $memberId); if (!$isExistUserMemberId) { return 40003; // MSG_ERR_FAIL_MEMBER } $isLessonStudentId = self::IsLessonStudentId($memberId, $lessonStudentId); if (!$isLessonStudentId) { return 60002; } if ($score < 0 || $score > 5) { return 70001; } $result = Yii::app()->cnhutong->createCommand()->update('ht_lesson_student', array('student_rating' => $score, 'student_comment' => $stateComment), 'student_id = :studentId And id = :id', array(':studentId' => $memberId, ':id' => $lessonStudentId)); if (empty($result)) { $data[] = []; } // $data = $result; } catch (Exception $e) { error_log($e); } return $data; }
/** * 学员在APP中对自己的课时进行请假或者取消请假的操作 * @param $userId * @param $token * @param $memberId * @param $lessonStudentId * @param $leaveType * @return array|int */ public function lessonStudentLeave($userId, $token, $memberId, $lessonStudentId, $leaveType) { $nowTime = date("Y-m-d H-i-s"); $data = array(); try { // 用户ID验证 $user = User::model()->IsUserId($userId); if (!$user) { return 20008; // MSG_ERR_FAIL_USER } // 用户token验证 $userToken = UserToken::model()->IsToken($userId, $token); // var_dump($userToken);exit; if (!$userToken) { return 20007; // MSG_ERR_FAIL_TOKEN } $isExistUserMemberId = UserMember::model()->IsExistMemberId($userId, $memberId); if (!$isExistUserMemberId) { return 20017; // MSG_ERR_FAIL_MEMBER } $isLessonStudentId = self::IsLessonStudentId($memberId, $lessonStudentId); if (!$isLessonStudentId) { return 20021; // MSG_ERR_LESSON_STUDENT_ID } // step 状态 0 - 等待确认,1 - 取消请假,3 - 锁定,2 - 请假完成 $aStep = array(0, 1, 2, 3); // 学员请假 if ($leaveType == 1) { $reminder = self::getHtReminder($memberId, $lessonStudentId); // 测试memberId = 410, lessonStudentId = 82 if ($reminder) { // 请假记录存在 $step = $reminder['step']; if ($step == 1) { // 学员请假后,客服未处理。学员又取消了请假,此时可以请假 self::setStep($memberId, $lessonStudentId, 0); // 设置请假状态 为请假 } else { return 20032; //MSG_ERR_NO_LEAVE } } else { // 请假记录不存在 self::insertLeave($memberId, $lessonStudentId); // 增加请假记录 } // var_dump($reminder['step']); } elseif ($leaveType == 2) { $reminder = self::getHtReminder($memberId, $lessonStudentId); if (!$reminder) { // 请假记录不存在,当然不能取消请假 return 20033; // MSG_ERR_NO_CANCEL_LEAVE } else { // 请假记录存在,且 step = 0 则可以取消请假 $step = $reminder['step']; if ($step == 0) { self::setStep($memberId, $lessonStudentId, 1); // 设置请假状态 为取消请假 } else { return 20033; // MSG_ERR_NO_CANCEL_LEAVE } } // var_dump(7); } else { return 20031; } } catch (Exception $e) { error_log($e); } return $data; }
/** * 用户完成测试试卷后提交试卷 * @param $userId * @param $token * @param $testId * @param $answer * @return array */ public function postTestAnswer($userId, $token, $testId, $answer) { $nowTime = date("Y-m-d H-i-s", strtotime("now")); //当前时间; $data = array(); try { // 用户ID验证 $user = User::model()->IsUserId($userId); if (!$user) { return 20008; // MSG_ERR_FAIL_USER } // 用户token验证 $userToken = UserToken::model()->IsToken($userId, $token); // var_dump($userToken);exit; if (!$userToken) { return 20007; // MSG_ERR_FAIL_TOKEN } // 测试编号testId验证 $userTestId = self::IsTestId($testId); if (!$userTestId) { return 20012; // MSG_ERR_FAIL_TESTID } // 3-2|2-1|4-1234 拆分为 数组 3-2,2-1,4-1234 $question_answer = explode("|", $answer); // var_dump($question_answer); $len = count($question_answer); // var_dump($len); // 一维数组 3-1,2-1,4-1234 拆分为二位数组 $questions = array(); for ($i = 0; $i < $len; $i++) { $questions[$i] = explode('-', $question_answer[$i]); } $q = ''; $a = ''; // $q 题目ID字符串 以‘|’连接 // $a 题目答案字符串 以 ‘|’ 连接 for ($j = 0; $j < count($questions); $j++) { $q .= $questions[$j][0] . '|'; $a .= $questions[$j][1] . '|'; } $q = rtrim($q, "|"); $a = rtrim($a, "|"); // var_dump($questions); // var_dump($q); // var_dump($a); $rightAnswer = ''; $rightAnswer = Yii::app()->cnhutong_user->createCommand()->select('question_id, answers')->from('user_question_history')->where('id = :testId And user_id = :userId', array(':testId' => $testId, ':userId' => $userId))->queryRow(); // var_dump($rightAnswer);exit; // 答案数组 $aAnswer = explode('|', $a); // var_dump($aAnswer); // 题目ID数组 $aQuestion = explode('|', $q); // 比对生成题目ID的顺序与提交题目ID的顺序是否相同,如果不同,报错 // 正确答案数组 $aRightAnswer = explode('|', $rightAnswer['answers']); // var_dump($aRightAnswer);exit; // 正确题目ID数组 $aRightQuestion = explode('|', $rightAnswer['question_id']); // var_dump($aRightQuestion); // var_dump($aQuestion); // 比对题目数组交集 $count = count(array_intersect_assoc($aRightQuestion, $aQuestion)); // var_dump(array_intersect_assoc($aRightQuestion, $aQuestion)); // var_dump($count); // 实际题目数量 $num = count($aQuestion); // var_dump($num); if ($count !== $num) { return 20023; } // 比对答案得出分数 $score = count(array_intersect_assoc($aRightAnswer, $aAnswer)) * 20; // var_dump($score); // var_dump(array_intersect_assoc($aRightAnswer, $aAnswer)); // 提交答案比对生成题库答案,得出分数score,更新得分等数据 $scoreResult = Yii::app()->cnhutong_user->createCommand()->update('user_question_history', array('update_ts' => $nowTime, 'post_answer' => $a, 'score' => $score), 'id = :testId And user_id = :userId', array(':testId' => $testId, ':userId' => $userId)); // 答题得积分 (用户每天首轮答题,1题2积分) $point = count(array_intersect_assoc($aRightAnswer, $aAnswer)) * 2; // 答对题数获得的积分,1题2分 $count = count(self::IssetQuestion($userId)); if ($count > 1) { $pointChange = 0; } else { $pointChange = $point; } $change = $pointChange; $reason = 6; // 积分变化类型 scoreChangeByReason($reason) 获得类型 $scoreRest = UserScoreHistory::model()->getPoint($userId) + $pointChange; $createTs = $nowTime; $memo = null; // 积分变化记录历史 $scoreHistory = UserScoreHistory::model()->insertScoreHistory($userId, $change, $reason, $scoreRest, $createTs, $memo); $scoreUpdate = UserScoreHistory::model()->updateUserScore($userId, $scoreRest); // 获得此课程类型的所有答题分数 $scores = self::getAllScores($testId); // 得分在分数组中位置 $num = array_search($score, $scores) + 1; // 课程答题人数 $testUsers = self::testUsers($testId); $percent = $num / $testUsers * 10000; $percent = explode(".", $percent); // $data['scores'] = $scores; $data['percent'] = $percent[0]; $data['testScore'] = $score; $data['point'] = $pointChange; } catch (Exception $e) { error_log($e); } return $data; }