From 8018d9b418c9ece48fe4747daf9c92d1b295fc41 Mon Sep 17 00:00:00 2001 From: lyswhut Date: Thu, 18 May 2023 15:22:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9B=A0=E6=8F=92=E5=85=A5?= =?UTF-8?q?=E6=95=B0=E5=AD=97=E7=B1=BB=E5=9E=8B=E7=9A=84ID=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E5=85=B6=E6=84=8F=E5=A4=96=E5=9C=A8=E6=9C=AB=E5=B0=BE?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=20.0=20=E5=AF=BC=E8=87=B4=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BC=82=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- publish/changeLog.md | 1 + src/main/event/ListEvent.ts | 14 ++++++++++++++ src/main/worker/dbService/modules/list/dbHelper.ts | 11 +++++++++-- src/renderer/utils/musicSdk/bd/songList.js | 2 +- src/renderer/utils/musicSdk/kw/songList.js | 2 +- src/renderer/utils/musicSdk/mg/songList.js | 2 +- src/renderer/utils/musicSdk/tx/songList.js | 6 +++--- src/renderer/utils/musicSdk/wy/songList.js | 2 +- 8 files changed, 31 insertions(+), 9 deletions(-) diff --git a/publish/changeLog.md b/publish/changeLog.md index 14feaecd..d545465f 100644 --- a/publish/changeLog.md +++ b/publish/changeLog.md @@ -5,6 +5,7 @@ ### 修复 - 修复列表名翻译显示 +- 修复因插入数字类型的ID导致其意外在末尾追加 .0 导致列表数据异常的问题,同时也可能导致同步数据丢失的问题(要完全修复这个问题还需要同时将移动端、同步服务更新到最新版本) ### 其他 diff --git a/src/main/event/ListEvent.ts b/src/main/event/ListEvent.ts index cb1e2ed8..6691199d 100644 --- a/src/main/event/ListEvent.ts +++ b/src/main/event/ListEvent.ts @@ -14,6 +14,18 @@ import { EventEmitter } from 'events' // musicOverwrite, // } from '@main/workers/dbService/modules/list' +// 兼容v2.3.0之前版本插入数字类型的ID导致其意外在末尾追加 .0 的问题,确保所有ID都是字符串类型 +const fixListIdType = (lists: LX.List.UserListInfo[] | LX.List.UserListInfoFull[]) => { + for (const list of lists) { + if (typeof list.sourceListId == 'number') { + list.sourceListId = String(list.sourceListId) + if (typeof list.id == 'number') { + list.id = String(list.id) + } + } + } +} + export class Event extends EventEmitter { list_changed() { this.emit('list_changed') @@ -25,6 +37,7 @@ export class Event extends EventEmitter { * @param isRemote 是否属于远程操作 */ async list_data_overwrite(listData: MakeOptional, isRemote: boolean = false) { + fixListIdType(listData.userList) await global.lx.worker.dbService.listDataOverwrite(listData) this.emit('list_data_overwrite', listData, isRemote) this.list_changed() @@ -37,6 +50,7 @@ export class Event extends EventEmitter { * @param isRemote 是否属于远程操作 */ async list_create(position: number, lists: LX.List.UserListInfo[], isRemote: boolean = false) { + fixListIdType(lists) await global.lx.worker.dbService.createUserLists(position, lists) this.emit('list_create', position, lists, isRemote) this.list_changed() diff --git a/src/main/worker/dbService/modules/list/dbHelper.ts b/src/main/worker/dbService/modules/list/dbHelper.ts index 9a598a07..a38e85ed 100644 --- a/src/main/worker/dbService/modules/list/dbHelper.ts +++ b/src/main/worker/dbService/modules/list/dbHelper.ts @@ -19,13 +19,20 @@ import { createMusicInfoByMusicInfoIdQueryStatement, } from './statements' - +const idFixRxp = /\.0$/ /** * 获取用户列表 * @returns */ export const queryAllUserList = () => { - return createListQueryStatement().all() as LX.DBService.UserListInfo[] + const list = createListQueryStatement().all() as LX.DBService.UserListInfo[] + for (const info of list) { + // 兼容v2.3.0之前版本插入数字类型的ID导致其意外在末尾追加 .0 的问题 + if (info.sourceListId?.endsWith('.0')) { + info.sourceListId = info.sourceListId.replace(idFixRxp, '') + } + } + return list } /** diff --git a/src/renderer/utils/musicSdk/bd/songList.js b/src/renderer/utils/musicSdk/bd/songList.js index efe3fa03..90fddb12 100644 --- a/src/renderer/utils/musicSdk/bd/songList.js +++ b/src/renderer/utils/musicSdk/bd/songList.js @@ -174,7 +174,7 @@ export default { filterList(rawData) { return rawData.map(item => ({ play_count: this.formatPlayCount(item.listen_num), - id: item.list_id, + id: String(item.list_id), author: item.username, name: item.title, // time: item.publish_time, diff --git a/src/renderer/utils/musicSdk/kw/songList.js b/src/renderer/utils/musicSdk/kw/songList.js index 0b1e164e..ac24630a 100644 --- a/src/renderer/utils/musicSdk/kw/songList.js +++ b/src/renderer/utils/musicSdk/kw/songList.js @@ -467,7 +467,7 @@ export default { list: body.abslist.map(item => { return { play_count: this.formatPlayCount(item.playcnt), - id: item.playlistid, + id: String(item.playlistid), author: decodeName(item.nickname), name: decodeName(item.name), total: item.songnum, diff --git a/src/renderer/utils/musicSdk/mg/songList.js b/src/renderer/utils/musicSdk/mg/songList.js index 090d9da8..7937d79d 100644 --- a/src/renderer/utils/musicSdk/mg/songList.js +++ b/src/renderer/utils/musicSdk/mg/songList.js @@ -210,7 +210,7 @@ export default { // console.log(rawData) return rawData.map(item => ({ play_count: formatPlayCount(item.playCount), - id: item.playListId, + id: String(item.playListId), author: item.createName, name: item.playListName, time: dateFormat(item.createTime, 'Y-M-D'), diff --git a/src/renderer/utils/musicSdk/tx/songList.js b/src/renderer/utils/musicSdk/tx/songList.js index 4c33e2a5..5cf9ec7f 100644 --- a/src/renderer/utils/musicSdk/tx/songList.js +++ b/src/renderer/utils/musicSdk/tx/songList.js @@ -130,7 +130,7 @@ export default { return { list: data.v_playlist.map(item => ({ play_count: formatPlayCount(item.access_num), - id: item.tid, + id: String(item.tid), author: item.creator_info.nick, name: item.title, time: item.modify_time ? dateFormat(item.modify_time * 1000, 'Y-M-D') : '', @@ -151,7 +151,7 @@ export default { return { list: content.v_item.map(({ basic }) => ({ play_count: formatPlayCount(basic.play_cnt), - id: basic.tid, + id: String(basic.tid), author: basic.creator.nick, name: basic.title, // time: basic.publish_time, @@ -304,7 +304,7 @@ export default { list: body.data.list.map(item => { return { play_count: formatPlayCount(item.listennum), - id: item.dissid, + id: String(item.dissid), author: item.creator.name, name: item.dissname, time: dateFormat(item.createtime, 'Y-M-D'), diff --git a/src/renderer/utils/musicSdk/wy/songList.js b/src/renderer/utils/musicSdk/wy/songList.js index 9e485387..6405cb3f 100644 --- a/src/renderer/utils/musicSdk/wy/songList.js +++ b/src/renderer/utils/musicSdk/wy/songList.js @@ -232,7 +232,7 @@ export default { // console.log(rawData) return rawData.map(item => ({ play_count: formatPlayCount(item.playCount), - id: item.id, + id: String(item.id), author: item.creator.nickname, name: item.name, time: item.createTime ? dateFormat(item.createTime, 'Y-M-D') : '',