'公众号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; } }