Commit ffde30a9 by huangchengyi

Merge branch 'dev' of http://119.23.72.7/mushishixian/search_server into dev

parents 3a5ed520 619a1f25
/go.sum /go.sum
/.idea/ /.idea/
config.ini config.ini
\ No newline at end of file gowatch.yml
*.exe
*.exe~
cmd.exe~
/cmd/logs/
/cmd/*.exe~
/cmd/logs
File mode changed
set MICRO_REGISTRY=etcd
set MICRO_REGISTRY_ADDRESS=192.168.2.232:2379
go run ../cmd/search_http_server.go -config=../conf/config.ini
\ No newline at end of file
...@@ -3,6 +3,7 @@ package main ...@@ -3,6 +3,7 @@ package main
import ( import (
"flag" "flag"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/micro/go-micro/v2/client/grpc"
"github.com/micro/go-micro/v2/web" "github.com/micro/go-micro/v2/web"
"log" "log"
"search_server/boot" "search_server/boot"
...@@ -23,6 +24,21 @@ func main() { ...@@ -23,6 +24,21 @@ func main() {
r := gin.New() r := gin.New()
gin_.BootStrap(r) gin_.BootStrap(r)
c:=grpc.NewClient()
r:=gin.New()
r.Handle("GET","/test", func(ctx *gin.Context) {
news
c:=Course.NewCourseService("api.jtthink.com.course",c)
course_rsp,_:=c.ListForTop(context.Background(),&Course.ListRequest{Size:10})
ctx.JSON(200,gin.H{"Result":course_rsp.Result})
})
service:=web.NewService(
web.Name("api.jtthink.com.http.course"),
web.Handler(r),
)
port := config.Get("web.port").String() port := config.Get("web.port").String()
//web改成micro 就是grpc,并直接注册到etcd里面 //web改成micro 就是grpc,并直接注册到etcd里面
service := web.NewService( service := web.NewService(
......
...@@ -5,8 +5,8 @@ import ( ...@@ -5,8 +5,8 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/micro/go-micro/v2/web" "github.com/micro/go-micro/v2/web"
"search_server/boot" "search_server/boot"
"search_server/controller"
_ "search_server/controller" _ "search_server/controller"
"search_server/framework/gin_"
"search_server/pkg/config" "search_server/pkg/config"
) )
...@@ -19,7 +19,11 @@ func main() { ...@@ -19,7 +19,11 @@ func main() {
} }
gin.SetMode(config.Get("web.mode").String()) gin.SetMode(config.Get("web.mode").String())
r := gin.New() r := gin.New()
gin_.BootStrap(r)
//路由
r.POST("/search/bom/autospu", controller.AutoSpu)
r.POST("/search/bom/recommend", controller.Recommend)
port := config.Get("web.port").String() port := config.Get("web.port").String()
//web改成micro 就是grpc,并直接注册到etcd里面 //web改成micro 就是grpc,并直接注册到etcd里面
......
package controller package controller
import ( import (
"fmt"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"search_server/framework/gin_" "search_server/pkg/common"
"search_server/protopb/bom"
"search_server/service" "search_server/service"
) )
func init() { //搜索型号
bomService := service.NewBomServiceImpl() func AutoSpu(c *gin.Context) {
gin_.NewBuilder().WithService(bomService). goodsName, _ := c.GetPostForm("goods_name")
WithMiddleware(Check_Middleware()). goods := service.AutoSpu(goodsName)
WithMiddleware(Cors_Middleware()). var errCode int
WithEndpoint(AutoSpuEndpoint(bomService)). if len(goods) == 0 {
WithRequest(AutoSpuRequest()). errCode = 1
WithResponse(AutoSpuResponse()).Build("/search/bom/autospu", "POST")
gin_.NewBuilder().WithService(bomService).
WithMiddleware(Check_Middleware()).
WithMiddleware(Cors_Middleware()).
WithEndpoint(RecommendEndpoint(bomService)).
WithRequest(RecommendRequest()).
WithResponse(RecommendResponse()).Build("/search/bom/recommend", "POST")
}
//获取列表相关
func AutoSpuEndpoint(c *service.BomServiceImpl) gin_.Endpoint {
return func(context *gin.Context, request interface{}) (response interface{}, err error) {
rsp := &bom.AutoSpuResponse{}
err = c.AutoSpu(context, request.(*bom.AutoSpuRequest), rsp)
return rsp, err
} }
} res := common.Response{
ErrCode: errCode,
//这个函数的作用是怎么处理请求 ErrMsg: "",
func AutoSpuRequest() gin_.EncodeRequestFunc { Data: goods,
return func(context *gin.Context) (i interface{}, e error) {
bReq := &bom.AutoSpuRequest{}
err := context.BindQuery(bReq) //使用的是query 参数
bReq.GoodsName, _ = context.GetPostForm("goods_name")
if err != nil {
return nil, err
}
return bReq, nil
} }
c.JSON(200, res)
} }
//这个函数作用是:怎么处理响应结果 //获取推荐列表
func AutoSpuResponse() gin_.DecodeResponseFunc { func Recommend(c *gin.Context) {
return func(context *gin.Context, res interface{}) error { req := &common.RecommendRequest{}
context.JSON(200, res) err := c.Bind(&req) //使用的是post参数
return nil if err != nil {
fmt.Println(err)
} }
} if req.Flag == 0 {
res := common.BomResponse{
//获取列表相关 ErrCode: 101,
func RecommendEndpoint(c *service.BomServiceImpl) gin_.Endpoint { ErrMsg: "参数不全",
return func(context *gin.Context, request interface{}) (response interface{}, err error) { Data: []string{},
rsp := &bom.RecommendResponse{}
err = c.Recommend(context, request.(*bom.RecommendRequest), rsp)
return rsp, err
}
}
//这个函数的作用是怎么处理请求
func RecommendRequest() gin_.EncodeRequestFunc {
return func(context *gin.Context) (i interface{}, e error) {
bReq := &bom.RecommendRequest{}
err := context.Bind(bReq) //使用的是post参数
if err != nil {
return nil, err
} }
return bReq, nil c.JSON(200, res)
} return
}
//这个函数作用是:怎么处理响应结果
func RecommendResponse() gin_.DecodeResponseFunc {
return func(context *gin.Context, res interface{}) error {
context.JSON(200, res)
return nil
} }
data := service.Recommend(req)
c.JSON(200, data)
} }
package common
type RecommendRequest struct {
GoodsName string `form:"goods_name"`
Attrs string `form:"attrs"`
Encap string `form:"encap"`
Num int `form:"num"`
DeliveryType int `form:"delivery_type"`
Flag int `form:"flag"`
BrandName string `form:"brand_name"`
}
package common package common
type Response struct {
ErrCode int `json:"err_code"`
ErrMsg string `json:"err_msg"`
Data interface{} `json:"data"`
}
type BomResponse struct {
ErrCode int `json:"err_code"`
ErrMsg string `json:"err_msg"`
Flag int `json:"flag"`
Total int `json:"total"`
Data interface{} `json:"data"`
}
\ No newline at end of file
...@@ -24,16 +24,6 @@ func (bs *BomServiceImpl) AutoSpu(ctx context.Context, req *bom.AutoSpuRequest, ...@@ -24,16 +24,6 @@ func (bs *BomServiceImpl) AutoSpu(ctx context.Context, req *bom.AutoSpuRequest,
return nil return nil
} }
func (bs *BomServiceImpl) Recommend(ctx context.Context, req *bom.RecommendRequest, rsp *bom.RecommendResponse) error {
if req.Flag == 0 {
rsp.ErrorCode = 101
rsp.ErrorMessage = "参数不全"
return nil
}
rsp.Data = Recommend(req)
return nil
}
func NewBomServiceImpl() *BomServiceImpl { func NewBomServiceImpl() *BomServiceImpl {
return &BomServiceImpl{} return &BomServiceImpl{}
} }
...@@ -74,7 +64,7 @@ func getTermQuery(goodsName string) (query *elastic.BoolQuery) { ...@@ -74,7 +64,7 @@ func getTermQuery(goodsName string) (query *elastic.BoolQuery) {
} }
//推荐商品搜索 //推荐商品搜索
func Recommend(req *bom.RecommendRequest) (rsp *bom.ResponseData) { func Recommend(req *common.RecommendRequest) (rsp *common.BomResponse) {
var err error var err error
//先去请求参数,看是否是参数,如果是参数的话,需要修改请求的商品名称 //先去请求参数,看是否是参数,如果是参数的话,需要修改请求的商品名称
var goodsName string var goodsName string
...@@ -100,8 +90,8 @@ func Recommend(req *bom.RecommendRequest) (rsp *bom.ResponseData) { ...@@ -100,8 +90,8 @@ func Recommend(req *bom.RecommendRequest) (rsp *bom.ResponseData) {
} }
//获取需要的数据 //获取需要的数据
total := gjson.Get(result, "hits.total").Int() total := gjson.Get(result, "hits.total").Int()
var response bom.ResponseData var response common.BomResponse
response.Total = total response.Total = int(total)
//获取goods_id列表去商品服务获取商品 //获取goods_id列表去商品服务获取商品
list := gjson.Get(result, "hits.hits.#._source").Array() list := gjson.Get(result, "hits.hits.#._source").Array()
var goodsIdList []string var goodsIdList []string
...@@ -118,7 +108,7 @@ func Recommend(req *bom.RecommendRequest) (rsp *bom.ResponseData) { ...@@ -118,7 +108,7 @@ func Recommend(req *bom.RecommendRequest) (rsp *bom.ResponseData) {
} }
//处理recommend接口的请求参数 //处理recommend接口的请求参数
func changeRecommendReq(req *bom.RecommendRequest) (res *bom.RecommendRequest) { func changeRecommendReq(req *common.RecommendRequest) (res *common.RecommendRequest) {
//设置默认值 //设置默认值
if req.Num == 0 { if req.Num == 0 {
req.Num = 1 req.Num = 1
...@@ -136,7 +126,7 @@ func changeRecommendReq(req *bom.RecommendRequest) (res *bom.RecommendRequest) { ...@@ -136,7 +126,7 @@ func changeRecommendReq(req *bom.RecommendRequest) (res *bom.RecommendRequest) {
} }
//获取recommend接口需要请求的索引 //获取recommend接口需要请求的索引
func getRecommendSearchIndex(req *bom.RecommendRequest) (index string) { func getRecommendSearchIndex(req *common.RecommendRequest) (index string) {
index = config.Get("es.hk_delivery_type_supplier").String() index = config.Get("es.hk_delivery_type_supplier").String()
//如果是内地收货的情况下 //如果是内地收货的情况下
if req.DeliveryType == 1 { if req.DeliveryType == 1 {
...@@ -146,13 +136,13 @@ func getRecommendSearchIndex(req *bom.RecommendRequest) (index string) { ...@@ -146,13 +136,13 @@ func getRecommendSearchIndex(req *bom.RecommendRequest) (index string) {
} }
//获取请求es的参数 //获取请求es的参数
func getRecommendSearchParams(isRawSearch bool, req *bom.RecommendRequest) (result string) { func getRecommendSearchParams(isRawSearch bool, req *common.RecommendRequest) (result string) {
result = getBomTermQuery(req.GoodsName, "", req.Num, isRawSearch) result = getBomTermQuery(req.GoodsName, "", req.Num, isRawSearch)
return return
} }
//获取bom单的term查询 //获取bom单的term查询
func getBomTermQuery(goodsName, brandName string, number int32, isRawSearch bool) (result string) { func getBomTermQuery(goodsName, brandName string, number int, isRawSearch bool) (result string) {
query := elastic.NewBoolQuery() query := elastic.NewBoolQuery()
if isRawSearch { if isRawSearch {
field := "auto_goods_name.raw" field := "auto_goods_name.raw"
......
package service package service
import ( import (
"fmt"
"github.com/imroc/req" "github.com/imroc/req"
"github.com/tidwall/gjson" "github.com/tidwall/gjson"
"search_server/pkg/config" "search_server/pkg/config"
...@@ -65,3 +66,9 @@ func GetGoodsInfo(goodsIdsStr string) (goodsList []*bom.GoodsModel, err error) { ...@@ -65,3 +66,9 @@ func GetGoodsInfo(goodsIdsStr string) (goodsList []*bom.GoodsModel, err error) {
} }
return return
} }
//根据供应商获取商品信息
func GetGoodsInfoBySupplier(supplierId, q, stock int) {
supplierIndex := config.Get("es.search_supplier").String()
fmt.Println(supplierIndex)
}
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