添加用户搜索功能,根据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 (
"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)

View File

@ -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 := ""

View File

@ -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"`
}

View File

@ -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)
}