MemberOpenServer.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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'],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)->where('is_del',0)->first();
  54. if(empty($row) && !empty($unionid)){
  55. $row=MainMemberOpenId::where('unionid',$unionid)->where('type',$type)->where('openid','<>','')->where('is_del',0)->first();
  56. if($row){
  57. $row->update(['openid' => $openid]);
  58. }
  59. }
  60. return empty($row['m_id'])?'':$row['m_id'];
  61. }
  62. /**
  63. * 用户注册openid
  64. * @param $userId
  65. * @param $openid
  66. * @param $unionid
  67. * @param $type
  68. * @return bool
  69. */
  70. function setUserOpenid($userId,$type,$openid,$unionid=null){
  71. $row = MemberOpenId::where('m_id',$userId)->where('type',$type)->where('is_del',0)->first();
  72. if($row){
  73. $row->update(['openid' =>$openid,'unionid' => $unionid ]);
  74. }else{
  75. MemberOpenId::create([
  76. 'is_del' => 0,
  77. 'm_id' => $userId,
  78. 'openid' => $openid,
  79. 'unionid' => $unionid,
  80. 'type' => $type
  81. ]);
  82. }
  83. return true;
  84. }
  85. function setMainUserOpenid($userId,$type,$openid,$unionid=null){
  86. $row = MemberOpenId::where('m_id',$userId)->where('type',$type)->where('is_del',0)->first();
  87. if($row){
  88. $row->update(['openid' =>$openid,'unionid' => $unionid ]);
  89. }else{
  90. MemberOpenId::create([
  91. 'is_del' => 0,
  92. 'm_id' => $userId,
  93. 'openid' => $openid,
  94. 'unionid' => $unionid,
  95. 'type' => $type
  96. ]);
  97. }
  98. return true;
  99. }
  100. }