|
@@ -0,0 +1,220 @@
|
|
1
|
+package system
|
|
2
|
+
|
|
3
|
+import (
|
|
4
|
+ "spaceofcheng/services/models"
|
|
5
|
+ "spaceofcheng/services/models/model"
|
|
6
|
+ "spaceofcheng/services/utils"
|
|
7
|
+ "strings"
|
|
8
|
+ "time"
|
|
9
|
+ "wechat/helper"
|
|
10
|
+
|
|
11
|
+ "github.com/go-xorm/builder"
|
|
12
|
+ "github.com/go-xorm/xorm"
|
|
13
|
+ "github.com/yl10/kit/encrypt"
|
|
14
|
+)
|
|
15
|
+
|
|
16
|
+// UserDAO 当前数据库操作对象
|
|
17
|
+type UserDAO struct {
|
|
18
|
+ ctx *utils.Context
|
|
19
|
+ db *xorm.Session
|
|
20
|
+}
|
|
21
|
+
|
|
22
|
+// NewUserDAO New Inst
|
|
23
|
+func NewUserDAO(ctx *utils.Context) *UserDAO {
|
|
24
|
+ return &UserDAO{
|
|
25
|
+ ctx: ctx,
|
|
26
|
+ db: ctx.DB,
|
|
27
|
+ }
|
|
28
|
+}
|
|
29
|
+
|
|
30
|
+// GetUserList 用户列表
|
|
31
|
+func (m *UserDAO) GetUserList(username, typeid, caseids string) ([]model.SysUser, error) {
|
|
32
|
+ var users []model.SysUser
|
|
33
|
+ userDAO := m.db.Where(`(status>? and user_name like '%?%' and user_id in
|
|
34
|
+ (select user_id from sys_user_tag a inner join sys_tag_case b on a.tag_id=b.tag_id where b.case_id in ('?')))`, models.STATUS_DEL, username, caseids)
|
|
35
|
+
|
|
36
|
+ if typeid != "" {
|
|
37
|
+ userDAO.In("user_id", builder.Select("user_id").From("sys_user_type").Where(builder.Eq{"type_id": typeid}))
|
|
38
|
+ }
|
|
39
|
+ err := userDAO.Find(&users)
|
|
40
|
+ return users, err
|
|
41
|
+}
|
|
42
|
+
|
|
43
|
+// UserInfo 用户详情
|
|
44
|
+type UserInfo struct {
|
|
45
|
+ model.SysUser `xorm:"extends"`
|
|
46
|
+ UserType []model.TdUserType
|
|
47
|
+ UserTag []model.SysTag
|
|
48
|
+ UserCase []model.SysCase
|
|
49
|
+ UserRole []model.SysRole
|
|
50
|
+ UserMenu []model.SysMenu
|
|
51
|
+}
|
|
52
|
+
|
|
53
|
+// GetUserByID 根据ID获取用户信息
|
|
54
|
+func (m *UserDAO) GetUserByID(userid string) (*UserInfo, error) {
|
|
55
|
+ var userinfo = UserInfo{}
|
|
56
|
+ _, err := m.db.Table("sys_user").Where("user_id=?", userid).And("status>?", models.STATUS_DEL).Get(&userinfo)
|
|
57
|
+ if err != nil {
|
|
58
|
+ return nil, err
|
|
59
|
+ }
|
|
60
|
+ return &userinfo, nil
|
|
61
|
+}
|
|
62
|
+
|
|
63
|
+// GetUserType 获取用户类型
|
|
64
|
+func (m *UserDAO) GetUserType(userid string) ([]model.TdUserType, error) {
|
|
65
|
+ var usertype []model.TdUserType
|
|
66
|
+ err := m.db.In("type_id", builder.Select("type_id").From("sys_user_type").Where(builder.Eq{"user_id": userid}).And(builder.Gt{"status": models.STATUS_DEL})).Find(&usertype)
|
|
67
|
+ return usertype, err
|
|
68
|
+}
|
|
69
|
+
|
|
70
|
+// GetUserTag 获取用户标签
|
|
71
|
+func (m *UserDAO) GetUserTag(userid string) ([]model.SysTag, error) {
|
|
72
|
+ var userTag []model.SysTag
|
|
73
|
+ err := m.db.In("tag_id", builder.Select("tag_id").From("sys_user_tag").Where(builder.Eq{"user_id": userid}).And(builder.Gt{"status": models.STATUS_DEL})).Find(&userTag)
|
|
74
|
+ return userTag, err
|
|
75
|
+}
|
|
76
|
+
|
|
77
|
+// GetUserCase 获取用户案场
|
|
78
|
+func (m *UserDAO) GetUserCase(userid string) ([]model.SysCase, error) {
|
|
79
|
+ var userCase []model.SysCase
|
|
80
|
+ err := m.db.In("case_id", builder.Select("case_id").From("sys_user_case").Where(builder.Eq{"user_id": userid}).And(builder.Gt{"status": models.STATUS_DEL})).Find(&userCase)
|
|
81
|
+ return userCase, err
|
|
82
|
+}
|
|
83
|
+
|
|
84
|
+// GetUserRole 获取用户角色
|
|
85
|
+func (m *UserDAO) GetUserRole(userid string) ([]model.SysRole, error) {
|
|
86
|
+ var userRole []model.SysRole
|
|
87
|
+ err := m.db.In("role_id", builder.Select("role_id").From("sys_user_role").Where(builder.Eq{"user_id": userid}).And(builder.Gt{"status": models.STATUS_DEL})).Find(&userRole)
|
|
88
|
+ return userRole, err
|
|
89
|
+}
|
|
90
|
+
|
|
91
|
+// GetUserMenu 获取用户菜单
|
|
92
|
+func (m *UserDAO) GetUserMenu(userid string) ([]model.SysMenu, error) {
|
|
93
|
+ var userMenu []model.SysMenu
|
|
94
|
+ err := m.db.In("menu_id", builder.Select("menu_id").From("sys_user_menu").Where(builder.Eq{"user_id": userid}).And(builder.Gt{"status": models.STATUS_DEL})).Find(&userMenu)
|
|
95
|
+ return userMenu, err
|
|
96
|
+}
|
|
97
|
+
|
|
98
|
+// AddUser 新增用户
|
|
99
|
+func (m *UserDAO) AddUser(user model.SysUser) (*model.SysUser, error) {
|
|
100
|
+ user.CreateDate = time.Now()
|
|
101
|
+ user.Status = models.STATUS_NOMAIL
|
|
102
|
+ _, err := m.db.Insert(&user)
|
|
103
|
+ return &user, err
|
|
104
|
+}
|
|
105
|
+
|
|
106
|
+// UpdateUser 修改用户
|
|
107
|
+func (m *UserDAO) UpdateUser(user model.SysUser) error {
|
|
108
|
+ var col = []string{
|
|
109
|
+ "user_name",
|
|
110
|
+ "real_name",
|
|
111
|
+ "sex",
|
|
112
|
+ "work_no",
|
|
113
|
+ "email",
|
|
114
|
+ "phone",
|
|
115
|
+ "headimgurl",
|
|
116
|
+ "user_type_name",
|
|
117
|
+ }
|
|
118
|
+ _, err := m.db.Update(user, col, "user_id=?", user.UserId)
|
|
119
|
+ return err
|
|
120
|
+}
|
|
121
|
+
|
|
122
|
+// DelUser 删除用户
|
|
123
|
+func (m *UserDAO) DelUser(userid string) error {
|
|
124
|
+ var user = model.SysUser{}
|
|
125
|
+ user.Status = models.STATUS_DEL
|
|
126
|
+ user.UserId = userid
|
|
127
|
+ var col = []string{
|
|
128
|
+ "status",
|
|
129
|
+ }
|
|
130
|
+ _, err := m.db.Update(user, col, "user_id=?", user.UserId)
|
|
131
|
+ return err
|
|
132
|
+}
|
|
133
|
+
|
|
134
|
+// DelUserType 删除用户对应的类型信息
|
|
135
|
+func (m *UserDAO) DelUserType(userid string) error {
|
|
136
|
+ sql := "delete from sys_user_type where user_id='" + userid + "'"
|
|
137
|
+ _, err := m.db.Exec(sql)
|
|
138
|
+ return err
|
|
139
|
+}
|
|
140
|
+
|
|
141
|
+// SaveUserType 保存用户对应类型信息
|
|
142
|
+func (m *UserDAO) SaveUserType(userid, typeids string) error {
|
|
143
|
+ sql := `insert into sys_user_type(user_id,type_id) select '` + userid + `', type_id from td_user_type where type_id in ('` + strings.Replace(typeids, ",", "','", -1) + `') and status>?`
|
|
144
|
+ _, err := m.db.Exec(sql, models.STATUS_DEL)
|
|
145
|
+ return err
|
|
146
|
+}
|
|
147
|
+
|
|
148
|
+// DelUserRole 删除用户对应的角色信息
|
|
149
|
+func (m *UserDAO) DelUserRole(userid string) error {
|
|
150
|
+ sql := "delete from sys_user_role where user_id='" + userid + "'"
|
|
151
|
+ _, err := m.db.Exec(sql)
|
|
152
|
+ return err
|
|
153
|
+}
|
|
154
|
+
|
|
155
|
+// SaveUserRole 保存用户对应角色信息
|
|
156
|
+func (m *UserDAO) SaveUserRole(userid, roleids string) error {
|
|
157
|
+ sql := `insert into sys_user_role(user_id,role_id) select '` + userid + `', role_id from sys_role where role_id in ('` + strings.Replace(roleids, ",", "','", -1) + `') and status>?`
|
|
158
|
+ _, err := m.db.Exec(sql, models.STATUS_DEL)
|
|
159
|
+ return err
|
|
160
|
+}
|
|
161
|
+
|
|
162
|
+// DelUserTag 删除用户对应的标签信息
|
|
163
|
+func (m *UserDAO) DelUserTag(userid string) error {
|
|
164
|
+ sql := "delete from sys_user_tag where user_id='" + userid + "'"
|
|
165
|
+ _, err := m.db.Exec(sql)
|
|
166
|
+ return err
|
|
167
|
+}
|
|
168
|
+
|
|
169
|
+// SaveUserTag 保存用户对应标签信息
|
|
170
|
+func (m *UserDAO) SaveUserTag(userid, tagids string) error {
|
|
171
|
+ sql := `insert into sys_user_tag(user_id,tag_id) select '` + userid + `', tag_id from sys_tag where tag_id in ('` + strings.Replace(tagids, ",", "','", -1) + `') and status>?`
|
|
172
|
+ _, err := m.db.Exec(sql, models.STATUS_DEL)
|
|
173
|
+ return err
|
|
174
|
+}
|
|
175
|
+
|
|
176
|
+// DelUserCase 删除用户对应的案场
|
|
177
|
+func (m *UserDAO) DelUserCase(userid string) error {
|
|
178
|
+ sql := "delete from sys_user_case where user_id='" + userid + "'"
|
|
179
|
+ _, err := m.db.Exec(sql)
|
|
180
|
+ return err
|
|
181
|
+}
|
|
182
|
+
|
|
183
|
+// SaveUserCase 保存用户对应案场信息
|
|
184
|
+func (m *UserDAO) SaveUserCase(usercase model.SysUserCase) error {
|
|
185
|
+ usercase.CreateDate = time.Now()
|
|
186
|
+ usercase.Status = models.STATUS_NOMAIL
|
|
187
|
+ _, err := m.db.Insert(&usercase)
|
|
188
|
+ return err
|
|
189
|
+}
|
|
190
|
+
|
|
191
|
+// SaveUserCaseByUserTag 根据用户标签保存用户对应案场
|
|
192
|
+func (m *UserDAO) SaveUserCaseByUserTag(userid string) error {
|
|
193
|
+ sql := `insert into sys_user_case(user_id, case_id, case_name, is_belong, status, create_date)
|
|
194
|
+ select c.user_id, a.case_id,a.case_name, 0,?,now() from sys_case a
|
|
195
|
+ inner join sys_tag_case b on a.case_id = b.case_id
|
|
196
|
+ inner join sys_user_tag c on b.tag_id = c.tag_id
|
|
197
|
+ where c.user_id = ? and a.status > ?`
|
|
198
|
+
|
|
199
|
+ _, err := m.db.Exec(sql, models.STATUS_NOMAIL, userid, models.STATUS_DEL)
|
|
200
|
+ return err
|
|
201
|
+}
|
|
202
|
+
|
|
203
|
+// ValidatePassword 验证密码是否正确
|
|
204
|
+func (m *UserDAO) ValidatePassword(user *model.SysUser, password string) bool {
|
|
205
|
+ return user.Pwd == encrypt.Md5(password, user.UserId)
|
|
206
|
+}
|
|
207
|
+
|
|
208
|
+// UpdatePassword 更新用户密码
|
|
209
|
+func (m *UserDAO) UpdatePassword(userID, newPass string) error {
|
|
210
|
+ password := encrypt.Md5(newPass, userID)
|
|
211
|
+
|
|
212
|
+ sql := "update sys_user set passwd=? where user_id=?"
|
|
213
|
+
|
|
214
|
+ _, err := m.db.Exec(sql, password, userID)
|
|
215
|
+ if err != nil {
|
|
216
|
+ return helper.LogError("更新新密码出错", err)
|
|
217
|
+ }
|
|
218
|
+
|
|
219
|
+ return nil
|
|
220
|
+}
|