123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351 |
- <?php
- /**
- * MemberController.php UTF-8
- * 玩家接口
- *
- * @date : 2018/1/16 16:48
- *
- * @license 这不是一个自由软件,未经授权不许任何使用和传播。
- * @author : wuyonghong <wyh@huosdk.com>
- * @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);
- }
- }
- }
|