From 5f0170df9787c6f3ff17cc168b3f2e3f511453f6 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 31 十月 2023 20:04:16 +0800
Subject: [PATCH] 支持职级降级的情况
---
model/user.go | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 52 insertions(+), 8 deletions(-)
diff --git a/model/user.go b/model/user.go
index 318a24b..b67dada 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:鐢ㄦ埛鐧诲綍瀵嗙爜"`
@@ -27,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:"-"`
}
@@ -37,6 +37,7 @@
PageNum int
PageSize int
Orm *gorm.DB
+ IDs []int
}
)
@@ -76,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
@@ -103,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
@@ -279,14 +293,44 @@
}
func (slf *UserSearch) Upsert(record User) error {
- var db = slf.build()
- if err := db.Clauses(clause.OnConflict{
- Columns: []clause.Column{{Name: "uuid"}},
- DoUpdates: clause.AssignmentColumns([]string{"uuid", "username", "user_type", "nick_name"}),
- }).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 ||
+ record.SubUserIds != nil && old.SubUserIds != record.SubUserIds {
+ old.Username = record.Username
+ old.UserType = record.UserType
+ old.NickName = record.NickName
+ old.SubUserIds = record.SubUserIds
+ if err := db.Updates(&record).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