Commit 99abd615 by huangchengyi

1.0

parent 92478a76
package controller
import (
"github.com/gin-gonic/gin"
"search_server/pkg/common"
"search_server/service"
)
/*
类似型号搜索
@param source 来源:1国产 2普通
@param goods_name_en 国外类似型号名称
*/
func AlikeSearch(ctx *gin.Context) {
common.PrintDebugHeader(ctx) //debug
service := service.AlikeService{}
apiData := service.AlikeSearchInfo(ctx)
common.Output(ctx,apiData.ErrorCode, apiData.ErrorMsg, apiData.Data)
common.PrintDebugHtml(ctx,"-----执行结束----") //debug
}
......@@ -19,15 +19,13 @@ func InitRouter() *gin.Engine {
c.String(200,"ok")
})
//联营参数选择搜索
//联营参数选择搜索
v2 := r.Group("/v2/optimum/")
//所有新增的接口
v2 := r.Group("/api/")
{
v2.POST("attr", controller.OptimumAttr)
v2.GET("attr", controller.OptimumAttr)
v2.POST("goods", controller.OptimumGoods)
v2.GET("goods", controller.OptimumGoods)
v2.POST("alike", controller.AlikeSearch)
v2.GET("alike", controller.AlikeSearch)
}
//商品分类
v3 := r.Group("/optimum/")
{
v3.POST("attr", controller.OptimumAttr)
......
package service
import (
"github.com/gin-gonic/gin"
"github.com/iancoleman/orderedmap"
"github.com/tidwall/gjson"
"search_server/model"
"search_server/pkg/common"
"search_server/pkg/es"
"search_server/service/query"
"strconv"
"strings"
)
type AlikeService struct {}
/*
返回供应商详情
*/
func (qs *AlikeService) AlikeSearchInfo(ctx *gin.Context) (results model.LyResponse) {
//索引字典
queryString, err := query.GetDemeQuery(ctx)
if err != nil {
results.ErrorCode = 1001;
results.ErrorMsg = err.Error()
return
}
esResult, err := es.CurlES("zhuanmai", queryString)
if err != nil {
results.ErrorCode = 0;
results.ErrorMsg = err.Error()
return
}
common.PrintDebugHtml(ctx,esResult)
//判断返回总条数
total := gjson.Get(esResult, "hits.total").Int()
if total == 0 {
results.ErrorCode = 0;
results.ErrorMsg = "查询没有数据"
return
}
goodsIds := make([]string,0) //goods_id
gjArray := gjson.Get(esResult, "hits.hits.#._source").Array()
for _, item := range gjArray {
goodsIds = append(goodsIds, item.Get("goods_id").String())
}
//拼接返回数据
A := orderedmap.New() //初始化有序map,拼接data 数据
results.ErrorCode = 0;
results.ErrorMsg = "查询成功";
page := PageClear(ctx,total);
page["took"] = gjson.Get(esResult, "took").Int()
A.Set("page",page) //分页信息
common.PrintDebugHtml(ctx,goodsIds)
//组装商品详情
endArr := make([]model.DullGoodsData,0)
goodsList, _ := GetGoodsInfo(ctx,goodsIds)
for _,v := range goodsList{
GoodsUrl := ""
BrandUrl := ""
referer := ctx.GetHeader("Referer")
if referer != ""{
dome := strings.Split(referer,".com")
if len(dome) > 0{
if v.SupplierName == "猎芯自营" {
GoodsUrl = dome[0]+".com/item/"+v.GoodsId+".html"
BrandUrl = dome[0]+".com/v3/brand/list/"+strconv.Itoa(v.BrandId)+".html"
}else{
GoodsUrl = dome[0]+".com/goods_"+v.GoodsId+".html"
BrandUrl = dome[0]+".com/v3/brand/list/"+strconv.Itoa(v.BrandId)+".html"
}
}
}
endArr = append(endArr,model.DullGoodsData{
ApiGoods:v,
GoodsUrl: GoodsUrl,
BrandUrl: BrandUrl,
})
}
A.Set("goods_lists",endArr)
results.Data = A;
return
}
package query
import (
"github.com/gin-gonic/gin"
"gopkg.in/olivere/elastic.v5"
"regexp"
"search_server/pkg/common"
"strings"
)
/*
获取国产查询es语句
*/
func GetDemeQuery(ctx *gin.Context) (param string, err error){
query := elastic.NewBoolQuery()
goods_name := ctx.Request.FormValue("alike_goods_en/eq")
if goods_name != "" { //型号搜索
replace, _ := regexp.Compile("[^A-Za-z0-9]+")
goods_name = replace.ReplaceAllString(goods_name, "")
goods_name = strings.ToUpper(goods_name)
query.Must(elastic.NewTermQuery("alike_goods_en.raw",goods_name))
}
page := ctx.Request.FormValue("page")
page_size := ctx.Request.FormValue("page_size")
page_from := 0
if page == "" {
page = "1";
}
if page_size == "" {
page_size = "10";
}
if page != "1" {
page_from = (common.MyInt(page)-1)*common.MyInt(page_size)
if page_from >10000 {
page_from = 10000;
}
}
source := elastic.NewSearchSource()
source.FetchSourceContext(elastic.NewFetchSourceContext(true).Include("goods_id")) //显示字段
source.Size(common.MyInt(page_size))
source.From(page_from)
source.Sort("status",true) //true asc,自营数据在前
source.Sort("sort",false) //true asc,可购买在前
source.Sort("stock",false) //库存排序,最多库存最前
source.Query(query)
searchRequest := elastic.NewSearchRequest().Source(source)
param, _ = searchRequest.Body()
common.PrintDebugHtml(ctx,param)
return
}
#适用于更新GOSKU代码服务,并且重启代码
#!/bin/bash
cd /data/golang/search_server
git reset --hard HEAD
git pull origin master
filename="/data/golang/search_server/cmd/http/http"
rm -f $filename
export GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
go build -o /data/golang/search_server/cmd/http/http /data/golang/search_server/cmd/http/http_server.go
chmod +x /data/golang/search_server/cmd/http/http
chmod +x /data/golang/search_server/update.sh
supervisorctl restart go_search_server_9008:*
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment