commonPhrasesService.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package service
  2. import (
  3. cm "app.yhyue.com/moapp/jybase/common"
  4. elastic "app.yhyue.com/moapp/jybase/esv1"
  5. . "bp.jydev.jianyu360.cn/SocialPlatform/knowledgeBase/entity"
  6. "bp.jydev.jianyu360.cn/SocialPlatform/knowledgeBase/rpc/knowledge/knowledgeclient"
  7. "bp.jydev.jianyu360.cn/SocialPlatform/knowledgeBase/rpc/knowledge/util"
  8. "log"
  9. "strconv"
  10. "time"
  11. )
  12. type CommonPhrasesService struct{}
  13. var (
  14. INDEX = "common_phrases"
  15. TYPE = "common_phrases"
  16. )
  17. // CommonPhrasesAdd 客服话术添加
  18. func (c *CommonPhrasesService) CommonPhrasesAdd(param *knowledgeclient.CommonPhrasesAddReq, segment string) (ok bool, msg string) {
  19. ok = true
  20. msg = "操作成功"
  21. //分词
  22. keywords := ""
  23. keywordsArr := util.HanlpGetNormalWords(param.Content, segment)
  24. if len(keywordsArr) != 0 {
  25. for _, val := range keywordsArr {
  26. keywords += val + " "
  27. }
  28. }
  29. if keywords == "" {
  30. keywords = param.Content
  31. }
  32. now := time.Now()
  33. if param.Id > 0 { //编辑
  34. updateData := map[string]interface{}{
  35. "classify": param.Classify,
  36. "content": param.Content,
  37. "createPerson": param.EntUserId,
  38. "updateTime": time.Now().Local().Format(util.DateFullLayout),
  39. "keywords": keywords,
  40. }
  41. ok1 := Mysql.Update(util.COMMONPHRASES, map[string]interface{}{"id": param.Id}, updateData)
  42. if ok1 {
  43. query := `{"query":{"bool":{"must":[{"term":{"phrasesId":"` + strconv.Itoa(int(param.Id)) + `"}}],"must_not":[],"should":[]}},"from":0,"size":1,"sort":[],"facets":{}}`
  44. //修改es数据
  45. insertData := map[string]interface{}{
  46. "entId": param.EntId,
  47. "appId": param.AppId,
  48. "classify": param.Classify,
  49. "content": param.Content,
  50. "createPerson": param.EntUserId,
  51. "status": 0,
  52. "createTime": now.Unix(),
  53. "keywords": keywords,
  54. "phrasesId": param.Id,
  55. }
  56. ok2 := elastic.Del(INDEX, TYPE, query)
  57. ok3 := elastic.Save(INDEX, TYPE, insertData)
  58. if !(ok2 && ok3) {
  59. ok = false
  60. msg = "操作失败"
  61. }
  62. }
  63. } else {
  64. insertData := map[string]interface{}{
  65. "entId": param.EntId,
  66. "appId": param.AppId,
  67. "classify": param.Classify,
  68. "content": param.Content,
  69. "createPerson": param.EntUserId,
  70. "status": 0,
  71. "createTime": now.Local().Format(util.DateFullLayout),
  72. "keywords": keywords,
  73. "updateTime": now.Format(util.DateFullLayout),
  74. }
  75. in := Mysql.Insert(util.COMMONPHRASES, insertData)
  76. if in > -1 {
  77. insertData["createTime"] = now.Unix()
  78. insertData["phrasesId"] = in
  79. delete(insertData, "updateTime")
  80. ok := elastic.Save(INDEX, TYPE, insertData)
  81. if !ok {
  82. ok = false
  83. msg = "操作失败"
  84. }
  85. }
  86. }
  87. return ok, msg
  88. }
  89. // CommonPhrasesInfo 客服话术详情
  90. func (c *CommonPhrasesService) CommonPhrasesInfo(id int64) (data *knowledgeclient.CommonPhrases, ok bool) {
  91. info := Mysql.FindOne(util.COMMONPHRASES, map[string]interface{}{"id": id}, "", "")
  92. if info != nil && len(*info) > 0 {
  93. data = &knowledgeclient.CommonPhrases{}
  94. data.Id = cm.Int64All((*info)["id"])
  95. data.Classify = cm.ObjToString((*info)["classify"])
  96. data.Content = cm.ObjToString((*info)["content"])
  97. return data, true
  98. }
  99. return nil, false
  100. }
  101. // CommonPhrasesDel 客服话术删除
  102. func (c *CommonPhrasesService) CommonPhrasesDel(id int64) bool {
  103. ok := Mysql.Update(util.COMMONPHRASES, map[string]interface{}{"id": id}, map[string]interface{}{"status": 1, "updateTime": time.Now().Local().Format(util.DateFullLayout)})
  104. if ok {
  105. //删除es数据
  106. query := `{"query":{"bool":{"must":[{"term":{"phrasesId":"` + strconv.Itoa(int(id)) + `"}}],"must_not":[],"should":[]}},"from":0,"size":1,"sort":[],"facets":{}}`
  107. ok = elastic.Del(INDEX, TYPE, query)
  108. log.Println(ok, "---------------")
  109. }
  110. return ok
  111. }
  112. // CommonPhrasesList 客服话术列表
  113. func (c *CommonPhrasesService) CommonPhrasesList(param *knowledgeclient.CommonPhrasesListReq) *knowledgeclient.CommonPhrasesList {
  114. var commonPhrasesList knowledgeclient.CommonPhrasesList
  115. var data []*knowledgeclient.CommonPhrases
  116. count := Mysql.Count(util.COMMONPHRASES, map[string]interface{}{"status": 0, "appId": param.AppId, "entId": param.EntId})
  117. if count > 0 {
  118. 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))
  119. if dataList != nil && len(*dataList) > 0 {
  120. for _, val := range *dataList {
  121. data = append(data, &knowledgeclient.CommonPhrases{
  122. Id: cm.Int64All(val["id"]),
  123. Content: cm.ObjToString(val["content"]),
  124. Classify: cm.ObjToString(val["classify"]),
  125. })
  126. }
  127. }
  128. commonPhrasesList.Data = data
  129. commonPhrasesList.Total = count
  130. }
  131. return &commonPhrasesList
  132. }