修复日志排序问题

This commit is contained in:
cc 2025-04-09 22:22:46 +08:00
parent b1420dcfeb
commit eec890650d
8 changed files with 22008 additions and 37852 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -3,10 +3,7 @@
"MODULES": [ "MODULES": [
{ {
"MODULE_NAME": "1043bfc77febe75fafec0c4309faccf1", "MODULE_NAME": "1043bfc77febe75fafec0c4309faccf1",
"API_TYPE": "stageMode", "API_TYPE": "stageMode"
"INCREMENTAL_TASKS": {
"COMPILE_ARKTS": true
}
} }
], ],
"BUILD_MODE": "debug" "BUILD_MODE": "debug"
@ -18,22 +15,19 @@
"IS_HVIGORFILE_TYPE_CHECK": false, "IS_HVIGORFILE_TYPE_CHECK": false,
"TASK_TIME": { "TASK_TIME": {
"1043bfc77febe75fafec0c4309faccf1": { "1043bfc77febe75fafec0c4309faccf1": {
"ConfigureCmake": 138750, "ConfigureCmake": 894750,
"PreCheckSyscap": 130000, "PreCheckSyscap": 574583,
"ProcessIntegratedHsp": 627666, "ProcessIntegratedHsp": 2383958,
"BuildNativeWithCmake": 132500, "BuildNativeWithCmake": 390834,
"SyscapTransform": 748042, "SyscapTransform": 29037500,
"BuildNativeWithNinja": 628625, "BuildNativeWithNinja": 1575042,
"BuildJS": 3736250, "BuildJS": 2164500,
"CompileArkTS": 1222589291, "SignHap": 1717417,
"GeneratePkgModuleJson": 1167625, "CollectDebugSymbol": 3798875,
"PackageHap": 402789000, "assembleHap": 280125
"SignHap": 555625,
"CollectDebugSymbol": 1284834,
"assembleHap": 83208
} }
}, },
"TOTAL_TIME": 1815609000, "BUILD_ID": "202504092220173180",
"BUILD_ID": "202504081715029750" "TOTAL_TIME": 2372532417
} }
} }

View File

@ -128,7 +128,7 @@ chineseTexts.notificationSettings = '通知设置';
chineseTexts.about = '关于'; chineseTexts.about = '关于';
chineseTexts.versionInfo = '版本信息'; chineseTexts.versionInfo = '版本信息';
// 版本日志相关 // 版本日志相关
chineseTexts.versionLog = '更新日志'; chineseTexts.versionLog = '日志记录';
chineseTexts.versionHistory = '版本历史'; chineseTexts.versionHistory = '版本历史';
chineseTexts.latestVersion = '最新版本'; chineseTexts.latestVersion = '最新版本';
chineseTexts.noVersionInfo = '没有版本信息'; chineseTexts.noVersionInfo = '没有版本信息';

View File

