Register.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <?php
  2. /**
  3. * Register.php UTF-8
  4. * 注册
  5. *
  6. * @date : 2018/4/24 21:47
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\controller\member;
  13. use huo\controller\finance\Income;
  14. use huo\controller\integral\MemIa;
  15. use huo\controller\request\Channel;
  16. use huo\controller\request\Device;
  17. use huo\controller\request\Game;
  18. use huo\controller\request\Mem;
  19. use huoAgentSwitch\controller\AgentSwitchController;
  20. use huolib\constant\IaConst;
  21. use huolib\status\MemberStatus;
  22. use huolib\utils\UserUtils;
  23. use think\Exception;
  24. use think\Log;
  25. class Register extends Member {
  26. /**
  27. * 玩家注册
  28. *
  29. * @param Game $game_rq
  30. * @param Channel $channel
  31. * @param Device $device
  32. * @param Mem $member
  33. *
  34. * @return mixed
  35. */
  36. public function register(Game $game_rq, Channel $channel, Device $device, Mem $member) {
  37. $_username = $member->getUsername();
  38. $_password = $member->getPassword();
  39. $_mobile = $member->getMobile();
  40. if (empty($_mobile)) {
  41. $_um_chk = UserUtils::checkNameMobile($_username);
  42. if (MemberStatus::NO_ERROR != $_um_chk) {
  43. return $this->retErrMsg($_um_chk);
  44. }
  45. }
  46. /* 在checkName之前先做格式验证 */
  47. $_reg_chk = UserUtils::checkRegister($_username, $_password);
  48. if (MemberStatus::NO_ERROR != $_reg_chk) {
  49. $_err_msg = 'func='.__FUNCTION__.'&class='.__CLASS__.'&step=1&game'.json_encode($game_rq->toArray())
  50. .'&channel'
  51. .json_encode($channel->toArray()).'&device'.json_encode($device->toArray()).'&member'
  52. .json_encode($member->toArray());
  53. Log::write($_err_msg, Log::DEBUG);
  54. return $this->retErrMsg($_reg_chk);
  55. }
  56. if (true == $this->checkUserName($_username)) {
  57. $_rs = MemberStatus::USERNAME_EXISTS;
  58. $_err_msg = 'func='.__FUNCTION__.'&class='.__CLASS__.'&step=2&game'.json_encode($game_rq->toArray())
  59. .'&channel'
  60. .json_encode($channel->toArray()).'&device'.json_encode($device->toArray()).'&member'
  61. .json_encode($member->toArray());
  62. Log::write($_err_msg, Log::DEBUG);
  63. return $this->retErrMsg($_rs);
  64. }
  65. /*确保所有检查通过后,再插入数据*/
  66. try {
  67. $_mem_data = $this->reg($game_rq, $channel, $device, $member);
  68. if (!empty($_mem_data['id'])) {
  69. $_rdata = $this->getReturnData($_mem_data, $game_rq->getHAppId(), $device->getDeviceType());
  70. $member->setIsReg(1);
  71. $this->insertLoginLog($game_rq, $channel, $device, $member, $_rdata);
  72. /* LTV统计 */
  73. $_ltv_class = new \ltv\Ltv();
  74. $_ltv_class->reg($_mem_data['app_id'], $_mem_data['agent_id'], $_mem_data['create_time']);
  75. return $this->retSucMsg(MemberStatus::NO_ERROR, $_rdata);
  76. } else {
  77. $_err_msg = 'func='.__FUNCTION__.'&class='.__CLASS__.'&step=3&game'.json_encode($game_rq->toArray())
  78. .'&channel'
  79. .json_encode($channel->toArray()).'&device'.json_encode($device->toArray()).'&member'
  80. .json_encode($member->toArray());
  81. Log::write($_err_msg, Log::ERROR);
  82. $_rs = MemberStatus::UNKNOWN_ERROR;
  83. return $this->retErrMsg($_rs);
  84. }
  85. } catch (Exception $_e) {
  86. $_err_msg = 'func='.__FUNCTION__.'&class='.__CLASS__.'&step=4&game'.json_encode($game_rq->toArray())
  87. .'&channel'
  88. .json_encode($channel->toArray()).'&device'.json_encode($device->toArray()).'&member'
  89. .json_encode($member->toArray()).'&Exception'
  90. .$_e->getMessage();
  91. Log::write($_err_msg, Log::ERROR);
  92. $_rs = MemberStatus::UNKNOWN_ERROR;
  93. return $this->retErrMsg($_rs);
  94. }
  95. }
  96. /**
  97. * @param Game $game_rq
  98. * @param Channel $channel
  99. * @param Device $device
  100. * @param Mem $member
  101. *
  102. * @return array|bool|mixed
  103. */
  104. public function reg(Game $game_rq, Channel $channel, Device $device, Mem $member) {
  105. $this->setMemRq($game_rq, $channel, $device, $member);
  106. //渠道切量
  107. (new AgentSwitchController())->memSwitch($member);
  108. $_mem_data = $member->toArray();
  109. $member->setAppId($game_rq->getHAppId());
  110. $_mem_data['vb_id'] = $game_rq->getVbId(); /* 关联马甲包 */
  111. $_mem_id = $this->addMember($_mem_data);
  112. $_mem_data = MemCache::ins()->getInfoById($_mem_id);
  113. /* 手机注册为绑定 获得积分 */
  114. $_mobile = $member->getMobile();
  115. if (!empty($_mobile)) {
  116. (new MemIa($member->getMemId()))->doItgAct(IaConst::IA_BIND_MOBILE);
  117. }
  118. /* 计算渠道cpa*/
  119. (new Income())->incomeFroCpa($_mem_id);
  120. /* 插入登陆记录 */
  121. return $_mem_data;
  122. }
  123. /**
  124. * 手机注册
  125. *
  126. * @param Game $game_rq
  127. * @param Channel $channel
  128. * @param Device $device
  129. * @param Mem $member
  130. * @param $mobile
  131. *
  132. * @return mixed
  133. */
  134. public function regMobile(Game $game_rq, Channel $channel, Device $device, Mem $member, $mobile) {
  135. /* Modified by ouzhongfu BEGIN 2020/4/3 ISSUES:11805 手机注册:手机号直接为帐号 */
  136. #$_username = $this->genUsername();
  137. #$member->setUsername($_username);
  138. $member->setUsername($mobile);
  139. /* END 2020/4/3 ISSUES:11805 */
  140. $member->setMobile($mobile);
  141. $member->setRegMobile($mobile);
  142. /* 校验手机号是否已注册 */
  143. if (true == $this->checkUserName($mobile)) {
  144. $_rs = MemberStatus::PHONE_IS_REG;
  145. $_err_msg = 'func='.__FUNCTION__.'&class='.__CLASS__.'&game'.json_encode($game_rq->toArray())
  146. .'&channel'
  147. .json_encode($channel->toArray()).'&device'.json_encode($device->toArray()).'&member'
  148. .json_encode($member->toArray());
  149. Log::write($_err_msg, Log::DEBUG);
  150. return $this->retErrMsg($_rs);
  151. }
  152. return $this->register($game_rq, $channel, $device, $member);
  153. }
  154. }