From b1564b91ffe6ca751c1e8e187d7424ba044ab45b Mon Sep 17 00:00:00 2001 From: "DESKTOP-4RNDQIC\\29019" <290198252@qq.com> Date: Sat, 6 Feb 2021 01:46:59 +0800 Subject: [PATCH] =?UTF-8?q?es=20=E9=A9=B1=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/hardware.go | 23 ++++++++++++++++++++++ db/elasticEngine.go | 32 +++++++++++++++++++++--------- docs/docs.go | 2 +- main.go | 4 ++-- model/blog.go | 2 +- model/file.go | 2 +- model/hardware.go | 7 +++++-- model/model.go | 4 ++-- model/port.go | 9 ++++++--- test/portData_test.go | 44 ++++++++++++++++++++++++++++++++++++++---- utils/OrmTimeHook.go | 5 +++-- 11 files changed, 107 insertions(+), 27 deletions(-) diff --git a/controller/hardware.go b/controller/hardware.go index a082042..dccc4a1 100644 --- a/controller/hardware.go +++ b/controller/hardware.go @@ -52,6 +52,29 @@ func DeleteHardWare(c *gin.Context) { resp.Data = nil } +func SearchDoc(c *gin.Context){ + type ReqSearch struct{ + Content string `json:"content"` + } + resp := RespBase{"unkown error", -231, nil} + defer func() { + c.JSON(200, resp) + }() + req := ReqSearch{} + e := c.BindJSON(&req) + if nil != e { + log.Print(e) + print(e) + return + } + + + resp.Data = nil + resp.Msg = "OK" + resp.Status = 0 + +} + func UpdateHardWare(c *gin.Context) { } diff --git a/db/elasticEngine.go b/db/elasticEngine.go index bb35423..9aaa9d9 100644 --- a/db/elasticEngine.go +++ b/db/elasticEngine.go @@ -1,11 +1,14 @@ package db import ( + "background/utils" + "encoding/json" + "reflect" + "github.com/pkg/errors" "golang.org/x/net/context" "gopkg.in/olivere/elastic.v7" "qiniupkg.com/x/log.v7" - "reflect" ) const( ERROR_PTR = "null pointer error" @@ -60,8 +63,9 @@ func (p *ElkEngine)Delete(query elastic.Query,index string) error{ /* */ -func (p *ElkEngine)Query(index string,query elastic.Query,data interface{}, +func (p *ElkEngine)Query(index string,query elastic.Query,typ reflect.Type, limit int,offset int) ([]interface{},[]string,error) { + rets := []interface{}{} if nil != p{ if(limit == 0){ res, err := p.cli.Search(index).Query(query).Do(context.Background()) @@ -69,9 +73,7 @@ func (p *ElkEngine)Query(index string,query elastic.Query,data interface{}, print(err) return nil,nil,err } - //var typ Employee - typ := reflect.TypeOf(data) - rets := res.Each(typ) + id := []string{} for _,vs := range res.Hits.Hits{ id = append(id,vs.Id) @@ -83,13 +85,25 @@ func (p *ElkEngine)Query(index string,query elastic.Query,data interface{}, print(err) return nil,nil,err } - - //var typ Employee - typ := reflect.TypeOf(data) - rets := res.Each(typ) id := []string{} for _,vs := range res.Hits.Hits{ id = append(id,vs.Id) + data,e := vs.Source.MarshalJSON() + if nil != e{ + log.Print(e.Error()) + } + obj := utils.ReflectMakeNew(typ) + mapobj := map[string]interface{}{} + e = json.Unmarshal(data,&mapobj) + if nil != e{ + log.Print(e.Error()) + } + // for k,_ := range mapobj{ + // value := reflect.ValueOf(obj) + // } + log.Print(obj) + rets = append(rets,obj) + log.Print(string(data)) } return rets,id,nil } diff --git a/docs/docs.go b/docs/docs.go index 154785c..890d139 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -1,6 +1,6 @@ // GENERATED BY THE COMMAND ABOVE; DO NOT EDIT // This file was generated by swaggo/swag at -// 2020-06-24 21:33:14.5754792 +0800 CST m=+0.035031801 +// 2021-01-27 22:40:54.1593671 +0800 CST m=+0.052880501 package docs diff --git a/main.go b/main.go index 94fc8fb..c0780e8 100644 --- a/main.go +++ b/main.go @@ -149,7 +149,7 @@ func main() { api.POST("/hardware", controller.AddHardware) // 新增硬件 api.GET("/hardware", controller.ReadHardWare) // 读取硬件 api.DELETE("/hardware", controller.DeleteHardWare) // 读取硬件 - + api.POST("/doc_search",) api.PUT("/file", fileController.OnFileUploadFile) // 上传文件 api.GET("/file", fileController.DownloadFile) // 下载 文件 api.GET("/filelist", fileController.FileList) // 文件列表 @@ -173,7 +173,7 @@ func main() { api.POST("/getbook", controller.GetBook) // 单书籍数据 api.POST("/getbooks", controller.GetPageBook) // 批量书籍 api.POST("/delbook", controller.DeleteMemos) // 删除书籍 - + } openapi := r.Group("openapi") diff --git a/model/blog.go b/model/blog.go index 13b592d..6bc81d9 100644 --- a/model/blog.go +++ b/model/blog.go @@ -4,7 +4,7 @@ import ( "background/db" "background/logs" "fmt" - "strings" + "strings" "time" "github.com/pkg/errors" diff --git a/model/file.go b/model/file.go index c3b72cb..d2241c6 100644 --- a/model/file.go +++ b/model/file.go @@ -2,9 +2,9 @@ package model import ( "background/db" + "background/logs" "fmt" "log" - "background/logs" ) type File struct { diff --git a/model/hardware.go b/model/hardware.go index bea880b..11b9544 100644 --- a/model/hardware.go +++ b/model/hardware.go @@ -3,6 +3,8 @@ package model import ( "background/db" "background/utils" + "reflect" + "github.com/pkg/errors" "gopkg.in/olivere/elastic.v3" "qiniupkg.com/x/log.v7" @@ -11,6 +13,7 @@ import ( const ( ERR_COLUMN_EXISTED = "column_existed" ) + func HardwareTypeMapping() (string){ return `"mappings":{ "hardware":{ @@ -62,7 +65,7 @@ func (this *Hardware )CreateHardware( ) error{ func GetHardwares(limit int,size int) ([]Hardware,error){ var ret []Hardware - data,ids,e := db.GetElastic().Query("hardware_data",nil,Hardware{},limit,size) + data,ids,e := db.GetElastic().Query("hardware_data",nil,reflect.TypeOf(Hardware{}),limit,size) if nil != e{ return nil,e } @@ -77,7 +80,7 @@ func GetHardwares(limit int,size int) ([]Hardware,error){ func QueryHardwares(query elastic.Query,limit int,offset int) ([]Hardware,error){ var ret []Hardware - data,ids,e := db.GetElastic().Query("hardware_data",query,Hardware{},limit,offset) + data,ids,e := db.GetElastic().Query("hardware_data",query,reflect.TypeOf(Hardware{}),limit,offset) log.Print(data) if nil != e{ return nil,e diff --git a/model/model.go b/model/model.go index 572aead..a573da3 100644 --- a/model/model.go +++ b/model/model.go @@ -1,12 +1,12 @@ package model import ( + "background/db" + "background/logs" "background/utils" "crypto/md5" "fmt" "log" - "background/db" - "background/logs" ) type Users struct { diff --git a/model/port.go b/model/port.go index 54beb81..9dfbe7e 100644 --- a/model/port.go +++ b/model/port.go @@ -2,12 +2,14 @@ package model import ( "background/db" + "reflect" + "strings" + "ubntgo/logger" + "github.com/go-openapi/errors" json "github.com/json-iterator/go" "gopkg.in/olivere/elastic.v3" "qiniupkg.com/x/log.v7" - "strings" - "ubntgo/logger" ) type Field struct { @@ -65,7 +67,7 @@ func MysqlToElasticSearchMapping(types string,Key string) string{ // 不同类型db之间进行缓存 func QueryDocument(query elastic.Query,limit int,offset int) ([]Hardware,error){ var ret []Hardware - data,ids,e := db.GetElastic().Query("doc",query,Hardware{},limit,offset) + data,ids,e := db.GetElastic().Query("doc",query,reflect.TypeOf(Hardware{}),limit,offset) log.Print(data) if nil != e{ return nil,e @@ -122,6 +124,7 @@ func PortDocumentToElasticsearch(tblname string ) error{ if nil != e{ log.Print(e.Error()) } + log.Print("index not existed , create " + tblname) } }else{ props := map[string]interface{}{} diff --git a/test/portData_test.go b/test/portData_test.go index 57ab66b..f92b74c 100644 --- a/test/portData_test.go +++ b/test/portData_test.go @@ -5,12 +5,16 @@ import ( "background/db" "background/logs" "background/model" + "background/utils" "log" + "reflect" "testing" + + "github.com/olivere/elastic" ) func InitConfig() { - e := config.Init("user.yaml") + e := config.Init("../user.yaml") if nil != e { log.Println(e.Error()) } @@ -33,9 +37,9 @@ func InitRedisConfig() { func InitElasticSearch() { e := db.GetElastic().CreateIndex("hardware", model.HardwareTypeMapping()) if nil != e { - } } + func InitLogs() { logs.Init(config.GetLogConfig().Dir, config.GetLogConfig().File, config.GetLogConfig().Level, config.GetLogConfig().SaveFile) } @@ -44,10 +48,42 @@ func TestPortDocToElastic(t *testing.T) { InitLogs() InitRedisConfig() InitMysql() - InitElasticSearch() db.InitELK() e := model.PortDocumentToElasticsearch("doc") if nil != e { - t.Error(e) + log.Print(e.Error()) } } + + +func TestReflect(t *testing.T){ + type XX struct{ + a int16 `json:"bb"` + b string `json: "cc"` + } + x := utils.ReflectMakeNew(reflect.TypeOf(1212)) + y := utils.ReflectMakeNew(reflect.TypeOf(XX{})) + + log.Print(x) + log.Print(y) + remap := utils.ReflectTagMap(reflect.TypeOf(XX{})) + log.Print(remap) + t.Log(x) +} + +func TestQueryDoc(t *testing.T){ + InitConfig() + InitLogs() + InitRedisConfig() + InitMysql() + db.InitELK() + + query := elastic.NewTermQuery("content", "title") + //_ = elastic.NewQueryStringQuery(fieldValue) //关键字查询 + searchResult,titles,e := db.GetElastic().Query("doc",query,reflect.TypeOf(model.Doc{}),10,0) + if nil != e{ + log.Print(e.Error()) + } + log.Print(searchResult) + log.Print(titles) +} \ No newline at end of file diff --git a/utils/OrmTimeHook.go b/utils/OrmTimeHook.go index 813ab5f..ad1c0a2 100644 --- a/utils/OrmTimeHook.go +++ b/utils/OrmTimeHook.go @@ -1,9 +1,10 @@ package utils + import ( - "fmt" - "time" "database/sql/driver" + "fmt" "reflect" + "time" ) type OrmTime struct {