diff --git a/internal/api/third/minio_storage_credential.go b/internal/api/third/minio_storage_credential.go index c80035c5a..c1f8c1c70 100644 --- a/internal/api/third/minio_storage_credential.go +++ b/internal/api/third/minio_storage_credential.go @@ -199,7 +199,7 @@ func UploadUpdateApp(c *gin.Context) { newYamlName = "" } } - if err := imdb.UpdateAppVersion(req.Type, req.Version, req.ForceUpdate, newFileName, newYamlName); err != nil { + if err := imdb.UpdateAppVersion(req.Type, req.Version, req.ForceUpdate, newFileName, newYamlName, req.UpdateLog); err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "UpdateAppVersion error", err.Error()) resp.ErrCode = http.StatusInternalServerError resp.ErrMsg = err.Error() @@ -239,6 +239,8 @@ func GetDownloadURL(c *gin.Context) { resp.Data.YamlURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.YamlName } resp.Data.FileURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.FileName + resp.Data.Version = app.Version + resp.Data.UpdateLog = app.UpdateLog c.JSON(http.StatusOK, resp) return } else { diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 6390fe166..ff8882369 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -4,18 +4,14 @@ import ( apiStruct "Open_IM/pkg/cms_api_struct" "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" - imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model" openIMHttp "Open_IM/pkg/common/http" "Open_IM/pkg/common/log" "Open_IM/pkg/grpc-etcdv3/getcdv3" pbAdmin "Open_IM/pkg/proto/admin_cms" "Open_IM/pkg/utils" "context" - "fmt" "github.com/minio/minio-go/v7" "github.com/minio/minio-go/v7/pkg/credentials" - "net/http" - "path" "strings" "github.com/gin-gonic/gin" @@ -83,124 +79,3 @@ func AdminLogin(c *gin.Context) { resp.Token = respPb.Token openIMHttp.RespHttp200(c, constant.OK, resp) } - -func UploadUpdateApp(c *gin.Context) { - var ( - req apiStruct.UploadUpdateAppReq - resp apiStruct.UploadUpdateAppResp - ) - if err := c.Bind(&req); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - - //fileObj, err := req.File.Open() - //if err != nil { - // log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) - // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open file error" + err.Error()}) - // return - //} - //yamlObj, err := req.Yaml.Open() - //if err != nil { - // log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open Yaml error", err.Error()) - // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open Yaml error" + err.Error()}) - // return - //} - - // v2.0.9_app_linux v2.0.9_yaml_linux - file, err := c.FormFile("file") - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "FormFile failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file arg: " + err.Error()}) - return - } - fileObj, err := file.Open() - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) - return - } - - yaml, err := c.FormFile("yaml") - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "FormFile failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file arg: " + err.Error()}) - return - } - yamlObj, err := yaml.Open() - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) - return - } - newFileName, newYamlName, err := utils.GetUploadAppNewName(req.Type, req.Version, file.Filename, yaml.Filename) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUploadAppNewName failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) - return - } - - fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size) - fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size) - - _, err = minioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject file error") - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject file error" + err.Error()}) - return - } - _, err = minioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject yaml error") - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject yaml error" + err.Error()}) - return - } - if err := imdb.UpdateAppVersion(req.Type, req.Version, req.ForceUpdate, newFileName, newYamlName); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "UpdateAppVersion error", err.Error()) - resp.ErrCode = http.StatusInternalServerError - resp.ErrMsg = err.Error() - c.JSON(http.StatusInternalServerError, resp) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName()) - c.JSON(http.StatusOK, resp) -} - -func GetDownloadURL(c *gin.Context) { - var ( - req apiStruct.GetDownloadURLReq - resp apiStruct.GetDownloadURLResp - ) - defer func() { - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) - }() - if err := c.Bind(&req); err != nil { - log.NewError("0", utils.GetSelfFuncName(), "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - app, err := imdb.GetNewestVersion(req.Type) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "getNewestVersion failed", err.Error()) - } - if app != nil { - if app.Version != req.Version && app.Version != "" { - resp.Data.HasNewVersion = true - if app.ForceUpdate == true { - resp.Data.ForceUpdate = true - } - resp.Data.YamlURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.YamlName - resp.Data.FileURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.FileName - c.JSON(http.StatusOK, resp) - return - } else { - resp.Data.HasNewVersion = false - c.JSON(http.StatusOK, resp) - return - } - } - c.JSON(http.StatusBadRequest, gin.H{"errCode": 0, "errMsg": "not found app version"}) -} diff --git a/internal/cms_api/router.go b/internal/cms_api/router.go index fbd3b9fcc..a0221d536 100644 --- a/internal/cms_api/router.go +++ b/internal/cms_api/router.go @@ -20,8 +20,6 @@ func NewGinRouter() *gin.Engine { adminRouterGroup := router.Group("/admin") { adminRouterGroup.POST("/login", admin.AdminLogin) - adminRouterGroup.POST("/upload_update_app", admin.UploadUpdateApp) - adminRouterGroup.POST("/get_download_url", admin.GetDownloadURL) } r2 := router.Group("") r2.Use(middleware.JWTAuth()) diff --git a/pkg/base_info/minio_api_struct.go b/pkg/base_info/minio_api_struct.go index a95b4c427..0b6815df0 100644 --- a/pkg/base_info/minio_api_struct.go +++ b/pkg/base_info/minio_api_struct.go @@ -33,6 +33,7 @@ type UploadUpdateAppReq struct { File *multipart.FileHeader `form:"file" binding:"required"` Yaml *multipart.FileHeader `form:"yaml"` ForceUpdate bool `form:"forceUpdate"` + UpdateLog string `form:"updateLog" binding:"update_log"` } type UploadUpdateAppResp struct { @@ -52,5 +53,7 @@ type GetDownloadURLResp struct { ForceUpdate bool `json:"forceUpdate"` FileURL string `json:"fileURL"` YamlURL string `json:"yamlURL"` + Version string `json:"version"` + UpdateLog string `json:"update_log"` } `json:"data"` } diff --git a/pkg/common/db/model_struct.go b/pkg/common/db/model_struct.go index 03709a67d..e6915bcef 100644 --- a/pkg/common/db/model_struct.go +++ b/pkg/common/db/model_struct.go @@ -280,6 +280,7 @@ type AppVersion struct { ForceUpdate bool `gorm:"column:force_update" json:"force_update"` FileName string `gorm:"column:file_name" json:"file_name"` YamlName string `gorm:"column:yaml_name" json:"yaml_name"` + UpdateLog string `gorm:"column:update_log" json:"update_log"` } func (AppVersion) TableName() string { diff --git a/pkg/common/db/mysql_model/im_mysql_model/file_model.go b/pkg/common/db/mysql_model/im_mysql_model/file_model.go index 983dec328..c8ab188aa 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/file_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/file_model.go @@ -5,7 +5,7 @@ import ( "time" ) -func UpdateAppVersion(appType int, version string, forceUpdate bool, fileName, yamlName string) error { +func UpdateAppVersion(appType int, version string, forceUpdate bool, fileName, yamlName, updateLog string) error { dbConn, err := db.DB.MysqlDB.DefaultGormDB() if err != nil { return err @@ -18,9 +18,10 @@ func UpdateAppVersion(appType int, version string, forceUpdate bool, fileName, y FileName: fileName, YamlName: yamlName, ForceUpdate: forceUpdate, + UpdateLog: updateLog, } result := dbConn.Model(db.AppVersion{}).Where("type = ?", appType).Update(map[string]interface{}{"force_update": forceUpdate, - "version": version, "update_time": int(time.Now().Unix()), "file_name": fileName, "yaml_name": yamlName, "type": appType}) + "version": version, "update_time": int(time.Now().Unix()), "file_name": fileName, "yaml_name": yamlName, "type": appType, "update_log": updateLog}) if result.Error != nil { return result.Error }