From 02232fc343a93344ed6763a79c66d5418935e246 Mon Sep 17 00:00:00 2001 From: ljw <84855512@qq.com> Date: Mon, 28 Oct 2024 19:15:13 +0800 Subject: [PATCH] up peer update --- http/controller/api/ab.go | 34 +++++++++++++++++++++++++--------- service/addressBook.go | 5 +++++ utils/tools.go | 9 +++++++++ 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/http/controller/api/ab.go b/http/controller/api/ab.go index 6509ba7..e3896d5 100644 --- a/http/controller/api/ab.go +++ b/http/controller/api/ab.go @@ -689,9 +689,9 @@ func (a *Ab) PeerDel(c *gin.Context) { // @Router /ab/peer/update/{guid} [put] // @Security BearerAuth func (a *Ab) PeerUpdate(c *gin.Context) { - //f := &gin.H{} - f := &requstform.PersonalAddressBookForm{} - err := c.ShouldBindJSON(f) + f := gin.H{} + //f := &requstform.PersonalAddressBookForm{} + err := c.ShouldBindJSON(&f) if err != nil { response.Error(c, response.TranslateMsg(c, "ParamsError")+err.Error()) return @@ -709,17 +709,33 @@ func (a *Ab) PeerUpdate(c *gin.Context) { response.Error(c, response.TranslateMsg(c, "NoAccess")) return } - //fmt.Println(f) - //return - ab := service.AllService.AddressBookService.InfoByUserIdAndIdAndCid(uid, f.Id, cid) + //判断f["Id"]是否存在 + fid, ok := f["id"] + if !ok { + response.Error(c, response.TranslateMsg(c, "ParamsError")) + return + } + fidstr := fid.(string) + + ab := service.AllService.AddressBookService.InfoByUserIdAndIdAndCid(uid, fidstr, cid) if ab == nil || ab.RowId == 0 { response.Error(c, response.TranslateMsg(c, "ItemNotFound")) return } - nab := f.ToAddressBook() - nab.RowId = ab.RowId - err = service.AllService.AddressBookService.Update(nab) + //允许的字段 + allowUp := []string{"password", "hash", "tags", "alias"} + //f中的字段如果不在allowUp中,就删除 + for k := range f { + if !utils.InArray(k, allowUp) { + delete(f, k) + } + } + //fmt.Println(f) + if tags, _ok := f["tags"]; _ok { + f["tags"], _ = json.Marshal(tags) + } + err = service.AllService.AddressBookService.UpdateByMap(ab, f) if err != nil { response.Error(c, response.TranslateMsg(c, "OperationFailed")+err.Error()) return diff --git a/service/addressBook.go b/service/addressBook.go index 4802f63..341e07e 100644 --- a/service/addressBook.go +++ b/service/addressBook.go @@ -130,6 +130,11 @@ func (s *AddressBookService) Update(u *model.AddressBook) error { return global.DB.Model(u).Updates(u).Error } +// UpdateByMap 更新 +func (s *AddressBookService) UpdateByMap(u *model.AddressBook, data map[string]interface{}) error { + return global.DB.Model(u).Updates(data).Error +} + // UpdateAll 更新 func (s *AddressBookService) UpdateAll(u *model.AddressBook) error { return global.DB.Model(u).Select("*").Omit("created_at").Updates(u).Error diff --git a/utils/tools.go b/utils/tools.go index cba1034..11fd2dd 100644 --- a/utils/tools.go +++ b/utils/tools.go @@ -91,3 +91,12 @@ func Values[K comparable, V any](m map[K]V) []V { } return values } + +func InArray(k string, arr []string) bool { + for _, v := range arr { + if k == v { + return true + } + } + return false +}