74 lines
1.7 KiB
Go
74 lines
1.7 KiB
Go
package services
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"server/models"
|
|
"server/pkg/passwordutil"
|
|
)
|
|
|
|
func NormalizeAccount(s string) string {
|
|
return strings.TrimSpace(s)
|
|
}
|
|
|
|
func CreateAdminUser(account, password string, name, phone, email, qq, avatar *string, sex uint8, roleID uint64, status uint8) (uint64, error) {
|
|
hashed, err := passwordutil.Hash(password)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
u := &models.AdminUser{
|
|
Account: NormalizeAccount(account),
|
|
Password: hashed,
|
|
Name: name,
|
|
Phone: phone,
|
|
Email: email,
|
|
Qq: qq,
|
|
Avatar: avatar,
|
|
Sex: sex,
|
|
RoleID: roleID,
|
|
Status: status,
|
|
}
|
|
id, err := models.Orm.Insert(u)
|
|
return uint64(id), err
|
|
}
|
|
|
|
func GetAdminUserByID(id uint64) (*models.AdminUser, error) {
|
|
u := &models.AdminUser{ID: id}
|
|
if err := models.Orm.Read(u); err != nil {
|
|
return nil, err
|
|
}
|
|
return u, nil
|
|
}
|
|
|
|
func UpdateAdminUser(id uint64, fields map[string]interface{}) error {
|
|
_, err := models.Orm.QueryTable(new(models.AdminUser)).Filter("id", id).Update(fields)
|
|
return err
|
|
}
|
|
|
|
func DeleteAdminUser(id uint64) error {
|
|
_, err := models.Orm.QueryTable(new(models.AdminUser)).Filter("id", id).Delete()
|
|
return err
|
|
}
|
|
|
|
func ChangeAdminUserPassword(id uint64, newPassword string) error {
|
|
hashed, err := passwordutil.Hash(newPassword)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
_, err = models.Orm.QueryTable(new(models.AdminUser)).Filter("id", id).Update(map[string]interface{}{
|
|
"password": hashed,
|
|
})
|
|
return err
|
|
}
|
|
|
|
func ListAdminUsers() ([]models.AdminUser, int64, error) {
|
|
var rows []models.AdminUser
|
|
total, err := models.Orm.QueryTable(new(models.AdminUser)).Count()
|
|
if err != nil {
|
|
return nil, 0, err
|
|
}
|
|
_, err = models.Orm.QueryTable(new(models.AdminUser)).OrderBy("-id").All(&rows)
|
|
return rows, total, err
|
|
}
|
|
|