145 lines
3.5 KiB
Go
145 lines
3.5 KiB
Go
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,
|
|
})
|
|
}
|