perf: 优化会话删除

This commit is contained in:
kuaifan 2023-02-13 14:43:26 +08:00
parent 0c2ff1a000
commit d54e222ff2
5 changed files with 25 additions and 1 deletions

View File

@ -37,6 +37,7 @@ class DialogController extends AbstractController
* @apiName lists * @apiName lists
* *
* @apiParam {String} [at_after] 只读取在这个时间之后更新的对话 * @apiParam {String} [at_after] 只读取在这个时间之后更新的对话
* @apiParam {String} [deleted_at] 读取在这个时间之后删除的对话ID返回数据: deleted_data
* @apiParam {Number} [page] 当前页,默认:1 * @apiParam {Number} [page] 当前页,默认:1
* @apiParam {Number} [pagesize] 每页显示数量,默认:50,最大:100 * @apiParam {Number} [pagesize] 每页显示数量,默认:50,最大:100
* *
@ -62,7 +63,19 @@ class DialogController extends AbstractController
return $item->formatData($user->userid); return $item->formatData($user->userid);
}); });
// //
return Base::retSuccess('success', $list); $data = $list->toArray();
if (Request::exists('deleted_at')) {
$data['deleted_at'] = date("Y-m-d H:i:s");
$data['deleted_data'] = WebSocketDialog::select(['web_socket_dialogs.id'])
->withTrashed()
->join('web_socket_dialog_users as u', 'web_socket_dialogs.id', '=', 'u.dialog_id')
->where('u.userid', $user->userid)
->where('web_socket_dialogs.deleted_at', '>=', Carbon::parse(Request::input('deleted_at')))
->take(100)
->pluck('id');
}
//
return Base::retSuccess('success', $data);
} }
/** /**

View File

@ -281,6 +281,7 @@ class Project extends AbstractModel
AbstractModel::transaction(function () { AbstractModel::transaction(function () {
$dialog = WebSocketDialog::find($this->dialog_id); $dialog = WebSocketDialog::find($this->dialog_id);
$dialog?->deleteDialog(); $dialog?->deleteDialog();
$dialog?->pushMsg("groupDelete");
$columns = ProjectColumn::whereProjectId($this->id)->get(); $columns = ProjectColumn::whereProjectId($this->id)->get();
foreach ($columns as $column) { foreach ($columns as $column) {
$column->deleteColumn(false); $column->deleteColumn(false);

View File

@ -1281,6 +1281,7 @@ class ProjectTask extends AbstractModel
if ($this->dialog_id) { if ($this->dialog_id) {
$dialog = WebSocketDialog::find($this->dialog_id); $dialog = WebSocketDialog::find($this->dialog_id);
$dialog?->deleteDialog(); $dialog?->deleteDialog();
$dialog?->pushMsg("groupDelete");
} }
self::whereParentId($this->id)->delete(); self::whereParentId($this->id)->delete();
$this->deleted_userid = User::userid(); $this->deleted_userid = User::userid();

View File

@ -2117,6 +2117,9 @@ export default {
data.at_after = tmpList[0].last_at; data.at_after = tmpList[0].last_at;
} }
} }
if (state.dialogDeletedAt || data.at_after) {
data.deleted_at = state.dialogDeletedAt = state.dialogDeletedAt || data.at_after
}
dispatch("call", { dispatch("call", {
url: 'dialog/lists', url: 'dialog/lists',
data, data,
@ -2124,6 +2127,11 @@ export default {
const resData = result.data; const resData = result.data;
dispatch("saveDialog", resData.data); dispatch("saveDialog", resData.data);
// //
if (resData.deleted_at) {
state.dialogDeletedAt = resData.deleted_at
resData.deleted_data.some(id => dispatch("forgetDialog", id))
}
//
if (resData.next_page_url && resData.current_page < 5) { if (resData.next_page_url && resData.current_page < 5) {
data.page++ data.page++
dispatch("getDialogs", data).then(resolve).catch(reject) dispatch("getDialogs", data).then(resolve).catch(reject)

View File

@ -82,6 +82,7 @@ export default {
dialogHistory: [], dialogHistory: [],
dialogInputCache: [], dialogInputCache: [],
dialogMsgTransfer: {time: 0}, dialogMsgTransfer: {time: 0},
dialogDeletedAt: null,
// 文件 // 文件
fileLists: [], fileLists: [],