Parcourir la source

feat: Email 是否已注册接口

runningwater il y a 10 mois
Parent
commit
fd20c89281

+ 31 - 0
app/http/controllers/api/v1/auth/signup_controller.go

@@ -43,4 +43,35 @@ func (controller *SignupController) IsPhoneExist(c *gin.Context) {
 	c.JSON(200, gin.H{
 		"exist": user.IsPhoneExist(req.Phone),
 	})
+}
+
+
+func (controller *SignupController) IsEmailExist(c *gin.Context) {
+
+	// 初始化请求对象
+	req := requests.SignupEmailExistRequest{}
+
+	// 解析 JSON 请求
+	if err := c.ShouldBindJSON(&req); err != nil {
+		c.AbortWithStatusJSON(http.StatusUnprocessableEntity, gin.H{
+			"error": "请求参数错误"+ err.Error(),
+		})
+		// 打印错误信息
+		fmt.Println(err.Error())
+		return
+	}
+
+	// 表单验证
+	errs := requests.ValidateSignupEmailExist(&req, c)
+	if len(errs) > 0 {
+		c.AbortWithStatusJSON(http.StatusUnprocessableEntity, gin.H{
+			"errors": errs,
+		})
+		return
+	}
+
+	// 检查数据库并返回响应
+	c.JSON(200, gin.H{
+		"exist": user.IsEmailExist(req.Email),
+	})
 }

+ 32 - 0
app/requests/signup_request.go

@@ -9,6 +9,9 @@ import (
 type SignupPhoneExistRequest struct {
 	Phone string `json:"phone,omitempty" valid:"phone"`
 }
+type SignupEmailExistRequest struct {
+	Email string `json:"email,omitempty" valid:"email"`
+}
 
 func ValidateSignupPhoneExist(data any, c *gin.Context) map[string][]string {
 
@@ -34,4 +37,33 @@ func ValidateSignupPhoneExist(data any, c *gin.Context) map[string][]string {
 
 		// 执行验证
 		return govalidator.New(opts).ValidateStruct()
+}
+
+
+func ValidateSignupEmailExist(data any, c *gin.Context) map[string][]string {
+
+	// 自定义验证规则
+	rules := govalidator.MapData{
+		"email": []string{"required", "min:4", "max:30", "email"},
+	}
+
+	// 自定义错误信息
+	messages := govalidator.MapData{
+		"email": []string{
+			"required:Email 不能为空",
+			"min:Email 长度需大于 4",
+			"max:Email 长度需小于 30",
+			"email:Email 格式不正确,请提供有效的邮箱地址",
+		},
+	}
+
+	opts := govalidator.Options{
+		Data:         data,
+		Rules: 	 rules,
+		TagIdentifier: "valid", // 使用结构体中的valid标签
+		Messages:     messages,
+	}
+
+	// 执行验证
+	return govalidator.New(opts).ValidateStruct()
 }

+ 7 - 1
gohub.http

@@ -6,4 +6,10 @@ Content-Type: application/json
   "phone": "13661164483"
 }
 
-### POST /signup/phone/verify
+### POST /signup/email/exist 注册邮箱是否已存在
+POST {{base_url}}/v1/auth/signup/email/exist HTTP/1.1
+Content-Type: application/json
+
+{
+  "email": "ynwdlxm@163.com"
+}

+ 2 - 0
routes/api.go

@@ -16,6 +16,8 @@ func RegisterAPIRoutes(router *gin.Engine) {
 			suc := new(auth.SignupController)
 			// 注册手机号是否已存在
 			authGroup.POST("/signup/phone/exist", suc.IsPhoneExist)
+			// 注册邮箱是否已存在
+			authGroup.POST("/signup/email/exist", suc.IsEmailExist)
 		}
 	}
 }