@ -53,7 +53,7 @@ export class VersionLogItem {
version: string = ''; // 版本号 version: string = ''; // 版本号
date: string = ''; // 发布日期 date: string = ''; // 发布日期
changes: string[] = []; // 更新内容列表 changes: string[] = []; // 更新内容列表
constructor(version: string = '', date: string = '', changes: string[] = []) { constructor(version: string = '', date: string = '', changes: string[] = []) {
this.version = version; this.version = version;
this.date = date; this.date = date;
@ -78,11 +78,11 @@ export class LogManager {
private versionLogs: VersionLogItem[] = []; private versionLogs: VersionLogItem[] = [];
// 当前语言 // 当前语言
private currentLanguage: string = '中文'; private currentLanguage: string = '中文';
private constructor() { private constructor() {
this.initVersionLogs(); this.initVersionLogs();
} }
/** /**
* 获取LogManager实例 * 获取LogManager实例
*/ */
@ -92,7 +92,7 @@ export class LogManager {
} }
return LogManager.instance; return LogManager.instance;
} }
/** /**
* 设置当前语言 * 设置当前语言
* @param language 语言设置 * @param language 语言设置
@ -101,7 +101,7 @@ export class LogManager {
this.currentLanguage = language; this.currentLanguage = language;
logInfo(`日志管理器语言已设置为: ${language}`); logInfo(`日志管理器语言已设置为: ${language}`);
} }
/** /**
* 记录信息日志 * 记录信息日志
* @param category 日志类别 * @param category 日志类别
@ -112,7 +112,7 @@ export class LogManager {
const logMessage = `[${category}][${type}] ${message}`; const logMessage = `[${category}][${type}] ${message}`;
hilog.info(LOG_DOMAIN, LOG_TAG, logMessage); hilog.info(LOG_DOMAIN, LOG_TAG, logMessage);
} }
/** /**
* 记录调试日志,带有更多上下文 * 记录调试日志,带有更多上下文
* @param category 日志类别 * @param category 日志类别
@ -125,7 +125,7 @@ export class LogManager {
const logMessage = `[${category}][${type}] ${key}: ${oldValue} -> ${newValue}`; const logMessage = `[${category}][${type}] ${key}: ${oldValue} -> ${newValue}`;
hilog.debug(LOG_DOMAIN, LOG_TAG, logMessage); hilog.debug(LOG_DOMAIN, LOG_TAG, logMessage);
} }
/** /**
* 记录警告日志 * 记录警告日志
* @param category 日志类别 * @param category 日志类别
@ -135,7 +135,7 @@ export class LogManager {
const logMessage = `[${category}][WARN] ${message}`; const logMessage = `[${category}][WARN] ${message}`;
hilog.warn(LOG_DOMAIN, LOG_TAG, logMessage); hilog.warn(LOG_DOMAIN, LOG_TAG, logMessage);
} }
/** /**
* 记录错误日志 * 记录错误日志
* @param category 日志类别 * @param category 日志类别
@ -146,7 +146,7 @@ export class LogManager {
const logMessage = `[${category}][ERROR] ${errorMessage}`; const logMessage = `[${category}][ERROR] ${errorMessage}`;
hilog.error(LOG_DOMAIN, LOG_TAG, logMessage); hilog.error(LOG_DOMAIN, LOG_TAG, logMessage);
} }
/** /**
* 初始化版本日志数据 * 初始化版本日志数据
*/ */
@ -159,17 +159,17 @@ export class LogManager {
new VersionLogItem("1.2.0","2025-4-2",["添加课堂功能","修改上课页面逻辑"]), new VersionLogItem("1.2.0","2025-4-2",["添加课堂功能","修改上课页面逻辑"]),
new VersionLogItem("1.2.0 beta1.0","2025-4-3",["测试消息发送","修复已知问题"]), new VersionLogItem("1.2.0 beta1.0","2025-4-3",["测试消息发送","修复已知问题"]),
new VersionLogItem("1.2.0 beta1.1","2025-4-4",["更新说明文档","添加日志输出"]), new VersionLogItem("1.2.0 beta1.1","2025-4-4",["更新说明文档","添加日志输出"]),
new VersionLogItem("1.2.0 beta1.2","2025-4-8修改首页",["修改首页","添加网页"]), new VersionLogItem("1.2.0 beta1.2","2025-4-8",["修改首页","添加网页"]),
]; ];
} }
/** /**
* 获取所有版本日志 * 获取所有版本日志
*/ */
public getVersionLogs(): VersionLogItem[] { public getVersionLogs(): VersionLogItem[] {
return this.versionLogs; return this.versionLogs;
} }
/** /**
* 获取最新版本号 * 获取最新版本号
*/ */
@ -177,21 +177,14 @@ export class LogManager {
if (this.versionLogs && this.versionLogs.length > 0) { if (this.versionLogs && this.versionLogs.length > 0) {
// 先复制一份数组进行排序,确保不影响原数组 // 先复制一份数组进行排序,确保不影响原数组
const sortedLogs = [...this.versionLogs].sort((a, b) => { const sortedLogs = [...this.versionLogs].sort((a, b) => {
const vA = a.version.split('.').map(Number); return this.compareVersions(a.version, b.version);
const vB = b.version.split('.').map(Number);
for (let i = 0; i < Math.max(vA.length, vB.length); i++) {
const numA = i < vA.length ? vA[i] : 0;
const numB = i < vB.length ? vB[i] : 0;
if (numB - numA !== 0) return numB - numA;
}
return 0;
}); });
// 返回排序后的第一个元素(最高版本) // 返回排序后的第一个元素(最高版本)
return sortedLogs[0].version; return sortedLogs[0].version;
} }
return "1.0.0"; // 默认版本号 return "1.0.0"; // 默认版本号
} }
/** /**
* 添加新版本日志 * 添加新版本日志
* @param versionLog 版本日志项 * @param versionLog 版本日志项
@ -209,19 +202,52 @@ export class LogManager {
logInfo(`新版本日志已添加: ${versionLog.version}`); logInfo(`新版本日志已添加: ${versionLog.version}`);
} }
// 按版本号排序(假设版本号格式为x.y.z // 按版本号排序(支持beta版本
this.versionLogs.sort((a, b) => { this.versionLogs.sort((a, b) => {
const vA = a.version.split('.').map(Number); return this.compareVersions(a.version, b.version);
const vB = b.version.split('.').map(Number);
for (let i = 0; i < Math.max(vA.length, vB.length); i++) {
const numA = i < vA.length ? vA[i] : 0;
const numB = i < vB.length ? vB[i] : 0;
if (numB - numA !== 0) return numB - numA;
}
return 0;
}); });
} }
/**
* 比较两个版本号
* @param versionA 版本号A
* @param versionB 版本号B
* @returns 返回比较结果负数表示A < B正数表示A > B0表示A == B
*/
public compareVersions(versionA: string, versionB: string): number {
// 检查是否包含beta
const isBetaA = versionA.toLowerCase().includes('beta');
const isBetaB = versionB.toLowerCase().includes('beta');
// 如果一个是beta一个是正式版本beta版本排在后面
if (isBetaA && !isBetaB) {
return -1;
} else if (!isBetaA && isBetaB) {
return 1;
}
// 分割版本号,只保留数字部分
const partsA = versionA.split(/[. ]/).map(part => {
const num = parseInt(part);
return isNaN(num) ? 0 : num;
});
const partsB = versionB.split(/[. ]/).map(part => {
const num = parseInt(part);
return isNaN(num) ? 0 : num;
});
// 比较每个部分
for (let i = 0; i < Math.max(partsA.length, partsB.length); i++) {
const numA = partsA[i] || 0;
const numB = partsB[i] || 0;
if (numA !== numB) {
return numB - numA;
}
}
return 0;
}
} }
// 导出单例实例 // 导出单例实例
export default LogManager.getInstance(); export default LogManager.getInstance();

View File

@ -600,7 +600,7 @@ struct SystemSettings {
// 添加日志记录设置项 // 添加日志记录设置项
SettingItem({ SettingItem({
title: this.texts.versionLog || '更新日志', title: this.texts.versionLog || '日志记录',
value: '点一点', value: '点一点',
refreshTrigger: this.refreshTrigger, refreshTrigger: this.refreshTrigger,
themeColor: this.themeColor, themeColor: this.themeColor,
@ -813,16 +813,9 @@ struct SystemSettings {
return; return;
} }
// 确保版本日志按版本号降序排列 // 使用LogManager的版本比较逻辑进行排序
const sortedLogs = [...versionLogs].sort((a, b) => { const sortedLogs = [...versionLogs].sort((a, b) => {
const vA = a.version.split('.').map(Number); return logManager.compareVersions(a.version, b.version);
const vB = b.version.split('.').map(Number);
for (let i = 0; i < Math.max(vA.length, vB.length); i++) {
const numA = i < vA.length ? vA[i] : 0;
const numB = i < vB.length ? vB[i] : 0;
if (numB - numA !== 0) return numB - numA;
}
return 0;
}); });
// 构建版本日志内容 // 构建版本日志内容
@ -837,7 +830,7 @@ struct SystemSettings {
// 显示对话框 // 显示对话框
AlertDialog.show({ AlertDialog.show({
title: '更新日志', title: '日志记录',
message: message, message: message,
confirm: { confirm: {
value: this.currentLanguage === Language.CHINESE ? '确定' : 'OK', value: this.currentLanguage === Language.CHINESE ? '确定' : 'OK',