goweb-signup注册功能实现

发布于:2025-05-01 ⋅ 阅读:(25) ⋅ 点赞:(0)

注册功能

route.go

package router

import (
	"bluebell/controller"
	"github.com/gin-gonic/gin"
)

func SetupRouter(mode string) *gin.Engine {
	r := gin.Default()
	r.POST("/signup", controller.SignupHandler)

	return r
}

UserController.go

package controller

import (
	"bluebell/logic"
	"bluebell/models"
	"github.com/gin-gonic/gin"
	"go.uber.org/zap"
	"net/http"
)

func SignupHandler(c *gin.Context) {
	// 1。获取参数和参数校验 -> controller
	p := new(models.ParamSignup)
	err := c.ShouldBindJSON(p)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"msg": err.Error(),
		})
		zap.L().Error("Bad query params", zap.Error(err))
		return
	}
	if len(p.Username) == 0 || len(p.Password) == 0 || len(p.RePassword) == 0 || p.Password != p.RePassword {
		c.JSON(http.StatusOK, gin.H{
			"msg": err.Error(),
		})
		return
	}
	// 2。业务处理
	logic.Signup(p)
	// 3。返回响应
	c.JSON(http.StatusOK, "ok")

}

UserLogic.go

package logic

import (
	"bluebell/dao/mysql"
	"bluebell/models"
	"bluebell/pkg/snowflake"
)

func Signup(p *models.ParamSignup) {
	// 1.判断用户是否存在
	exist := mysql.QueryUserByUsername(p.Username)
	if exist {
		return
	}
	// 2. 生成UID
	uerId, err := snowflake.GetID()
	if err != nil {
		return
	}
	user := models.User{
		UserId:   uerId,
		Username: p.Username,
		Password: p.Password,
	}
	// 3. 保存进数据库
	mysql.InsertUser(user)
}

UserDao.go

package mysql

import "bluebell/models"

func QueryUserByUsername(username string) bool {
	// 执行SQL语句
	// SELECT * FROM user WHERE id = ?
	var count int64
	db.Where("username = ?", username).Count(&count)
	return count > 0

}

func InsertUser(user models.User) {
	// 执行SQL语句
	// INSERT INTO user (userId, username, password) VALUES (?, ?, ?)
	if err := db.Create(&user); err != nil {
		return
	}
	return

}

网站公告

今日签到

点亮在社区的每一天
去签到