Beispiel #1
0
 /**
  * 学员用户登录。
  * @param  string $agencyId 机构ID
  * @param  string $username 用户名
  * @param  string $pwd      加密密码:md5(学员用户账号+学员用户输入明文密码)
  * @param  int    $terminal 终端(2-苹果,3-安卓,4-其他)
  * @return json             反馈数据
  */
 public function login($agencyId, $username, $pwd, $terminal = 2)
 {
     if (APP_DEBUG) {
         trace("学员用户登录[agencyId=>{$agencyId}][username=>{$username}][pwd=>{$pwd}]...");
     }
     //检查所属机构ID
     if (!isset($agencyId) || empty($agencyId)) {
         return build_callback_error(-300, '机构ID为空!');
     }
     //检查用户名
     if (!isset($username) || empty($username)) {
         return build_callback_error(-301, '用户名为空!');
     }
     //检查密码
     if (!isset($pwd) || empty($pwd)) {
         return build_callback_error(-302, '密码为空!');
     }
     //查询数据
     $_data = $this->field('userid,realname,passwords,lock')->where("`jgid` = '%s' and username = '******'", array($agencyId, $username))->find();
     if (!$_data) {
         if (APP_DEBUG) {
             trace("用户名[{$username}]不存在!");
         }
         return build_callback_error(-303, '用户名不存在!');
     } else {
         if (isset($_data['lock']) && !empty($_data['lock'])) {
             if (APP_DEBUG) {
                 trace("用户账号[{$username}]已被锁定!");
             }
             return build_callback_error(-304, '用户已被锁定!');
         } else {
             if (isset($_data['passwords'])) {
                 //0.校验密码
                 //1.加密计算
                 $_encypt_pwd = md5($username . $_data['passwords']);
                 if ($_encypt_pwd != $pwd) {
                     if (APP_DEBUG) {
                         trace("密码错误[{$_encypt_pwd} != {$pwd}]..");
                     }
                     return build_callback_error(-305, '密码错误!');
                 } else {
                     $_userId = $_data['userid'];
                     //验证成功,生成随机用户ID(用于限制一个账号多处登录)
                     $_rand_user_id = String::uuid();
                     //更新成功
                     if ($this->save(array('UserID' => $_userId, 'app_random_id' => $_rand_user_id, 'LoginTime' => date('Y-m-d H:i:s', time())))) {
                         //更新登录次数
                         $this->where("`userid`='%s'", array($_userId))->setInc('loginnum');
                         //写入登录日志
                         M('UserLog')->add(array('UID' => $_userId, 'LoginType' => intval($terminal), 'LoginIP' => get_client_ip(), 'create_time' => date('Y-m-d H:i:s', time())));
                         //返回数据
                         return build_callback_success(array('agencyId' => $agencyId, 'randUserId' => $_rand_user_id, 'realName' => $_data['realname'], 'download' => 1));
                     } else {
                         if (APP_DEBUG) {
                             trace("随机用户ID[{$_rand_user_id}=>{$_userId}]写入数据失败:{$_update}");
                         }
                         return build_callback_error(-306, '更新随机用户ID失败,请联系管理员!');
                     }
                 }
             } else {
                 return build_callback_error(-307, '未知错误,请联系管理员!');
             }
         }
     }
 }
 /**
  * 发送反馈失败消息。
  * @param  integer $code  错误代码。
  * @param  string  $msg   错误消息。
  * @return void
  */
 protected function send_callback_error($code = 0, $msg = '')
 {
     $this->response(build_callback_error($code, $msg));
 }
 /**
  * 学员用户登录。
  * @param  string $agencyId 机构ID
  * @param  string $username 用户名
  * @param  string $pwd      加密密码:md5(学员用户账号+学员用户输入明文密码)
  * @param  int    $terminal 终端(2-苹果,3-安卓,4-其他)
  * @return json             反馈数据
  */
 public function login($agencyId, $username, $pwd, $terminal = 2)
 {
     if (APP_DEBUG) {
         trace("学员用户登录[agencyId=>{$agencyId}][username=>{$username}][pwd=>{$pwd}]...");
     }
     //检查所属机构ID
     if (!isset($agencyId) || empty($agencyId)) {
         return build_callback_error(-300, '机构ID为空!');
     }
     //检查用户名
     if (!isset($username) || empty($username)) {
         return build_callback_error(-301, '用户名为空!');
     }
     //检查密码
     if (!isset($pwd) || empty($pwd)) {
         return build_callback_error(-302, '密码为空!');
     }
     //查询数据
     $_data = $this->field(array('stu_id' => 'userid', 'stu_name' => 'realname', 'stu_password' => 'passwords', 'stu_status' => 'lock'))->where(array('stu_username' => $username))->find();
     if (!$_data) {
         if (APP_DEBUG) {
             trace("用户名[{$username}]不存在!");
         }
         return build_callback_error(-303, '用户名不存在!');
     } else {
         if ($_data['lock'] != 1) {
             if (APP_DEBUG) {
                 trace("用户账号[{$username}]已被锁定!");
             }
             return build_callback_error(-304, '用户已被锁定!');
         } else {
             if (isset($_data['passwords'])) {
                 //0.校验密码
                 //1.加密计算
                 $_encypt_pwd = base64_encode(md5($pwd, true));
                 if ($_encypt_pwd != $_data['passwords']) {
                     if (APP_DEBUG) {
                         trace("密码错误[{$_encypt_pwd}({$pwd})!=" . $_data['passwords'] . "]..");
                     }
                     return build_callback_error(-305, '密码错误!');
                 } else {
                     $_userId = $_data['userid'];
                     //验证成功,生成随机用户ID(用于限制一个账号多处登录)
                     $_rand_user_id = String::uuid();
                     //更新成功
                     if ($this->save(array('stu_id' => $_userId, 'app_random_id' => $_rand_user_id, 'stu_lastLoginTime' => date('Y-m-d H:i:s', time()), 'stu_loginIP' => get_client_ip()))) {
                         //更新登录次数
                         $this->where(array('stu_id' => $_userId))->setInc('stu_loginNumber');
                         //返回数据
                         return build_callback_success(array('agencyId' => $agencyId, 'randUserId' => $_rand_user_id, 'realName' => $_data['realname']));
                     } else {
                         if (APP_DEBUG) {
                             trace("随机用户ID[{$_rand_user_id}=>{$_userId}]写入数据失败:{$_update}");
                         }
                         return build_callback_error(-306, '更新随机用户ID失败,请联系管理员!');
                     }
                 }
             } else {
                 return build_callback_error(-307, '未知错误,请联系管理员!');
             }
         }
     }
 }