diff --git a/backend/app/dto/database.go b/backend/app/dto/database.go index e24ec3ad3..fa2dc61b6 100644 --- a/backend/app/dto/database.go +++ b/backend/app/dto/database.go @@ -94,7 +94,6 @@ type MysqlConfUpdateByFile struct { type ChangeDBInfo struct { ID uint `json:"id"` - MysqlName string `json:"mysqlName" validate:"required"` Operation string `json:"operation" validate:"required,oneof=password privilege"` Value string `json:"value" validate:"required"` } diff --git a/backend/app/repo/app_install.go b/backend/app/repo/app_install.go index 41f7574cd..b095b35cb 100644 --- a/backend/app/repo/app_install.go +++ b/backend/app/repo/app_install.go @@ -91,7 +91,6 @@ func (a AppInstallRepo) Page(page, size int, opts ...DBOption) (int64, []model.A } func (a AppInstallRepo) BatchUpdateBy(maps map[string]interface{}, opts ...DBOption) error { - db := getDb(opts...).Model(&model.AppInstall{}) if len(opts) == 0 { db = db.Where("1=1") diff --git a/backend/app/service/app_install.go b/backend/app/service/app_install.go index 4f6873e51..529625c96 100644 --- a/backend/app/service/app_install.go +++ b/backend/app/service/app_install.go @@ -267,10 +267,6 @@ func (a AppInstallService) ChangeAppPort(req dto.PortUpdate) error { files []string newFiles []string ) - app, err := appInstallRepo.LoadBaseInfoByKey(req.Key) - if err != nil { - return err - } ComposeDir := fmt.Sprintf("%s/%s/%s", constant.AppInstallDir, req.Key, req.Name) ComposeFile := fmt.Sprintf("%s/%s/%s/docker-compose.yml", constant.AppInstallDir, req.Key, req.Name) @@ -298,11 +294,8 @@ func (a AppInstallService) ChangeAppPort(req dto.PortUpdate) error { return err } - if err := mysqlRepo.UpdateDatabaseInfo(app.ID, map[string]interface{}{ - "env": strings.ReplaceAll(app.Env, strconv.FormatInt(app.Port, 10), strconv.FormatInt(req.Port, 10)), - }); err != nil { - return err - } + updateInstallInfoInDB(req.Key, "port", strconv.FormatInt(req.Port, 10)) + stdout, err := compose.Down(ComposeFile) if err != nil { return errors.New(stdout) @@ -482,3 +475,26 @@ func syncById(installId uint) error { appInstall.Message = errMsg.String() return appInstallRepo.Save(&appInstall) } + +func updateInstallInfoInDB(appKey, param string, value interface{}) { + if param != "password" && param != "port" { + return + } + appInstall, _ := appInstallRepo.LoadBaseInfoByKey(appKey) + if appInstall.ID == 0 { + return + } + oldVal, newVal := "", "" + if param == "password" { + oldVal = fmt.Sprintf("\"PANEL_DB_ROOT_PASSWORD\":\"%v\"", appInstall.Password) + newVal = fmt.Sprintf("\"PANEL_DB_ROOT_PASSWORD\":\"%v\"", value) + } + if param == "port" { + oldVal = fmt.Sprintf("\"PANEL_APP_PORT_HTTP\":%v", appInstall.Port) + newVal = fmt.Sprintf("\"PANEL_APP_PORT_HTTP\":%v", value) + } + _ = appInstallRepo.BatchUpdateBy(map[string]interface{}{ + "param": strings.ReplaceAll(appInstall.Param, oldVal, newVal), + "env": strings.ReplaceAll(appInstall.Env, oldVal, newVal), + }, commonRepo.WithByID(appInstall.ID)) +} diff --git a/backend/app/service/database_mysql.go b/backend/app/service/database_mysql.go index e7dac3885..504cc1a50 100644 --- a/backend/app/service/database_mysql.go +++ b/backend/app/service/database_mysql.go @@ -303,10 +303,8 @@ func (u *MysqlService) ChangeInfo(info dto.ChangeDBInfo) error { } } } - _ = mysqlRepo.UpdateDatabaseInfo(app.ID, map[string]interface{}{ - "param": strings.ReplaceAll(app.Param, app.Password, info.Value), - "env": strings.ReplaceAll(app.Env, app.Password, info.Value), - }) + updateInstallInfoInDB("mysql", "password", info.Value) + updateInstallInfoInDB("phpmyadmin", "password", info.Value) return nil } diff --git a/backend/app/service/database_redis.go b/backend/app/service/database_redis.go index a673cb4a8..7e4478b02 100644 --- a/backend/app/service/database_redis.go +++ b/backend/app/service/database_redis.go @@ -47,12 +47,10 @@ func (u *RedisService) UpdateConf(req dto.RedisConfUpdate) error { if err := configSetStr(redisInfo.ContainerName, redisInfo.Password, "maxclients", req.Maxclients); err != nil { return err } - if err := mysqlRepo.UpdateDatabaseInfo(redisInfo.ID, map[string]interface{}{ - "param": strings.ReplaceAll(redisInfo.Param, redisInfo.Password, req.Requirepass), - "env": strings.ReplaceAll(redisInfo.Env, redisInfo.Password, req.Requirepass), - }); err != nil { - return err - } + + updateInstallInfoInDB("redis", "password", req.Requirepass) + updateInstallInfoInDB("phpmyadmin", "password", req.Requirepass) + if err := configSetStr(redisInfo.ContainerName, redisInfo.Password, "requirepass", req.Requirepass); err != nil { return err } diff --git a/frontend/src/api/interface/database.ts b/frontend/src/api/interface/database.ts index 22f809401..0ccf0db38 100644 --- a/frontend/src/api/interface/database.ts +++ b/frontend/src/api/interface/database.ts @@ -113,7 +113,6 @@ export namespace Database { } export interface ChangeInfo { id: number; - mysqlName: string; operation: string; value: string; } diff --git a/frontend/src/components/confirm-dialog/index.vue b/frontend/src/components/confirm-dialog/index.vue index 89fc712c5..3e646573f 100644 --- a/frontend/src/components/confirm-dialog/index.vue +++ b/frontend/src/components/confirm-dialog/index.vue @@ -1,5 +1,5 @@ + @@ -136,6 +156,7 @@