Przeglądaj źródła

日常保存2024-04-25

Administrator 2 lat temu
rodzic
commit
2bb9060695
8 zmienionych plików z 270 dodań i 140 usunięć
  1. 2 0
      configs/config.go
  2. BIN
      demo.exe
  3. 26 0
      file/saveSql.bat
  4. 100 74
      file/virtual_mall.sql
  5. 5 39
      main.go
  6. 43 0
      router/TestRouter.go
  7. 76 21
      user/user.go
  8. 18 6
      user/userdao.go

+ 2 - 0
configs/config.go

@@ -24,6 +24,8 @@ type User struct {
 	Status        int    `xorm:"'status'" json:"status"`
 	Role_id       int    `xorm:"'role_id'" json:"role_id"`
 	Phone         string `xorm:"'phone'" json:"phone"`
+	Name          string `xorm:"'name'" json:"name"`
+	Avatar        string `xorm:"'avatar'" json:"avatar"`
 	RecommendCode string `xorm:"'recommend_code'" json:"recommend_code"`
 }
 type Role struct {

BIN
demo.exe


+ 26 - 0
file/saveSql.bat

@@ -0,0 +1,26 @@
+@ECHO off
+chcp 65001
+echo 启动sql控制脚本
+echo "1| 保存sql   2| 运行sql覆盖数据库"
+
+set /p var="请输入控制指令 :"
+C:
+cd C:\Program Files\MySQL\MySQL Server 5.7\bin\
+SET dbhost=127.0.0.1
+SET dbuser=root
+SET dbpasswd=root
+SET dbName=virtual_mall
+
+echo 当前控制的mysql和数据库是 :[%dbhost%]%dbuser%@%dbpasswd%/%dbName%
+echo "code %var%"
+
+if %var% == 1 (
+echo [%time%] [保存sql]
+mysqldump -h%dbhost% -u%dbuser% -p%dbpasswd% %dbName% > D:\project\study\kkc\virtual-mall-backend\file\virtual_mall.sql
+) else if %var% == 2 (
+echo [%time%] [运行sql]
+mysql -h%dbhost% -u%dbuser% -p%dbpasswd% %dbName% < D:\project\study\kkc\virtual-mall-backend\file\virtual_mall.sql
+) else (
+echo "运行错误 未知代码:%var%"
+)
+@echo on

Plik diff jest za duży
+ 100 - 74
file/virtual_mall.sql


+ 5 - 39
main.go

@@ -9,6 +9,10 @@ import (
 )
 
 func main() {
+	runGin()
+	//fmt.Println(user.Md5_KKC("123456"))
+}
+func runGin() {
 	configs.ConfigInit()
 	Router := gin.Default()
 
@@ -18,47 +22,9 @@ func main() {
 	router.DetailRouter(apiGroup)
 	router.FileRouter(apiGroup)
 
-	TestRouth(apiGroup)
+	router.TestRouth(apiGroup)
 	apiGroup.GET("/ping", share.JwtMiddleware(), func(context *gin.Context) {
 		context.String(200, "pong")
 	})
 	Router.Run()
 }
-func TestRouth(engine *gin.RouterGroup) {
-	user := engine.Group("/test")
-	{
-		user.GET("/get", testGet)
-		user.POST("/post", testPost)
-		user.PUT("/put", testPut)
-		user.DELETE("/delete", testDelete)
-
-	}
-}
-func testGet(c *gin.Context) {
-	c.JSON(200, gin.H{
-		"message": "get",
-		"code":    200,
-		"data":    make(map[string]interface{}),
-	})
-}
-func testPost(c *gin.Context) {
-	c.JSON(200, gin.H{
-		"message": "post",
-		"code":    200,
-		"data":    make(map[string]interface{}),
-	})
-}
-func testPut(c *gin.Context) {
-	c.JSON(200, gin.H{
-		"message": "put",
-		"code":    200,
-		"data":    make(map[string]interface{}),
-	})
-}
-func testDelete(c *gin.Context) {
-	c.JSON(200, gin.H{
-		"message": "delete",
-		"code":    200,
-		"data":    make(map[string]interface{}),
-	})
-}

+ 43 - 0
router/TestRouter.go

@@ -0,0 +1,43 @@
+package router
+
+import "github.com/gin-gonic/gin"
+
+func TestRouth(engine *gin.RouterGroup) {
+	user := engine.Group("/test")
+	{
+		user.GET("/get", testGet)
+		user.POST("/post", testPost)
+		user.PUT("/put", testPut)
+		user.DELETE("/delete", testDelete)
+
+	}
+}
+
+func testGet(c *gin.Context) {
+	c.JSON(200, gin.H{
+		"message": "get",
+		"code":    200,
+		"data":    make(map[string]interface{}),
+	})
+}
+func testPost(c *gin.Context) {
+	c.JSON(200, gin.H{
+		"message": "post",
+		"code":    200,
+		"data":    make(map[string]interface{}),
+	})
+}
+func testPut(c *gin.Context) {
+	c.JSON(200, gin.H{
+		"message": "put",
+		"code":    200,
+		"data":    make(map[string]interface{}),
+	})
+}
+func testDelete(c *gin.Context) {
+	c.JSON(200, gin.H{
+		"message": "delete",
+		"code":    200,
+		"data":    make(map[string]interface{}),
+	})
+}

+ 76 - 21
user/user.go

@@ -3,6 +3,7 @@ package user
 import (
 	"context"
 	"demo/configs"
+	"demo/router"
 	"demo/share"
 	"fmt"
 	"github.com/gin-gonic/gin"
@@ -20,6 +21,7 @@ func UserRouth(engine *gin.RouterGroup) {
 	user := engine.Group("/user")
 	{
 		user.POST("/login", login)
+		user.POST("/register", register)
 		user.POST("sendSms", SendVerificationCode)
 
 		user.GET("/captcha", VerificationCode)
@@ -63,40 +65,93 @@ func login(c *gin.Context) {
 	var err error
 	username, _ := data("username")
 	password, _ := data("password")
+	t, _ := data("type")
 	// 定义正则表达式
-	regexPattern := `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`
 
-	// 编译正则表达式
-	reg, err := regexp.Compile(regexPattern)
-	if err != nil {
-		fmt.Println("Error compiling regex:", err)
-		return
+	if cast.ToString(t) == "email" {
+		regexPattern := `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`
+		// 编译正则表达式
+		reg, err := regexp.Compile(regexPattern)
+		if err != nil {
+			fmt.Println("编译正则表达式时出错:", err)
+			return
+		}
+		//判断是否为邮箱格式
+		matched := reg.MatchString(cast.ToString(username))
+
+		if !matched {
+			fmt.Println("无效的电子邮件格式.")
+			c.JSON(http.StatusOK, router.CreateResultError(400, "邮箱格式错误!!!"))
+			return
+		}
+	} else if cast.ToString(t) == "phone" {
+		regexPattern := `^1[3-9]\d{9}$`
+		// 编译正则表达式
+		reg, err := regexp.Compile(regexPattern)
+		if err != nil {
+			fmt.Println("编译正则表达式时出错:", err)
+			return
+		}
+		//判断是否为邮箱格式
+		matched := reg.MatchString(cast.ToString(username))
+
+		if !matched {
+			fmt.Println("无效的手机号格式.")
+			c.JSON(http.StatusOK, router.CreateResultError(400, "手机格式错误!!!"))
+			return
+		}
 	}
-	matched := reg.MatchString(cast.ToString(username))
 
-	user, err = logins(cast.ToString(username), cast.ToString(password), matched)
+	user, err = logins(cast.ToString(username), cast.ToString(password), cast.ToString(t))
 
-	if err == nil {
+	if err == nil && user.Id != 0 {
+		fmt.Println("用户登录成功!!!")
 		token, err := share.GenerateToken(cast.ToString(user.Id))
 		if err == nil {
 			c.Header("auth-sign", token)
-			c.JSON(http.StatusOK, gin.H{
-				"code":    200,
-				"message": "成功!!!",
-			})
+			c.JSON(http.StatusOK, router.CreateResultData(map[string]string{"token": token}))
 		} else {
-			c.JSON(http.StatusOK, gin.H{
-				"code":    400,
-				"message": "生成token失败!!!",
-			})
+			c.JSON(http.StatusOK, router.CreateResultError(400, "生成token失败!!!"))
 		}
 	} else {
-		c.JSON(http.StatusOK, gin.H{
-			"code":    401,
-			"message": "用户密码错误!!!",
-		})
+		fmt.Println("用户登录失败!!!")
+		c.JSON(http.StatusOK, router.CreateResultError(401, "用户密码错误!!!"))
 	}
 }
+func register(c *gin.Context) {
+	//data := share.GetJsonAnyParam(c)
+	//var user configs.User
+	//var err error
+	//username, _ := data("username")
+	//password, _ := data("password")
+	//// 定义正则表达式
+	//regexPattern := `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`
+	//
+	//// 编译正则表达式
+	//reg, err := regexp.Compile(regexPattern)
+	//if err != nil {
+	//	fmt.Println("Error compiling regex:", err)
+	//	return
+	//}
+	//判断是否为邮箱格式
+	//matched := reg.MatchString(cast.ToString(username))
+
+	//user, err = logins(cast.ToString(username), cast.ToString(password), matched)
+	//
+	//if err == nil && user.Id != 0 {
+	//	fmt.Println("用户登录成功!!!")
+	//	token, err := share.GenerateToken(cast.ToString(user.Id))
+	//	if err == nil {
+	//		c.Header("auth-sign", token)
+	//		c.JSON(http.StatusOK, router.CreateResult())
+	//	} else {
+	//		c.JSON(http.StatusOK, router.CreateResultError(400, "生成token失败!!!"))
+	//	}
+	//} else {
+	//	fmt.Println("用户登录失败!!!")
+	//	c.JSON(http.StatusOK, router.CreateResultError(401, "用户密码错误!!!"))
+	//}
+}
 
 // SendVerificationCode
 func SendVerificationCode(c *gin.Context) {

+ 18 - 6
user/userdao.go

@@ -1,6 +1,7 @@
 package user
 
 import (
+	"crypto/md5"
 	"demo/configs"
 	"demo/share"
 	"fmt"
@@ -8,17 +9,22 @@ import (
 	"strconv"
 )
 
-func logins(username, password string, matched bool) (configs.User, error) {
+func logins(username, password, t string) (configs.User, error) {
 	user := configs.User{}
 	var err error
 	fmt.Println("username", username, "password", password)
-	if matched {
-		_, err = configs.Engine.Table("user").Where("username = ?", username).Where("password = ?", password).Get(&user)
-	} else {
-		_, err = configs.Engine.Table("user").Where("phone = ?", username).Where("password = ?", password).Get(&user)
+	hash := md5.New()
+	hash.Write([]byte("kkc-" + password))
+
+	pwd := Md5_KKC(password)
+	fmt.Println("678", username, pwd, t)
+	//md5摘要
+	if t == "email" {
+		_, err = configs.Engine.Table("user").Where("email = ?", username).Where("password = ?", pwd).Get(&user)
+	} else if t == "phone" {
+		_, err = configs.Engine.Table("user").Where("phone = ?", username).Where("password = ?", pwd).Get(&user)
 	}
 
-	fmt.Println(err)
 	if err == nil {
 		return user, err
 	}
@@ -38,3 +44,9 @@ func sendSms(matched bool, username string) {
 		share.SendSms(strconv.Itoa(int(randomNum.Int64())), username)
 	}
 }
+
+func Md5_KKC(str string) string {
+	hash := md5.New()
+	hash.Write([]byte("kkc-" + str))
+	return fmt.Sprintf("%x", hash.Sum(nil))
+}

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików