UserServer.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. namespace App\Servers\Member;
  3. class UserServer
  4. {
  5. /**
  6. * 单列对象
  7. * @var
  8. */
  9. private static $server = '';
  10. private function __construct(){
  11. }
  12. /**
  13. * 创建对象
  14. * @return UserServer
  15. */
  16. static function creatServer()
  17. {
  18. if(empty(self::$server)){
  19. self::$server = new UserServer();
  20. }
  21. return self::$server;
  22. }
  23. /**
  24. * 微信登陆
  25. * @param $wx_info
  26. * @return array|false
  27. */
  28. function setWxOpen($wx_info){
  29. //检查这个微信openid是否存在
  30. $user = WxUser::where('openid',$wx_info['openid'])->select(['id','openid','invite_code'])->find();
  31. if(!$user){//不存在就创建信息
  32. $invite_code = $this->randString();
  33. $member_info['invite_code'] = $invite_code;
  34. $member_info['openid'] = $wx_info['openid'];
  35. $member_info = Member::create($member_info);
  36. if (empty($member_info)) {
  37. return false;
  38. }
  39. $info = ['m_id' => $member_info->{'id'}, 't_code' => $invite_code];
  40. }else{
  41. $info = ['m_id' => $user->{'id'}, 't_code' => $user->{'invite_code'}];
  42. }
  43. return $info;
  44. }
  45. /**
  46. * 随机8位字符串
  47. * @return string
  48. */
  49. function randString()
  50. {
  51. $code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  52. $rand = $code[rand(0,25)]
  53. .strtoupper(dechex(date('m')))
  54. .date('d').substr(time(),-5)
  55. .substr(microtime(),2,5)
  56. .sprintf('%02d',rand(0,99));
  57. for(
  58. $a = md5( $rand, true ),
  59. $s = '0123456789ABCDEFGHIJKLMNOPQRSTUV',
  60. $d = '',
  61. $f = 0;
  62. $f < 8;
  63. $g = ord( $a[ $f ] ),
  64. $d .= $s[ ( $g ^ ord( $a[ $f + 8 ] ) ) - $g & 0x1F ],
  65. $f++
  66. );
  67. return $d;
  68. }
  69. }