UserServer.php 1.9 KB

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