knowledgeeditlogic.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package logic
  2. import (
  3. elastic "app.yhyue.com/moapp/jybase/esv1"
  4. "context"
  5. "database/sql"
  6. "github.com/zeromicro/go-zero/core/logx"
  7. . "knowledgeBase/rpc/knowledge/init"
  8. "knowledgeBase/rpc/knowledge/internal/svc"
  9. "knowledgeBase/rpc/knowledge/knowledgeclient"
  10. "knowledgeBase/rpc/knowledge/util"
  11. "log"
  12. "strconv"
  13. "time"
  14. )
  15. type KnowledgeEditLogic struct {
  16. ctx context.Context
  17. svcCtx *svc.ServiceContext
  18. logx.Logger
  19. }
  20. func NewKnowledgeEditLogic(ctx context.Context, svcCtx *svc.ServiceContext) *KnowledgeEditLogic {
  21. return &KnowledgeEditLogic{
  22. ctx: ctx,
  23. svcCtx: svcCtx,
  24. Logger: logx.WithContext(ctx),
  25. }
  26. }
  27. // KnowledgeEdit 知识编辑
  28. func (l *KnowledgeEditLogic) KnowledgeEdit(in *knowledgeclient.KnowledgeEditReq) (*knowledgeclient.AddResponse, error) {
  29. // todo: add your logic here and delete this line
  30. result := &knowledgeclient.AddResponse{}
  31. //修改答案
  32. answerUpdate := map[string]interface{}{
  33. "update_time": time.Now().Local().Format(util.Date_Full_Layout),
  34. "content": in.Answer,
  35. }
  36. //获取问题分词
  37. keywords := util.HttpDo(in.Question)
  38. fool := Mysql.ExecTx("编辑问题、答案", func(tx *sql.Tx) bool {
  39. ok1 := Mysql.UpdateByTx(tx, util.ANSWER, map[string]interface{}{"id": in.AnswerId}, answerUpdate)
  40. //修改问题
  41. questionUpdate := map[string]interface{}{
  42. "content": in.Question,
  43. "keywords": keywords,
  44. }
  45. ok2 := Mysql.UpdateByTx(tx, util.QUESTION, map[string]interface{}{"answer_id": in.AnswerId}, questionUpdate)
  46. return ok1 && ok2
  47. })
  48. if fool {
  49. //先查询es获取es _id
  50. query := `{"query":{"bool":{"must":[{"term":{"smart_v.answerId":"` + strconv.Itoa(int(in.AnswerId)) + `"}}],"must_not":[],"should":[]}},"from":0,"size":10,"sort":[],"facets":{}}`
  51. log.Println(query)
  52. kw := elastic.Get(C.Es.Index, C.Es.Type, query)
  53. //log.Println("查询es的——id", kw)
  54. log.Println("查询es的——id", ((*kw)[0])["_id"])
  55. //修改es数据
  56. newKnowledge := map[string]interface{}{
  57. "knowledgeId": in.KnowledgeId,
  58. "status": 1,
  59. "createTime": time.Now().Local().Format(util.Date_Full_Layout),
  60. "createPerson": in.Person,
  61. "answer": in.Answer,
  62. "question": in.Question,
  63. "keywords": keywords,
  64. "answerId": in.AnswerId,
  65. "tenantId": in.TenantId,
  66. }
  67. ok := elastic.Del(C.Es.Index, C.Es.Type, query)
  68. b := elastic.Save(C.Es.Index, C.Es.Type, newKnowledge)
  69. log.Println("存es", b)
  70. if ok {
  71. result.ErrorCode = 0
  72. result.ErrorMsg = "修改问题成功"
  73. } else {
  74. result.ErrorCode = -1
  75. result.ErrorMsg = "修改es问题失败"
  76. }
  77. } else {
  78. result.ErrorCode = -1
  79. result.ErrorMsg = "修改mysql问题失败"
  80. }
  81. return result, nil
  82. }