* @version : HUOSDK 8.0 */ namespace huo\controller\member; use huo\controller\finance\Income; use huo\controller\integral\MemIa; use huo\controller\request\Channel; use huo\controller\request\Device; use huo\controller\request\Game; use huo\controller\request\Mem; use huoAgentSwitch\controller\AgentSwitchController; use huolib\constant\IaConst; use huolib\status\MemberStatus; use huolib\utils\UserUtils; use think\Exception; use think\Log; class Register extends Member { /** * 玩家注册 * * @param Game $game_rq * @param Channel $channel * @param Device $device * @param Mem $member * * @return mixed */ public function register(Game $game_rq, Channel $channel, Device $device, Mem $member) { $_username = $member->getUsername(); $_password = $member->getPassword(); $_mobile = $member->getMobile(); if (empty($_mobile)) { $_um_chk = UserUtils::checkNameMobile($_username); if (MemberStatus::NO_ERROR != $_um_chk) { return $this->retErrMsg($_um_chk); } } /* 在checkName之前先做格式验证 */ $_reg_chk = UserUtils::checkRegister($_username, $_password); if (MemberStatus::NO_ERROR != $_reg_chk) { $_err_msg = 'func='.__FUNCTION__.'&class='.__CLASS__.'&step=1&game'.json_encode($game_rq->toArray()) .'&channel' .json_encode($channel->toArray()).'&device'.json_encode($device->toArray()).'&member' .json_encode($member->toArray()); Log::write($_err_msg, Log::DEBUG); return $this->retErrMsg($_reg_chk); } if (true == $this->checkUserName($_username)) { $_rs = MemberStatus::USERNAME_EXISTS; $_err_msg = 'func='.__FUNCTION__.'&class='.__CLASS__.'&step=2&game'.json_encode($game_rq->toArray()) .'&channel' .json_encode($channel->toArray()).'&device'.json_encode($device->toArray()).'&member' .json_encode($member->toArray()); Log::write($_err_msg, Log::DEBUG); return $this->retErrMsg($_rs); } /*确保所有检查通过后,再插入数据*/ try { $_mem_data = $this->reg($game_rq, $channel, $device, $member); if (!empty($_mem_data['id'])) { $_rdata = $this->getReturnData($_mem_data, $game_rq->getHAppId(), $device->getDeviceType()); $member->setIsReg(1); $this->insertLoginLog($game_rq, $channel, $device, $member, $_rdata); /* LTV统计 */ $_ltv_class = new \ltv\Ltv(); $_ltv_class->reg($_mem_data['app_id'], $_mem_data['agent_id'], $_mem_data['create_time']); return $this->retSucMsg(MemberStatus::NO_ERROR, $_rdata); } else { $_err_msg = 'func='.__FUNCTION__.'&class='.__CLASS__.'&step=3&game'.json_encode($game_rq->toArray()) .'&channel' .json_encode($channel->toArray()).'&device'.json_encode($device->toArray()).'&member' .json_encode($member->toArray()); Log::write($_err_msg, Log::ERROR); $_rs = MemberStatus::UNKNOWN_ERROR; return $this->retErrMsg($_rs); } } catch (Exception $_e) { $_err_msg = 'func='.__FUNCTION__.'&class='.__CLASS__.'&step=4&game'.json_encode($game_rq->toArray()) .'&channel' .json_encode($channel->toArray()).'&device'.json_encode($device->toArray()).'&member' .json_encode($member->toArray()).'&Exception' .$_e->getMessage(); Log::write($_err_msg, Log::ERROR); $_rs = MemberStatus::UNKNOWN_ERROR; return $this->retErrMsg($_rs); } } /** * @param Game $game_rq * @param Channel $channel * @param Device $device * @param Mem $member * * @return array|bool|mixed */ public function reg(Game $game_rq, Channel $channel, Device $device, Mem $member) { $this->setMemRq($game_rq, $channel, $device, $member); //渠道切量 (new AgentSwitchController())->memSwitch($member); $_mem_data = $member->toArray(); $member->setAppId($game_rq->getHAppId()); $_mem_data['vb_id'] = $game_rq->getVbId(); /* 关联马甲包 */ $_mem_id = $this->addMember($_mem_data); $_mem_data = MemCache::ins()->getInfoById($_mem_id); /* 手机注册为绑定 获得积分 */ $_mobile = $member->getMobile(); if (!empty($_mobile)) { (new MemIa($member->getMemId()))->doItgAct(IaConst::IA_BIND_MOBILE); } /* 计算渠道cpa*/ (new Income())->incomeFroCpa($_mem_id); /* 插入登陆记录 */ return $_mem_data; } /** * 手机注册 * * @param Game $game_rq * @param Channel $channel * @param Device $device * @param Mem $member * @param $mobile * * @return mixed */ public function regMobile(Game $game_rq, Channel $channel, Device $device, Mem $member, $mobile) { /* Modified by ouzhongfu BEGIN 2020/4/3 ISSUES:11805 手机注册:手机号直接为帐号 */ #$_username = $this->genUsername(); #$member->setUsername($_username); $member->setUsername($mobile); /* END 2020/4/3 ISSUES:11805 */ $member->setMobile($mobile); $member->setRegMobile($mobile); /* 校验手机号是否已注册 */ if (true == $this->checkUserName($mobile)) { $_rs = MemberStatus::PHONE_IS_REG; $_err_msg = 'func='.__FUNCTION__.'&class='.__CLASS__.'&game'.json_encode($game_rq->toArray()) .'&channel' .json_encode($channel->toArray()).'&device'.json_encode($device->toArray()).'&member' .json_encode($member->toArray()); Log::write($_err_msg, Log::DEBUG); return $this->retErrMsg($_rs); } return $this->register($game_rq, $channel, $device, $member); } }