-
Notifications
You must be signed in to change notification settings - Fork 0
/
user.go
94 lines (76 loc) · 1.99 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
package db
import (
"../../common"
"../../logger"
"../../util"
"database/sql"
"fmt"
"github.com/jmoiron/sqlx"
)
const (
PasswordSalt = "HBZciU2SiSDr4uPeJ1e7qlIlMbyusQ0v"
)
func Register(user *common.UserInfo) (err error) {
var userId int64
sqlstr := "select user_id from user where username=?"
fmt.Printf("db:%p user:%#v\n", DB, user)
err = DB.Get(&userId, sqlstr, user.Username)
if err != nil && err != sql.ErrNoRows {
return
}
if userId > 0 {
err = ErrUserExists
return
}
passwd := user.Password + PasswordSalt
dbPassword := util.Md5([]byte(passwd))
sqlstr = "insert into user(username, password, email, user_id, sex, nickname)values(?,?,?,?,?,?)"
_, err = DB.Exec(sqlstr, user.Username, dbPassword, user.Email,
user.UserId, user.Sex, user.Nickname)
return
}
func Login(user *common.UserInfo) (err error) {
originPassword := user.Password
sqlstr := "select username,password, user_id from user where username=?"
fmt.Printf("db:%p user:%#v\n", DB, user)
err = DB.Get(user, sqlstr, user.Username)
if err != nil && err != sql.ErrNoRows {
return
}
if err == sql.ErrNoRows {
err = ErrUserNotExists
return
}
passwd := originPassword + PasswordSalt
originPasswordSalt := util.Md5([]byte(passwd))
if originPasswordSalt != user.Password {
err = ErrUserPasswordWrong
return
}
return
}
func GetUserInfoList(userIdList []int64) (userInfoList []*common.UserInfo, err error) {
if len(userIdList) == 0 {
return
}
sqlstr := `select
user_id, nickname, sex, username, email
from
user
where user_id in(?)`
var userIdTmpArr []interface{}
for _, userId := range userIdList {
userIdTmpArr = append(userIdTmpArr, userId)
}
query, args, err := sqlx.In(sqlstr, userIdTmpArr)
if err != nil {
logger.Error("sqlx in failed, sqlstr:%v, user_ids:%#v, err:%v", sqlstr, userIdList, err)
return
}
err = DB.Select(&userInfoList, query, args...)
if err != nil {
logger.Error("get question list failed, query:%v, err:%v", query, err)
return
}
return
}