Commit 23d1901bc8728244dfea66545a4e73466a3c2235

Authored by aarongao
1 parent 7aca2129
Exists in v1.2 and in 2 other branches master, v1.1

更新登陆接口

Showing 3 changed files with 233 additions and 95 deletions   Show diff stats
@@ -7,92 +7,188 @@ import ( @@ -7,92 +7,188 @@ import (
7 "github.com/gin-gonic/gin" 7 "github.com/gin-gonic/gin"
8 "gopkg.in/mgo.v2/bson" 8 "gopkg.in/mgo.v2/bson"
9 "letu/DB" 9 "letu/DB"
  10 + "regexp"
10 "strconv" 11 "strconv"
11 "time" 12 "time"
12 ) 13 )
13 14
14 -// @Title 创建用户  
15 -// @Description 用户注册 15 +//
  16 +//// @Title 创建用户
  17 +//// @Description 用户注册
  18 +//// @Accept json
  19 +//// @Produce json
  20 +//// @Param password 1 string true "密码"
  21 +//// @Param confirmpassword 1 string true "确认密码"
  22 +//// @Param birthday 2010.10.10 string true "生日"
  23 +//// @Param fullname aarongao string true "全名"
  24 +//// @Param code 12345678 string true "6位验证码"
  25 +//// @Param mobile 18616619599 string true "手机,同用户名"
  26 +//// @Param openid 12345 string true "微信id"
  27 +//// @Success 200 {object} tools.ResponseSeccess "{"errcode":0,"result":"ok"}"
  28 +//// @Failure 500 {object} tools.ResponseError "{"errcode":1,"errmsg":"错误原因"}"
  29 +//// @Router /CreateUser? [post]
  30 +//func CreateUser(c *gin.Context) {
  31 +// c.Header("Access-Control-Allow-Origin", c.Request.Header.Get("Origin"))
  32 +// c.Header("Access-Control-Allow-Credentials", "true")
  33 +//
  34 +// if c.PostForm("mobile") == "" {
  35 +// c.JSON(200, tools.ResponseError{
  36 +// 1,
  37 +// "必须有手机号",
  38 +// })
  39 +// return
  40 +// }
  41 +// if c.PostForm("password") != c.PostForm("confirmpassword") {
  42 +// c.JSON(200, tools.ResponseError{
  43 +// 1,
  44 +// "密码错误",
  45 +// })
  46 +// return
  47 +// }
  48 +//
  49 +// // 检查验证码
  50 +// code := DB.Redis.Get(c.PostForm("mobile"))
  51 +// if code == "" || code != c.PostForm("code") {
  52 +// c.JSON(200, tools.ResponseError{
  53 +// 1,
  54 +// "验证码错误",
  55 +// })
  56 +// return
  57 +// }
  58 +//
  59 +// objectID := bson.NewObjectId()
  60 +// err := DB.CMember.Insert(DB.SMember{
  61 +// &objectID,
  62 +// c.PostForm("password"),
  63 +// c.PostForm("birthday"),
  64 +// c.PostForm("fullname"),
  65 +// c.PostForm("mobile"),
  66 +// c.PostForm("openid"),
  67 +// "",
  68 +// })
  69 +// if err == nil{
  70 +// c.JSON(200, tools.ResponseSeccess{
  71 +// 0,
  72 +// "ok",
  73 +// })
  74 +// }else{
  75 +// c.JSON(200, tools.ResponseError{
  76 +// 0,
  77 +// "此手机号已经注册",
  78 +// })
  79 +// }
  80 +//
  81 +//
  82 +//}
  83 +
  84 +var Regular = "^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$"
  85 +
  86 +// @Title 登录
  87 +// @Description 用户登录&注册
