青训营项目user相关功能过程记录 | 青训营笔记

110 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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