From 4d0b38be2e3977ec390f70de2f022fe96c4cbb61 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期一, 30 十月 2023 20:36:57 +0800 Subject: [PATCH] 数据权限支持职级 --- model/user.go | 26 ++++++++++++++++++-------- 1 files changed, 18 insertions(+), 8 deletions(-) diff --git a/model/user.go b/model/user.go index db6afb1..17da6c3 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:鐢ㄦ埛鐧诲綍瀵嗙爜"` @@ -294,13 +293,24 @@ } 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{"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 || + 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, record: %+v", err, record) + } } return nil -- Gitblit v1.8.0