package service import ( "fmt" "github.com/asaskevich/govalidator" "github.com/gin-gonic/gin" "go-chat/models" "go-chat/utils" "math/rand" "strconv" ) // GetUserList // @Summary 所有用户 // @Tags 用户模块 // @Success 200 {string} json{"code","message"} // @Router /user/getUserList [get] func GetUserList(c *gin.Context) { data := models.GetUserList() c.JSON(200, gin.H{ "message": data, }) } // CreateUser // @Summary 新增用户 // @Tags 用户模块 // @Param username query string false "用户名" // @Param password query string false "密码" // @Param repassword query string false "确认密码" // @Success 200 {string} json{"code","message"} // @Router /user/createUser [get] func CreateUser(c *gin.Context) { user := models.UserBasic{} user.Username = c.Query("username") password := c.Query("password") repassword := c.Query("repassword") salt := fmt.Sprintf("%06d", rand.Int31()) data := models.FindUserByName(user.Username) if data.Username != "" { c.JSON(-1, gin.H{ "message": "用户名已注册!", }) return } if password != repassword { c.JSON(-1, gin.H{ "message": "两次密码不一致", }) return } user.Password = utils.MakePassword(password, salt) user.Salt = salt models.CreateUser(user) c.JSON(200, gin.H{ "message": "新增用户成功", }) } // DeleteUser // @Summary 删除用户 // @Tags 用户模块 // @Param id query string false "id" // @Success 200 {string} json{"code","message"} // @Router /user/deleteUser [get] func DeleteUser(c *gin.Context) { user := models.UserBasic{} id, _ := strconv.Atoi(c.Query("id")) user.ID = uint(id) models.DeleteUser(user) c.JSON(200, gin.H{ "message": "删除用户成功", }) } // UpdateUser // @Summary 修改用户 // @Tags 用户模块 // @param id formData string false "id" // @param username formData string false "username" // @param password formData string false "password" // @param phone formData string false "phone" // @param email formData string false "email" // @Success 200 {string} json{"code","message"} // @Router /user/updateUser [post] func UpdateUser(c *gin.Context) { user := models.UserBasic{} id, _ := strconv.Atoi(c.PostForm("id")) user.ID = uint(id) user.Username = c.PostForm("username") user.Password = c.PostForm("password") user.Phone = c.PostForm("phone") user.Avatar = c.PostForm("icon") user.Email = c.PostForm("email") fmt.Println("update :", user) _, err := govalidator.ValidateStruct(user) if err != nil { fmt.Println(err) c.JSON(200, gin.H{ "code": -1, // 0成功 -1失败 "message": "修改参数不匹配!", "data": user, }) } else { models.UpdateUser(user) c.JSON(200, gin.H{ "code": 0, // 0成功 -1失败 "message": "修改用户成功!", "data": user, }) } } // FindUserByNameAndPwd // @Summary 用户登录 // @Tags 用户模块 // @param username formData string false "username" // @param password formData string false "password" // @Success 200 {string} json{"code","message"} // @Router /user/FindUserByNameAndPwd [post] func FindUserByNameAndPwd(c *gin.Context) { username := c.PostForm("username") password := c.PostForm("password") user := models.FindUserByName(username) if user.Username == "" { c.JSON(200, gin.H{ "message": "该用户不存在", }) return } flag := utils.ValidPassword(password, user.Salt, user.Password) if !flag { c.JSON(200, gin.H{ "message": "密码不正确", }) return } pwd := utils.MakePassword(password, user.Salt) data := models.FindUserByNameAndPwd(username, pwd) c.JSON(200, gin.H{ "message": data, }) }