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('创建压缩文件失败');
}
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);
// 压缩进度
$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);
File::filePushMsg('compress', [
File::pushMsgSimple('compress', [
'name' => $fileName,
'url' => $fileUrl,
'progress' => $progress
]);
], $userid);
});
//
foreach ($files as $file) {
@ -1116,11 +1117,11 @@ class FileController extends AbstractController
$zip->close();
//
if ($progress < 100) {
File::filePushMsg('compress', [
File::pushMsgSimple('compress', [
'name' => $fileName,
'url' => $fileUrl,
'progress' => 100
]);
], $userid);
}
//
WebSocketDialogMsg::sendMsg(null, $dialog->id, 'template', [

View File

@ -642,6 +642,29 @@ class File extends AbstractModel
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
@ -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

View File

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