0) { $sharer = pdo_fetch("select wk.*,bu.id as buid,bu.mobile as bu_mobile from biz_worker wk left join base_user bu on bu.id=wk.base_userid where wk.id=" . intval($shareid)); if(empty($sharer)) throw new GeneralException("","传递分享者shareid参数,没有定位到会员记录"); } $sesseion_key=$baseUser['weixin_sessionkey']; $iv=isset($ajaxdata["iv"])?$ajaxdata["iv"]:$GPC["iv"]; if(empty($iv)) throw new GeneralException("","没有传递必要的iv参数"); $encryptedData=isset($ajaxdata["encryptedData"])?$ajaxdata["encryptedData"]:$GPC["encryptedData"]; if(empty($encryptedData)) throw new GeneralException("","没有传递必要的encryptedData参数"); $wxParams = bizwx_fetchWxParams($subSystem); $mina_appid=$wxParams["mina_appid"]; $mina_appSecret=$wxParams["mina_appSecret"]; require_once WEB_PHY_ROOT."/base/wxsrv.php"; $decryData=weixin_decryptData($mina_appid,$sesseion_key,$encryptedData,$iv); $phoneNumber=$decryData["purePhoneNumber"]; if(empty($phoneNumber)) throw new GeneralException("","没有提取到手机号信息"); if(intval(GRAY_MODE)>0){ $allowPhones=explode(",",GRAY_PHONES); $grayAllow=false; foreach($allowPhones as $allowPhone){ if(trim($phoneNumber)==trim($allowPhone)){ $grayAllow=true; break; } } if($grayAllow==false) throw new GeneralException("","非常抱歉,本系统还未正式发布,敬请等待一下!"); } /***UPSERT手机用户记录**start***/ $sqlTemp=""; $sqlParam=array(); $sqlParam[":nowtime"]=time(); $sqlParam[":subsystem"]=intval($subSystem); $sqlParam[":mobile"]=trim($phoneNumber); $sqlParam[":salt"] = random(8); $sqlParam[":from_inviteWKId"]=intval($shareid); $sqlParam[":remark"]="[" . date("Y-m-d H:i:s", time()) . "] 初始化注册 \n"; $sqlTemp.=" set @handle_id=0; "; $sqlTemp.=" select @handle_id:=id from base_user where subsystem=:subsystem and `mobile`=:mobile limit 1;"; $sqlTemp.=" insert into base_user ( `createtime`,`subsystem`,`mobile`,`salt`, remark )"; $sqlTemp.=" select :nowtime ,:subsystem ,:mobile , :salt,:remark from dual where ifnull(@handle_id,0)=0;"; $sqlTemp.=" update base_user SET `updatetime`=:nowtime, `salt`=:salt, remark=concat(:remark,ifnull(remark,'')) where ifnull(@handle_id,0)<>0 and subsystem=:subsystem and `mobile`=:mobile;"; $sqlTemp.=" set @base_userid=0; "; $sqlTemp.=" select @base_userid:=id from base_user where subsystem=:subsystem and `mobile`=:mobile limit 1;"; $sqlTemp.=" set @handle_id=0; "; $sqlTemp.=" select @handle_id:=`id` from biz_worker where `base_userid`=@base_userid limit 1;"; $sqlTemp.=" insert into biz_worker ( `createtime`, `base_userid`, `from_inviteWKId`, remark )"; $sqlTemp.=" select :nowtime, @base_userid, :from_inviteWKId,:remark from dual where ifnull(@handle_id,0)=0 ;"; $sqlTemp.=" update biz_worker SET `updatetime`=:nowtime,`from_inviteWKId`=:from_inviteWKId, remark=concat(:remark,ifnull(remark,'')) where ifnull(@handle_id,0)!=0 and `base_userid`=@base_userid;"; $sqlTemp.=" set @biz_userid=0; "; $sqlTemp.=" select @biz_userid:=id from biz_worker where `base_userid`=@base_userid limit 1;"; $sqlTemp.=" update base_user SET `updatetime`=:nowtime, biz_userid=@biz_userid where id=@base_userid;"; $sqlTemp.=" set @handle_id=0; "; $sqlTemp.=" select @handle_id:=`id` from base_user_bizrelation where `base_userid`=@base_userid and `biz_userid`=@biz_userid limit 1;"; $sqlTemp.=" insert into base_user_bizrelation ( `createtime`, `base_userid`, `biz_userid` )"; $sqlTemp.=" select :nowtime, @base_userid, @biz_userid from dual where ifnull(@handle_id,0)=0 ;"; $sqlTemp.=" select * from base_user where subsystem=:subsystem and `mobile`=:mobile limit 1;"; $sqlTemp.=" select * from biz_worker where `base_userid`=@base_userid limit 1;"; $dataset=pdo_query3($sqlTemp,$sqlParam); /***UPSERT手机用户记录**finish***/ $baseUser=$dataset[16][0]; if(empty($baseUser)) throw new GeneralException("","异常"); $FOREND_TOKEN = base_buildForendToken($baseUser); $bizWorker=$dataset[17][0]; if(empty($bizWorker)) throw new GeneralException("","异常"); $ajaxRes->Result=array( "forendToken"=>$FOREND_TOKEN, "baseUser"=>$baseUser, "bizWorker"=>$bizWorker, ); }catch(Throwable $e){ $friendMsg=get_class($e)=='GeneralException'?$e->friendmsg:$e->getMessage(); throw new GeneralException("General","获取用户登录信息时发生异常:".$friendMsg,LOG_CATALOG,0,$e); }