From b3a47cb555076c25c64d83dd455a472509291245 Mon Sep 17 00:00:00 2001 From: liujiandao <274878379@qq.com> Date: 星期一, 13 十一月 2023 16:09:35 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/aps/crm --- model/user.go | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 53 insertions(+), 5 deletions(-) diff --git a/model/user.go b/model/user.go index 925d6d7..44f7fdc 100644 --- a/model/user.go +++ b/model/user.go @@ -11,7 +11,7 @@ // User token閲岃竟鎶婄敤鎴稩D銆佺埗鐢ㄦ埛ID銆佽鑹查兘甯︿笂 User struct { ID int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` - UUID string `json:"uuid" gorm:"primaryKey;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:鐢ㄦ埛鐧诲綍瀵嗙爜"` @@ -26,6 +26,7 @@ MenuIds []uint `json:"menuIds" gorm:"-"` // 鑿滃崟ID鍒楄〃 AuthorityId uint `json:"authorityId" gorm:"default:888;comment:鐢ㄦ埛瑙掕壊ID"` // 鐢ㄦ埛瑙掕壊ID Authority Authority `json:"authority" gorm:"foreignKey:AuthorityId"` + SubUserIds string `json:"subUserIds" gorm:"sub_user_ids"` //涓嬪睘鍛樺伐鐢ㄦ埛id,鐢ㄩ�楀彿鍒嗗紑 gorm.Model `json:"-"` } @@ -36,6 +37,7 @@ PageNum int PageSize int Orm *gorm.DB + IDs []int } ) @@ -75,6 +77,11 @@ return slf } +func (slf *UserSearch) SetUserIds(userIds []int) *UserSearch { + slf.IDs = userIds + return slf +} + func (slf *UserSearch) SetUserName(username string) *UserSearch { slf.Username = username return slf @@ -102,6 +109,14 @@ if slf.Order != "" { db = db.Order(slf.Order) + } + + if slf.ID != 0 { + db = db.Where("id = ?", slf.ID) + } + + if len(slf.IDs) > 0 { + db = db.Where("id in ?", slf.IDs) } return db @@ -277,12 +292,45 @@ return records, nil } -func (slf *UserSearch) FirstOrCreate(record User) error { - var db = slf.build() +func (slf *UserSearch) Upsert(record User, SubUserQueried bool) error { - if err := db.FirstOrCreate(&User{}, 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 } + +type IdPair struct { + ID int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + UUID string `json:"uuid" gorm:"unique;type:varchar(255);comment:鐢ㄦ埛ID"` +} + +func (slf *UserSearch) UUID2CrmUserId(userIds []string) ([]*IdPair, error) { + var ( + records = make([]*IdPair, 0) + db = slf.Orm.Model(&User{}) + ) + + db = db.Where("uuid in ?", userIds) + if err := db.Select("user.id, user.uuid").Find(&records).Error; err != nil { + return records, fmt.Errorf("find all err: %v", err) + } + + return records, nil +} -- Gitblit v1.8.0