From 01c63e043d798fe900de86bbdbce383fba2855d0 Mon Sep 17 00:00:00 2001 From: engigu Date: Sun, 21 Jan 2024 12:35:33 +0800 Subject: [PATCH] fix: ways edit bugs --- models/send_ways.go | 2 +- routers/api/v1/send_ways.go | 2 +- service/send_way_service/send_way.go | 25 ++++++++++++++++++++++--- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/models/send_ways.go b/models/send_ways.go index 4d00b6a..2b19541 100644 --- a/models/send_ways.go +++ b/models/send_ways.go @@ -95,7 +95,7 @@ func GetWayByID(id string) (SendWays, error) { func GetWayByName(name string) (SendWays, error) { var way SendWays err := db.Where("name = ? ", name).Find(&way).Error - if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { + if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { return way, err } return way, nil diff --git a/routers/api/v1/send_ways.go b/routers/api/v1/send_ways.go index 1abb9f5..0e5ef13 100644 --- a/routers/api/v1/send_ways.go +++ b/routers/api/v1/send_ways.go @@ -174,7 +174,7 @@ func EditSendWay(c *gin.Context) { err := sendWayService.Edit() if err != nil { - appG.CResponse(http.StatusInternalServerError, "编辑渠道信息失败", nil) + appG.CResponse(http.StatusInternalServerError, fmt.Sprintf("编辑渠道信息失败!原因:%s", err), nil) return } diff --git a/service/send_way_service/send_way.go b/service/send_way_service/send_way.go index 70b4ff3..1e707a1 100644 --- a/service/send_way_service/send_way.go +++ b/service/send_way_service/send_way.go @@ -53,18 +53,37 @@ func (sw *SendWay) GetByID() (interface{}, error) { return models.GetWayByID(sw.ID) } -func (sw *SendWay) Add() error { +func (sw *SendWay) NameIsExist(method string) error { way, err := models.GetWayByName(sw.Name) if err != nil { return err } - if len(way.ID) > 0 { - return errors.New(fmt.Sprintf("已经存在同名的渠道名:%s", way.Name)) + if method == "add" { + if len(way.ID) > 0 { + return errors.New(fmt.Sprintf("已经存在同名的渠道名:%s", way.Name)) + } + } else { + // 只允许当前的重名 + if len(way.ID) > 0 && way.ID != sw.ID { + return errors.New(fmt.Sprintf("已经存在同名的渠道名:%s", way.Name)) + } + } + return nil +} + +func (sw *SendWay) Add() error { + err := sw.NameIsExist("add") + if err != nil { + return err } return models.AddSendWay(sw.Name, sw.Auth, sw.Type, sw.CreatedBy, sw.ModifiedBy) } func (sw *SendWay) Edit() error { + err := sw.NameIsExist("edit") + if err != nil { + return err + } data := make(map[string]interface{}) data["modified_by"] = sw.ModifiedBy data["name"] = sw.Name