perf: 机器人 webhook 添加用户信息

This commit is contained in:
kuaifan 2025-07-20 20:18:51 +08:00
parent d5d32038f5
commit ddc0931e90
2 changed files with 15 additions and 18 deletions

View File

@ -570,15 +570,14 @@ class User extends AbstractModel
/** /**
* 生成无设备的 token主要用于接口调用 token 不检查设备是否存在) * 生成无设备的 token主要用于接口调用 token 不检查设备是否存在)
* @param self $userinfo * @param self $userinfo
* @param int $days * @param $ttl
* @return mixed * @return mixed
*/ */
public static function generateTokenNoDevice($userinfo, $days = 3) public static function generateTokenNoDevice($userinfo, $ttl)
{ {
$key = 'user_token_' . $userinfo->userid . '_' . $days; $key = 'user_token_no_device_' . $userinfo->userid;
$ttl = now()->addDays($days); return Cache::remember($key, $ttl, function () use ($userinfo, $ttl) {
return Cache::remember($key, $ttl, function () use ($userinfo, $ttl, $days) { $token = Doo::tokenEncode($userinfo->userid, $userinfo->email, $userinfo->encrypt);
$token = Doo::tokenEncode($userinfo->userid, $userinfo->email, $userinfo->encrypt, $days);
Cache::put(UserDevice::ck(md5($token)), $userinfo->userid, $ttl); Cache::put(UserDevice::ck(md5($token)), $userinfo->userid, $ttl);
return $token; return $token;
}); });

View File

@ -531,8 +531,7 @@ class BotReceiveMsgTask extends AbstractTask
'version' => Base::getVersion(), 'version' => Base::getVersion(),
'extras' => Base::array2json($extras) 'extras' => Base::array2json($extras)
]; ];
if ($botUser->isAiBot()) { // 添加用户信息
// AI机器人需要用户信息
$userInfo = User::find($msg->userid); $userInfo = User::find($msg->userid);
$data['msg_user'] = [ $data['msg_user'] = [
'userid' => $userInfo->userid, 'userid' => $userInfo->userid,
@ -540,9 +539,8 @@ class BotReceiveMsgTask extends AbstractTask
'nickname' => $userInfo->nickname, 'nickname' => $userInfo->nickname,
'profession' => $userInfo->profession, 'profession' => $userInfo->profession,
'lang' => $userInfo->lang, 'lang' => $userInfo->lang,
'token' => User::generateTokenNoDevice($userInfo), 'token' => User::generateTokenNoDevice($userInfo, now()->addHour()),
]; ];
}
$res = Ihttp::ihttp_post($webhookUrl, $data, 30); $res = Ihttp::ihttp_post($webhookUrl, $data, 30);
if ($userBot) { if ($userBot) {
$userBot->webhook_num++; $userBot->webhook_num++;