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 }