Jelajahi Sumber

话术数据同步es库

renjiaojiao 2 tahun lalu
induk
melakukan
36c7e6f478

+ 4 - 4
api/knowledge/internal/handler/routes.go

@@ -48,22 +48,22 @@ func RegisterHandlers(engine *rest.Server, serverCtx *svc.ServiceContext) {
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/commonPhrase/commonPhrasesAddOrUpdate",
+				Path:    "/knowledge/commonPhrase/commonPhrasesAddOrUpdate",
 				Handler: commonPhrasesAddOrUpdateHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/commonPhrase/commonPhrasesInfo",
+				Path:    "/knowledge/commonPhrase/commonPhrasesInfo",
 				Handler: commonPhrasesInfoHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/commonPhrase/commonPhrasesDel",
+				Path:    "/knowledge/commonPhrase/commonPhrasesDel",
 				Handler: commonPhrasesDelHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/commonPhrase/commonPhrasesList",
+				Path:    "/knowledge/commonPhrase/commonPhrasesList",
 				Handler: commonPhrasesListHandler(serverCtx),
 			},
 		},

+ 2 - 1
rpc/knowledge/internal/logic/commonphrasesaddlogic.go

@@ -1,6 +1,7 @@
 package logic
 
 import (
+	. "bp.jydev.jianyu360.cn/SocialPlatform/knowledgeBase/rpc/knowledge/init"
 	"bp.jydev.jianyu360.cn/SocialPlatform/knowledgeBase/rpc/knowledge/internal/service"
 	"bp.jydev.jianyu360.cn/SocialPlatform/knowledgeBase/rpc/knowledge/knowledgeclient"
 	"context"
@@ -27,7 +28,7 @@ func NewCommonPhrasesAddLogic(ctx context.Context, svcCtx *svc.ServiceContext) *
 func (l *CommonPhrasesAddLogic) CommonPhrasesAdd(in *knowledgeclient.CommonPhrasesAddReq) (*knowledgeclient.AddResponse, error) {
 	result := &knowledgeclient.AddResponse{}
 	c := service.CommonPhrasesService{}
-	ok, msg := c.CommonPhrasesAdd(in)
+	ok, msg := c.CommonPhrasesAdd(in, C.Segment)
 	if ok {
 		result.ErrorCode = 0
 		result.ErrorMsg = msg

+ 65 - 12
rpc/knowledge/internal/service/commonPhrasesService.go

@@ -2,30 +2,69 @@ package service
 
 import (
 	cm "app.yhyue.com/moapp/jybase/common"
+	elastic "app.yhyue.com/moapp/jybase/esv1"
 	. "bp.jydev.jianyu360.cn/SocialPlatform/knowledgeBase/entity"
 	"bp.jydev.jianyu360.cn/SocialPlatform/knowledgeBase/rpc/knowledge/knowledgeclient"
 	"bp.jydev.jianyu360.cn/SocialPlatform/knowledgeBase/rpc/knowledge/util"
+	"log"
+	"strconv"
 	"time"
 )
 
 type CommonPhrasesService struct{}
 
+var (
+	INDEX = "common_phrases"
+	TYPE  = "common_phrases"
+)
+
 // CommonPhrasesAdd 客服话术添加
-func (c *CommonPhrasesService) CommonPhrasesAdd(param *knowledgeclient.CommonPhrasesAddReq) (ok bool, msg string) {
+func (c *CommonPhrasesService) CommonPhrasesAdd(param *knowledgeclient.CommonPhrasesAddReq, segment string) (ok bool, msg string) {
 	ok = true
 	msg = "操作成功"
-	if param.Id > 0 {
-		//编辑
+	//分词
+	keywords := ""
+	keywordsArr := util.HanlpGetNormalWords(param.Content, segment)
+	if len(keywordsArr) != 0 {
+		for _, val := range keywordsArr {
+			keywords += val + " "
+		}
+	}
+	if keywords == "" {
+		keywords = param.Content
+	}
+	now := time.Now()
+	if param.Id > 0 { //编辑
 		updateData := map[string]interface{}{
 			"classify":     param.Classify,
 			"content":      param.Content,
 			"createPerson": param.EntUserId,
-			"createTime":   time.Now().Local().Format(util.DateFullLayout),
+			"updateTime":   time.Now().Local().Format(util.DateFullLayout),
+			"keywords":     keywords,
 		}
-		ok = Mysql.Update(util.COMMONPHRASES, map[string]interface{}{"id": param.Id}, updateData)
-		if !ok {
-			msg = "操作失败"
+		ok1 := Mysql.Update(util.COMMONPHRASES, map[string]interface{}{"id": param.Id}, updateData)
+		if ok1 {
+			query := `{"query":{"bool":{"must":[{"term":{"phrasesId":"` + strconv.Itoa(int(param.Id)) + `"}}],"must_not":[],"should":[]}},"from":0,"size":1,"sort":[],"facets":{}}`
+			//修改es数据
+			insertData := map[string]interface{}{
+				"entId":        param.EntId,
+				"appId":        param.AppId,
+				"classify":     param.Classify,
+				"content":      param.Content,
+				"createPerson": param.EntUserId,
+				"status":       0,
+				"createTime":   now.Unix(),
+				"keywords":     keywords,
+				"phrasesId":    param.Id,
+			}
+			ok2 := elastic.Del(INDEX, TYPE, query)
+			ok3 := elastic.Save(INDEX, TYPE, insertData)
+			if !(ok2 && ok3) {
+				ok = false
+				msg = "操作失败"
+			}
 		}
+
 	} else {
 		insertData := map[string]interface{}{
 			"entId":        param.EntId,
@@ -34,12 +73,20 @@ func (c *CommonPhrasesService) CommonPhrasesAdd(param *knowledgeclient.CommonPhr
 			"content":      param.Content,
 			"createPerson": param.EntUserId,
 			"status":       0,
-			"createTime":   time.Now().Local().Format(util.DateFullLayout),
+			"createTime":   now.Local().Format(util.DateFullLayout),
+			"keywords":     keywords,
+			"updateTime":   now.Format(util.DateFullLayout),
 		}
 		in := Mysql.Insert(util.COMMONPHRASES, insertData)
-		if in < 0 {
-			ok = false
-			msg = "操作失败"
+		if in > -1 {
+			insertData["createTime"] = now.Unix()
+			insertData["phrasesId"] = in
+			delete(insertData, "updateTime")
+			ok := elastic.Save(INDEX, TYPE, insertData)
+			if !ok {
+				ok = false
+				msg = "操作失败"
+			}
 		}
 	}
 
@@ -62,7 +109,13 @@ func (c *CommonPhrasesService) CommonPhrasesInfo(id int64) (data *knowledgeclien
 
 // CommonPhrasesDel 客服话术删除
 func (c *CommonPhrasesService) CommonPhrasesDel(id int64) bool {
-	ok := Mysql.Update(util.COMMONPHRASES, map[string]interface{}{"id": id}, map[string]interface{}{"status": 1})
+	ok := Mysql.Update(util.COMMONPHRASES, map[string]interface{}{"id": id}, map[string]interface{}{"status": 1, "updateTime": time.Now().Local().Format(util.DateFullLayout)})
+	if ok {
+		//删除es数据
+		query := `{"query":{"bool":{"must":[{"term":{"phrasesId":"` + strconv.Itoa(int(id)) + `"}}],"must_not":[],"should":[]}},"from":0,"size":1,"sort":[],"facets":{}}`
+		ok = elastic.Del(INDEX, TYPE, query)
+		log.Println(ok, "---------------")
+	}
 	return ok
 }
 

+ 4 - 4
rpc/knowledge/test/commonPhrases_test.go

@@ -15,10 +15,10 @@ func Test_CommonPhrasesAddOrEdit(t *testing.T) {
 	req := &knowledgeclient.CommonPhrasesAddReq{}
 	req.AppId = "10000"
 	req.EntId = 14929
-	req.Content = "麻烦你聪明点吧1111222"
+	req.Content = "推荐11111"
 	req.EntUserId = 4315
-	req.Id = 6
-	req.Classify = "客户问题1222"
+	req.Id = 32
+	req.Classify = "产品推荐"
 	res, err := TestSystem.CommonPhrasesAdd(ctx, req)
 	log.Println("res ", res)
 	log.Println("err ", err)
@@ -38,7 +38,7 @@ func Test_CommonPhrasesDel(t *testing.T) {
 	ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
 	TestSystem := knowledgeclient.NewKnowledge(zrpc.MustNewClient(c.TestConf))
 	req := &knowledgeclient.CommonPhrasesInfoReq{}
-	req.Id = 2
+	req.Id = 32
 	res, err := TestSystem.CommonPhrasesDel(ctx, req)
 	log.Println("res ", res)
 	log.Println("err ", err)