From 479d3e3f3935b78d4b668e5cd285e4edf94847e5 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Mon, 18 Nov 2024 15:30:42 +0800 Subject: [PATCH] no message --- app/Http/Controllers/Api/DialogController.php | 2 +- app/Http/Controllers/Api/UsersController.php | 1 - app/Module/Base.php | 12 +++++-- .../manage/components/TeamManagement.vue | 2 +- resources/assets/js/store/actions.js | 34 ++++++++++++------- 5 files changed, 33 insertions(+), 18 deletions(-) diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index 3c121e934..4600a410f 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -786,7 +786,7 @@ class DialogController extends AbstractController * * @apiParam {Object} id 消息ID(组) * - 1、多个ID用逗号分隔,如:1,2,3 - * - 2、另一种格式:{"id": "[会话ID]"},如:{"2": 0, "3": 10} + * - 2、另一种格式:{"id": "会话ID|0"},如:{"2": 0, "3": 10} * -- 会话ID:标记id之后的消息已读 * -- 其他:标记已读 * diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 217682883..6f7ce0008 100755 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -42,7 +42,6 @@ class UsersController extends AbstractController /** * @api {get} api/users/login 01. 登录、注册 * - * @apiDescription 需要token身份 * @apiVersion 1.0.0 * @apiGroup users * @apiName login diff --git a/app/Module/Base.php b/app/Module/Base.php index e691c20b6..92e96291e 100755 --- a/app/Module/Base.php +++ b/app/Module/Base.php @@ -960,11 +960,19 @@ class Base /** * 判断是否二维数组 * @param $array + * @param bool $strict 严格模式,是否每个元素都是数组 * @return bool */ - public static function isTwoArray($array) + public static function isTwoArray($array, bool $strict = true) { - return is_array($array) && count(array_filter($array, 'is_array')) > 0; + if (!is_array($array)) { + return false; + } + $count = count(array_filter($array, 'is_array')); + if ($strict) { + return $count === count($array); + } + return $count > 0; } /** diff --git a/resources/assets/js/pages/manage/components/TeamManagement.vue b/resources/assets/js/pages/manage/components/TeamManagement.vue index a7cedf3f0..b9f4603fa 100644 --- a/resources/assets/js/pages/manage/components/TeamManagement.vue +++ b/resources/assets/js/pages/manage/components/TeamManagement.vue @@ -820,7 +820,7 @@ export default { }, render: (h, {row}) => { const checkin_face = $A.cloneJSON(row.checkin_face || '') - return h('div', checkin_face ? this.$L('已上传') : '-'); + return h('AutoTip', checkin_face ? this.$L('已上传') : '-'); }, }, { key: 'checkin_mac', diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index 4ac2e22e6..50d41c039 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -3298,13 +3298,16 @@ export default { state.readTimeout = null; // if (state.userId === 0) { + data && (data.read_at = null); return; } - if (Object.values(state.readWaitData).length === 0) { + const entries = Object.entries(state.readWaitData); + if (entries.length === 0) { + data && (data.read_at = null); return } - const ids = $A.cloneJSON(state.readWaitData); - state.readWaitData = {}; + const ids = Object.fromEntries(entries.slice(0, 100)); + state.readWaitData = Object.fromEntries(entries.slice(100)); // dispatch("call", { method: 'post', @@ -3313,18 +3316,23 @@ export default { id: ids } }).then(({data}) => { - for (const id in ids) { - if (ids.hasOwnProperty(id) && /^\d+$/.test(ids[id])) { - state.dialogMsgs.some(item => { - if (item.dialog_id == ids[id] && item.id >= id) { - item.read_at = $A.daytz().format("YYYY-MM-DD HH:mm:ss") - } - }) - } - } + Object.entries(ids) + .filter(([_, dialogId]) => /^\d+$/.test(dialogId)) + .forEach(([msdId, dialogId]) => { + state.dialogMsgs + .filter(item => item.dialog_id == dialogId && item.id >= msdId) + .forEach(item => { + item.read_at = $A.daytz().format("YYYY-MM-DD HH:mm:ss"); + }); + }); dispatch("saveDialog", data) }).catch(_ => { - state.readWaitData = ids; + Object.keys(ids) + .forEach(id => { + const msg = state.dialogMsgs.find(item => item.id == id); + if (msg) msg.read_at = null; + }); + state.readWaitData = Object.assign(state.readWaitData, ids); }).finally(_ => { state.readLoadNum++ });