fix: 删除版本时恢复被取代的旧版本, 回滚时处理取代版本已删除的情况
This commit is contained in:
@@ -800,6 +800,15 @@ func handleBatchDeleteVersions(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 恢复被删除版本取代的旧版本为 published
|
||||||
|
database.DB.Model(&model.Version{}).
|
||||||
|
Where("superseded_by IN ?", req.IDs).
|
||||||
|
Updates(map[string]interface{}{
|
||||||
|
"publish_status": "published",
|
||||||
|
"superseded_by": nil,
|
||||||
|
"deprecated_at": nil,
|
||||||
|
})
|
||||||
|
|
||||||
response.Success(c, nil)
|
response.Success(c, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1152,6 +1161,35 @@ func handleRollbackVersion(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检查取代它的版本是否还存在,如果不存在则直接恢复
|
||||||
|
if version.SupersededBy != nil {
|
||||||
|
var superseder model.Version
|
||||||
|
if err := database.DB.First(&superseder, *version.SupersededBy).Error; err != nil {
|
||||||
|
// 取代版本已被删除,直接恢复为 published
|
||||||
|
version.PublishStatus = "published"
|
||||||
|
version.SupersededBy = nil
|
||||||
|
version.DeprecatedAt = nil
|
||||||
|
database.DB.Save(&version)
|
||||||
|
|
||||||
|
userIDPtr := &userID
|
||||||
|
versionIDPtr := &version.ID
|
||||||
|
service.CreateLog(service.LogParams{
|
||||||
|
UserID: userIDPtr,
|
||||||
|
LogType: "version",
|
||||||
|
Action: "rollback",
|
||||||
|
Resource: "version",
|
||||||
|
ResourceID: versionIDPtr,
|
||||||
|
Details: fmt.Sprintf("回滚版本(取代版本已删除): %s (应用ID: %d)", version.Version, version.ApplicationID),
|
||||||
|
})
|
||||||
|
|
||||||
|
response.Success(c, gin.H{
|
||||||
|
"id": version.ID,
|
||||||
|
"publish_status": version.PublishStatus,
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
version.PublishStatus = "published"
|
version.PublishStatus = "published"
|
||||||
version.SupersededBy = nil
|
version.SupersededBy = nil
|
||||||
|
|||||||
Reference in New Issue
Block a user