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, segment string) (ok bool, msg string) { ok = true msg = "操作成功" //分词 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, "updateTime": time.Now().Local().Format(util.DateFullLayout), "keywords": keywords, } 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, "appId": param.AppId, "classify": param.Classify, "content": param.Content, "createPerson": param.EntUserId, "status": 0, "createTime": now.Local().Format(util.DateFullLayout), "keywords": keywords, "updateTime": now.Format(util.DateFullLayout), } in := Mysql.Insert(util.COMMONPHRASES, insertData) if in > -1 { insertData["createTime"] = now.Unix() insertData["phrasesId"] = in delete(insertData, "updateTime") ok := elastic.Save(INDEX, TYPE, insertData) if !ok { ok = false msg = "操作失败" } } } return ok, msg } // CommonPhrasesInfo 客服话术详情 func (c *CommonPhrasesService) CommonPhrasesInfo(id int64) (data *knowledgeclient.CommonPhrases, ok bool) { info := Mysql.FindOne(util.COMMONPHRASES, map[string]interface{}{"id": id}, "", "") if info != nil && len(*info) > 0 { data = &knowledgeclient.CommonPhrases{} data.Id = cm.Int64All((*info)["id"]) data.Classify = cm.ObjToString((*info)["classify"]) data.Content = cm.ObjToString((*info)["content"]) return data, true } return nil, false } // CommonPhrasesDel 客服话术删除 func (c *CommonPhrasesService) CommonPhrasesDel(id int64) bool { 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 } // CommonPhrasesList 客服话术列表 func (c *CommonPhrasesService) CommonPhrasesList(param *knowledgeclient.CommonPhrasesListReq) *knowledgeclient.CommonPhrasesList { var commonPhrasesList knowledgeclient.CommonPhrasesList var data []*knowledgeclient.CommonPhrases count := Mysql.Count(util.COMMONPHRASES, map[string]interface{}{"status": 0, "appId": param.AppId, "entId": param.EntId}) if count > 0 { dataList := Mysql.Find(util.COMMONPHRASES, map[string]interface{}{"status": 0, "appId": param.AppId, "entId": param.EntId}, "", "id desc", cm.IntAll((param.PageIndex-1)*param.PageSize), cm.IntAll(param.PageSize)) if dataList != nil && len(*dataList) > 0 { for _, val := range *dataList { data = append(data, &knowledgeclient.CommonPhrases{ Id: cm.Int64All(val["id"]), Content: cm.ObjToString(val["content"]), Classify: cm.ObjToString(val["classify"]), }) } } commonPhrasesList.Data = data commonPhrasesList.Total = count } return &commonPhrasesList } // CommonPhrasesClassList 客服话术分类 func (c *CommonPhrasesService) CommonPhrasesClassList(param *knowledgeclient.CommonPhrasesClassListReq) []*knowledgeclient.CommonPhrasesClassListData { var classListArr []*knowledgeclient.CommonPhrasesClassListData //先查询数据在分类、排序 query := map[string]interface{}{ "entId": param.EntId, "appId": param.AppId, } if param.Query != "" { query["content"] = param.Query } data := Mysql.Find(util.COMMONPHRASES, query, "classify,content", "id desc", -1, -1) if data != nil && len(*data) > 0 { m := map[string][]string{} for _, val := range *data { classify := cm.ObjToString(val["classify"]) m[classify] = append(m[classify], cm.ObjToString(val["content"])) } if m != nil && len(m) > 0 { for k, v := range m { classList := &knowledgeclient.CommonPhrasesClassListData{} classList.Classify = k for _, i := range v { classList.ClassList = append(classList.ClassList, &knowledgeclient.Content{ Content: i, }) } classListArr = append(classListArr, classList) } //sort.Sort(classListArr) } } return classListArr }