user.go
2.86 KB
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
package models
import (
"crypto/md5"
"encoding/hex"
"errors"
"log"
db "loginserver/database"
)
type UserLoginInfo struct {
Type string
Name string
Password string
}
type UserRegisterInfo struct {
Type string
Name string
Password string
}
func (u *UserLoginInfo) UserLogin() (result interface{}, err error) {
switch u.Type {
case "normal":
password, err := GetPasswordByUserName(u.Name)
if err != nil {
return password, err
}
if password != MD5(u.Password) {
err = errors.New("密码错误")
return "105004", err
}
break
default:
err = errors.New("不存在的登陆类型")
return "105000", err
}
log.Println(u.Name, " login success")
return nil, nil
}
func (u *UserRegisterInfo) UserRegister() (result interface{}, err error) {
switch u.Type {
case "account": //账号密码注册
res, err := CheckUserNameRepeat(u.Name)
if err != nil {
return res, err
}
errno, err := InsertUser(u.Name, u.Password)
if err != nil {
return errno, err
}
break
default:
err = errors.New("不存在的注册类型")
return "105001", err
break
}
log.Println(u.Name, " register success")
return nil, nil
}
//检查用户名是否重复
func CheckUserNameRepeat(userName string) (result interface{}, err error) {
sql := ` select user_password from icesimba_polysdk_user where user_name = ?`
r, err := db.Engine.Query(sql, userName)
if err != nil {
return "104001", err
}
if len(r) == 0 {
return false, nil
}
return true, nil
}
//获取用户密码
func GetPasswordByUserName(userName string) (result interface{}, err error) {
sql := ` select user_password from icesimba_polysdk_user where user_name = ?`
r, err := db.Engine.Query(sql, userName)
if err != nil {
return "104001", err
}
if len(r) == 0 {
err = errors.New("不存在的用户名")
return "105003", err
}
return string(r[0]["user_password"]), nil
}
//修改用户密码
func ChangeUserPassword(userName string, originPassword string, newPassword string) (result interface{}, err error) {
r, err := GetPasswordByUserName(userName)
if err != nil {
return r, err
}
if MD5(newPassword) == originPassword {
err = errors.New("新旧密码一致!无法修改")
return "105002", err
}
password := MD5(newPassword)
sql := ` update icesimba_polysdk_user set user_password = ? where user_name = ?`
_, err = db.Engine.Exec(sql, password, userName)
if err != nil {
return "104001", err
}
return
}
//添加用户
func InsertUser(userName string, userPassword string) (result interface{}, err error) {
password := MD5(userPassword)
sql := ` insert into icesimba_polysdk_user(user_name,user_password) values(?,?) `
_, err = db.Engine.Exec(sql, userName, password)
if err != nil {
return "104001", err
}
return nil, nil
}
func MD5(str string) string {
w := md5.New()
w.Write([]byte(str))
has := w.Sum(nil)
str = hex.EncodeToString(has)
return str
}