From 530fed8ec225453572d57b15c200ab062c335457 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期三, 01 十一月 2023 19:20:21 +0800 Subject: [PATCH] 公海member_id使用0 --- model/user.go | 28 +++++++++++++++++++--------- 1 files changed, 19 insertions(+), 9 deletions(-) diff --git a/model/user.go b/model/user.go index db6afb1..44f7fdc 100644 --- a/model/user.go +++ b/model/user.go @@ -5,14 +5,13 @@ "aps_crm/pkg/mysqlx" "fmt" "gorm.io/gorm" - "gorm.io/gorm/clause" ) type ( // User token閲岃竟鎶婄敤鎴稩D銆佺埗鐢ㄦ埛ID銆佽鑹查兘甯︿笂 User struct { ID int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` - UUID string `json:"uuid" gorm:"unique;type:varchar(255);comment:鐢ㄦ埛ID"` + UUID string `json:"uuid" gorm:"uniqueIndex;type:varchar(255);comment:鐢ㄦ埛ID"` Username string `json:"username" gorm:"index;type:varchar(255);comment:鐢ㄦ埛鐧诲綍鍚�"` UserType constvar.UserType `json:"userType" gorm:"type:int(11);comment:鐢ㄦ埛绫诲瀷 1瓒呯骇绠$悊鍛� 2涓昏处鎴� 3瀛愯处鎴�"` Password string `json:"-" gorm:"type:varchar(255);comment:鐢ㄦ埛鐧诲綍瀵嗙爜"` @@ -293,14 +292,25 @@ return records, nil } -func (slf *UserSearch) Upsert(record User) error { - var db = slf.build() +func (slf *UserSearch) Upsert(record User, SubUserQueried bool) error { - if err := db.Clauses(clause.OnConflict{ - Columns: []clause.Column{{Name: "uuid"}}, - DoUpdates: clause.AssignmentColumns([]string{"username", "user_type", "nick_name", "sub_user_ids"}), - }).Create(&record).Error; err != nil { - return fmt.Errorf("first or create err: %v, record: %+v", err, record) + var db = slf.SetId(record.UUID).build() + old, err := slf.First() + if err == gorm.ErrRecordNotFound { + if err := db.Create(&record).Error; err != nil { + return fmt.Errorf("create user err: %v, record: %+v", err, record) + } + } else if old.Username != record.Username || + old.UserType != record.UserType || + old.NickName != record.NickName || + SubUserQueried && old.SubUserIds != record.SubUserIds { + old.Username = record.Username + old.UserType = record.UserType + old.NickName = record.NickName + old.SubUserIds = record.SubUserIds + if err := db.Save(&old).Error; err != nil { + return fmt.Errorf("update user err: %v, old record: %+v", err, old) + } } return nil -- Gitblit v1.8.0