| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- <?php
- namespace App\Servers;
- use App\Models\Main\MainMemberOpenId;
- use App\Models\MemberOpenId;
- /**
- * 用户openid管理
- * Class MemberOpenServer
- */
- class MemberOpenServer
- {
- static private $server = null;
- private $typeArr=[
- 1=>'公众号H5',
- 2=>'小程序',
- ];
- private function __construct()
- {
- }
- /**
- * 创建对象
- * @return MemberOpenServer
- */
- static function creatServer()
- {
- if (empty(self::$server)) self::$server = new MemberOpenServer();
- return self::$server;
- }
- /**
- * 获取用户登录ID
- * @param $openid
- * @param $unionid
- * @param $type
- * @return mixed|string
- */
- function getUserId($type,$openid,$unionid=null){
- $row = MemberOpenId::where('openid',$openid)->where('type',$type)->where('is_del',0)->first();
- if(empty($row) && !empty($unionid)){
- $row=MemberOpenId::where('unionid',$unionid)->where('type',$type)->where('openid','<>','')->where('is_del',0)->first();
- if($row){
- $row->update(['openid' => $openid]);
- }
- }
- // 查询主系统信息
- if( empty($row)){
- $mainId=$this->getMainUserId($type,$openid,$unionid);
- // 同步进行注册
- $row=MemberServer::creatServer()->register('','','','',$mainId);
- MemberOpenServer::creatServer()->setUserOpenid($row['m_id'],$row['main_id'],4,$openid,$unionid);
- }
- return empty($row['m_id'])?'':$row['m_id'];
- }
- function getMainUserId($type,$openid,$unionid=null){
- $row = MainMemberOpenId::where('openid',$openid)->where('type',$type)->first();
- if(!empty($unionid)){
- $row=MainMemberOpenId::where('unopenid',$unionid)->where('openid','<>','')->first();
- if($row){
- if($row->{'type'}==$type){
- $row->update(['openid' => $openid]);
- }else{
- $row= MainMemberOpenId::create([
- 'openid' => $openid,
- 'type' => $type,
- 'unopenid' => $unionid,
- 'm_id' => $row['m_id'],
- ]);
- }
- }
- }
- return empty($row['m_id'])?'':$row['m_id'];
- }
- /**
- * 用户注册openid
- * @param $userId
- * @param $mainId
- * @param $openid
- * @param $unionid
- * @param $type
- * @return bool
- */
- function setUserOpenid($userId,$mainId,$type,$openid,$unionid=null){
- if(empty($mainId)){
- return false;
- }
- $row = MemberOpenId::where('m_id',$userId)->where('type',$type)->where('is_del',0)->first();
- if($row){
- $row->update(['openid' =>$openid,'unionid' => $unionid ]);
- }else{
- MemberOpenId::create([
- 'is_del' => 0,
- 'm_id' => $userId,
- 'openid' => $openid,
- 'unionid' => $unionid,
- 'type' => $type
- ]);
- }
- $this->setMainUserOpenid($mainId,$type,$openid,$unionid);
- return true;
- }
- function setMainUserOpenid($mainId,$type,$openid,$unionid=null){
- $row = MainMemberOpenId::where('m_id',$mainId)->where('type',$type)->first();
- if($row){
- $row->update(['openid' =>$openid,'unopenid' => $unionid ]);
- }else{
- MainMemberOpenId::create([
- 'is_del' => 0,
- 'm_id' => $mainId,
- 'openid' => $openid,
- 'unopenid' => $unionid,
- 'type' => $type
- ]);
- }
- return true;
- }
- }
|