MemberOpenServer.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <?php
  2. namespace App\Servers;
  3. use App\Models\Main\MainMemberOpenId;
  4. use App\Models\MemberOpenId;
  5. /**
  6. * 用户openid管理
  7. * Class MemberOpenServer
  8. */
  9. class MemberOpenServer
  10. {
  11. static private $server = null;
  12. private $typeArr=[
  13. 1=>'公众号H5',
  14. 2=>'小程序',
  15. ];
  16. private function __construct()
  17. {
  18. }
  19. /**
  20. * 创建对象
  21. * @return MemberOpenServer
  22. */
  23. static function creatServer()
  24. {
  25. if (empty(self::$server)) self::$server = new MemberOpenServer();
  26. return self::$server;
  27. }
  28. /**
  29. * 获取用户登录ID
  30. * @param $openid
  31. * @param $unionid
  32. * @param $type
  33. * @return mixed|string
  34. */
  35. function getUserId($type,$openid,$unionid=null){
  36. $row = MemberOpenId::where('openid',$openid)->where('type',$type)->where('is_del',0)->first();
  37. if(empty($row) && !empty($unionid)){
  38. $row=MemberOpenId::where('unionid',$unionid)->where('type',$type)->where('openid','<>','')->where('is_del',0)->first();
  39. if($row){
  40. $row->update(['openid' => $openid]);
  41. }
  42. }
  43. // 查询主系统信息
  44. if( empty($row)){
  45. $mainId=$this->getMainUserId($type,$openid,$unionid);
  46. // 同步进行注册
  47. $row=MemberServer::creatServer()->register('','','','',$mainId);
  48. MemberOpenServer::creatServer()->setUserOpenid($row['m_id'],$row['main_id'],4,$openid,$unionid);
  49. }
  50. return empty($row['m_id'])?'':$row['m_id'];
  51. }
  52. function getMainUserId($type,$openid,$unionid=null){
  53. $row = MainMemberOpenId::where('openid',$openid)->where('type',$type)->first();
  54. if(!empty($unionid)){
  55. $row=MainMemberOpenId::where('unopenid',$unionid)->where('openid','<>','')->first();
  56. if($row){
  57. if($row->{'type'}==$type){
  58. $row->update(['openid' => $openid]);
  59. }else{
  60. $row= MainMemberOpenId::create([
  61. 'openid' => $openid,
  62. 'type' => $type,
  63. 'unopenid' => $unionid,
  64. 'm_id' => $row['m_id'],
  65. ]);
  66. }
  67. }
  68. }
  69. return empty($row['m_id'])?'':$row['m_id'];
  70. }
  71. /**
  72. * 用户注册openid
  73. * @param $userId
  74. * @param $mainId
  75. * @param $openid
  76. * @param $unionid
  77. * @param $type
  78. * @return bool
  79. */
  80. function setUserOpenid($userId,$mainId,$type,$openid,$unionid=null){
  81. if(empty($mainId)){
  82. return false;
  83. }
  84. $row = MemberOpenId::where('m_id',$userId)->where('type',$type)->where('is_del',0)->first();
  85. if($row){
  86. $row->update(['openid' =>$openid,'unionid' => $unionid ]);
  87. }else{
  88. MemberOpenId::create([
  89. 'is_del' => 0,
  90. 'm_id' => $userId,
  91. 'openid' => $openid,
  92. 'unionid' => $unionid,
  93. 'type' => $type
  94. ]);
  95. }
  96. $this->setMainUserOpenid($mainId,$type,$openid,$unionid);
  97. return true;
  98. }
  99. function setMainUserOpenid($mainId,$type,$openid,$unionid=null){
  100. $row = MainMemberOpenId::where('m_id',$mainId)->where('type',$type)->first();
  101. if($row){
  102. $row->update(['openid' =>$openid,'unopenid' => $unionid ]);
  103. }else{
  104. MainMemberOpenId::create([
  105. 'is_del' => 0,
  106. 'm_id' => $mainId,
  107. 'openid' => $openid,
  108. 'unopenid' => $unionid,
  109. 'type' => $type
  110. ]);
  111. }
  112. return true;
  113. }
  114. }