16 // @Accept json 88 // @Accept json
17 // @Produce json 89 // @Produce json
18 -// @Param password 1 string true "密码"  
19 -// @Param confirmpassword 1 string true "确认密码"  
20 -// @Param birthday 2010.10.10 string true "生日"  
21 -// @Param fullname aarongao string true "全名"  
22 -// @Param code 12345678 string true "6位验证码"  
23 -// @Param mobile 18616619599 string true "手机,同用户名"  
24 -// @Param openid 12345 string true "微信id"  
25 -// @Success 200 {object} tools.ResponseSeccess "{"errcode":0,"result":"ok"}" 90 +// @Param mobile aaron string true "手机号"
  91 +// @Param password 1 string true "密码或验证码(使用验证码的新手机号自动注册)"
  92 +// @Success 200 {object} tools.ResponseSeccess "{"errcode":0,"result":{"Id":"5e09c64c1c09c6f0f7ca2fa9","Username":"admin","Password":"123","Birthday":"","FullName":"","Mobile":"","Openid":"","Token":"640bf934e425aba5d3c90998b2641f2f0ca07261d334d9615d1cd4790b5f34e7"}} 调用其它需要登陆的接口时携带token,有过期时间"
26 // @Failure 500 {object} tools.ResponseError "{"errcode":1,"errmsg":"错误原因"}" 93 // @Failure 500 {object} tools.ResponseError "{"errcode":1,"errmsg":"错误原因"}"
27 -// @Router /CreateUser? [post]  
28 -func CreateUser(c *gin.Context) { 94 +// @Router /LoginUser? [post]
  95 +func LoginUser(c *gin.Context) {
29 c.Header("Access-Control-Allow-Origin", c.Request.Header.Get("Origin")) 96 c.Header("Access-Control-Allow-Origin", c.Request.Header.Get("Origin"))
30 c.Header("Access-Control-Allow-Credentials", "true") 97 c.Header("Access-Control-Allow-Credentials", "true")
31 98
32 - if c.PostForm("mobile") == "" { 99 + reg := regexp.MustCompile(Regular)
  100 + if !reg.MatchString(c.PostForm("mobile")) {
  101 +
33 c.JSON(200, tools.ResponseError{ 102 c.JSON(200, tools.ResponseError{
34 1, 103 1,
35 - "必须有手机号", 104 + "手机号格式不正确",
36 }) 105 })
37 return 106 return
38 } 107 }
39 - if c.PostForm("password") != c.PostForm("confirmpassword") { 108 +
  109 + if c.PostForm("mobile") == "" || c.PostForm("password") == "" {
40 c.JSON(200, tools.ResponseError{ 110 c.JSON(200, tools.ResponseError{
41 1, 111 1,
42 - "密码错误", 112 + "",
43 }) 113 })
44 return 114 return
45 } 115 }
46 116
  117 + // 生成token
  118 + tokenunit8 := sha256.Sum256([]byte(c.PostForm("mobile") + c.PostForm("password") + strconv.FormatInt(time.Now().UnixNano(), 10)))
  119 + token := hex.EncodeToString(tokenunit8[:32])
  120 +
47 // 检查验证码 121 // 检查验证码
48 - code := DB.Redis.Get(c.PostForm("mobile"))  
49 - if code == "" || code != c.PostForm("code") {  
50 - c.JSON(200, tools.ResponseError{  
51 - 1,  
52 - "验证码错误",  
53 - })  
54 - return  
55 - } 122 + cacheCode := DB.Redis.Get(c.PostForm("mobile"))
  123 + selected := bson.M{}
  124 + var User *DB.SMember
  125 + if cacheCode == c.PostForm("password") {
  126 + selected["Mobile"] = c.PostForm("mobile")
  127 + DB.CMember.Find(selected).One(&User)
56 128
57 - objectID := bson.NewObjectId()  
58 - err := DB.CMember.Insert(DB.SMember{  
59 - &objectID,  
60 - c.PostForm("password"),  
61 - c.PostForm("birthday"),  
62 - c.PostForm("fullname"),  
63 - c.PostForm("mobile"),  
64 - c.PostForm("openid"),  
65 - "",  
66 - })  
67 - if err == nil{  
68 - c.JSON(200, tools.ResponseSeccess{  
69 - 0,  
70 - "ok",  
71 - })  
72 - }else{  
73 - c.JSON(200, tools.ResponseError{  
74 - 0,  
75 - "此手机号已经注册",  
76 - }) 129 + // 验证码匹配,但手机号不存在
  130 + if User == nil {
  131 + objectID := bson.NewObjectId()
  132 + oUser := DB.SMember{
  133 + &objectID,
  134 + "",
  135 + "",
  136 + "",
  137 + c.PostForm("mobile"),
  138 + "",
  139 + token,
  140 + }
  141 + DB.CMember.Insert(oUser)
  142 + //if err == nil {
  143 + c.JSON(200, tools.ResponseSeccess{
  144 + 0,
  145 + oUser,
  146 + })
  147 + return
  148 + //}
  149 + }
  150 +
  151 + } else {
  152 + selected["Mobile"] = c.PostForm("mobile")
  153 + selected["Password"] = c.PostForm("password")
  154 + DB.CMember.Find(selected).One(&User)
  155 + if User == nil {
  156 + c.JSON(200, tools.ResponseError{
  157 + 1,
  158 + "用户不存在或密码不正确",
  159 + })
  160 + return
  161 + }
77 } 162 }
78 163
  164 + // 更新用户信息
  165 + DB.CMember.Update(
  166 + bson.M{"_id": User.Id},
  167 + bson.M{"$set": bson.M{"Token": token}},
  168 + )
  169 +
  170 + User.Token = token
  171 + c.JSON(200, tools.ResponseSeccess{
  172 + 0,
  173 + User,
  174 + })
79 175
80 } 176 }
81 177
82 -// @Title 登录  
83 -// @Description 用户登录 178 +// @Title 用户信息
  179 +// @Description 获取用户信息
