96 lines
3.1 KiB
Go
96 lines
3.1 KiB
Go
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
|
||
}
|