diff --git a/http/controller/api/ab.go b/http/controller/api/ab.go index 411dce0..489f8d6 100644 --- a/http/controller/api/ab.go +++ b/http/controller/api/ab.go @@ -393,7 +393,7 @@ func (a *Ab) PTags(c *gin.Context) { // @Router /ab/peer/add/{guid} [post] // @Security BearerAuth func (a *Ab) PeerAdd(c *gin.Context) { - // forceAlwaysRelay永远是字符串"false",真是坑 + // forceAlwaysRelay永远是字符串"false" //f := &gin.H{} f := &requstform.PersonalAddressBookForm{} err := c.ShouldBindJSON(f) @@ -405,6 +405,16 @@ func (a *Ab) PeerAdd(c *gin.Context) { u := service.AllService.UserService.CurUser(c) f.UserId = u.Id ab := f.ToAddressBook() + + if ab.Platform == "" || ab.Username == "" || ab.Hostname == "" { + peer := service.AllService.PeerService.FindById(ab.Id) + if peer.RowId != 0 { + ab.Platform = service.AllService.AddressBookService.PlatformFromOs(peer.Os) + ab.Username = peer.Username + ab.Hostname = peer.Hostname + } + } + err = service.AllService.AddressBookService.AddAddressBook(ab) if err != nil { response.Error(c, response.TranslateMsg(c, "OperationFailed")+err.Error()) diff --git a/service/addressBook.go b/service/addressBook.go index 1f09fbd..ae5f484 100644 --- a/service/addressBook.go +++ b/service/addressBook.go @@ -5,6 +5,7 @@ import ( "Gwen/model" "github.com/google/uuid" "gorm.io/gorm" + "strings" ) type AddressBookService struct { @@ -127,3 +128,20 @@ func (t *AddressBookService) SharedPeer(shareToken string) *model.ShareRecord { global.DB.Where("share_token = ?", shareToken).First(m) return m } + +// PlatformFromOs +func (t *AddressBookService) PlatformFromOs(os string) string { + if strings.Contains(os, "Android") || strings.Contains(os, "android") { + return "Android" + } + if strings.Contains(os, "Windows") || strings.Contains(os, "windows") { + return "Windows" + } + if strings.Contains(os, "Linux") || strings.Contains(os, "linux") { + return "Linux" + } + if strings.Contains(os, "mac") || strings.Contains(os, "Mac") { + return "Mac OS" + } + return "" +}