* @version : HUOSDK 8.0 */ namespace api\apple\controller\v8; use api\common\controller\AppleApiBaseController; use huo\controller\app\FloatPoint; use huo\controller\member\FindPwd; use huo\controller\member\Login; use huo\controller\member\Member; use huo\controller\member\Register; use huo\logic\member\MemberLogic; use huo\model\log\MemLoginLogModel; use huolib\sms\Sms; use huolib\sms\SmsType; use huolib\status\MemberStatus; use huolib\tool\SimpleSec; use huolib\tool\StrUtils; use think\Db; use think\Session; class MemberController extends AppleApiBaseController { public function _initialize() { parent::_initialize(); } public function getReturn($mem_data, $app_id = 0) { $_rdata = (new FloatPoint())->getFloat($app_id); $_rdata['mem_id'] = $mem_data['mem_id']; $_rdata['agentgame'] = $mem_data['agent_game']; $_rdata['user_token'] = session_id(); $_rdata['is_bind'] = $mem_data['is_bind']; $_rdata['cp_user_token'] = SimpleSec::encode(session_id(), config('CPAUTHCODE')); $_rdata['url'] = $mem_data['url']; return $_rdata; } public function getUrl() { return ''; } /** * 一键注册 * http://doc.1tsdk.com/138?page_id=2900 * 【域名】/v8/user/regone */ public function regOne() { $_channel_rq = $this->setChannelData(); $_mem_class = new Member(); $_rdata['username'] = $_mem_class->genUsername(); $_rdata['password'] = StrUtils::getRandChars(8); $_rdata['agentgame'] = $_channel_rq->getAgentGame(); $_rdata['type'] = 2; $this->success(lang('SUCCESS'), $_rdata); } /** * 普通注册 * http://doc.1tsdk.com/138?page_id=2901 * 【域名】/v8/user/reg */ public function register() { $_game_rq = $this->setGameData(); $_channel_rq = $this->setChannelData(); $_device_rq = $this->setDeviceData(); $_mem_rq = $this->setMemData(true); $_mr_class = new Register(); $_rdata = $_mr_class->register($_game_rq, $_channel_rq, $_device_rq, $_mem_rq); if (MemberStatus::NO_ERROR != $_rdata['code']) { $this->error($_rdata['msg'], [], $_rdata['code']); } $this->success($_rdata['msg'], $this->getReturn($_rdata['data'], $_game_rq->getHAppId()), $_rdata['code']); } /** * 手机注册 * http://doc.1tsdk.com/138?page_id=2902 * 【域名】/v8/user/regm */ public function regMobile() { $_game_rq = $this->setGameData(); $_channel_rq = $this->setChannelData(); $_device_rq = $this->setDeviceData(); $_mem_rq = $this->setMemData(); $_sms_data = $this->rq_data['sms']; $_mobile = $_sms_data['mobile']; $_type = $_sms_data['type']; $_code = $_sms_data['code']; /* 校验短信是否正确 */ $_sms_rs = (new Sms())->check($_mobile, $_code, $_type); if (MemberStatus::NO_ERROR != $_sms_rs['code']) { $this->error($_sms_rs['msg'], [], $_sms_rs['code']); } $_mr_class = new Register(); $_rdata = $_mr_class->regMobile($_game_rq, $_channel_rq, $_device_rq, $_mem_rq, $_mobile); if (MemberStatus::NO_ERROR != $_rdata['code']) { $this->error($_rdata['msg'], [], $_rdata['code']); } $this->success(lang('SUCCESS'), $this->getReturn($_rdata['data'], $_game_rq->getHAppId())); } /** * 普通登录 * http://doc.1tsdk.com/138?page_id=2903 * 【域名】/v8/user/login */ public function login() { $_game_rq = $this->setGameData(); $_channel_rq = $this->setChannelData(); $_device_rq = $this->setDeviceData(); $_mem_rq = $this->setMemData(); $_mr_class = new Login(); $_rdata = $_mr_class->login($_game_rq, $_channel_rq, $_device_rq, $_mem_rq); if (MemberStatus::NO_ERROR != $_rdata['code']) { $this->error($_rdata['msg'], [], $_rdata['code']); } $this->success($_rdata['msg'], $this->getReturn($_rdata['data'], $_game_rq->getHAppId()), $_rdata['code']); } /** * 手机短信登录 * http://doc.1tsdk.com/138?page_id=2904 * 【域名】/v8/user/loginm */ public function loginMobile() { $_game_rq = $this->setGameData(); $_channel_rq = $this->setChannelData(); $_device_rq = $this->setDeviceData(); $_mem_rq = $this->setMemData(); $_sms_data = $this->rq_data['sms']; $_mobile = $_sms_data['mobile']; $_type = $_sms_data['type']; $_code = $_sms_data['code']; /* 校验短信是否正确 */ $_sms_rs = (new Sms())->check($_mobile, $_code, $_type); if (MemberStatus::NO_ERROR != $_sms_rs['code']) { $this->error($_sms_rs['msg'], [], $_sms_rs['code']); } $_mr_class = new Login(); $_rdata = $_mr_class->loginMobile($_game_rq, $_channel_rq, $_device_rq, $_mem_rq, $_mobile); if (MemberStatus::NO_ERROR != $_rdata['code']) { $this->error($_rdata['msg'], [], $_rdata['code']); } $this->success($_rdata['msg'], $this->getReturn($_rdata['data'], $_game_rq->getHAppId()), $_rdata['code']); } /** * 第三方登录 * http://doc.1tsdk.com/138?page_id=2905 * 【域名】/v8/user/loginoauth */ public function oauthLogin() { } /** * 玩家登出 * http://doc.1tsdk.com/138?page_id=2906 * 【域名】/v8/user/logout */ public function logout() { $_rdata['url'] = $this->getUrl(); // TODO: wuyonghong 2018/5/30 异步任务处理 调用低层处理 Session::clear(); $this->success(lang('SUCCESS'), $_rdata); } /** * 获取用户信息 * http://doc.1tsdk.com/138?page_id=3131 * 【域名】/user/detail */ public function read() { $this->checkLogin(); $_rdata = (new Member())->getMemInfo($this->mem_id); $_code = MemberStatus::NO_ERROR; $this->success(MemberStatus::getMsg($_code), $_rdata); } /** * 获取找回密码验证token * http://doc.1tsdk.com/138?page_id=3138 * 【域名】/user/passwd/sms_check */ public function smsCheck() { $_sms_data = get_val($this->rq_data, 'sms', []); $_mobile = get_val($_sms_data, 'mobile', ''); $_type = get_val($_sms_data, 'type', SmsType::SMS_ID_VERIFY); $_code = get_val($_sms_data, 'code', ''); /* 校验短信是否正确 */ $_sms_rs = (new Sms())->check($_mobile, $_code, $_type); if (MemberStatus::NO_ERROR != $_sms_rs['code']) { $this->error($_sms_rs['msg'], [], $_sms_rs['code']); } $_chk_rs = (new FindPwd())->checkMobile($_mobile); if (MemberStatus::NO_ERROR != $_chk_rs['code']) { $this->error($_chk_rs['msg'], [], $_chk_rs['code']); } $_data['verify_token'] = StrUtils::genToken(); Session::set('verify_token', $_data['verify_token']); Session::set('find_pwd_mobile', $_mobile); $this->error($_chk_rs['msg'], $_data, $_chk_rs['code']); } /** * 重置密码 * http://doc.1tsdk.com/138?page_id=3141 * 【域名】/v8//user/passwd/reset * 【域名】/user/passwd/reset * */ public function updatePassword() { $_verify_token = get_val($this->rq_data, 'verify_token', ''); $_check_token = Session::get('verify_token'); if ($_verify_token != $_check_token) { $_code = MemberStatus::INVALID_PARAMS; $this->error(MemberStatus::getMsg($_code), [], $_code); } $_mobile = Session::get('find_pwd_mobile'); Session::delete('find_pwd_mobile'); Session::delete('verify_token'); $_mem_rq = $this->setMemData(); $_password = $_mem_rq->getPassword(); $_rs = (new FindPwd())->updatePassword($_mobile, $_password); if (MemberStatus::NO_ERROR != $_rs['code']) { $this->error($_rs['msg'], [], $_rs['code']); } $this->success($_rs['msg'], [], $_rs['code']); } /*** * 获取设备登录过的账号 * http://doc.1tsdk.com/138?page_id=3519 * 【域名】/user/device_user */ public function recoverAccount() { $_game_rq = $this->setGameData(); $_device_rq = $this->setDeviceData(); $_param['app_id'] = $_game_rq->getHAppId(); $_param['device_id'] = $_device_rq->getDeviceId(); $_mem_log_model = new MemLoginLogModel(); $_i = 0; do { $_param['time'] = strtotime('-'.$_i++.'month'); $_data = $_mem_log_model->getDeviceGameUser($_param); } while (empty($_data) && $_i < 3); //为空,只取3个月内记录 $this->success(MemberStatus::getMsg(MemberStatus::NO_ERROR), $_data, MemberStatus::NO_ERROR); } /** * 账号绑定信息 * http://doc.1tsdk.com/138?page_id=3520 * 【域名】/user/bind_info */ public function accountBindInfo() { $_mem_rq = $this->setMemData(); $_username = $_mem_rq->getUsername(); $_is_uname = (new Member())->checkUserName($_username); if (false == $_is_uname) { $this->error( MemberStatus::getMsg(MemberStatus::USERNAME_NOT_EXISTS), [], MemberStatus::USERNAME_NOT_EXISTS ); } $_data = (new MemberLogic())->getMobileEmailByName($_username); if (empty($_data['mobile'])) { $this->error(MemberStatus::getMsg(MemberStatus::PHONE_NOT_BIND), [], MemberStatus::PHONE_NOT_BIND); } Session::set('bing_mobile_'.$_username, $_data['mobile']); $_data['mobile'] = substr_replace($_data['mobile'], '****', 3, 4); $this->success(MemberStatus::getMsg(MemberStatus::NO_ERROR), $_data, MemberStatus::NO_ERROR); } /** * 找回密码发送短信 * http://doc.1tsdk.com/138?page_id=3521 * 【域名】/password/send_sms */ public function recoverPwdSendMsm() { $_mem_rq = $this->setMemData(); $_username = $_mem_rq->getUsername(); $_mobile = Session::get('bing_mobile_'.$_username); if (empty($_mobile)) { $this->error(MemberStatus::getMsg(MemberStatus::PHONE_EMPTY), [], MemberStatus::PHONE_EMPTY); } $_rs = (new Sms())->send($_mobile, SmsType::SMS_FIND_PWD); if (MemberStatus::NO_ERROR == $_rs['code']) { $this->success($_rs['msg'], $_rs['data'], $_rs['code']); } $this->error($_rs['msg'], $_rs['data'], $_rs['code']); } /** * 验证找回密码短信验证码 * http://doc.1tsdk.com/138?page_id=3522 * 【域名】/password/sms_verify */ public function recoverPwdCheckVerify() { $_mem_rq = $this->setMemData(); $_username = $_mem_rq->getUsername(); $_sms_data = $this->rq_data['sms']; $_code = $_sms_data['code']; $_mobile = Session::get('bing_mobile_'.$_username); /* 校验短信是否正确 */ $_sms_rs = (new Sms())->check($_mobile, $_code, SmsType::SMS_FIND_PWD); if (MemberStatus::NO_ERROR != $_sms_rs['code']) { $this->error($_sms_rs['msg'], [], $_sms_rs['code']); } Session::set('change_pwd_'.$_username, 1); $this->success($_sms_rs['msg'], [], $_sms_rs['code']); } /** * 重置用户密码 * http://doc.1tsdk.com/138?page_id=3524 * 【域名】/password/reset */ public function resetPwd() { $_mem_rq = $this->setMemData(); $_username = $_mem_rq->getUsername(); $_password = $_mem_rq->getPassword(); $_is_change = Session::get('change_pwd_'.$_username); if (empty($_is_change)) { $this->error(MemberStatus::getMsg(MemberStatus::UNKNOWN_ERROR), [], MemberStatus::UNKNOWN_ERROR); } Session::delete('change_pwd_'.$_username); Session::delete('bing_mobile_'.$_username); $_mem_id = (new MemberLogic())->getIdByName($_username); if (empty($_mem_id)) { $this->error( MemberStatus::getMsg(MemberStatus::USERNAME_NOT_EXISTS), [], MemberStatus::USERNAME_NOT_EXISTS ); } $_rs = (new Member())->updatePassword($_mem_id, $_password); if (is_numeric($_rs)) { $this->success(MemberStatus::getMsg($_rs), [], $_rs); } elseif (false !== $_rs) { $this->error(MemberStatus::getMsg(MemberStatus::NO_ERROR), [], MemberStatus::NO_ERROR); } else { $this->error(MemberStatus::getMsg(MemberStatus::UNKNOWN_ERROR), [], MemberStatus::UNKNOWN_ERROR); } } }