package requests import ( "github.com/gin-gonic/gin" "github.com/thedevsaddam/govalidator" ) type TopicRequest struct { Title string `json:"title,omitempty" valid:"title"` Body string `json:"body,omitempty" valid:"body"` CategoryID string `json:"category_id,omitempty" valid:"category_id"` } func TopicSave(data any, c *gin.Context) map[string][]string { rules := govalidator.MapData{ "title": []string{"required", "min_cn:3", "max_cn:40"}, "body": []string{"required", "min_cn:10", "max_cn:50000"}, "category_id": []string{"required", "exists:categories,id"}, } messages := govalidator.MapData{ "title": []string{"required:标题为必填项", "min_cn:标题长度需至少 3 个字符", "max_cn:标题长度不能超过 40 个字符"}, "body": []string{"required:内容为必填项", "min_cn:内容长度需至少 10 个字符", "max_cn:内容长度不能超过 50000 个字符"}, "category_id": []string{"required:分类为必填项", "exists:分类不存在"}, } return validate(data, rules, messages) }