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