model() public static method

Please note that you should have this exact method in all your CActiveRecord descendants!
public static model ( string $className = __CLASS__ ) : UserToken
$className string active record class name.
return UserToken the static model class
 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;
 }
Beispiel #6
0
 /**
  * 用户忘记密码后使用手机号获得验证码重置密码
  * @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');
 }
Beispiel #10
0
 /**
  * 用户解除绑定学员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;
 }