You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
go-fly/models/users.go

61 lines
1.7 KiB

package models
import (
_ "github.com/jinzhu/gorm/dialects/mysql"
)
type User struct {
Model
Name string `json:"name"`
Password string `json:"password"`
Nickname string `json:"nickname"`
Avator string `json:"avator"`
RoleName string `json:"role_name" sql:"-"`
RoleId string `json:"role_id" sql:"-"`
}
func CreateUser(name string, password string, avator string, nickname string) uint {
user := &User{
Name: name,
Password: password,
Avator: avator,
Nickname: nickname,
}
DB.Create(user)
return user.ID
}
func UpdateUser(id string, name string, password string, avator string, nickname string) {
user := &User{
Name: name,
Avator: avator,
Nickname: nickname,
}
if password != "" {
user.Password = password
}
DB.Model(&User{}).Where("id = ?", id).Update(user)
}
func FindUser(username string) User {
var user User
DB.Where("name = ?", username).First(&user)
return user
}
func FindUserById(id interface{}) User {
var user User
DB.Select("user.*,role.name role_name,role.id role_id").Joins("join user_role on user.id=user_role.user_id").Joins("join role on user_role.role_id=role.id").Where("user.id = ?", id).First(&user)
return user
}
func DeleteUserById(id string) {
DB.Where("id = ?", id).Delete(User{})
}
func FindUsers() []User {
var users []User
DB.Select("user.*,role.name role_name").Joins("left join user_role on user.id=user_role.user_id").Joins("left join role on user_role.role_id=role.id").Order("user.id desc").Find(&users)
return users
}
func FindUserRole(query interface{}, id interface{}) User {
var user User
DB.Select(query).Where("user.id = ?", id).Joins("join user_role on user.id=user_role.user_id").Joins("join role on user_role.role_id=role.id").First(&user)
return user
}