84 // @Accept json 180 // @Accept json
85 // @Produce json 181 // @Produce json
86 -// @Param mobile aaron string true "用户名"  
87 -// @Param password 1 string true "密码"  
88 -// @Success 200 {object} tools.ResponseSeccess "{"errcode":0,"result":{"Id":"5e09c64c1c09c6f0f7ca2fa9","Username":"admin","Password":"123","Birthday":"","FullName":"","Mobile":"","Openid":"","Token":"640bf934e425aba5d3c90998b2641f2f0ca07261d334d9615d1cd4790b5f34e7"}} 调用其它需要登陆的接口时携带token,有过期时间" 182 +// @Param id aaron string true "用户id"
  183 +// @Success 200 {object} tools.ResponseSeccess "{"errcode":0,"result":{"Id":"5e09c64c1c09c6f0f7ca2fa9","Username":"admin","Password":"123","Birthday":"","FullName":"","Mobile":"","Openid":"","Token":"640bf934e425aba5d3c90998b2641f2f0ca07261d334d9615d1cd4790b5f34e7"}}"
89 // @Failure 500 {object} tools.ResponseError "{"errcode":1,"errmsg":"错误原因"}" 184 // @Failure 500 {object} tools.ResponseError "{"errcode":1,"errmsg":"错误原因"}"
90 -// @Router /LoginUser? [post]  
91 -func LoginUser(c *gin.Context) { 185 +// @Router /UserInfo? [get]
  186 +func UserInfo(c *gin.Context) {
92 c.Header("Access-Control-Allow-Origin", c.Request.Header.Get("Origin")) 187 c.Header("Access-Control-Allow-Origin", c.Request.Header.Get("Origin"))
93 c.Header("Access-Control-Allow-Credentials", "true") 188 c.Header("Access-Control-Allow-Credentials", "true")
94 189
95 - if c.PostForm("mobile") == "" || c.PostForm("password") == "" { 190 +
  191 + if c.Query("id") == "" {
96 c.JSON(200, tools.ResponseError{ 192 c.JSON(200, tools.ResponseError{
97 1, 193 1,
98 "空", 194 "空",
@@ -101,7 +197,7 @@ func LoginUser(c *gin.Context) { @@ -101,7 +197,7 @@ func LoginUser(c *gin.Context) {
101 } 197 }
102 198
103 var User *DB.SMember 199 var User *DB.SMember
104 - DB.CMember.Find(bson.M{"Mobile": c.PostForm("mobile"), "Password": c.PostForm("password")}).One(&User) 200 + DB.CMember.Find(bson.M{"_id": bson.ObjectIdHex(c.Query("id"))}).One(&User)
105 201
106 if User == nil { 202 if User == nil {
107 203
@@ -111,16 +207,6 @@ func LoginUser(c *gin.Context) { @@ -111,16 +207,6 @@ func LoginUser(c *gin.Context) {
111 }) 207 })
112 } else { 208 } else {
113 209
114 - // 生成token  
115 - tokenunit8 := sha256.Sum256([]byte(c.PostForm("mobile") + c.PostForm("password") + strconv.FormatInt(time.Now().UnixNano(), 10)))  
116 - token := hex.EncodeToString(tokenunit8[:32])  
117 - // 更新用户信息  
118 - DB.CMember.Update(  
119 - bson.M{"_id": User.Id},  
120 - bson.M{"$set": bson.M{"Token": token}},  
121 - )  
122 -  
123 - User.Token = token  
124 c.JSON(200, tools.ResponseSeccess{ 210 c.JSON(200, tools.ResponseSeccess{
125 0, 211 0,
126 User, 212 User,
@@ -129,40 +215,70 @@ func LoginUser(c *gin.Context) { @@ -129,40 +215,70 @@ func LoginUser(c *gin.Context) {
129 215
130 } 216 }
131 217
132 -// @Title 用户信息  
133 -// @Description 获取用户信息 218 +// @Title 修改用户信息
  219 +// @Description 修改用户信息
134 // @Accept json 220 // @Accept json
135 // @Produce json 221 // @Produce json
136 -// @Param id aaron string true "用户id"  
137 -// @Success 200 {object} tools.ResponseSeccess "{"errcode":0,"result":{"Id":"5e09c64c1c09c6f0f7ca2fa9","Username":"admin","Password":"123","Birthday":"","FullName":"","Mobile":"","Openid":"","Token":"640bf934e425aba5d3c90998b2641f2f0ca07261d334d9615d1cd4790b5f34e7"}}" 222 +// @Param password 1 string true "密码"
  223 +// @Param confirmpassword 1 string true "确认密码"
  224 +// @Param birthday 2010.10.10 string true "生日"
  225 +// @Param fullname aarongao string true "全名"
  226 +// @Param code 12345678 string true "6位验证码"
  227 +// @Param mobile 18616619599 string true "手机,同用户名"
  228 +// @Param openid 12345 string true "微信id"
  229 +// @Success 200 {object} tools.ResponseSeccess "{"errcode":0,"result":"ok"}"
138 // @Failure 500 {object} tools.ResponseError "{"errcode":1,"errmsg":"错误原因"}" 230 // @Failure 500 {object} tools.ResponseError "{"errcode":1,"errmsg":"错误原因"}"
139 -// @Router /UserInfo? [get]  
140 -func UserInfo(c *gin.Context) { 231 +// @Router /UpdateUser? [post]
  232 +func UpdateUser(c *gin.Context) {
141 c.Header("Access-Control-Allow-Origin", c.Request.Header.Get("Origin")) 233 c.Header("Access-Control-Allow-Origin", c.Request.Header.Get("Origin"))
142 c.Header("Access-Control-Allow-Credentials", "true") 234 c.Header("Access-Control-Allow-Credentials", "true")
143 235
144 - if c.Query("id") == "" { 236 + reg := regexp.MustCompile(Regular)
  237 + if !reg.MatchString(c.PostForm("mobile")) {
  238 +
145 c.JSON(200, tools.ResponseError{ 239 c.JSON(200, tools.ResponseError{
146 1, 240 1,
147 - "空", 241 + "手机号格式不正确",
  242 + })
  243 + return
  244 + }
  245 + if c.PostForm("password") != c.PostForm("confirmpassword") {
  246 + c.JSON(200, tools.ResponseError{
  247 + 1,
  248 + "2次密码不一致",
148 }) 249 })
149 return 250 return
150 } 251 }
151 252
152 - var User *DB.SMember  
153 - DB.CMember.Find(bson.M{"_id": bson.ObjectIdHex(c.Query("id"))}).One(&User)  
154 -  
155 - if User == nil {  
156 - 253 + // 检查验证码
  254 + code := DB.Redis.Get(c.PostForm("mobile"))
  255 + if code == "" || code != c.PostForm("code") {
157 c.JSON(200, tools.ResponseError{ 256 c.JSON(200, tools.ResponseError{
158 1, 257 1,
159 - "", 258 + "验证码错误",
160 }) 259 })
161 - } else { 260 + return
  261 + }
162 262
  263 + objectID := bson.NewObjectId()
  264 + err := DB.CMember.Insert(DB.SMember{
  265 + &objectID,
  266 + c.PostForm("password"),
  267 + c.PostForm("birthday"),
  268 + c.PostForm("fullname"),
  269 + c.PostForm("mobile"),
  270 + c.PostForm("openid"),
  271 + "",
  272 + })
  273 + if err == nil {
163 c.JSON(200, tools.ResponseSeccess{ 274 c.JSON(200, tools.ResponseSeccess{
164 0, 275 0,
165 - User, 276 + "ok",
  277 + })
  278 + } else {
  279 + c.JSON(200, tools.ResponseError{
  280 + 0,
  281 + "此手机号已经注册",
166 }) 282 })
167 } 283 }
168 284
@@ -15,10 +15,10 @@ @@ -15,10 +15,10 @@
15 1. [所有景区基础信息](#allscenic-get) 15 1. [所有景区基础信息](#allscenic-get)
16 1. [查询商品信息](#commodityinfo-get) 16 1. [查询商品信息](#commodityinfo-get)
17 1. [增加投诉](#createcomplaint-post) 17 1. [增加投诉](#createcomplaint-post)
18 -1. [用户注册](#createuser-post) 18 +1. [增加调查](#investigation-save-post)
19 1. [查询设备信息](#iteminfo-get) 19 1. [查询设备信息](#iteminfo-get)
20 1. [查询线路信息](#lineinfo-get) 20 1. [查询线路信息](#lineinfo-get)
21 -1. [用户登录](#loginuser-post) 21 +1. [用户登录&注册](#loginuser-post)
22 1. [返回景区基础信息](#scenicinfo-get) 22 1. [返回景区基础信息](#scenicinfo-get)
23 1. [发送短信验证码](#sms-send-post) 23 1. [发送短信验证码](#sms-send-post)
24 1. [标签列表](#tags-get) 24 1. [标签列表](#tags-get)
@@ -27,6 +27,7 @@ @@ -27,6 +27,7 @@
27 1. [更新等待时间](#updateitemtime-post) 27 1. [更新等待时间](#updateitemtime-post)
28 1. [更新线路](#updateline-post) 28 1. [更新线路](#updateline-post)
29 1. [更新景区基础信息](#updatescenic-post) 29 1. [更新景区基础信息](#updatescenic-post)
  30 +1. [修改用户信息](#updateuser-post)
30 1. [上传](#upload-post) 31 1. [上传](#upload-post)
31 1. [获取用户信息](#userinfo-get) 32 1. [获取用户信息](#userinfo-get)
32 33
@@ -154,22 +155,18 @@ @@ -154,22 +155,18 @@
154 155
155 156
156 157
157 -<a name="createuser-post"></a> 158 +<a name="investigation-save-post"></a>
158 159
159 -#### /CreateUser (POST) 160 +#### /Investigation/Save (POST)
160 161
161 162
162 -用户注册 163 +增加调查
163 164
164 | Param Name | Example | Data Type | Description | Required? | 165 | Param Name | Example | Data Type | Description | Required? |
165 |-----|-----|-----|-----|-----| 166 |-----|-----|-----|-----|-----|
166 -| password | 1 | string | 密码 | Yes |  
167 -| confirmpassword | 1 | string | 确认密码 | Yes |  
168 -| birthday | 2010.10.10 | string | 生日 | Yes |  
169 -| fullname | aarongao | string | 全名 | Yes |  
170 -| code | 12345678 | string | 6位验证码 | Yes |  
171 -| mobile | 18616619599 | string | 手机,同用户名 | Yes |  
172 -| openid | 12345 | string | 微信id | Yes | 167 +| UserId | 1111111 | string | UserId | Yes |
  168 +| Mobile | 18616619599 | string | 联系电话 | Yes |
  169 +| type | 1 | string | 类型 | Yes |
173 170
174 171
175 | Code | Type | Model | Message | 172 | Code | Type | Model | Message |
@@ -222,12 +219,12 @@ @@ -222,12 +219,12 @@
222 #### /LoginUser (POST) 219 #### /LoginUser (POST)
223 220
224 221
225 -用户登录 222 +用户登录&注册
226 223
227 | Param Name | Example | Data Type | Description | Required? | 224 | Param Name | Example | Data Type | Description | Required? |
228 |-----|-----|-----|-----|-----| 225 |-----|-----|-----|-----|-----|
229 -| mobile | aaron | string | 用户名 | Yes |  
230 -| password | 1 | string | 密码 | Yes | 226 +| mobile | aaron | string | 手机号 | Yes |
  227 +| password | 1 | string | 密码或验证码(使用验证码的新手机号自动注册) | Yes |
231 228
232 229
233 | Code | Type | Model | Message | 230 | Code | Type | Model | Message |
@@ -370,6 +367,31 @@ @@ -370,6 +367,31 @@
370 367
371 368
372 369
  370 +<a name="updateuser-post"></a>
  371 +
  372 +#### /UpdateUser (POST)
  373 +
  374 +
  375 +修改用户信息
  376 +
  377 +| Param Name | Example | Data Type | Description | Required? |
  378 +|-----|-----|-----|-----|-----|
  379 +| password | 1 | string | 密码 | Yes |
  380 +| confirmpassword | 1 | string | 确认密码 | Yes |
  381 +| birthday | 2010.10.10 | string | 生日 | Yes |
  382 +| fullname | aarongao | string | 全名 | Yes |
  383 +| code | 12345678 | string | 6位验证码 | Yes |
  384 +| mobile | 18616619599 | string | 手机,同用户名 | Yes |
  385 +| openid | 12345 | string | 微信id | Yes |
  386 +
  387 +
  388 +| Code | Type | Model | Message |
  389 +|-----|-----|-----|-----|
  390 +| 200 | object | [ResponseSeccess](#github.com.aarongao.tools.ResponseSeccess) | {"errcode":0,"result":"ok"} |
  391 +| 500 | object | [ResponseError](#github.com.aarongao.tools.ResponseError) | {"errcode":1,"errmsg":"错误原因"} |
  392 +
  393 +
  394 +
373 <a name="upload-post"></a> 395 <a name="upload-post"></a>
374 396
375 #### /Upload (POST) 397 #### /Upload (POST)
@@ -68,7 +68,7 @@ func main() { @@ -68,7 +68,7 @@ func main() {
68 r.GET("/ItemInfo", Api.ItemInfo) 68 r.GET("/ItemInfo", Api.ItemInfo)
69 r.GET("/CommodityInfo", Api.CommodityInfo) 69 r.GET("/CommodityInfo", Api.CommodityInfo)
70 r.POST("/CreateComplaint", Api.CreateComplaint) 70 r.POST("/CreateComplaint", Api.CreateComplaint)
71 - r.POST("/CreateUser", Api.CreateUser) 71 + //r.POST("/CreateUser", Api.CreateUser)
72 r.POST("/LoginUser", Api.LoginUser) 72 r.POST("/LoginUser", Api.LoginUser)
73 r.GET("/UserInfo", Api.UserInfo) 73 r.GET("/UserInfo", Api.UserInfo)
74 r.GET("/ScenicInfo", Api.ScenicInfo) 74 r.GET("/ScenicInfo", Api.ScenicInfo)