fetchMinaPhone.php 5.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. defined('ONLY_ONLY_ONLY') or exit('Access Denied');
  3. define('LOG_CATALOG',basename(__FILE__));
  4. try{
  5. $subSystem=intval(SUBSYS_CAPITAL_MINA);
  6. $GPC=input_param_handle(false);
  7. $ajaxdata = input_getPostObj();
  8. $baseUserId=isset($ajaxdata["baseUserId"])?$ajaxdata["baseUserId"]:$GPC["baseUserId"];
  9. $baseUser = pdo_fetch("select * from base_user where id=" . intval($baseUserId));
  10. if(empty($baseUser)) throw new GeneralException("","没有传递必要的baseUserId参数或没有定位到baseUser记录");
  11. if(intval($baseUser["subsystem"])!=intval($subSystem)) throw new GeneralException("","子系统不一致");
  12. $sesseion_key=$baseUser['weixin_sessionkey'];
  13. $iv=isset($ajaxdata["iv"])?$ajaxdata["iv"]:$GPC["iv"];
  14. if(empty($iv)) throw new GeneralException("","没有传递必要的iv参数");
  15. $encryptedData=isset($ajaxdata["encryptedData"])?$ajaxdata["encryptedData"]:$GPC["encryptedData"];
  16. if(empty($encryptedData)) throw new GeneralException("","没有传递必要的encryptedData参数");
  17. $wxParams = bizwx_fetchWxParams($subSystem);
  18. $mina_appid=$wxParams["mina_appid"];
  19. $mina_appSecret=$wxParams["mina_appSecret"];
  20. require_once WEB_PHY_ROOT."/base/wxsrv.php";
  21. $decryData=weixin_decryptData($mina_appid,$sesseion_key,$encryptedData,$iv);
  22. $phoneNumber=$decryData["purePhoneNumber"];
  23. if(empty($phoneNumber)) throw new GeneralException("","没有提取到手机号信息");
  24. if(intval(GRAY_MODE)>0){
  25. $allowPhones=explode(",",GRAY_PHONES);
  26. $grayAllow=false;
  27. foreach($allowPhones as $allowPhone){
  28. if(trim($phoneNumber)==trim($allowPhone)){
  29. $grayAllow=true;
  30. break;
  31. }
  32. }
  33. if($grayAllow==false) throw new GeneralException("","非常抱歉,本系统还未正式发布,敬请等待一下啊!");
  34. }
  35. /***UPSERT手机用户记录**start***/
  36. // $recuritRule = bizbase_fetchBaseConfig("RecuritRule",true);
  37. // $freeCount = intval($recuritRule["freeCount"]);
  38. $freeCount = -1;//实名认证位置赋予免费次数
  39. $sqlTemp="";
  40. $sqlParam=array();
  41. $sqlParam[":nowtime"]=time();
  42. $sqlParam[":subsystem"]=intval($subSystem);
  43. $sqlParam[":mobile"]=trim($phoneNumber);
  44. $sqlParam[":salt"] = random(8);
  45. $sqlParam[":freecount"] = $freeCount;
  46. $sqlParam[":remark"]="[" . date("Y-m-d H:i:s", time()) . "] 初始化注册 \n";
  47. $sqlTemp.=" set @handle_id=0; ";
  48. $sqlTemp.=" select @handle_id:=id from base_user where subsystem=:subsystem and `mobile`=:mobile limit 1;";
  49. $sqlTemp.=" insert into base_user ( `createtime`,`subsystem`,`mobile`,`salt`, remark )";
  50. $sqlTemp.=" select :nowtime ,:subsystem ,:mobile , :salt,:remark from dual where ifnull(@handle_id,0)=0;";
  51. $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;";
  52. $sqlTemp.=" set @base_userid=0; ";
  53. $sqlTemp.=" select @base_userid:=id from base_user where subsystem=:subsystem and `mobile`=:mobile limit 1;";
  54. $sqlTemp.=" set @handle_id=0; ";
  55. $sqlTemp.=" select @handle_id:=`id` from biz_trader where `base_userid`=@base_userid limit 1;";
  56. $sqlTemp.=" insert into biz_trader ( `createtime`,`base_userid`, freecount, remark )";
  57. $sqlTemp.=" select :nowtime, @base_userid,:freecount, :remark from dual where ifnull(@handle_id,0)=0 ;";
  58. $sqlTemp.=" update biz_trader SET `updatetime`=:nowtime, remark=concat(:remark,ifnull(remark,'')) where ifnull(@handle_id,0)!=0 and `base_userid`=@base_userid;";
  59. $sqlTemp.=" set @biz_userid=0; ";
  60. $sqlTemp.=" select @biz_userid:=id from biz_trader where `base_userid`=@base_userid limit 1;";
  61. $sqlTemp.=" update base_user SET `updatetime`=:nowtime, biz_userid=@biz_userid where id=@base_userid;";
  62. $sqlTemp.=" set @handle_id=0; ";
  63. $sqlTemp.=" select @handle_id:=`id` from base_user_bizrelation where `base_userid`=@base_userid and `biz_userid`=@biz_userid limit 1;";
  64. $sqlTemp.=" insert into base_user_bizrelation ( `createtime`, `base_userid`, `biz_userid` )";
  65. $sqlTemp.=" select :nowtime, @base_userid, @biz_userid from dual where ifnull(@handle_id,0)=0 ;";
  66. $sqlTemp.=" select * from base_user where subsystem=:subsystem and `mobile`=:mobile limit 1;";
  67. $sqlTemp.=" select * from biz_trader where `base_userid`=@base_userid limit 1;";
  68. $dataset=pdo_query3($sqlTemp,$sqlParam);
  69. /***UPSERT手机用户记录**finish***/
  70. $baseUser=$dataset[16][0];
  71. if(empty($baseUser)) throw new GeneralException("","异常");
  72. $FOREND_TOKEN = base_buildForendToken($baseUser);
  73. $bizTrader=$dataset[17][0];
  74. if(empty($bizTrader)) throw new GeneralException("","异常");
  75. $ajaxRes->Result=array(
  76. "forendToken"=>$FOREND_TOKEN,
  77. "baseUser"=>$baseUser,
  78. "bizTrader"=>$bizTrader,
  79. );
  80. }catch(Throwable $e){
  81. $friendMsg=get_class($e)=='GeneralException'?$e->friendmsg:$e->getMessage();
  82. throw new GeneralException("General","获取用户登录信息时发生异常:".$friendMsg,LOG_CATALOG,0,$e);
  83. }