refactor: 拆分更新类型(全量/补丁)和更新方式(自动/手动),移除force_update字段
This commit is contained in:
@@ -225,10 +225,9 @@ type Version struct {
|
||||
FileSize int64 `json:"file_size"`
|
||||
FileHash string `gorm:"size:64" json:"file_hash"`
|
||||
EntryFile string `gorm:"size:255" json:"entry_file"`
|
||||
ForceUpdate bool `gorm:"default:false" json:"force_update"`
|
||||
UpdateStrategy string `gorm:"size:20;default:optional" json:"update_strategy"`
|
||||
UpdateMethod string `gorm:"size:20;default:manual" json:"update_method"`
|
||||
MinVersion string `gorm:"size:50" json:"min_version"`
|
||||
UpdateType string `gorm:"size:20;default:full" json:"update_type"`
|
||||
UpdateMethod string `gorm:"size:20;default:auto" json:"update_method"`
|
||||
Description string `gorm:"type:text" json:"description"`
|
||||
Changelog string `gorm:"type:text" json:"changelog"`
|
||||
Status string `gorm:"size:20;default:active" json:"status"`
|
||||
@@ -236,6 +235,8 @@ type Version struct {
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
|
||||
ForceUpdate bool `gorm:"default:false" json:"force_update,omitempty"`
|
||||
MinVersion string `gorm:"size:50" json:"-"`
|
||||
|
||||
Application Application `gorm:"foreignKey:ApplicationID" json:"application,omitempty"`
|
||||
Files []VersionFile `gorm:"foreignKey:VersionID" json:"files,omitempty"`
|
||||
|
||||
@@ -871,15 +871,14 @@ func handleCreateVersion(c *gin.Context) {
|
||||
Version string `json:"version"`
|
||||
Description string `json:"description"`
|
||||
FilePath string `json:"file_path"`
|
||||
ForceUpdate bool `json:"force_update"`
|
||||
}
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.Error(c, 400, "参数错误")
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("接收到的完整请求: Version=%s, Description=%s, FilePath=%s, ForceUpdate=%v\n",
|
||||
req.Version, req.Description, req.FilePath, req.ForceUpdate)
|
||||
fmt.Printf("接收到的完整请求: Version=%s, Description=%s, FilePath=%s\n",
|
||||
req.Version, req.Description, req.FilePath)
|
||||
|
||||
finalFilePath := req.FilePath
|
||||
fileSize := int64(0)
|
||||
@@ -904,7 +903,6 @@ func handleCreateVersion(c *gin.Context) {
|
||||
Version: req.Version,
|
||||
Description: req.Description,
|
||||
FilePath: filePath,
|
||||
ForceUpdate: req.ForceUpdate,
|
||||
Status: "active",
|
||||
FileSize: fileSize,
|
||||
}
|
||||
@@ -954,7 +952,6 @@ func handleUpdateVersion(c *gin.Context) {
|
||||
Version string `json:"version"`
|
||||
Description string `json:"description"`
|
||||
FilePath string `json:"file_path"`
|
||||
ForceUpdate bool `json:"force_update"`
|
||||
Status string `json:"status"`
|
||||
}
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
@@ -971,7 +968,6 @@ func handleUpdateVersion(c *gin.Context) {
|
||||
version.Version = req.Version
|
||||
version.Description = req.Description
|
||||
version.FilePath = req.FilePath
|
||||
version.ForceUpdate = req.ForceUpdate
|
||||
version.Status = req.Status
|
||||
|
||||
if err := database.DB.Save(&version).Error; err != nil {
|
||||
|
||||
@@ -42,6 +42,7 @@ func handleGetAllVersions(c *gin.Context) {
|
||||
pageSize := c.DefaultQuery("page_size", "20")
|
||||
applicationIDFilter := c.Query("application_id")
|
||||
updateStrategyFilter := c.Query("update_strategy")
|
||||
updateTypeFilter := c.Query("update_type")
|
||||
updateMethodFilter := c.Query("update_method")
|
||||
searchFilter := c.Query("search")
|
||||
|
||||
@@ -82,6 +83,9 @@ func handleGetAllVersions(c *gin.Context) {
|
||||
if updateStrategyFilter != "" {
|
||||
countQuery = countQuery.Where("update_strategy = ?", updateStrategyFilter)
|
||||
}
|
||||
if updateTypeFilter != "" {
|
||||
countQuery = countQuery.Where("update_type = ?", updateTypeFilter)
|
||||
}
|
||||
if updateMethodFilter != "" {
|
||||
countQuery = countQuery.Where("update_method = ?", updateMethodFilter)
|
||||
}
|
||||
@@ -98,6 +102,9 @@ func handleGetAllVersions(c *gin.Context) {
|
||||
if updateStrategyFilter != "" {
|
||||
query = query.Where("update_strategy = ?", updateStrategyFilter)
|
||||
}
|
||||
if updateTypeFilter != "" {
|
||||
query = query.Where("update_type = ?", updateTypeFilter)
|
||||
}
|
||||
if updateMethodFilter != "" {
|
||||
query = query.Where("update_method = ?", updateMethodFilter)
|
||||
}
|
||||
@@ -223,8 +230,8 @@ func handleGetVersionByID(c *gin.Context) {
|
||||
"file_path": version.FilePath,
|
||||
"file_size": version.FileSize,
|
||||
"file_hash": version.FileHash,
|
||||
"force_update": version.ForceUpdate,
|
||||
"update_strategy": version.UpdateStrategy,
|
||||
"update_type": version.UpdateType,
|
||||
"update_method": version.UpdateMethod,
|
||||
"changelog": version.Changelog,
|
||||
"status": computedStatus,
|
||||
@@ -242,8 +249,8 @@ type CreateVersionRequest struct {
|
||||
FileSize int64 `json:"file_size"`
|
||||
FileHash string `json:"file_hash"`
|
||||
EntryFile string `json:"entry_file"`
|
||||
ForceUpdate bool `json:"force_update"`
|
||||
UpdateStrategy string `json:"update_strategy"`
|
||||
UpdateType string `json:"update_type"`
|
||||
UpdateMethod string `json:"update_method"`
|
||||
Description string `json:"description"`
|
||||
Changelog string `json:"changelog"`
|
||||
@@ -282,8 +289,8 @@ func handleCreateVersionGlobal(c *gin.Context) {
|
||||
FileSize: req.FileSize,
|
||||
FileHash: req.FileHash,
|
||||
EntryFile: req.EntryFile,
|
||||
ForceUpdate: req.ForceUpdate,
|
||||
UpdateStrategy: req.UpdateStrategy,
|
||||
UpdateType: req.UpdateType,
|
||||
UpdateMethod: req.UpdateMethod,
|
||||
Description: req.Description,
|
||||
Changelog: req.Changelog,
|
||||
@@ -293,17 +300,16 @@ func handleCreateVersionGlobal(c *gin.Context) {
|
||||
if version.UpdateStrategy == "" {
|
||||
version.UpdateStrategy = "optional"
|
||||
}
|
||||
if version.UpdateType == "" {
|
||||
version.UpdateType = "full"
|
||||
}
|
||||
if version.UpdateMethod == "" {
|
||||
version.UpdateMethod = "manual"
|
||||
version.UpdateMethod = "auto"
|
||||
}
|
||||
|
||||
if version.UpdateStrategy == "forced" {
|
||||
version.ForceUpdate = true
|
||||
}
|
||||
|
||||
if version.UpdateMethod == "hot" {
|
||||
if version.UpdateType == "patch" {
|
||||
var lastFullVersion model.Version
|
||||
if err := database.DB.Where("application_id = ? AND update_method = ?", req.ApplicationID, "full").
|
||||
if err := database.DB.Where("application_id = ? AND update_type = ?", req.ApplicationID, "full").
|
||||
Order("id DESC").First(&lastFullVersion).Error; err == nil {
|
||||
version.BaseVersionID = &lastFullVersion.ID
|
||||
}
|
||||
@@ -333,6 +339,7 @@ func handleCreateVersionGlobal(c *gin.Context) {
|
||||
type UpdateVersionRequest struct {
|
||||
Version string `json:"version"`
|
||||
UpdateStrategy string `json:"update_strategy"`
|
||||
UpdateType string `json:"update_type"`
|
||||
UpdateMethod string `json:"update_method"`
|
||||
Description string `json:"description"`
|
||||
Changelog string `json:"changelog"`
|
||||
@@ -376,8 +383,8 @@ func handleUpdateVersionGlobal(c *gin.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
log.Printf("[DEBUG] handleUpdateVersionGlobal versionID=%s, req: version=%s, update_strategy=%s, update_method=%s, description=%s\n",
|
||||
versionID, req.Version, req.UpdateStrategy, req.UpdateMethod, req.Description)
|
||||
log.Printf("[DEBUG] handleUpdateVersionGlobal versionID=%s, req: version=%s, update_strategy=%s, update_type=%s, update_method=%s, description=%s\n",
|
||||
versionID, req.Version, req.UpdateStrategy, req.UpdateType, req.UpdateMethod, req.Description)
|
||||
|
||||
updates := map[string]interface{}{}
|
||||
if req.Version != "" {
|
||||
@@ -385,11 +392,9 @@ func handleUpdateVersionGlobal(c *gin.Context) {
|
||||
}
|
||||
if req.UpdateStrategy != "" {
|
||||
updates["update_strategy"] = req.UpdateStrategy
|
||||
if req.UpdateStrategy == "forced" {
|
||||
updates["force_update"] = true
|
||||
} else {
|
||||
updates["force_update"] = false
|
||||
}
|
||||
}
|
||||
if req.UpdateType != "" {
|
||||
updates["update_type"] = req.UpdateType
|
||||
}
|
||||
if req.UpdateMethod != "" {
|
||||
updates["update_method"] = req.UpdateMethod
|
||||
|
||||
@@ -103,6 +103,7 @@ func handleAppCheckUpdate(c *gin.Context) {
|
||||
"entry_file": latestVersion.EntryFile,
|
||||
"update_notes": latestVersion.Description,
|
||||
"update_strategy": latestVersion.UpdateStrategy,
|
||||
"update_type": latestVersion.UpdateType,
|
||||
"update_method": latestVersion.UpdateMethod,
|
||||
"changelog": latestVersion.Changelog,
|
||||
"files": files,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package main
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
@@ -122,10 +122,12 @@ GET /api/v1/app/{appKey}/check-update?version=1.0.0
|
||||
"message": "success",
|
||||
"data": {
|
||||
"has_update": true,
|
||||
"force_update": false,
|
||||
"latest_version": "2.0.0",
|
||||
"download_url": "http://example.com/download/app-v2.0.0.zip",
|
||||
"file_size": 10240000,
|
||||
"update_strategy": "optional",
|
||||
"update_type": "full",
|
||||
"update_method": "auto",
|
||||
"description": "新版本修复了若干bug"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user