添加用户搜索功能,根据id搜索,根据关键字搜索

This commit is contained in:
junleea 2024-06-28 10:10:23 +08:00
parent db90205818
commit e624700924
4 changed files with 54 additions and 4 deletions

View File

@ -3,6 +3,7 @@ package dao
import ( import (
"fmt" "fmt"
"gorm.io/gorm" "gorm.io/gorm"
"videoplayer/proto"
) )
type User struct { type User struct {
@ -27,10 +28,10 @@ func DeleteUserByID(id int) int {
return id return id
} }
func FindUserByID(id int) User { func FindUserByID(id int) []proto.SearchUser {
var user User var users []proto.SearchUser
DB.Debug().First(&user, id) DB.Debug().Where("id = ?", id).First(&users)
return user return users
} }
func FindUserByName(name string) User { func FindUserByName(name string) User {
@ -40,6 +41,13 @@ func FindUserByName(name string) User {
return 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 { func FindUserByEmail(email string) User {
var user User var user User
DB.Debug().Where("email = ?", email).First(&user) DB.Debug().Where("email = ?", email).First(&user)

View File

@ -24,6 +24,7 @@ func SetUpUserGroup(router *gin.Engine) {
userGroup.POST("/gqr", GetQRStatus) userGroup.POST("/gqr", GetQRStatus)
userGroup.POST("/sqr", SetQRStatus) userGroup.POST("/sqr", SetQRStatus)
userGroup.POST("/confirm", ConfirmQRLogin) userGroup.POST("/confirm", ConfirmQRLogin)
userGroup.POST("/search", SearchHandler)
} }
type RLReq struct { type RLReq struct {
@ -40,6 +41,11 @@ type QRReq struct {
IP string `json:"ip" form:"ip"` 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) { func GetScanUUID(c *gin.Context) {
var ReqData QRReq var ReqData QRReq
if err := c.ShouldBind(&ReqData); err != nil { 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) { func loginHandler(c *gin.Context) {
var req_data RLReq var req_data RLReq
tokenString := "" tokenString := ""

View File

@ -1,5 +1,7 @@
package proto package proto
import "gorm.io/gorm"
const ( const (
MYSQL_USER = "video_t2" MYSQL_USER = "video_t2"
MYSQL_DB = "video_t2" MYSQL_DB = "video_t2"
@ -14,3 +16,11 @@ const (
TOKEN_SECRET = "mfjurnc_32ndj9dfhj" 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"`
}

View File

@ -3,6 +3,7 @@ package service
import ( import (
"regexp" "regexp"
"videoplayer/dao" "videoplayer/dao"
"videoplayer/proto"
) )
func CreateUser(name string, password, email string) uint { func CreateUser(name string, password, email string) uint {
@ -32,3 +33,11 @@ func ContainsUser(name, email string) bool {
} }
return false return false
} }
func GetUserByID(id int) []proto.SearchUser {
return dao.FindUserByID(id)
}
func GetUserByNameLike(name string) []proto.SearchUser {
return dao.FindUserByNameLike(name)
}