[2.15.0] 每个步骤添加时间记录

This commit is contained in:
renwj
2023-03-24 16:13:34 +08:00
parent 966850dbb2
commit 65e0802de5
6 changed files with 48 additions and 53 deletions

View File

@@ -22,105 +22,79 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
override fun init(context: Context?) {}
override suspend fun recordUpgradeRecord(sn: String, mac: String, type: String?) {
UpgradeDbHelper.insertRecord(Record(AppUtils.getAppVersionName(), sn, mac, type))
UpgradeDbHelper.insertRecord(Record(AppUtils.getAppVersionName(), sn, mac, type, time = System.currentTimeMillis()))
}
override suspend fun recordUpgradeRequestStart() {
UpgradeDbHelper.insertCheckRecord(CheckRecord(AppUtils.getAppVersionName(), START))
UpgradeDbHelper.insertCheckRecord(CheckRecord(AppUtils.getAppVersionName(), START, time = System.currentTimeMillis()))
}
override suspend fun recordUpgradeRequestSuccess(response: String) {
UpgradeDbHelper.insertCheckRecord(CheckRecord(AppUtils.getAppVersionName(), SUCCESS, response))
UpgradeDbHelper.insertCheckRecord(CheckRecord(AppUtils.getAppVersionName(), SUCCESS, response, time = System.currentTimeMillis()))
}
override suspend fun recordUpgradeRequestFailed(error: String) {
UpgradeDbHelper.insertCheckRecord(CheckRecord(AppUtils.getAppVersionName(), FAIL, error))
UpgradeDbHelper.insertCheckRecord(CheckRecord(AppUtils.getAppVersionName(), FAIL, error, time = System.currentTimeMillis()))
}
override suspend fun recordUpgradeRecord(newVersionName: String, newMd5: String?, type: Int) {
UpgradeDbHelper.insertUpgradeRecord(UpgradeRecord(fromVersionName = AppUtils.getAppVersionName(), toVersionName = newVersionName, fromMd5 = AppUtils.getAppApkMd5(), toMD5 = newMd5, type = getType(type)))
UpgradeDbHelper.insertUpgradeRecord(UpgradeRecord(fromVersionName = AppUtils.getAppVersionName(), toVersionName = newVersionName, fromMd5 = AppUtils.getAppApkMd5(), toMD5 = newMd5, type = getType(type), time = System.currentTimeMillis()))
}
override suspend fun recordDownloadStart(downloadUrl: String) {
UpgradeDbHelper.insertDownloadRecord(DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadStart, downloadUrl = downloadUrl))
UpgradeDbHelper.insertDownloadRecord(DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadStart, downloadUrl = downloadUrl, time = System.currentTimeMillis()))
}
override suspend fun recordDownloadFailed(downloadUrl: String, error: String) {
UpgradeDbHelper.insertDownloadRecord(DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadFailed, failReason = error, downloadUrl = downloadUrl))
UpgradeDbHelper.insertDownloadRecord(DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadFailed, failReason = error, downloadUrl = downloadUrl, time = System.currentTimeMillis()))
}
override suspend fun recordDownloadSuccess(downloadUrl: String) {
UpgradeDbHelper.insertDownloadRecord(DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadComplete, downloadUrl = downloadUrl))
UpgradeDbHelper.insertDownloadRecord(DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadComplete, downloadUrl = downloadUrl, time = System.currentTimeMillis()))
}
override suspend fun recordInstallStart() {
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = InstallStart))
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = InstallStart, time = System.currentTimeMillis()))
}
override suspend fun recordSourceMd5CheckStart() {
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = SourceMd5CheckStart))
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = SourceMd5CheckStart, time = System.currentTimeMillis()))
}
override suspend fun recordSourceMd5CheckFailed(error: String) {
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = SourceMd5CheckFailed, failReason = error))
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = SourceMd5CheckFailed, failReason = error, time = System.currentTimeMillis()))
}
override suspend fun recordSourceMd5CheckSuccess() {
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = SourceMd5CheckSuccess))
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = SourceMd5CheckSuccess, time = System.currentTimeMillis()))
}
override suspend fun recordInstallApplyPatchStart() {
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = ApplyPatchStart))
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = ApplyPatchStart, time = System.currentTimeMillis()))
}
override suspend fun recordInstallApplyPatchFailed(error: String) {
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = ApplyPatchFailed, failReason = error))
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = ApplyPatchFailed, failReason = error, time = System.currentTimeMillis()))
}
override suspend fun recordInstallApplyPatchSuccess() {
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = ApplyPatchSuccess))
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = ApplyPatchSuccess, time = System.currentTimeMillis()))
}
override suspend fun recordTargetMd5CheckStart() {
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = TargetMd5CheckStart))
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = TargetMd5CheckStart, time = System.currentTimeMillis()))
}
override suspend fun recordTargetMd5CheckFailed(error: String) {
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = TargetMd5CheckFailed, failReason = error))
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = TargetMd5CheckFailed, failReason = error, time = System.currentTimeMillis()))
}
override suspend fun recordTargetMd5CheckSuccess() {
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = TargetMd5CheckSuccess))
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = TargetMd5CheckSuccess, time = System.currentTimeMillis()))
}
override suspend fun recordInstallFailed(code: Int, error: String) {
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = InstallFailed, code = code, failReason = error))
}
override suspend fun isUpgradeSuccess(type: Int): Boolean {
val currentVersion = AppUtils.getAppVersionName()
val record = UpgradeDbHelper.getUpgradeRecordFull(currentVersion)
val toType = if (type == 0) FULL else PATCH
if (record != null) {
return (record.upgrades?.find { it.type == toType } != null) && (record.installs?.find { it.status == InstallSuccess } != null)
}
val records = UpgradeDbHelper.getAllRecords()
if (records.isEmpty()) {
return false
}
records.forEach { r ->
val oldVersion = r.versionName
val q = UpgradeDbHelper.getUpgradeRecordFull(oldVersion)
val f = q?.upgrades?.find { it.toVersionName == currentVersion && it.type == toType }
if (f != null) {
val install = q.installs?.find { it.status == InstallSuccess }
if (install == null) {
UpgradeDbHelper.insertInstallRecord(InstallRecord(oldVersion, InstallSuccess, 0))
}
return true
}
}
return false
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = InstallFailed, code = code, failReason = error, time = System.currentTimeMillis()))
}
override suspend fun getUpgradeRecords(): Map<String, List<Pair<String, String>>>? {
@@ -131,6 +105,10 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
}
val success = records.find { itx -> itx.versionName != currentVersion && (UpgradeDbHelper.getUpgradeRecordFull(itx.versionName)?.upgrades?.find { it.toVersionName == currentVersion } != null) }
val fail = records.find { it.versionName == currentVersion }
val left = if (success != null && fail != null) (records - success - fail) else if (success != null) (records - success) else if (fail != null) (records - fail) else records
if (left.isNotEmpty()) {
UpgradeDbHelper.deleteRecords(left.map { it.versionName })
}
return TreeMap<String, List<Pair<String, String>>>().also { itx ->
if (success != null) {
val all = UpgradeDbHelper.getUpgradeRecordFull(success.versionName)
@@ -140,6 +118,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
itx["step_2"] = all.upgrades?.mapIndexed { index, r -> "$index" to GsonUtils.toJson(r) } ?: emptyList()
itx["step_3"] = all.downloads?.sortedBy { it.status.ordinal }?.mapIndexed { index, r -> "$index" to GsonUtils.toJson(r) } ?: emptyList()
itx["step_4"] = all.installs?.let { ArrayList<InstallRecord>(it) + InstallRecord(success.versionName, InstallSuccess, 0) }?.sortedBy { it.status.ordinal }?.mapIndexed { index, r -> "$index" to GsonUtils.toJson(r) } ?: emptyList()
return@also
}
}
if (fail != null) {

View File

@@ -71,4 +71,10 @@ internal object UpgradeDbHelper {
} catch (e: Exception) {
e.printStackTrace()
}
suspend fun deleteRecords(versions: List<String>) = try {
db.dao().deleteRecords(versions)
} catch (e: Exception) {
e.printStackTrace()
}
}

