diff --git a/src/store/modules/mall/kefu.ts b/src/store/modules/mall/kefu.ts index 16f1dfc2..2aecee0d 100644 --- a/src/store/modules/mall/kefu.ts +++ b/src/store/modules/mall/kefu.ts @@ -63,48 +63,14 @@ export const useMallKefuStore = defineStore('mall-kefu', { } }, conversationSort() { - // TODO @puhui999:1)逻辑上,先按照置顶、再按照最后消息时间;2)感觉写的有一丢丢小复杂,发给大模型,看看有没可能简化哈。 - this.conversationList.sort((obj1, obj2) => { - // 如果 obj1.adminPinned 为 true,obj2.adminPinned 为 false,obj1 应该排在前面 - if (obj1.adminPinned && !obj2.adminPinned) { - return -1 + // 按置顶属性和最后消息时间排序 + this.conversationList.sort((a, b) => { + // 按照置顶排序,置顶的会在前面 + if (a.adminPinned !== b.adminPinned) { + return a.adminPinned ? -1 : 1 } - // 如果 obj1.adminPinned 为 false,obj2.adminPinned 为 true,obj2 应该排在前面 - if (!obj1.adminPinned && obj2.adminPinned) { - return 1 - } - - // 如果 obj1.adminPinned 和 obj2.adminPinned 都为 true,比较 adminUnreadMessageCount 的值 - if (obj1.adminPinned && obj2.adminPinned) { - return obj1.adminUnreadMessageCount - obj2.adminUnreadMessageCount - } - - // 如果 obj1.adminPinned 和 obj2.adminPinned 都为 false,比较 adminUnreadMessageCount 的值 - if (!obj1.adminPinned && !obj2.adminPinned) { - return obj1.adminUnreadMessageCount - obj2.adminUnreadMessageCount - } - - // 如果 obj1.adminPinned 为 true,obj2.adminPinned 为 true,且 b 都大于 0,比较 adminUnreadMessageCount 的值 - if ( - obj1.adminPinned && - obj2.adminPinned && - obj1.adminUnreadMessageCount > 0 && - obj2.adminUnreadMessageCount > 0 - ) { - return obj1.adminUnreadMessageCount - obj2.adminUnreadMessageCount - } - - // 如果 obj1.adminPinned 为 false,obj2.adminPinned 为 false,且 b 都大于 0,比较 adminUnreadMessageCount 的值 - if ( - !obj1.adminPinned && - !obj2.adminPinned && - obj1.adminUnreadMessageCount > 0 && - obj2.adminUnreadMessageCount > 0 - ) { - return obj1.adminUnreadMessageCount - obj2.adminUnreadMessageCount - } - - return 0 + // 按照最后消息时间排序,最近的会在前面 + return (b.lastMessageTime as unknown as number) - (a.lastMessageTime as unknown as number) }) } }