fix: 无法打包文件加载的情况

This commit is contained in:
kuaifan 2025-08-10 21:00:35 +08:00
parent 3f733ce857
commit 8597705a77
3 changed files with 30 additions and 61 deletions

View File

@ -1097,17 +1097,18 @@ class FileController extends AbstractController
return Base::retError('创建压缩文件失败'); return Base::retError('创建压缩文件失败');
} }
go(function () use ($zipPath, $fileUrl, $zip, $files, $fileName, $botUser, $dialog) { $userid = $user->userid;
go(function () use ($userid, $zipPath, $fileUrl, $zip, $files, $fileName, $botUser, $dialog) {
Coroutine::sleep(0.1); Coroutine::sleep(0.1);
// 压缩进度 // 压缩进度
$progress = 0; $progress = 0;
$zip->registerProgressCallback(0.05, function ($ratio) use ($fileUrl, $fileName, &$progress) { $zip->registerProgressCallback(0.05, function ($ratio) use ($userid, $fileUrl, $fileName, &$progress) {
$progress = round($ratio * 100); $progress = round($ratio * 100);
File::filePushMsg('compress', [ File::pushMsgSimple('compress', [
'name' => $fileName, 'name' => $fileName,
'url' => $fileUrl, 'url' => $fileUrl,
'progress' => $progress 'progress' => $progress
]); ], $userid);
}); });
// //
foreach ($files as $file) { foreach ($files as $file) {
@ -1116,11 +1117,11 @@ class FileController extends AbstractController
$zip->close(); $zip->close();
// //
if ($progress < 100) { if ($progress < 100) {
File::filePushMsg('compress', [ File::pushMsgSimple('compress', [
'name' => $fileName, 'name' => $fileName,
'url' => $fileUrl, 'url' => $fileUrl,
'progress' => 100 'progress' => 100
]); ], $userid);
} }
// //
WebSocketDialogMsg::sendMsg(null, $dialog->id, 'template', [ WebSocketDialogMsg::sendMsg(null, $dialog->id, 'template', [

View File

@ -642,6 +642,29 @@ class File extends AbstractModel
Task::deliver($task); Task::deliver($task);
} }
/**
* 文件推送消息
* @param $action
* @param array|null $data 发送内容
* @param int $userid 会员ID
*/
public static function pushMsgSimple($action, $data, $userid)
{
if (empty($data) || empty($userid)) {
return;
}
$msg = [
'type' => 'file',
'action' => $action,
'data' => $data,
];
$params = [
'userid' => $userid,
'msg' => $msg
];
Task::deliver(new PushTask($params));
}
/** /**
* 获取推送会员 * 获取推送会员
* @param $action * @param $action
@ -956,30 +979,6 @@ class File extends AbstractModel
} }
} }
/**
* 文件推送消息
* @param $action
* @param array|null $data 发送内容
* @param array $userid 会员ID
*/
public static function filePushMsg($action, $data = null, $userid = null)
{
$userid = User::userid();
if (empty($userid)) {
return;
}
$msg = [
'type' => 'file',
'action' => $action,
'data' => $data,
];
$params = [
'userid' => $userid,
'msg' => $msg
];
Task::deliver(new PushTask($params));
}
/** /**
* 根据文件类型判断是否需要安装应用 * 根据文件类型判断是否需要安装应用
* @param $type * @param $type

View File

@ -2,7 +2,6 @@
namespace App\Models; namespace App\Models;
use App\Exceptions\ApiException; use App\Exceptions\ApiException;
use App\Module\Base; use App\Module\Base;
use App\Module\Doo; use App\Module\Doo;
@ -10,7 +9,6 @@ use App\Module\Table\OnlineData;
use App\Services\RequestContext; use App\Services\RequestContext;
use Cache; use Cache;
use Carbon\Carbon; use Carbon\Carbon;
use Request;
/** /**
* App\Models\User * App\Models\User
@ -435,19 +433,6 @@ class User extends AbstractModel
return $user->nickname; return $user->nickname;
} }
/**
* 临时日志记录
* @param $message
* @return void
*/
private static function tmpLog($message)
{
if (Request::input('log') !== 'yes') {
return;
}
info("[User] [" . date("Y-m-d H:i:s") . "] " . $message);
}
/** /**
* 用户身份认证(获取用户信息) * 用户身份认证(获取用户信息)
* @param null $identity 判断身份 * @param null $identity 判断身份
@ -457,20 +442,11 @@ class User extends AbstractModel
{ {
$user = self::authInfo(); $user = self::authInfo();
if (!$user) { if (!$user) {
self::tmpLog('auth failed');
$token = Base::token(); $token = Base::token();
if ($token) { if ($token) {
UserDevice::forget($token); UserDevice::forget($token);
self::tmpLog('auth token found: ' . Base::array2json([
'header' => Request::header(),
'input' => Request::input(),
]));
throw new ApiException('身份已失效,请重新登录', [], -1); throw new ApiException('身份已失效,请重新登录', [], -1);
} else { } else {
self::tmpLog('auth no token found: ' . Base::array2json([
'header' => Request::header(),
'input' => Request::input(),
]));
throw new ApiException('请登录后继续...', [], -1); throw new ApiException('请登录后继续...', [], -1);
} }
} }
@ -489,31 +465,25 @@ class User extends AbstractModel
*/ */
private static function authInfo() private static function authInfo()
{ {
self::tmpLog('auth start');
if (RequestContext::has('auth')) { if (RequestContext::has('auth')) {
// 缓存 // 缓存
self::tmpLog('auth from cache');
return RequestContext::get('auth'); return RequestContext::get('auth');
} }
if (Doo::userId() <= 0) { if (Doo::userId() <= 0) {
// 没有登录 // 没有登录
self::tmpLog('auth no login');
return RequestContext::save('auth', false); return RequestContext::save('auth', false);
} }
if (Doo::userExpired()) { if (Doo::userExpired()) {
// 登录过期 // 登录过期
self::tmpLog('auth expired');
return RequestContext::save('auth', false); return RequestContext::save('auth', false);
} }
if (!UserDevice::check()) { if (!UserDevice::check()) {
// token 不存在 // token 不存在
self::tmpLog('auth token not found');
return RequestContext::save('auth', false); return RequestContext::save('auth', false);
} }
$user = self::whereUserid(Doo::userId())->whereEmail(Doo::userEmail())->whereEncrypt(Doo::userEncrypt())->first(); $user = self::whereUserid(Doo::userId())->whereEmail(Doo::userEmail())->whereEncrypt(Doo::userEncrypt())->first();
if (!$user) { if (!$user) {
// 登录信息不匹配 // 登录信息不匹配
self::tmpLog('auth user not found');
return RequestContext::save('auth', false); return RequestContext::save('auth', false);
} }
@ -535,7 +505,6 @@ class User extends AbstractModel
$user->updateInstance($upArray); $user->updateInstance($upArray);
$user->save(); $user->save();
} }
self::tmpLog('auth success: ' . $user->userid . ' - ' . $user->email);
return RequestContext::save('auth', $user); return RequestContext::save('auth', $user);
} }