no message

This commit is contained in:
kuaifan 2021-07-13 16:00:12 +08:00
parent b25aa84139
commit 543bc5244f
4 changed files with 105 additions and 37 deletions

View File

@ -8,6 +8,7 @@ use App\Models\File;
use App\Models\FileContent;
use App\Models\FileUser;
use App\Models\User;
use App\Models\WebSocket;
use App\Module\Base;
use App\Module\Ihttp;
use Arr;
@ -123,6 +124,7 @@ class FileController extends AbstractController
//
$file->name = $name;
$file->save();
$file->pushMsg('update', $file);
return Base::retSuccess('修改成功', $file);
} else {
// 添加
@ -162,6 +164,7 @@ class FileController extends AbstractController
$file->save();
//
$data = File::find($file->id);
$data->pushMsg('add', $data);
return Base::retSuccess('添加成功', $data);
}
}
@ -201,6 +204,7 @@ class FileController extends AbstractController
$file->save();
//
$data = File::find($file->id);
$data->pushMsg('add', $data);
return Base::retSuccess('复制成功', $data);
}
@ -242,6 +246,7 @@ class FileController extends AbstractController
//
$file->pid = $pid;
$file->save();
$file->pushMsg('update', $file);
return Base::retSuccess('操作成功', $file);
}
@ -322,7 +327,7 @@ class FileController extends AbstractController
//
$file->size = $content->size;
$file->save();
$file->pushContentChange();
$file->pushMsg('content');
//
return Base::retSuccess('保存成功', $content);
}
@ -365,6 +370,7 @@ class FileController extends AbstractController
//
$file->size = $content->size;
$file->save();
$file->pushMsg('update', $file);
}
}
return ['error' => 0];
@ -448,6 +454,7 @@ class FileController extends AbstractController
$file->save();
//
$data = File::find($file->id);
$data->pushMsg('add', $data);
return Base::retSuccess($data['name'] . ' 上传成功', $data);
});
}
@ -514,8 +521,15 @@ class FileController extends AbstractController
//
if ($action == 'unshare') {
// 取消共享
if ($file->share == 1) {
$uids = WebSocket::select(['userid'])->pluck('userid')->toArray();
} else {
$uids = FileUser::whereFileId($file->id)->pluck('userid')->toArray();
}
$uids = array_values(array_diff($uids, [$user->userid]));
//
$file->setShare(0);
return Base::retSuccess('取消成功', $file);
$message = '取消成功';
} else {
// 设置共享
if (!in_array($share, [1, 2])) {
@ -539,12 +553,20 @@ class FileController extends AbstractController
}
}
if (empty($array)) {
FileUser::whereFileId($file->id)->delete();
$builder = FileUser::whereFileId($file->id);
} else {
FileUser::whereFileId($file->id)->whereNotIn('userid', $array)->delete();
$builder = FileUser::whereFileId($file->id)->whereNotIn('userid', $array);
}
$uids = (clone $builder)->pluck('userid')->toArray();
$builder->delete();
}
return Base::retSuccess('设置成功', $file);
$message = '设置成功';
}
//
$file->pushMsg('update', $file);
if (isset($uids)) {
$file->pushMsg('delete', null, $uids);
}
return Base::retSuccess($message, $file);
}
}

View File

@ -148,11 +148,12 @@ class File extends AbstractModel
{
AbstractModel::transaction(function () {
$this->delete();
$this->pushMsg('delete');
FileContent::whereFid($this->id)->delete();
$list = self::wherePid($this->id)->get();
if ($list->isNotEmpty()) {
foreach ($list as $item) {
$item->deleteFile();
foreach ($list as $file) {
$file->deleteFile();
}
}
});
@ -160,29 +161,49 @@ class File extends AbstractModel
}
/**
* 推送内容发生变化消息
* 推送消息
* @param $action
* @param File|null $data 发送内容,默认为[id]
* @param array $userid 指定会员,默认为可查看文件的人
*/
public function pushContentChange()
public function pushMsg($action, $data = null, $userid = null)
{
$userid = [$this->userid];
if ($this->share == 1) {
$userid = array_merge($userid, WebSocket::wherePath('file/content/' . $this->id)->pluck('userid')->toArray());
} elseif ($this->share == 2) {
$userid = array_merge($userid, FileUser::whereFileId($this->id)->pluck('userid')->toArray());
if ($data === null) {
$data = [
'id' => $this->id
];
}
//
$userid = array_values(array_filter(array_unique($userid)));
if ($userid === null) {
$userid = [$this->userid];
if ($this->share == 1) {
$builder = WebSocket::select(['userid']);
if ($action == 'content') {
$builder->wherePath('file/content/' . $this->id);
}
$userid = array_merge($userid, $builder->pluck('userid')->toArray());
} elseif ($this->share == 2) {
$userid = array_merge($userid, FileUser::whereFileId($this->id)->pluck('userid')->toArray());
}
$userid = array_values(array_filter(array_unique($userid)));
}
if (empty($userid)) {
return;
}
//
$msg = [
'type' => 'file',
'action' => $action,
'data' => $data,
];
if ($action == 'content') {
$msg['nickname'] = User::nickname();
$msg['time'] = time();
}
$params = [
'ignoreFd' => Request::header('fd'),
'userid' => $userid,
'msg' => [
'type' => 'fileContentChange',
'data' => [
'id' => $this->id,
'nickname' => User::nickname(),
'time' => Base::time()
],
]
'msg' => $msg
];
$task = new PushTask($params, false);
Task::deliver($task);

View File

@ -121,21 +121,28 @@ export default {
},
wsMsg: {
handler({type, data}) {
if (type == 'path') {
if (data.path == 'file/content/' + this.fileId) {
this.editUser = data.userids;
}
} else if (type == 'fileContentChange') {
if (this.parentShow && data.id == this.fileId) {
$A.modalConfirm({
title: "更新提示",
content: '团队成员(' + data.nickname + ')更新了内容,<br/>更新时间:' + $A.formatDate("Y-m-d H:i:s", data.time) + '。<br/><br/>点击【确定】加载最新内容。',
onOk: () => {
this.getContent();
handler(info) {
const {type, data} = info;
switch (type) {
case 'path':
if (data.path == 'file/content/' + this.fileId) {
this.editUser = data.userids;
}
break;
case 'file':
if (data.action == 'content') {
if (this.parentShow && data.id == this.fileId) {
$A.modalConfirm({
title: "更新提示",
content: '团队成员(' + info.nickname + ')更新了内容,<br/>更新时间:' + $A.formatDate("Y-m-d H:i:s", info.time) + '。<br/><br/>点击【确定】加载最新内容。',
onOk: () => {
this.getContent();
}
});
}
});
}
}
break;
}
},
deep: true,

View File

@ -1587,6 +1587,24 @@ export default {
}
})(msgDetail);
break;
/**
* 文件消息
*/
case "file":
(function (msg) {
const {action, data} = msg;
switch (action) {
case 'add':
case 'update':
dispatch("saveFile", data);
break;
case 'delete':
dispatch("forgetFile", data.id);
break;
}
})(msgDetail);
break;
}
break
}