go-platform/models/admin_user.go
2026-04-01 15:15:21 +08:00

96 lines
3.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package models
import (
"crypto/md5"
"encoding/hex"
"strings"
"time"
)
// AdminUser 平台管理员信息表 yz_system_admin_user
type AdminUser struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
Account string `orm:"column(account);size(64)" json:"account"`
Password string `orm:"column(password);size(32)" json:"-"`
Name *string `orm:"column(name);size(32);null" json:"name"`
Phone *string `orm:"column(phone);size(18);null" json:"phone"`
Email *string `orm:"column(email);size(255);null" json:"email"`
Qq *string `orm:"column(qq);size(16);null" json:"qq"`
Sex uint8 `orm:"column(sex);default(0)" json:"sex"`
Avatar *string `orm:"column(avatar);size(255);null" json:"avatar"`
RoleID uint64 `orm:"column(role_id)" json:"rid"`
LoginCount uint64 `orm:"column(login_count);default(0)" json:"login_count"`
LastLoginIP *string `orm:"column(last_login_ip);size(255);null" json:"last_login_ip"`
Status uint8 `orm:"column(status);default(1)" json:"status"`
CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"`
UpdateTime *time.Time `orm:"column(update_time);type(datetime);auto_now;null" json:"update_time"`
DeleteTime *time.Time `orm:"column(delete_time);type(datetime);null" json:"delete_time"`
}
func (m *AdminUser) TableName() string {
return "yz_system_admin_user"
}
func md5Hex(s string) string {
sum := md5.Sum([]byte(s))
return hex.EncodeToString(sum[:])
}
func NormalizeAccount(s string) string {
return strings.TrimSpace(s)
}
// CreateAdminUser 创建平台管理员用户password 会被 md5
func CreateAdminUser(account, password string, name, phone, email, qq, avatar *string, sex uint8, roleID uint64, status uint8) (uint64, error) {
u := &AdminUser{
Account: NormalizeAccount(account),
Password: md5Hex(strings.TrimSpace(password)),
Name: name,
Phone: phone,
Email: email,
Qq: qq,
Avatar: avatar,
Sex: sex,
RoleID: roleID,
Status: status,
}
id, err := Orm.Insert(u)
return uint64(id), err
}
func GetAdminUserByID(id uint64) (*AdminUser, error) {
u := &AdminUser{ID: id}
if err := Orm.Read(u); err != nil {
return nil, err
}
return u, nil
}
// UpdateAdminUser 更新用户基础信息(不含 password
func UpdateAdminUser(id uint64, fields map[string]interface{}) error {
_, err := Orm.QueryTable(new(AdminUser)).Filter("id", id).Update(fields)
return err
}
func DeleteAdminUser(id uint64) error {
_, err := Orm.QueryTable(new(AdminUser)).Filter("id", id).Delete()
return err
}
func ChangeAdminUserPassword(id uint64, newPassword string) error {
_, err := Orm.QueryTable(new(AdminUser)).Filter("id", id).Update(map[string]interface{}{
"password": md5Hex(strings.TrimSpace(newPassword)),
})
return err
}
func ListAdminUsers() ([]AdminUser, int64, error) {
var rows []AdminUser
total, err := Orm.QueryTable(new(AdminUser)).Count()
if err != nil {
return nil, 0, err
}
_, err = Orm.QueryTable(new(AdminUser)).OrderBy("-id").All(&rows)
return rows, total, err
}