Login.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <?php
  2. /**
  3. * Login.php UTF-8
  4. * 玩家登陆
  5. *
  6. * @date : 2018/4/24 19:55
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\controller\member;
  13. use huo\controller\request\Channel;
  14. use huo\controller\request\Device;
  15. use huo\controller\request\Game;
  16. use huo\controller\request\Mem;
  17. use huo\logic\member\AccountOrderLogic;
  18. use huolib\status\MemberStatus;
  19. use huolib\tool\StrUtils;
  20. use huolib\utils\UserUtils;
  21. use think\Log;
  22. class Login extends Member {
  23. /**
  24. * 玩家登陆
  25. *
  26. * @param Game $game_rq
  27. * @param Channel $channel
  28. * @param Device $device
  29. * @param Mem $member
  30. *
  31. * @return mixed
  32. */
  33. public function login(Game $game_rq, Channel $channel, Device $device, Mem $member) {
  34. $_username = $member->getUsername();
  35. $_password = $member->getPassword();
  36. $_rdata = $this->_login($_username, $_password, $game_rq->getHAppId(), $device->getDeviceType());
  37. if (MemberStatus::NO_ERROR == $_rdata['code']) {
  38. $this->insertLoginLog($game_rq, $channel, $device, $member, $_rdata['data']);
  39. }
  40. return $_rdata;
  41. }
  42. /**
  43. * 手机登陆
  44. *
  45. * @param Game $game_rq
  46. * @param Channel $channel
  47. * @param Device $device
  48. * @param Mem $member
  49. * @param $mobile
  50. *
  51. * @return mixed
  52. */
  53. public function loginMobile(Game $game_rq, Channel $channel, Device $device, Mem $member, $mobile) {
  54. if (empty($mobile)) {
  55. return $this->retErrMsg(MemberStatus::PHONE_EMPTY);
  56. }
  57. if (true != StrUtils::checkPhone($mobile)) {
  58. return $this->retErrMsg(MemberStatus::PHONE_ERROR);
  59. }
  60. $_mem_data = $this->getInfoByMobile($mobile);
  61. if (!empty($_mem_data)) {
  62. if (3 == $_mem_data['status']) {
  63. $_rs = MemberStatus::ACCOUNT_HALT;
  64. } else {
  65. $_rdata = $this->getReturnData($_mem_data, $game_rq->getHAppId(),$device->getDeviceType());
  66. $this->insertLoginLog($game_rq, $channel, $device, $member, $_rdata);
  67. return $this->retSucMsg(MemberStatus::NO_ERROR, $_rdata);
  68. }
  69. }
  70. if (!isset($_rs)) {
  71. $_rs = MemberStatus::PHONE_NOT_REG;
  72. }
  73. return $this->retErrMsg($_rs);
  74. }
  75. private function _login($username, $password, $app_id = 0, $device_type = '') {
  76. $_login_chk = UserUtils::checkLogin($username, $password);
  77. if (MemberStatus::NO_ERROR != $_login_chk) {
  78. Log::write(
  79. "func=".__FUNCTION__."&class=".__CLASS__."&step=1&username=$username&pwd=$password", Log::NOTICE
  80. );
  81. return $this->retErrMsg($_login_chk);
  82. }
  83. $_um_chk = UserUtils::checkNameMobile($username);
  84. if (MemberStatus::NO_ERROR == $_um_chk) {
  85. $_mem_id = $this->getIdByName($username);
  86. } else {
  87. $_mem_id = $this->getIdByMobile($username);
  88. }
  89. $_mem_data = MemCache::ins()->getInfoById($_mem_id);
  90. if ($_mem_data) {
  91. $_chk_pwd = $this->checkPwd($password, $_mem_data['password']);
  92. if (false == $_chk_pwd) {
  93. $_rs = MemberStatus::USERNAME_OR_PASSWORD_ERR;
  94. } elseif (3 == $_mem_data['status']) {
  95. $_rs = MemberStatus::ACCOUNT_HALT;
  96. } else {
  97. $_rs = MemberStatus::NO_ERROR;
  98. }
  99. } else {
  100. $_rs = MemberStatus::USERNAME_OR_PASSWORD_ERR;
  101. Log::write(
  102. "func=".__FUNCTION__."&class=".__CLASS__."&step=2&username=$username&pwd=$password", Log::NOTICE
  103. );
  104. return $this->retErrMsg($_rs);
  105. }
  106. if (!isset($_rs)) {
  107. $_rs = MemberStatus::USERNAME_OR_PASSWORD_ERR;
  108. }
  109. if (MemberStatus::NO_ERROR == $_rs) {
  110. //判断登陆的账号是否为审核账号
  111. //是的话则查询 account_order 表返回对应的玩家信息
  112. $_is_audit_account = false; // TODO: luowei 2018/6/15 根据标识判断
  113. if ($_is_audit_account) {
  114. $_mg_mem_id = (new AccountOrderLogic())->getMgMemIdByUsername($username);
  115. if ($_mg_mem_id) {
  116. $_mem_game_info = (new MemGameCache())->getInfoById($_mg_mem_id);
  117. if (isset($_mem_game_info['mem_id'])) {
  118. $_mem_data = MemCache::ins()->getInfoById($_mem_game_info['mem_id']);
  119. }
  120. }
  121. }
  122. return $this->retSucMsg(MemberStatus::NO_ERROR, $this->getReturnData($_mem_data, $app_id, $device_type));
  123. } else {
  124. Log::write("func=".__FUNCTION__."&class=".__CLASS__."&step=3&username=$username&pwd=$password", Log::ERROR);
  125. return $this->retErrMsg($_rs);
  126. }
  127. }
  128. }