48 lines
994 B
Go
48 lines
994 B
Go
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
|
|
}
|