-
Notifications
You must be signed in to change notification settings - Fork 0
/
user.go
182 lines (169 loc) · 4.86 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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
package controllers
import (
"github.com/milkymoney/milkMoneyBackend/models"
"encoding/json"
"github.com/astaxie/beego"
"fmt"
)
// Operations about Users
type UserController struct {
beego.Controller
}
/*
输入当前的beego控制器
根据session返回session中openid对应的用户指针,或者错误
*/
func Auth(u *beego.Controller) (*models.User,error){
session := u.Ctx.Input.CruSession
if val := session.Get("openid"); val != nil {
user,err := models.GetUserByOpenId(val.(string))
if err != nil{
return nil,err
}else{
return user,nil
}
} else {
return nil,fmt.Errorf("need login")
}
}
// @Title 查询用户信息
// @Description get user by openid(in session)
// @Param session header string true "user's session ,get from login"
// @Success 200 {object} models.User
// @Failure 403 :uid is empty
// @router / [get]
func (u *UserController) Get() {
user,err := Auth(&u.Controller)
if err != nil{
u.Data["json"] = err.Error()
} else{
u.Data["json"] = user
}
u.ServeJSON()
}
// @Title 修改用户个人信息
// @Description update the user
// @Param session header string true "user's session ,get from login"
// @Param body body models.User true "body for user content"
// @Success 200 {object} controllers.HttpResponseCode
// @Failure 403 :uid is not int
// @router /:uid [put]
func (u *UserController) Put() {
originUser,err := Auth(&u.Controller)
if err == nil {
var user models.User
json.Unmarshal(u.Ctx.Input.RequestBody, &user)
userId := originUser.Id
if err == nil{
_, err := models.UpdateUser(userId, &user)
if err != nil {
u.Data["json"] = HttpResponseCode{Success:false,Message:err.Error()}
} else {
u.Data["json"] = HttpResponseCode{Success:true,Message:"update success"}
}
} else{
u.Data["json"] = HttpResponseCode{Success:false,Message:err.Error()}
}
}
u.ServeJSON()
}
// @Title Login
// @Description Logs user into the system
// @Param code query string true "the code from wx.login()"
// @Success 200 {string} login success
// @Failure 403 user not exist
// @router /login [get]
func (u *UserController) Login() {
fmt.Println("In controller function login, it's session:")
fmt.Println(u.Ctx.Input.CruSession)
session := u.Ctx.Input.CruSession
code := u.GetString("code")
fmt.Println("Code" + code)
if openid,err := models.Login(code);err==nil {
//设置session
u.Data["json"] = openid
session.Set("openid",openid)
} else {
u.Data["json"] = err.Error()
}
fmt.Println("Set session over")
u.ServeJSON()
}
//测试用函数之登陆验证
// @Title login
// @Description Use session to get user's id
// @Param code query string true "wx.Login response code"
// @Success 200 {string} login success
// @Failure 403 user not exist
// @router /query [get]
func (u *UserController) Query() {
fmt.Println("In Query")
session := u.Ctx.Input.CruSession
fmt.Println("In controller's function query, get the session")
fmt.Println(session)
if val := session.Get("openid"); val != nil {
user,err := models.GetUserByOpenId(val.(string))
fmt.Println(user)
if err !=nil{
u.Data["json"] = "openid error"
} else{
u.Data["json"] = user.Id
}
} else {
u.Data["json"] ="need login"
}
u.ServeJSON()
}
//测试用函数之图片上传
// @Title login
// @Description Use session to get user's id
// @Param code query string true "wx.Login response code"
// @Success 200 {string} login success
// @Failure 403 user not exist
// @router /queryImage [post]
func (u *UserController) QueryImage() {
fmt.Println("In Query")
session := u.Ctx.Input.CruSession
if val := session.Get("openid"); val != nil {
user,err := models.GetUserByOpenId(val.(string))
if err == nil {
fmt.Println("user id")
fmt.Println(user.Id)
f,h,err := u.GetFile("myfile")
fmt.Println(f)
if err != nil{
fmt.Println("get file err",err)
} else{
//成功收到图片
path := "./image/"+h.Filename
u.SaveToFile("myfile",path)//保存图片到本地
fmt.Println("Add path to file:")
fmt.Println(path)
models.AddImageToUser(user.Id,path)
defer f.Close()
}
u.Data["json"] = "receive"
}
}
u.ServeJSON()
}
//测试用函数之图片下载
// @Title login
// @Description Use session to get user's id
// @Param code query string true "wx.Login response code"
// @Success 200 {string} login success
// @Failure 403 user not exist
// @router /download [get]
func (u *UserController) DownloadImage() {
fmt.Println("In Query")
session := u.Ctx.Input.CruSession
if val := session.Get("openid"); val != nil {
user,err := models.GetUserByOpenId(val.(string))
if err == nil {
fmt.Println("user id")
fmt.Println(user.Id)
path := models.GetImageFromUser(user.Id)
u.Ctx.Output.Download(path,"test.png")
}
}
}