getPathInfo(), '/'); // 判断是否需要切换数据库 if ( in_array($path, $this->except) ) return $next($request); // 提现通知需要单独判断 if( stripos('&'.$path,'api/wechat_transfer/notify') == 1 ) return $next($request); // 题库提现通知需要单独判断 if( stripos('&'.$path,'api/question_bank/question_reception/wechat_transfer/notify') == 1 ) return $next($request); // 退款回调需要单独判断 if( stripos('&'.$path,'api/wechat_pay/refund_notify') == 1 ) return $next($request); // 退款回调需要单独判断 if( stripos('&'.$path,'api/login/wxop_auth') == 1 ) return $next($request); // 判断有没有companyid $companyId = $request->input('company_id', 0); // 没有获取appid对应的 if( !$companyId ) { //从请求中获取appid $appId = $request->input('app_id', ''); //通过corpId获取company_id $companyId = $appId ? (new Component)->getOne($appId,'company_id') : $companyId; // 没有获取appid对应的 if( !$companyId ) { // 店铺ID $shopId = $request->input('shop_id', 0); // 店铺查询商户ID $companyId = $shopId ? (new Shop)->getOne($appId,'company_id') : $companyId; // 如果还是没有company_id if( !$companyId ) { // 获取请求的域名来源 $domain = $request->server('HTTP_REFERER'); // 如果有来源 if( $domain ) { // 获取数据 $domain = parse_url($domain, PHP_URL_HOST); // 从域名中获取company_id $companyId = $domain ? (new CompanyDomainConfig)->getOne($domain,'company_id') : $companyId; } } } } // 测试服默认访问商户1 大方无隅测试,正式服默认访问商户3 大方无隅测试 $companyId = $companyId ? (int) $companyId : (config('app.env','') == 'local' ? 1 : 3); // 切换数据库 $result = (new CompanyDbConfig)->reconnectDb($companyId); // 如果有错误 if ( isset($result['error']) ) return json_send(['code'=>'no_company','msg'=>$result['error']]); // 商户ID $request['company_id'] = $companyId; // 下一个中间件 return $next($request); } }