mirror of
https://github.com/go-admin-team/go-admin.git
synced 2026-09-21 02:04:09 +00:00
update project path
This commit is contained in:
@@ -0,0 +1,255 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"errors"
|
||||
orm "go-admin/database"
|
||||
"go-admin/pkg"
|
||||
"go-admin/utils"
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
"log"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// User
|
||||
type User struct {
|
||||
// key
|
||||
IdentityKey string
|
||||
// 用户名
|
||||
UserName string
|
||||
FirstName string
|
||||
LastName string
|
||||
// 角色
|
||||
Role string
|
||||
}
|
||||
|
||||
type UserName struct {
|
||||
Username string `gorm:"column:username" json:"username"`
|
||||
}
|
||||
|
||||
type PassWord struct {
|
||||
// 密码
|
||||
Password string `gorm:"column:password" json:"password"`
|
||||
}
|
||||
|
||||
type LoginM struct {
|
||||
UserName
|
||||
PassWord
|
||||
}
|
||||
|
||||
type SysUserId struct {
|
||||
// 编码
|
||||
Id int64 `gorm:"column:user_id;primary_key" json:"userId"`
|
||||
}
|
||||
|
||||
type SysUserB struct {
|
||||
// 昵称
|
||||
NickName string `gorm:"column:nick_name" json:"nickName"`
|
||||
// 手机号
|
||||
Phone string `gorm:"column:phone" json:"phone"`
|
||||
// 角色编码
|
||||
RoleId int64 `gorm:"column:role_id" json:"roleId"`
|
||||
//盐
|
||||
Salt string `gorm:"column:salt" json:"salt"`
|
||||
//头像
|
||||
Avatar string `gorm:"column:avatar" json:"avatar"`
|
||||
//性别
|
||||
Sex string `gorm:"column:sex" json:"sex"`
|
||||
//邮箱
|
||||
Email string `gorm:"column:email" json:"email"`
|
||||
// 创建时间
|
||||
CreateTime string `gorm:"column:create_time" json:"createTime"`
|
||||
// 修改时间
|
||||
UpdateTime string `gorm:"column:update_time" json:"updateTime"`
|
||||
|
||||
//部门编码
|
||||
DeptId int64 `gorm:"column:dept_id" json:"deptId"`
|
||||
|
||||
//职位编码
|
||||
PostId int64 `gorm:"column:post_id" json:"postId"`
|
||||
|
||||
CreateBy string `gorm:"column:create_by" json:"createBy"`
|
||||
UpdateBy string `gorm:"column:update_by" json:"updateBy"`
|
||||
|
||||
//备注
|
||||
Remark string `gorm:"column:remark" json:"remark"`
|
||||
Params string `gorm:"column:params" json:"params"`
|
||||
Status string `gorm:"column:status" json:"status"`
|
||||
DataScope string `gorm:"_" json:"dataScope"`
|
||||
IsDel string `gorm:"column:is_del" json:"isDel"`
|
||||
}
|
||||
|
||||
type SysUser struct {
|
||||
SysUserId
|
||||
SysUserB
|
||||
LoginM
|
||||
}
|
||||
|
||||
type SysUserPwd struct {
|
||||
OldPassword string `json:"oldPassword"`
|
||||
NewPassword string `json:"newPassword"`
|
||||
}
|
||||
|
||||
type SysUserPage struct {
|
||||
SysUserId
|
||||
SysUserB
|
||||
LoginM
|
||||
DeptName string `gorm:"-" json:"deptName"`
|
||||
}
|
||||
|
||||
type SysUserView struct {
|
||||
SysUserId
|
||||
SysUserB
|
||||
LoginM
|
||||
RoleName string `gorm:"column:role_name" json:"role_name"`
|
||||
}
|
||||
|
||||
// 获取用户数据
|
||||
func (e *SysUser) Get() (SysUserView SysUserView, err error) {
|
||||
|
||||
table := orm.Eloquent.Table("sys_user").Select([]string{"sys_user.*", "sys_role.name"})
|
||||
table = table.Joins("left join sys_role on sys_user.role_id=sys_role.id")
|
||||
if e.Id != 0 {
|
||||
table = table.Where("user_id = ?", e.Id)
|
||||
}
|
||||
|
||||
if e.Username != "" {
|
||||
table = table.Where("username = ?", e.Username)
|
||||
}
|
||||
|
||||
if e.Password != "" {
|
||||
table = table.Where("password = ?", e.Password)
|
||||
}
|
||||
|
||||
if e.RoleId != 0 {
|
||||
table = table.Where("role_id = ?", e.RoleId)
|
||||
}
|
||||
|
||||
if e.DeptId != 0 {
|
||||
table = table.Where("dept_id = ?", e.DeptId)
|
||||
}
|
||||
|
||||
if e.PostId != 0 {
|
||||
table = table.Where("post_id = ?", e.PostId)
|
||||
}
|
||||
|
||||
if err = table.First(&SysUserView).Error; err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (e *SysUser) GetPage(pageSize int, pageIndex int) ([]SysUserPage, int32, error) {
|
||||
var doc []SysUserPage
|
||||
|
||||
table := orm.Eloquent.Select("sys_user.*,sys_dept.dept_name").Table("sys_user")
|
||||
table = table.Joins("left join sys_dept on sys_dept.deptId = sys_user.dept_id")
|
||||
|
||||
if e.Username != "" {
|
||||
table = table.Where("username = ?", e.Username)
|
||||
}
|
||||
|
||||
if e.DeptId != 0 {
|
||||
table = table.Where("dept_id in (select deptId from sys_dept where dept_path like ? )", "%"+utils.Int64ToString(e.DeptId)+"%")
|
||||
}
|
||||
|
||||
// 数据权限控制
|
||||
dataPermission := new(DataPermission)
|
||||
dataPermission.UserId, _ = utils.StringToInt64(e.DataScope)
|
||||
table = dataPermission.GetDataScope("sys_user", table)
|
||||
|
||||
var count int32
|
||||
|
||||
if err := table.Where("sys_user.is_del = 0").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Error; err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
table.Where("sys_user.is_del = 0").Count(&count)
|
||||
return doc, count, nil
|
||||
}
|
||||
|
||||
//加密
|
||||
func (e *SysUser) Encrypt() (err error) {
|
||||
if e.Password == "" {
|
||||
return
|
||||
}
|
||||
|
||||
var hash []byte
|
||||
if hash, err = bcrypt.GenerateFromPassword([]byte(e.Password), bcrypt.DefaultCost); err != nil {
|
||||
return
|
||||
} else {
|
||||
e.Password = string(hash)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
//添加
|
||||
func (e SysUser) Insert() (id int64, err error) {
|
||||
e.CreateTime = utils.GetCurrntTime()
|
||||
if err = e.Encrypt(); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// check 用户名
|
||||
var count int
|
||||
orm.Eloquent.Table("sys_user").Where("username = ?", e.Username).Count(&count)
|
||||
if count > 0 {
|
||||
err = errors.New("账户已存在!")
|
||||
return
|
||||
}
|
||||
|
||||
//添加数据
|
||||
if err = orm.Eloquent.Table("sys_user").Create(&e).Error; err != nil {
|
||||
return
|
||||
}
|
||||
id = e.Id
|
||||
return
|
||||
}
|
||||
|
||||
//修改
|
||||
func (e *SysUser) Update(id int64) (update SysUser, err error) {
|
||||
e.UpdateTime = utils.GetCurrntTime()
|
||||
if err = e.Encrypt(); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if err = orm.Eloquent.Table("sys_user").First(&update, id).Error; err != nil {
|
||||
return
|
||||
}
|
||||
if e.RoleId == 0 {
|
||||
e.RoleId = update.RoleId
|
||||
}
|
||||
|
||||
//参数1:是要修改的数据
|
||||
//参数2:是修改的数据
|
||||
if err = orm.Eloquent.Table("sys_user").Model(&update).Updates(&e).Error; err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (e *SysUser) BatchDelete(id []int64) (Result bool, err error) {
|
||||
var mp = map[string]string{}
|
||||
mp["is_del"] = "1"
|
||||
mp["update_time"] = utils.GetCurrntTime()
|
||||
mp["update_by"] = e.UpdateBy
|
||||
if err = orm.Eloquent.Table("sys_user").Where("is_del=0 and user_id in (?)", id).Update(mp).Error; err != nil {
|
||||
return
|
||||
}
|
||||
Result = true
|
||||
return
|
||||
}
|
||||
|
||||
func (e *SysUser) SetPwd(pwd SysUserPwd) (Result bool, err error) {
|
||||
user, _ := e.Get()
|
||||
_, err = pkg.CompareHashAndPassword(user.Password, pwd.OldPassword)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), "hashedPassword is not the hash of the given password") {
|
||||
pkg.AssertErr(err, "密码错误(代码202)", 500)
|
||||
}
|
||||
log.Print(err)
|
||||
return
|
||||
}
|
||||
e.Password = pwd.NewPassword
|
||||
_, err = e.Update(e.Id)
|
||||
pkg.AssertErr(err, "更新密码失败(代码202)", 500)
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user