123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- package model
- import (
- "bigdata_archives/app/e"
- "bigdata_archives/global"
- "bigdata_archives/unity"
- "bigdata_archives/utils"
- "database/sql/driver"
- "encoding/json"
- "fmt"
- "log"
- )
- type User struct {
- utils.BaseModel
- Account string `json:"account" validate:"required"`
- Password string `json:"password" validate:"required"`
- State *int `json:"state"`
- Menu Menus `gorm:"type:json" json:"menu"`
- }
- type UserDto struct {
- User
- Token string `json:"token"`
- }
- func (*User) TableName() string {
- return "user"
- }
- type Menus []string
- func (lo Menus) Value() (driver.Value, error) {
- return json.Marshal(lo)
- }
- func (fn *Menus) Scan(src interface{}) error {
- if src == nil {
- *fn = make(Menus, 0)
- return nil
- }
- var u []byte
- switch v := src.(type) {
- case string:
- u = []byte(v)
- case []byte:
- u = v
- default:
- return fmt.Errorf("unsupported type: %T", src)
- }
- return json.Unmarshal(u, (*[]string)(fn))
- }
- // Login 登录
- func (u *User) Login(userName, password string) (UserDto, e.Rescode) {
- //TODO implement me
- md5 := utils.MD5(password)
- tx := global.DBLink.Where("account = ?", userName).Where("password = ?", md5).Where("state = ?", 1).First(&u)
- if tx.Error != nil {
- return UserDto{}, e.AccountAndPasswordIsWrong
- }
- if tx.RowsAffected > 0 {
- token, err := utils.CreateToken(u.ID, u.Account, "user")
- if err != nil {
- return UserDto{}, e.TheUserAlreadyExists
- }
- var userDto = UserDto{}
- userDto.Token = token
- return userDto, e.SUCCESS
- }
- return UserDto{}, e.LoginFailed
- }
- // CreateAdmin 创建管理员
- func CreateAdmin() {
- var user = User{}
- var count int64
- global.DBLink.Table("user").Where("account = ?", "admin").Count(&count)
- if count == 0 {
- user.Account = "admin"
- user.Menu = []string{"*"}
- if user.State == nil {
- user.State = new(int)
- *user.State = 1
- }
- md5 := utils.MD5("123456")
- user.Password = md5
- create := global.DBLink.Create(&user)
- if create.Error == nil && create.RowsAffected > 0 {
- log.Println("管理员创建成功")
- }
- }
- }
- // AddUser 添加用户
- func (u *User) AddUser(user User) (User, e.Rescode) {
- //TODO implement me
- md5 := utils.MD5(user.Password)
- user.Password = md5
- if user.State == nil {
- user.State = new(int)
- *user.State = 1
- }
- tx := global.DBLink.Create(&user)
- if tx.Error != nil && tx.RowsAffected == 0 {
- return User{}, e.CreateFailed
- } else {
- return user, e.SUCCESS
- }
- }
- func (u *User) GetUser(params unity.QueryPageParams) ([]User, e.Rescode) {
- //TODO implement me
- panic("implement me")
- }
- func (u *User) GetUserById(id int) (User, e.Rescode) {
- //TODO implement me
- var user User
- tx := global.DBLink.Where("id = ?", id).First(&user)
- if tx.Error == nil && tx.RowsAffected > 0 {
- return user, e.SUCCESS
- }
- return User{}, e.TheUserIsEmpty
- }
|