|
|
@@ -643,7 +643,13 @@ class AuthController extends PublicController
|
|
|
util::success(['token' => $token, 'account' => $sjId, 'shopId' => $currentShopId, 'imgUploadApi' => $imgUploadApi, 'switchShop' => $switchShop,]);
|
|
|
}
|
|
|
|
|
|
- //静默获取小程序用户信息
|
|
|
+ /**
|
|
|
+ * 静默获取小程序用户信息
|
|
|
+ * 职责:通过微信小程序 code 换取 openid 和 session_key 并自动登录
|
|
|
+ * 入参:GET 传参 code (微信临时登录凭证)
|
|
|
+ * 返回:登录成功返回 token、用户信息、店铺 ID 等;失败返回空 token
|
|
|
+ * 副作用:会更新管理员的最后登录时间,并将 session_key 写入 Redis 缓存
|
|
|
+ */
|
|
|
public function actionMiniInfo()
|
|
|
{
|
|
|
//花店平台
|
|
|
@@ -660,6 +666,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'] : '';
|
|
|
@@ -720,8 +730,6 @@ class AuthController extends PublicController
|
|
|
//账号冻结不再自动登录
|
|
|
util::success(['token' => '', 'currentMiniOpenId' => $openid, 'sn' => 6]);
|
|
|
}
|
|
|
- $shopAdmin->lastLogin = date("Y-m-d H:i:s");
|
|
|
- $shopAdmin->save();
|
|
|
$shopAdminId = $shopAdmin->id ?? 0;
|
|
|
|
|
|
//是否有切换门店的权限
|