go-platform/services/admin_user.go
2026-04-01 16:41:41 +08:00

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
}