shish 1 kuukausi sitten
vanhempi
commit
06e345ecb3
1 muutettua tiedostoa jossa 11 lisäystä ja 3 poistoa
  1. 11 3
      app-ghs/controllers/AuthController.php

+ 11 - 3
app-ghs/controllers/AuthController.php

@@ -518,7 +518,13 @@ class AuthController extends PublicController
         util::success(['token' => $token, 'account' => $sjId, 'shopId' => $shopId]);
     }
 
-    //静默获取小程序用户信息
+    /**
+     * 静默获取小程序用户信息
+     * 职责:通过微信小程序 code 换取 openid 和 session_key 并自动登录供货商端
+     * 入参:GET 传参 code (微信临时登录凭证)
+     * 返回:登录成功返回 token、用户信息、店铺 ID 等;失败返回空 token
+     * 副作用:会更新管理员的最后登录时间,并将 session_key 写入 Redis 缓存
+     */
     public function actionMiniInfo()
     {
         //供货商平台
@@ -534,6 +540,10 @@ class AuthController extends PublicController
         $url = "https://api.weixin.qq.com/sns/jscode2session?appid={$appId}&secret={$appSecret}&js_code={$code}&grant_type=authorization_code";
         $curl = new curl\Curl();
         $curl->setOption(CURLOPT_SSL_VERIFYPEER, false);
+        // 复杂分支/关键逻辑:设置 cURL 连接和执行超时,并强制使用 IPv4,防止因微信接口卡顿或 DNS 解析慢拖垮 PHP-FPM 进程
+        $curl->setOption(CURLOPT_CONNECTTIMEOUT, 2); // 连接超时限制为 2 秒,避免网络握手长时间卡死
+        $curl->setOption(CURLOPT_TIMEOUT, 3);        // 总执行时间限制为 3 秒,避免请求挂起时间过长
+        $curl->setOption(CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); // 强制 IPv4 解析,防止 IPv6 解析超时重试
         $result = $curl->get($url);
         $arr = Json::decode($result);
         $sessionKey = isset($arr['session_key']) ? $arr['session_key'] : '';
@@ -580,8 +590,6 @@ class AuthController extends PublicController
             //没有管理店铺不允许登录
             util::success(['token' => '', 'currentMiniOpenId' => $openid, 'number' => 5]);
         }
-        $shopAdmin->lastLogin = date("Y-m-d H:i:s");
-        $shopAdmin->save();
         $shopAdminId = $shopAdmin->id ?? 0;
         //是否有切换门店的权限
         $switchShop = \biz\shop\classes\ShopAdminClass::hasSwitchShopRight($shopAdmin);