package controllers import ( "strings" "server/models" "server/services" beego "github.com/beego/beego/v2/server/web" ) // ApiSoftwareUpgradeController 开放接口:客户端检查更新(无需登录) type ApiSoftwareUpgradeController struct { beego.Controller } // Check GET /api/softwareupgrade/check?code=desktop-app(可选 version 由客户端自行比对 latestVersion) func (c *ApiSoftwareUpgradeController) Check() { code := strings.TrimSpace(c.GetString("code")) if code == "" { c.Data["json"] = map[string]interface{}{"code": 400, "msg": "缺少参数 code(产品标识)"} _ = c.ServeJSON() return } var row models.SystemSoftwareUpgrade err := models.Orm.QueryTable(new(models.SystemSoftwareUpgrade)). Filter("code", code). Filter("status", 1). Filter("delete_time__isnull", true). One(&row) if err != nil { c.Data["json"] = map[string]interface{}{"code": 404, "msg": "产品不存在或已停用"} _ = c.ServeJSON() return } latest := strings.TrimSpace(row.LatestVersion) if latest == "" { latest = "0.0.0" } scheme, host := services.PublicRequestBaseURL(&c.Controller) dl := services.ResolveSoftwareDownloadURL(scheme, host, row.DownloadURL, row.FileID) data := map[string]interface{}{ "latestVersion": latest, "downloadUrl": dl, "forceUpdate": row.ForceUpdate == 1, "releaseNotes": "", } if row.ReleaseNotes != nil { data["releaseNotes"] = *row.ReleaseNotes } c.Data["json"] = map[string]interface{}{"code": 200, "msg": "success", "data": data} _ = c.ServeJSON() }