这是我参与「第五届青训营 」伴学笔记创作活动的第 16 天
青训营项目user相关功能过程记录 在本次青训营项目中可以将相关功能需求划分为user,video,comment等方面,在本次青训营项目中我个人主要负责user相关代码以及功能。以及接口方面的用户注册,用户登录,用户信息等接口。以下我将对其中代码进行记录和分析。 register函数注册用户功能对应用户注册接口,首先获得前端的username和password,之后判断是否用户已经存在,以及判断插入数据是否成功,最后返回用户的token,备注:之后需要修改逻辑判断是否用户名称为空,不能插入空用户
userName := ctx.Query("username")
password := ctx.Query("password")
usi := service.UserImpl{}
u := usi.GetTableUserByUserName(userName)
if userName == u.Username {
ctx.JSON(http.StatusOK, UserLoginResponse{
Response: Response{StatusCode: 1, StatusMsg: "User already exist"},
})
} else {
newUser := repository.TableUser{
Username: userName,
Password: jwt.PswEnCode(password),
}
if usi.InsertTableUser(&newUser) != true {
log.Println("Insert Data Fail")
} else {
log.Println("Insert Data Success")
}
token, _ := jwt.GenToken(userName)
log.Println("registered Id: ", u.Id)
ctx.JSON(http.StatusOK, UserLoginResponse{
Response: Response{StatusCode: 0, StatusMsg: "OK"},
UserId: u.Id,
Token: token,
})
}
}```
其中主要通过InsertTableUser函数将注册的用户通过gorm包登记到mysql数据库之中
```func InsertTableUser(newUser *TableUser) bool {
err := DB.Create(&newUser).Error
if err != nil {
log.Println(err.Error())
return false
}
return true
}
用户登录函数从前端获得用户名称和输入的密码之后,判断是否输入正确之后,返回response以及msg是否正确还是错误
userName := ctx.Query("username")
password := ctx.Query("password")
encodedPassword := jwt.PswEnCode(password)
log.Println("encodedPassword: ", encodedPassword)
usi := service.UserImpl{}
u := usi.GetTableUserByUserName(userName)
if u.Username == "" {
ctx.JSON(http.StatusOK, UserLoginResponse{
Response: Response{StatusCode: 1, StatusMsg: "User Doesn't Exist"},
})
}
if encodedPassword == u.Password {
token, _ := jwt.GenToken(userName)
log.Println("login Id: ", u.Id)
ctx.JSON(http.StatusOK, UserLoginResponse{
Response: Response{StatusCode: 0, StatusMsg: "OK"},
UserId: u.Id,
Token: token,
})
} else {
ctx.JSON(http.StatusOK, UserLoginResponse{
Response: Response{StatusCode: 1, StatusMsg: "Password Error"},
})
}
,主要通过这条语句通过gorm包进行数据库之中查询user是否存在,并获得数据库中的用户信息,方便之后对密码正确与否进行判断
err := DB.Where("username = ?", userName).First(&tableUser).Error