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\FileContent;
use App\Models\FileUser; use App\Models\FileUser;
use App\Models\User; use App\Models\User;
use App\Models\WebSocket;
use App\Module\Base; use App\Module\Base;
use App\Module\Ihttp; use App\Module\Ihttp;
use Arr; use Arr;
@ -123,6 +124,7 @@ class FileController extends AbstractController
// //
$file->name = $name; $file->name = $name;
$file->save(); $file->save();
$file->pushMsg('update', $file);
return Base::retSuccess('修改成功', $file); return Base::retSuccess('修改成功', $file);
} else { } else {
// 添加 // 添加
@ -162,6 +164,7 @@ class FileController extends AbstractController
$file->save(); $file->save();
// //
$data = File::find($file->id); $data = File::find($file->id);
$data->pushMsg('add', $data);
return Base::retSuccess('添加成功', $data); return Base::retSuccess('添加成功', $data);
} }
} }
@ -201,6 +204,7 @@ class FileController extends AbstractController
$file->save(); $file->save();
// //
$data = File::find($file->id); $data = File::find($file->id);
$data->pushMsg('add', $data);
return Base::retSuccess('复制成功', $data); return Base::retSuccess('复制成功', $data);
} }
@ -242,6 +246,7 @@ class FileController extends AbstractController
// //
$file->pid = $pid; $file->pid = $pid;
$file->save(); $file->save();
$file->pushMsg('update', $file);
return Base::retSuccess('操作成功', $file); return Base::retSuccess('操作成功', $file);
} }
@ -322,7 +327,7 @@ class FileController extends AbstractController
// //
$file->size = $content->size; $file->size = $content->size;
$file->save(); $file->save();
$file->pushContentChange(); $file->pushMsg('content');
// //
return Base::retSuccess('保存成功', $content); return Base::retSuccess('保存成功', $content);
} }
@ -365,6 +370,7 @@ class FileController extends AbstractController
// //
$file->size = $content->size; $file->size = $content->size;
$file->save(); $file->save();
$file->pushMsg('update', $file);
} }
} }
return ['error' => 0]; return ['error' => 0];
@ -448,6 +454,7 @@ class FileController extends AbstractController
$file->save(); $file->save();
// //
$data = File::find($file->id); $data = File::find($file->id);
$data->pushMsg('add', $data);
return Base::retSuccess($data['name'] . ' 上传成功', $data); return Base::retSuccess($data['name'] . ' 上传成功', $data);
}); });
} }
@ -514,8 +521,15 @@ class FileController extends AbstractController
// //
if ($action == 'unshare') { 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); $file->setShare(0);
return Base::retSuccess('取消成功', $file); $message = '取消成功';
} else { } else {
// 设置共享 // 设置共享
if (!in_array($share, [1, 2])) { if (!in_array($share, [1, 2])) {
@ -539,12 +553,20 @@ class FileController extends AbstractController
} }
} }
if (empty($array)) { if (empty($array)) {
FileUser::whereFileId($file->id)->delete(); $builder = FileUser::whereFileId($file->id);
} else { } 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 () { AbstractModel::transaction(function () {
$this->delete(); $this->delete();
$this->pushMsg('delete');
FileContent::whereFid($this->id)->delete(); FileContent::whereFid($this->id)->delete();
$list = self::wherePid($this->id)->get(); $list = self::wherePid($this->id)->get();
if ($list->isNotEmpty()) { if ($list->isNotEmpty()) {
foreach ($list as $item) { foreach ($list as $file) {
$item->deleteFile(); $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)
{ {
if ($data === null) {
$data = [
'id' => $this->id
];
}
//
if ($userid === null) {
$userid = [$this->userid]; $userid = [$this->userid];
if ($this->share == 1) { if ($this->share == 1) {
$userid = array_merge($userid, WebSocket::wherePath('file/content/' . $this->id)->pluck('userid')->toArray()); $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) { } elseif ($this->share == 2) {
$userid = array_merge($userid, FileUser::whereFileId($this->id)->pluck('userid')->toArray()); $userid = array_merge($userid, FileUser::whereFileId($this->id)->pluck('userid')->toArray());
} }
//
$userid = array_values(array_filter(array_unique($userid))); $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 = [ $params = [
'ignoreFd' => Request::header('fd'), 'ignoreFd' => Request::header('fd'),
'userid' => $userid, 'userid' => $userid,
'msg' => [ 'msg' => $msg
'type' => 'fileContentChange',
'data' => [
'id' => $this->id,
'nickname' => User::nickname(),
'time' => Base::time()
],
]
]; ];
$task = new PushTask($params, false); $task = new PushTask($params, false);
Task::deliver($task); Task::deliver($task);

View File

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

View File

@ -1587,6 +1587,24 @@ export default {
} }
})(msgDetail); })(msgDetail);
break; 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 break
} }