perf: 优化删除数据

This commit is contained in:
kuaifan 2023-02-14 07:45:07 +08:00
parent e9b07dacce
commit ac123387fd
7 changed files with 34 additions and 10 deletions

View File

@ -71,6 +71,7 @@ class DialogController extends AbstractController
->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')))
->orderByDesc('web_socket_dialogs.deleted_at')
->take(100)
->pluck('id');
}

View File

@ -58,6 +58,7 @@ class ProjectController extends AbstractController
* - yes取列表
* @apiParam {Object} [keys] 搜索条件
* - keys.name: 项目名称
* @apiParam {String} [deleted_at] 读取在这个时间之后删除的项目ID返回数据: deleted_data
*
* @apiParam {Number} [page] 当前页,默认:1
* @apiParam {Number} [pagesize] 每页显示数量,默认:50,最大:100
@ -148,6 +149,16 @@ class ProjectController extends AbstractController
$data['total_all'] = $data['total'];
}
//
if (Request::exists('deleted_at')) {
$data['deleted_at'] = date("Y-m-d H:i:s");
$data['deleted_data'] = Project::authData()
->withTrashed()
->where('projects.deleted_at', '>=', Carbon::parse(Request::input('deleted_at')))
->orderByDesc('projects.deleted_at')
->take(100)
->pluck('id');
}
//
return Base::retSuccess('success', $data);
}

View File

@ -1,6 +1,6 @@
{
"name": "DooTask",
"version": "0.22.84",
"version": "0.22.88",
"description": "DooTask is task management system.",
"scripts": {
"start": "./cmd dev",

2
public/js/app.js vendored

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
d59578a57c98b530
04a971f05c6c7c8b

View File

@ -35,6 +35,8 @@ export default {
state.dialogInputCache = await $A.IDBArray("dialogInputCache")
state.fileLists = await $A.IDBArray("fileLists")
state.userInfo = await $A.IDBJson("userInfo")
state.dialogDeletedAt = await $A.IDBString("dialogDeletedAt")
state.projectDeletedAt = await $A.IDBString("projectDeletedAt")
// 会员信息
if (state.userInfo.userid) {
@ -831,12 +833,15 @@ export default {
reject({msg: 'Parameter error'});
return;
}
let request = data || {};
const request = $A.isJson(data) ? data : {
deleted_at: state.projectDeletedAt || $A.formatDate("Y-m-d H:i:s", $A.Time() - 86400 * 30)
};
let showLoad = true;
if (typeof request.hideLoad !== "undefined") {
showLoad = !request.hideLoad;
delete request.hideLoad;
}
//
showLoad && state.loadProjects++;
dispatch("call", {
url: 'project/lists',
@ -844,6 +849,12 @@ export default {
}).then(({data}) => {
state.projectTotal = data.total_all;
dispatch("saveProject", data.data);
//
data.deleted_at && $A.IDBSet("projectDeletedAt", data.deleted_at).then(_ => {
state.projectDeletedAt = data.deleted_at
data.deleted_data.some(id => dispatch("forgetProject", id))
});
//
resolve(data)
}).catch(e => {
console.warn(e);
@ -2098,7 +2109,9 @@ export default {
reject({msg: 'Parameter error'});
return;
}
data = $A.isJson(data) ? data : {}
data = $A.isJson(data) ? data : {
deleted_at: state.dialogDeletedAt || $A.formatDate("Y-m-d H:i:s", $A.Time() - 86400 * 30)
}
if (data.hideLoad !== true) {
state.loadDialogs++;
}
@ -2117,9 +2130,7 @@ export default {
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", {
url: 'dialog/lists',
data,
@ -2127,10 +2138,10 @@ export default {
const resData = result.data;
dispatch("saveDialog", resData.data);
//
if (resData.deleted_at) {
resData.deleted_at && $A.IDBSet("dialogDeletedAt", resData.deleted_at).then(_ => {
state.dialogDeletedAt = resData.deleted_at
resData.deleted_data.some(id => dispatch("forgetDialog", id))
}
});
//
if (resData.next_page_url && resData.current_page < 5) {
data.page++

View File

@ -91,6 +91,7 @@ export default {
projectId: 0,
projectTotal: 0,
projectLoad: 0,
projectDeletedAt: null,
taskId: 0,
taskCompleteTemps: [],
taskContents: [],