package auth import ( "errors" "strconv" "git.lxtend.com/lixiangwuxian/qqbot/constants" "git.lxtend.com/lixiangwuxian/qqbot/sqlite3" "gorm.io/gorm" ) func getAuth(qqID int64) (auth Auth, err error) { db := sqlite3.GetGormDB() qqidStr := strconv.FormatInt(qqID, 10) err = db.Where("qqid = ?", qqidStr).First(&auth).Error if errors.Is(err, gorm.ErrRecordNotFound) { // 如果记录不存在,创建一个新的默认权限记录 auth = Auth{ Qqid: qqidStr, Role: constants.LEVEL_USER, } err = db.Create(&auth).Error if err != nil { return Auth{}, err } } else if err != nil { return Auth{}, err } return auth, nil } func setAuth(auth Auth) error { db := sqlite3.GetGormDB() result := db.Model(&Auth{}).Where("qqid = ?", auth.Qqid).Update("role", auth.Role) if result.Error != nil { return result.Error } // 如果没有找到记录进行更新,则创建新记录 if result.RowsAffected == 0 { return db.Create(&auth).Error } return nil }