diff --git a/es/es_search.go b/es/es_search.go index e74b38e..8bc1160 100644 --- a/es/es_search.go +++ b/es/es_search.go @@ -6,6 +6,7 @@ import ( "centerBook/image" "centerBook/kongfz" "centerBook/tail" + "centerBook/util/redisClient" "context" "encoding/json" "fmt" @@ -1446,7 +1447,7 @@ func (svc *ESSearchService) BatchGetBookBaseInfoES(c *gin.Context) ([]ESBook, in } // ===== saleSelect 对应字段映射 ===== - saleSelect := c.DefaultQuery("saleSelect", "") + saleSelect := c.DefaultQuery("saleSelect", "2") saleField := map[string]string{ "7": "day_sale_7", "15": "day_sale_15", @@ -1848,6 +1849,8 @@ func (svc *ESSearchService) BatchGetBookBaseInfoES(c *gin.Context) ([]ESBook, in svc.ES.Client.Search.WithTrackTotalHits(true), ) + fmt.Printf("[DEBUG] ES Query Response:\n%s\n", res) + if err != nil { fmt.Printf("[ERROR] ES.Client.Search error: %v\n", err) return nil, 0, err @@ -1867,6 +1870,7 @@ func (svc *ESSearchService) BatchGetBookBaseInfoES(c *gin.Context) ([]ESBook, in if err != nil { return nil, 0, fmt.Errorf("读取响应失败: %v", err) } + // 检查是否有数据 if len(rawData) == 0 { return nil, 0, fmt.Errorf("ES返回空响应") @@ -1969,13 +1973,33 @@ func (svc *ESSearchService) SearchBooksHandler(c *gin.Context) { return } + ctx := context.Background() + + db4Client, err := redisClient.GetClientByName("db4") + if err == nil { + val, err := db4Client.Get(ctx, isbn).Result() + if err == nil && val != "" { + log.Printf("[SearchBooksHandler] 从 Redis db4 查询到数据: %s", isbn) + var esBook ESBook + if err := json.Unmarshal([]byte(val), &esBook); err == nil { + responseList := []ESBookResponse{esBook.ConvertToResponse()} + c.JSON(200, gin.H{ + "count": 1, + "data": responseList, + }) + return + } else { + log.Printf("[SearchBooksHandler] Redis 数据解析失败: %v", err) + } + } + } + result, err := svc.SearchBooks(isbn) if err != nil { c.JSON(500, gin.H{"error": "ES 查询失败", "details": err.Error()}) return } - // 转换为Java兼容的响应格式 responseList := make([]ESBookResponse, 0, len(result)) for _, book := range result { responseList = append(responseList, book.ConvertToResponse()) @@ -1987,14 +2011,6 @@ func (svc *ESSearchService) SearchBooksHandler(c *gin.Context) { }) } func (svc *ESSearchService) SearchBookByISBNHandler(c *gin.Context) { - // 访问 http://localhost:8095 连接 - //resp, err := http.Get("http://localhost:8095") - //if err != nil { - // // 请求失败时处理错误 - // fmt.Println("Error:", err) - // return - //} - //defer resp.Body.Close() // 确保响应体被关闭 isbn := c.Query("isbn") if isbn == "" { @@ -2005,7 +2021,32 @@ func (svc *ESSearchService) SearchBookByISBNHandler(c *gin.Context) { log.Printf("[SearchBookByISBNHandler] 查询 ISBN: %s", isbn) - // 1. 先从 ES 查询 + ctx := context.Background() + + db4Client, err := redisClient.GetClientByName("db4") + fmt.Println(db4Client) + + if err != nil { + log.Printf("[SearchBookByISBNHandler] 获取 Redis db4 客户端失败: %v", err) + } else { + val, err := db4Client.Get(ctx, isbn).Result() + if err == nil && val != "" { + log.Printf("[SearchBookByISBNHandler] 从 Redis db4 查询到数据: %s", isbn) + var esBook ESBook + if err := json.Unmarshal([]byte(val), &esBook); err == nil { + responseData := esBook.ConvertToResponse() + c.JSON(200, gin.H{ + "data": responseData, + }) + return + } else { + log.Printf("[SearchBookByISBNHandler] Redis 数据解析失败: %v", err) + } + } else { + log.Printf("[SearchBookByISBNHandler] Redis db4 中未找到 ISBN: %s", isbn) + } + } + result, err := svc.SearchBookByISBN(isbn) if err != nil { log.Printf("[SearchBookByISBNHandler] ES 查询失败: %v", err) @@ -2016,7 +2057,6 @@ func (svc *ESSearchService) SearchBookByISBNHandler(c *gin.Context) { if result == nil { log.Printf("[SearchBookByISBNHandler] ES 中未找到 ISBN: %s,从孔夫子抓取", isbn) - // 2. ES 没有,从孔夫子获取 apiBook, err := kongfz.GetBookImageByISBN(isbn, "CALF_ELEPHANT_PROXY", "1297757178467602432", "QgQBvP7f") if err != nil { log.Printf("[SearchBookByISBNHandler] 孔夫子 API 查询失败: %v", err) @@ -2031,7 +2071,6 @@ func (svc *ESSearchService) SearchBookByISBNHandler(c *gin.Context) { log.Printf("[SearchBookByISBNHandler] 获取到图书信息: %+v", apiBook.Data) - // 3. 下载并上传 book_pic pddBookPicURL := "" if apiBook.Data.BookPic != "" { url, err := image.DownloadAndUploadBookImage(apiBook.Data.BookPic, isbn, "true", apiBook.Data.BookName, "true") @@ -2043,7 +2082,6 @@ func (svc *ESSearchService) SearchBookByISBNHandler(c *gin.Context) { } } - // 4. 下载并上传 book_pic_s pddBookPicSURL := "" if apiBook.Data.BookPicS != "" { url, err := image.DownloadAndUploadBookImage(apiBook.Data.BookPicS, isbn, "true", apiBook.Data.BookName, "true") @@ -2055,15 +2093,12 @@ func (svc *ESSearchService) SearchBookByISBNHandler(c *gin.Context) { } } - // 5. 转换为 ESBook esBook := ConvertKongfzToESBook(apiBook) - // 替换 BookPicS 和 BookPic 的 PDD URL esBook.BookPicS.PddResponse = pddBookPicSURL esBook.BookPic.PddPath = pddBookPicURL //log.Printf("[SearchBookByISBNHandler] 写入 ES: %+v", esBook) - // 6. 写入 ES result, err = svc.AddBookToES(c.Request.Context(), esBook) if err != nil { log.Printf("[SearchBookByISBNHandler] 写入 ES 失败: %v", err) @@ -2076,7 +2111,6 @@ func (svc *ESSearchService) SearchBookByISBNHandler(c *gin.Context) { //log.Printf("[SearchBookByISBNHandler] 从 ES 查询到图书: %+v", result) } - // 转换为Java兼容的响应格式 responseData := result.ConvertToResponse() c.JSON(200, gin.H{ "data": responseData, diff --git a/main.go b/main.go index eef30d8..83bb2cc 100644 --- a/main.go +++ b/main.go @@ -27,6 +27,7 @@ import ( "github.com/go-redis/redis/v8" "centerBook/es" + "centerBook/util/redisClient" "github.com/gin-gonic/gin" _ "github.com/go-sql-driver/mysql" @@ -174,22 +175,25 @@ func main() { //) /** 新ES,任务2 **/ - //esClient, err := es.NewESClient( - // []string{"http://localhost:9200"}, - // "elastic", - // "zDzSXel3PFwx9=6Ybmqv", - //) - /** ES2 本地测试 **/ esClient, err := es.NewESClient( - []string{"http://36.212.1.63:9200"}, + []string{"http://localhost:9200"}, "elastic", "zDzSXel3PFwx9=6Ybmqv", ) + ///** ES2 本地测试 **/ + //esClient, err := es.NewESClient( + // []string{"http://36.212.1.63:9200"}, + // "elastic", + // "zDzSXel3PFwx9=6Ybmqv", + //) + if err != nil { log.Fatalf("初始化 ES 客户端失败: %s", err) } esService := es.NewESSearchService(esClient) + + redisClient.AddClient("db4", "36.212.20.113:7963", "j8nZ4jra2E", 4) // =================================================================== // 3. 初始化IP日志路径 @@ -295,7 +299,7 @@ func main() { // 全字段搜索 r.GET("/api/es/searchAll", esService.SearchBooksAllFieldsHandler) // 根据条件查询 ES 图书信息 - r.GET("/api/es/getBookBaseInfoES", esService.SearchBookBaseInfoESHandler) + //r.GET("/api/es/getBookBaseInfoES", esService.SearchBookBaseInfoESHandler) // 新:核价软件用批量获取 r.GET("/api/es/batchGetBookBaseInfoES", esService.BatchGetBookBaseInfoESHandler) // 多条件高级搜索