| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- <?php
- /**
- * Login.php UTF-8
- * 玩家登陆
- *
- * @date : 2018/4/24 19:55
- *
- * @license 这不是一个自由软件,未经授权不许任何使用和传播。
- * @author : wuyonghong <wyh@huosdk.com>
- * @version : HUOSDK 8.0
- */
- namespace huo\controller\member;
- use huo\controller\request\Channel;
- use huo\controller\request\Device;
- use huo\controller\request\Game;
- use huo\controller\request\Mem;
- use huo\logic\member\AccountOrderLogic;
- use huolib\status\MemberStatus;
- use huolib\tool\StrUtils;
- use huolib\utils\UserUtils;
- use think\Log;
- class Login extends Member {
- /**
- * 玩家登陆
- *
- * @param Game $game_rq
- * @param Channel $channel
- * @param Device $device
- * @param Mem $member
- *
- * @return mixed
- */
- public function login(Game $game_rq, Channel $channel, Device $device, Mem $member) {
- $_username = $member->getUsername();
- $_password = $member->getPassword();
- $_rdata = $this->_login($_username, $_password, $game_rq->getHAppId(), $device->getDeviceType());
- if (MemberStatus::NO_ERROR == $_rdata['code']) {
- $this->insertLoginLog($game_rq, $channel, $device, $member, $_rdata['data']);
- }
- return $_rdata;
- }
- /**
- * 手机登陆
- *
- * @param Game $game_rq
- * @param Channel $channel
- * @param Device $device
- * @param Mem $member
- * @param $mobile
- *
- * @return mixed
- */
- public function loginMobile(Game $game_rq, Channel $channel, Device $device, Mem $member, $mobile) {
- if (empty($mobile)) {
- return $this->retErrMsg(MemberStatus::PHONE_EMPTY);
- }
- if (true != StrUtils::checkPhone($mobile)) {
- return $this->retErrMsg(MemberStatus::PHONE_ERROR);
- }
- $_mem_data = $this->getInfoByMobile($mobile);
- if (!empty($_mem_data)) {
- if (3 == $_mem_data['status']) {
- $_rs = MemberStatus::ACCOUNT_HALT;
- } else {
- $_rdata = $this->getReturnData($_mem_data, $game_rq->getHAppId(),$device->getDeviceType());
- $this->insertLoginLog($game_rq, $channel, $device, $member, $_rdata);
- return $this->retSucMsg(MemberStatus::NO_ERROR, $_rdata);
- }
- }
- if (!isset($_rs)) {
- $_rs = MemberStatus::PHONE_NOT_REG;
- }
- return $this->retErrMsg($_rs);
- }
- private function _login($username, $password, $app_id = 0, $device_type = '') {
- $_login_chk = UserUtils::checkLogin($username, $password);
- if (MemberStatus::NO_ERROR != $_login_chk) {
- Log::write(
- "func=".__FUNCTION__."&class=".__CLASS__."&step=1&username=$username&pwd=$password", Log::NOTICE
- );
- return $this->retErrMsg($_login_chk);
- }
- $_um_chk = UserUtils::checkNameMobile($username);
- if (MemberStatus::NO_ERROR == $_um_chk) {
- $_mem_id = $this->getIdByName($username);
- } else {
- $_mem_id = $this->getIdByMobile($username);
- }
- $_mem_data = MemCache::ins()->getInfoById($_mem_id);
- if ($_mem_data) {
- $_chk_pwd = $this->checkPwd($password, $_mem_data['password']);
- if (false == $_chk_pwd) {
- $_rs = MemberStatus::USERNAME_OR_PASSWORD_ERR;
- } elseif (3 == $_mem_data['status']) {
- $_rs = MemberStatus::ACCOUNT_HALT;
- } else {
- $_rs = MemberStatus::NO_ERROR;
- }
- } else {
- $_rs = MemberStatus::USERNAME_OR_PASSWORD_ERR;
- Log::write(
- "func=".__FUNCTION__."&class=".__CLASS__."&step=2&username=$username&pwd=$password", Log::NOTICE
- );
- return $this->retErrMsg($_rs);
- }
- if (!isset($_rs)) {
- $_rs = MemberStatus::USERNAME_OR_PASSWORD_ERR;
- }
- if (MemberStatus::NO_ERROR == $_rs) {
- //判断登陆的账号是否为审核账号
- //是的话则查询 account_order 表返回对应的玩家信息
- $_is_audit_account = false; // TODO: luowei 2018/6/15 根据标识判断
- if ($_is_audit_account) {
- $_mg_mem_id = (new AccountOrderLogic())->getMgMemIdByUsername($username);
- if ($_mg_mem_id) {
- $_mem_game_info = (new MemGameCache())->getInfoById($_mg_mem_id);
- if (isset($_mem_game_info['mem_id'])) {
- $_mem_data = MemCache::ins()->getInfoById($_mem_game_info['mem_id']);
- }
- }
- }
- return $this->retSucMsg(MemberStatus::NO_ERROR, $this->getReturnData($_mem_data, $app_id, $device_type));
- } else {
- Log::write("func=".__FUNCTION__."&class=".__CLASS__."&step=3&username=$username&pwd=$password", Log::ERROR);
- return $this->retErrMsg($_rs);
- }
- }
- }
|