-
Notifications
You must be signed in to change notification settings - Fork 1
/
user.go
132 lines (114 loc) · 4.3 KB
/
user.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package repository_manage
import (
"errors"
"time"
"github.com/anden007/afocus-godf/src/interfaces"
"github.com/anden007/afocus-godf/src/lib"
"github.com/anden007/afocus-godf/src/model/model_manage"
"github.com/google/uuid"
)
type UserRepository struct{}
func NewUserRepository() *UserRepository {
instance := new(UserRepository)
return instance
}
func (m *UserRepository) Login(userName string, password string) (user model_manage.User, err error) {
db := interfaces.DI().GetDataBase()
md5Password := lib.Md5Hash(password)
err = db.GetDB().Model(model_manage.User{}).Where(&model_manage.User{UserName: userName, Password: md5Password}).Preload("Roles").First(&user).Error
return
}
func (m *UserRepository) GetByDepartmentId(departmentId uuid.UUID) (result []model_manage.User, err error) {
db := interfaces.DI().GetDataBase()
err = db.GetDB().Model(model_manage.User{}).Find(&result, &model_manage.User{DepartmentId: departmentId}).Error
return
}
func (m *UserRepository) GetByCondition(condition map[string]string) (result []model_manage.User, total int64, err error) {
db := interfaces.DI().GetDataBase()
Query := db.GetDB().Model(model_manage.User{})
CountQuery := db.GetDB().Model(model_manage.User{})
err = lib.NewQueryCondition().GetQuery(model_manage.User{}.TableName(), condition, Query, CountQuery)
if err == nil {
err = CountQuery.Count(&total).Error
err = Query.Preload("Roles").Preload("Department").Find(&result).Error
}
return
}
func (m *UserRepository) Add(entity model_manage.User) (err error) {
db := interfaces.DI().GetDataBase()
entity.Password, err = m.CreatePassword(entity.Password)
if err == nil {
if entity.CreateTime.IsZero() {
entity.CreateTime = time.Now()
}
err = db.GetDB().Create(&entity).Error
}
return
}
func (m *UserRepository) Edit(entity model_manage.User) (err error) {
db := interfaces.DI().GetDataBase()
err = db.GetDB().Save(&entity).Error
return
}
func (m *UserRepository) Updates(id uuid.UUID, fieldValues map[string]interface{}) (err error) {
db := interfaces.DI().GetDataBase()
err = db.GetDB().Model(&model_manage.User{}).Where(model_manage.User{Id: id}).Updates(fieldValues).Error
return
}
func (m *UserRepository) DelByIds(ids []uuid.UUID) (err error) {
db := interfaces.DI().GetDataBase()
err = db.GetDB().Delete(model_manage.User{}, "id in (?)", ids).Error
return
}
func (m *UserRepository) GetByIds(ids []uuid.UUID) (result []model_manage.User, err error) {
db := interfaces.DI().GetDataBase()
err = db.GetDB().Model(model_manage.User{}).Where("id in (?)", ids).Find(&result).Error
return
}
func (m *UserRepository) ResetPassword(ids []uuid.UUID) (err error) {
md5Password, _ := m.CreatePassword("123456")
db := interfaces.DI().GetDataBase()
err = db.GetDB().Model(&model_manage.User{}).Where("id in (?)", ids).Update("Password", md5Password).Error
return
}
func (m *UserRepository) ModifyPass(id uuid.UUID, oldPassword string, newPassword string) (err error) {
if len(newPassword) < 6 {
err = errors.New("密码不满足系统要求")
} else {
md5OldPassword, _ := m.CreatePassword(oldPassword)
md5NewPassword, _ := m.CreatePassword(newPassword)
db := interfaces.DI().GetDataBase()
result := model_manage.User{}
err = db.GetDB().Model(&model_manage.User{}).Where(&model_manage.User{Id: id, Password: md5OldPassword}).First(&result).Error
if err == nil {
err = db.GetDB().Model(&model_manage.User{}).Where("id in (?)", id).Update("Password", md5NewPassword).Error
}
}
return
}
func (m *UserRepository) CreatePassword(password string) (result string, err error) {
err = nil
if len(password) < 6 {
err = errors.New("密码不满足系统要求")
} else {
result = lib.Md5Hash(password)
}
return
}
// 编辑用户角色
func (m *UserRepository) EditUserRole(userId uuid.UUID, roleIds []uuid.UUID) (err error) {
db := interfaces.DI().GetDataBase()
var newRoles []model_manage.Role
err = db.GetDB().Model(&model_manage.Role{}).Where("id in (?)", roleIds).Find(&newRoles).Error
if err == nil {
var user model_manage.User
err = db.GetDB().First(&user, "id = ?", userId).Error
err = db.GetDB().Model(&user).Association("Roles").Replace(&newRoles)
}
return
}
func (m *UserRepository) GetAll() (result []model_manage.User, err error) {
db := interfaces.DI().GetDataBase()
err = db.GetDB().Model(&model_manage.User{}).Find(&result).Error
return
}