Commit 38af2c53 by mushishixian

Merge branch 'ysx-quote-20200628' into dev

parents 7fe143a7 1d3cd9aa
...@@ -36,11 +36,12 @@ func GetDataIndex(c *gin.Context) { ...@@ -36,11 +36,12 @@ func GetDataIndex(c *gin.Context) {
if r.SupplierId != "" && r.IsSort == 2 { if r.SupplierId != "" && r.IsSort == 2 {
//所有供应商列表 //所有供应商列表
//如果供应商不在合并供应商列表,则实时更新数据 //如果供应商不在合并供应商列表,则实时更新数据
if supplierName != "" && !php2go.InArray(r.SupplierName, supplierList) { if supplierName != "" && !php2go.InArray(supplierName, supplierList) {
redisCon := gredis.Conn("search_w") redisCon := gredis.Conn("search_w")
defer redisCon.Close() defer redisCon.Close()
//获取stockFlag //获取stockFlag
res, err := redis.Bool(redisCon.Do("SADD", "search_keyword_member", r.Keyword+"_"+r.SupplierName)) res, err := redis.Bool(redisCon.Do("SADD", "search_keyword_member", r.Keyword+"_"+r.SupplierName))
fmt.Println(r.Keyword+"_"+r.SupplierName)
if err != nil { if err != nil {
fmt.Println(err) fmt.Println(err)
} }
......
package model
...@@ -73,7 +73,7 @@ func BulkES(param string) (result string, err error) { ...@@ -73,7 +73,7 @@ func BulkES(param string) (result string, err error) {
func CurlESMSearch(queryJson string) (result string, err error) { func CurlESMSearch(queryJson string) (result string, err error) {
endpoints := config.Get("es.urls").Strings(",") endpoints := config.Get("es.urls").Strings(",")
//随机获取一个节点进行请求 //随机获取一个节点进行请求
req.Debug = true req.Debug = false
esUrl := endpoints[rand.Intn(len(endpoints))] esUrl := endpoints[rand.Intn(len(endpoints))]
params := req.BodyJSON(queryJson) params := req.BodyJSON(queryJson)
resp, err := req.Post(esUrl+"/_msearch", params) resp, err := req.Post(esUrl+"/_msearch", params)
......
...@@ -39,7 +39,7 @@ func DingDingPush(content string) (result DingDingResponse, err error) { ...@@ -39,7 +39,7 @@ func DingDingPush(content string) (result DingDingResponse, err error) {
"Content-Type": "application/json", "Content-Type": "application/json",
"charset": "UTF-8", "charset": "UTF-8",
}) })
if resp==nil { if resp == nil {
return return
} }
result.Errcode = int(gjson.Get(resp.String(), "errcode").Int()) result.Errcode = int(gjson.Get(resp.String(), "errcode").Int())
......
package routes package routes
import ( import (
"fmt"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"search_server/controller" "search_server/controller"
"search_server/middleware" "search_server/middleware"
...@@ -28,8 +29,11 @@ func InitRouter() *gin.Engine { ...@@ -28,8 +29,11 @@ func InitRouter() *gin.Engine {
r.POST("/search/quote/getDataPur", controller.GetDataPur) r.POST("/search/quote/getDataPur", controller.GetDataPur)
//GetData控制器相关 //GetData控制器相关
r.GET("/search/get_data/index", controller.GetDataIndex) r.GET("/search/get_data", controller.GetDataIndex)
r.POST("/search/get_data/index", controller.GetDataIndex) r.POST("/search/get_data", controller.GetDataIndex)
r.GET("/test", func(c *gin.Context) {
fmt.Println(c.Query("test"))
})
return r return r
} }
package query package query
import ( import (
"fmt"
"github.com/gomodule/redigo/redis" "github.com/gomodule/redigo/redis"
"github.com/syyongx/php2go" "github.com/syyongx/php2go"
"github.com/uniplaces/carbon" "github.com/uniplaces/carbon"
...@@ -33,6 +34,7 @@ func GetSupplierIndex(supplierId string) (supplierIndex string) { ...@@ -33,6 +34,7 @@ func GetSupplierIndex(supplierId string) (supplierIndex string) {
return return
} }
//根据供应商名称查询商品的ES查询
func GetGoodsBySupplierNameQuery(r requests.GetGoodsBySupplierRequest) (string, error) { func GetGoodsBySupplierNameQuery(r requests.GetGoodsBySupplierRequest) (string, error) {
query := elastic.NewBoolQuery() query := elastic.NewBoolQuery()
subQuery := elastic.NewBoolQuery() subQuery := elastic.NewBoolQuery()
...@@ -44,7 +46,6 @@ func GetGoodsBySupplierNameQuery(r requests.GetGoodsBySupplierRequest) (string, ...@@ -44,7 +46,6 @@ func GetGoodsBySupplierNameQuery(r requests.GetGoodsBySupplierRequest) (string,
stockFlag, _ := redis.Int(redisCon.Do("GET", "StockSwitch")) stockFlag, _ := redis.Int(redisCon.Do("GET", "StockSwitch"))
//todo : type=goods //todo : type=goods
keywordSlice := strings.Split(strings.ToUpper(strings.TrimSpace(r.Keyword)), " ") keywordSlice := strings.Split(strings.ToUpper(strings.TrimSpace(r.Keyword)), " ")
r1, _ := regexp.Compile(`/[\x{4e00}-\x{9fff}]+/u`) r1, _ := regexp.Compile(`/[\x{4e00}-\x{9fff}]+/u`)
//去除中文? //去除中文?
removeCnKeyword := r1.ReplaceAllString(r.Keyword, "") removeCnKeyword := r1.ReplaceAllString(r.Keyword, "")
...@@ -168,7 +169,6 @@ func GetGoodsBySupplierNameQuery(r requests.GetGoodsBySupplierRequest) (string, ...@@ -168,7 +169,6 @@ func GetGoodsBySupplierNameQuery(r requests.GetGoodsBySupplierRequest) (string,
source.Query(query) source.Query(query)
searchRequest := elastic.NewSearchRequest().Source(source).Preference("_primary_first") searchRequest := elastic.NewSearchRequest().Source(source).Preference("_primary_first")
return searchRequest.Body() return searchRequest.Body()
} }
...@@ -332,6 +332,6 @@ func GetGoodsBySupplierIdQuery(r requests.GetGoodsBySupplierRequest) (string, er ...@@ -332,6 +332,6 @@ func GetGoodsBySupplierIdQuery(r requests.GetGoodsBySupplierRequest) (string, er
} }
source.Query(query) source.Query(query)
searchRequest := elastic.NewSearchRequest().Source(source).Preference("_primary_first") searchRequest := elastic.NewSearchRequest().Source(source).Preference("_primary_first")
fmt.Println(searchRequest.Body())
return searchRequest.Body() return searchRequest.Body()
} }
...@@ -2,7 +2,6 @@ package service ...@@ -2,7 +2,6 @@ package service
import ( import (
"encoding/json" "encoding/json"
"fmt"
"github.com/imroc/req" "github.com/imroc/req"
"github.com/syyongx/php2go" "github.com/syyongx/php2go"
"github.com/tidwall/gjson" "github.com/tidwall/gjson"
...@@ -44,8 +43,6 @@ func (qs *QuoteService) GetGoodsBySupplier(r requests.GetGoodsBySupplierRequest) ...@@ -44,8 +43,6 @@ func (qs *QuoteService) GetGoodsBySupplier(r requests.GetGoodsBySupplierRequest)
func (qs *QuoteService) GetGoodsBySupplierName(r requests.GetGoodsBySupplierRequest) (result map[string]interface{}, err error) { func (qs *QuoteService) GetGoodsBySupplierName(r requests.GetGoodsBySupplierRequest) (result map[string]interface{}, err error) {
supplierIndex := r.SupplierName supplierIndex := r.SupplierName
queryString, err := query.GetGoodsBySupplierNameQuery(r) queryString, err := query.GetGoodsBySupplierNameQuery(r)
fmt.Println(supplierIndex)
fmt.Println(queryString)
esResult, err := es.CurlES(supplierIndex, queryString) esResult, err := es.CurlES(supplierIndex, queryString)
if err != nil { if err != nil {
return return
...@@ -53,6 +50,9 @@ func (qs *QuoteService) GetGoodsBySupplierName(r requests.GetGoodsBySupplierRequ ...@@ -53,6 +50,9 @@ func (qs *QuoteService) GetGoodsBySupplierName(r requests.GetGoodsBySupplierRequ
goodsIds := GetGoodsIdsByEs(esResult) goodsIds := GetGoodsIdsByEs(esResult)
goodsList, err := GetGoodsInfo(goodsIds) goodsList, err := GetGoodsInfo(goodsIds)
dullData, err := transformer.DullDataInfo(r.Keyword, goodsList) dullData, err := transformer.DullDataInfo(r.Keyword, goodsList)
quoteTransformer := transformer.QuoteTransformer{}
//还要去转一下阶梯价比例
dullData = quoteTransformer.TransformLadderPrice(dullData)
result = GetReturnSupplierData(dullData) result = GetReturnSupplierData(dullData)
result["total"] = gjson.Get(esResult, "hits.total").Int() result["total"] = gjson.Get(esResult, "hits.total").Int()
result["took"] = gjson.Get(esResult, "took").Int() result["took"] = gjson.Get(esResult, "took").Int()
......
package service package service
import ( type SkuService struct {
"search_server/middleware"
"search_server/model"
"strings"
)
//推送搜索关键词
func ShowSku(goods model.DullGoodsData) {
goodsIdLen := len(goods.GoodsId)
if goods.GoodsId == "" || goods.BrandName == "" || goods.SupplierName == "" {
return
}
referer := middleware.Context.Request.Header.Get("referer")
if strings.Contains(referer, "www.ichunt.com/s/?k") {
if goods.ProviderName != "" {
goods.BrandName = goods.ProviderName
}
if goods.CompanyName != "" {
goods.SupplierName = goods.CompanyName
}
result := make(map[string]string)
result["goods_id"] = goods.GoodsId
//todo : brand_name正则转换
result["brand_name"] = goods.BrandName
if goods.SupplierId == 17 {
result["supplier_name"] = goods.SupplierName + "-" + goods.Canal
result["supplier_type"] = goods.SupplierName
} else if goods.CompanyName != "" && goods.ProviderName != "" {
result["supplier_name"] = "撮合-" + goods.SupplierName
result["supplier_type"] = "撮合"
} else {
result["supplier_name"] = goods.SupplierName
result["supplier_type"] = goods.SupplierName
}
//todo : goods_name正则替换
result["goods_name"] = goods.GoodsName
if (goodsIdLen < 19 || goods.SupplierId == 10000) && result["supplier_type"] != "撮合" {
result["keyword"] = strings.TrimSpace("keyword")
}
result["adtag"], _ = middleware.Context.Cookie("adtag")
if goodsIdLen < 19 {
result["status"] = "1"
}
}
} }
package transformer package transformer
import ( import (
"encoding/json"
"fmt"
"github.com/gomodule/redigo/redis" "github.com/gomodule/redigo/redis"
"github.com/tidwall/gjson" "github.com/tidwall/gjson"
"regexp"
"search_server/dao" "search_server/dao"
"search_server/middleware" "search_server/middleware"
"search_server/model" "search_server/model"
...@@ -10,6 +13,7 @@ import ( ...@@ -10,6 +13,7 @@ import (
"search_server/pkg/config" "search_server/pkg/config"
"search_server/pkg/gredis" "search_server/pkg/gredis"
"strings" "strings"
"time"
) )
//处理商品信息数据 //处理商品信息数据
...@@ -46,8 +50,7 @@ func DullDataInfo(keyword string, goodsListMap map[string]model.ApiGoods) (resul ...@@ -46,8 +50,7 @@ func DullDataInfo(keyword string, goodsListMap map[string]model.ApiGoods) (resul
goods.LastSearchTime = common.GetLastSearchTime(goods.GoodsId) goods.LastSearchTime = common.GetLastSearchTime(goods.GoodsId)
//关税信息 //关税信息
goods.CustomsTax = common.GetCustomsTax(goods.GoodsName, goods.BrandName) goods.CustomsTax = common.GetCustomsTax(goods.GoodsName, goods.BrandName)
//todo : showsku方法 ShowSku(goods)
//价格等信息混淆 //价格等信息混淆
if keyword != "---" { if keyword != "---" {
goods, err = MetGoodsInfo(goods) goods, err = MetGoodsInfo(goods)
...@@ -281,3 +284,81 @@ func MetGoodsInfo(data model.DullGoodsData) (result model.DullGoodsData, err err ...@@ -281,3 +284,81 @@ func MetGoodsInfo(data model.DullGoodsData) (result model.DullGoodsData, err err
return data, err return data, err
} }
} }
//推送搜索商品信息
func ShowSku(goods model.DullGoodsData) {
//绑定需要接收的参数
type ShowSkuParams struct {
GoodsNameEq string `form:"goods_name/eq"`
Keyword string `form:"keyword"`
}
var params ShowSkuParams
middleware.Context.Bind(&params)
goodsIdLen := len(goods.GoodsId)
if goods.GoodsId == "" || goods.BrandName == "" || goods.SupplierName == "" {
return
}
referer := middleware.Context.Request.Header.Get("referer")
//if strings.Contains(referer, "www.ichunt.com/s/?k") {
if strings.Contains(referer, "") {
if goods.ProviderName != "" {
goods.BrandName = goods.ProviderName
}
if goods.CompanyName != "" {
goods.SupplierName = goods.CompanyName
}
r := regexp.MustCompile(`<b .+?>(.+?)<\/b>`)
result := make(map[string]interface{})
result["goods_id"] = goods.GoodsId
//brand_name正则转换
goods.BrandName = r.ReplaceAllString(goods.BrandName, `${1}`)
result["brand_name"] = goods.BrandName
if goods.SupplierId == 17 {
result["supplier_name"] = goods.SupplierName + "-" + goods.Canal
result["supplier_type"] = goods.SupplierName
} else if goods.CompanyName != "" && goods.ProviderName != "" {
result["supplier_name"] = "撮合-" + goods.SupplierName
result["supplier_type"] = "撮合"
} else {
result["supplier_name"] = goods.SupplierName
result["supplier_type"] = goods.SupplierName
}
//goods_name正则替换
goods.GoodsName = r.ReplaceAllString(goods.GoodsName, `${1}`)
result["goods_name"] = goods.GoodsName
if (goodsIdLen < 19 || goods.SupplierId == 10000) && result["supplier_type"] != "撮合" {
result["keyword"] = strings.TrimSpace(params.GoodsNameEq)
} else {
if params.Keyword != "" {
result["keyword"] = strings.TrimSpace(params.Keyword)
} else {
result["keyword"] = goods.GoodsName
}
}
//价格记录
if len(goods.LadderPrice) > 0 {
result["ladder_price"] = goods.LadderPrice
} else {
result["ladder_price"] = []string{}
}
//moq
result["moq"] = goods.Moq
result["show_time"] = time.Now().Unix()
//cookie获取
result["adtag"], _ = middleware.Context.Cookie("adtag")
//状态判断
if goodsIdLen < 19 {
result["status"] = 1
} else {
if goods.Status == 1 {
result["status"] = 1
} else {
result["status"] = 2
}
}
res, _ := json.Marshal(result)
fmt.Println(string(res))
//mq.PushMsg("search_show_sku_list", string(res))
}
}
...@@ -48,3 +48,21 @@ func (qt *QuoteTransformer) TransformCollectData(keyword, supplierName string, c ...@@ -48,3 +48,21 @@ func (qt *QuoteTransformer) TransformCollectData(keyword, supplierName string, c
} }
return return
} }
//提供给客服报价系统专用
func (qt *QuoteTransformer) TransformLadderPrice(dullData []model.DullGoodsData) (result []model.DullGoodsData) {
for key, data := range dullData {
if len(data.LadderPrice) > 0 {
for k, price := range data.LadderPrice {
if price.PriceUs != 0 {
if data.SupplierId == 6 {
dullData[key].LadderPrice[k].PriceUs = data.OriginalPrice[k].PriceUs * data.PriceHkxs
} else {
dullData[key].LadderPrice[k].PriceUs = data.OriginalPrice[k].PriceUs * data.ApiGoods.Coefficient.ExtraRatio
}
}
}
}
}
return dullData
}
...@@ -4,8 +4,8 @@ import ( ...@@ -4,8 +4,8 @@ import (
"flag" "flag"
"fmt" "fmt"
"github.com/syyongx/php2go" "github.com/syyongx/php2go"
"reflect"
"search_server/boot" "search_server/boot"
"search_server/pkg/mq"
) )
func StrRandom(lenNum int) string { func StrRandom(lenNum int) string {
...@@ -29,5 +29,23 @@ func main() { ...@@ -29,5 +29,23 @@ func main() {
if err := boot.Boot(path); err != nil { if err := boot.Boot(path); err != nil {
fmt.Println(err) fmt.Println(err)
} }
mq.PushMsg("xian_test","test") a := []int{1,2,3}
fmt.Println(InterfaceSlice(a))
}
func InterfaceSlice(slice interface{}) []interface{} {
s := reflect.ValueOf(slice)
if s.Kind() != reflect.Slice {
panic("InterfaceSlice() given a non-slice type")
}
ret := make([]interface{}, s.Len())
for i := 0; i < s.Len(); i++ {
ret[i] = s.Index(i).Interface()
}
return ret
} }
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