diff --git a/dao/user.go b/dao/user.go index 277214c..9ad64e5 100644 --- a/dao/user.go +++ b/dao/user.go @@ -3,6 +3,7 @@ package dao import ( "fmt" "gorm.io/gorm" + "videoplayer/proto" ) type User struct { @@ -27,10 +28,10 @@ func DeleteUserByID(id int) int { return id } -func FindUserByID(id int) User { - var user User - DB.Debug().First(&user, id) - return user +func FindUserByID(id int) []proto.SearchUser { + var users []proto.SearchUser + DB.Debug().Where("id = ?", id).First(&users) + return users } func FindUserByName(name string) User { @@ -40,6 +41,13 @@ func FindUserByName(name string) User { return user } +// 根据name模糊查询,邮箱也是,不查询密码 +func FindUserByNameLike(name string) []proto.SearchUser { + var users []proto.SearchUser + DB.Debug().Where("name LIKE ? OR email LIKE ?", "%"+name+"%", "%"+name+"%").Find(&users) + return users +} + func FindUserByEmail(email string) User { var user User DB.Debug().Where("email = ?", email).First(&user) diff --git a/handler/user.go b/handler/user.go index 5652df0..85ce386 100644 --- a/handler/user.go +++ b/handler/user.go @@ -24,6 +24,7 @@ func SetUpUserGroup(router *gin.Engine) { userGroup.POST("/gqr", GetQRStatus) userGroup.POST("/sqr", SetQRStatus) userGroup.POST("/confirm", ConfirmQRLogin) + userGroup.POST("/search", SearchHandler) } type RLReq struct { @@ -40,6 +41,11 @@ type QRReq struct { IP string `json:"ip" form:"ip"` } +type SearchReq struct { + Keyword string `json:"keyword" form:"keyword"` + ID int `json:"id" form:"id"` +} + func GetScanUUID(c *gin.Context) { var ReqData QRReq if err := c.ShouldBind(&ReqData); err != nil { @@ -173,6 +179,23 @@ func GetQRStatus(c *gin.Context) { } } +func SearchHandler(c *gin.Context) { + var req_data SearchReq + if err := c.ShouldBind(&req_data); err == nil { + if req_data.ID != -1 { + user := service.GetUserByID(req_data.ID) + c.JSON(200, gin.H{"code": proto.SuccessCode, "message": "success", "data": user}) + } else if req_data.Keyword != "" { + users := service.GetUserByNameLike(req_data.Keyword) + c.JSON(200, gin.H{"code": proto.SuccessCode, "message": "success", "data": users}) + } else { + c.JSON(200, gin.H{"code": proto.ParameterError, "message": "error", "data": "无ID 与 关键字"}) + } + } else { + c.JSON(200, gin.H{"error": err.Error(), "code": proto.ParameterError, "message": "error"}) + } +} + func loginHandler(c *gin.Context) { var req_data RLReq tokenString := "" diff --git a/proto/conf.go b/proto/conf.go index 7767a2e..87fe5f4 100644 --- a/proto/conf.go +++ b/proto/conf.go @@ -1,5 +1,7 @@ package proto +import "gorm.io/gorm" + const ( MYSQL_USER = "video_t2" MYSQL_DB = "video_t2" @@ -14,3 +16,11 @@ const ( TOKEN_SECRET = "mfjurnc_32ndj9dfhj" ) + +type SearchUser struct { + gorm.Model + Name string `gorm:"column:name"` + Age int `gorm:"column:age"` + Email string `gorm:"column:email"` + Gender string `gorm:"column:gender"` +} diff --git a/service/userService.go b/service/userService.go index f77b06c..b0fd2fa 100644 --- a/service/userService.go +++ b/service/userService.go @@ -3,6 +3,7 @@ package service import ( "regexp" "videoplayer/dao" + "videoplayer/proto" ) func CreateUser(name string, password, email string) uint { @@ -32,3 +33,11 @@ func ContainsUser(name, email string) bool { } return false } + +func GetUserByID(id int) []proto.SearchUser { + return dao.FindUserByID(id) +} + +func GetUserByNameLike(name string) []proto.SearchUser { + return dao.FindUserByNameLike(name) +}