View File

@@ -44,4 +44,8 @@ internal interface IUpgradeRecordDao {
@Query("SELECT * FROM records")
suspend fun getAllRecords(): List<Record>
@Query("DELETE FROM records WHERE version_name IN (:versions)")
@Transaction
suspend fun deleteRecords(versions: List<String>)
}

View File

@@ -11,7 +11,8 @@ data class Record(
var versionName: String,
var sn: String,
var mac: String,
var type: String?
var type: String?,
var time: Long = 0L
)
@Entity(tableName = "check_upgrade_record",foreignKeys = [
@@ -34,6 +35,7 @@ data class CheckRecord(
var status: Status,
var message: String? = null,
var time: Long = 0L
) {
@PrimaryKey(autoGenerate = true)
var id: Long = 0L
@@ -84,7 +86,9 @@ data class UpgradeRecord(
var toMD5: String?,
@field:TypeConverters(Type::class)
var type: Type
var type: Type,
var time: Long = 0L
) {
@PrimaryKey(autoGenerate = true)
@@ -134,7 +138,9 @@ data class DownloadRecord(
var status: Status,
@ColumnInfo(name = "reason")
var failReason: String? = null
var failReason: String? = null,
var time: Long = 0L
) {
@PrimaryKey(autoGenerate = true)
@@ -188,7 +194,9 @@ data class InstallRecord(
var code: Int = 0,
@ColumnInfo(name = "reason")
var failReason: String? = null
var failReason: String? = null,
var time: Long = 0L
) {
@PrimaryKey(autoGenerate = true)