knowledgeeditlogic.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. "time"
  12. )
  13. type KnowledgeEditLogic struct {
  14. ctx context.Context
  15. svcCtx *svc.ServiceContext
  16. logx.Logger
  17. }
  18. func NewKnowledgeEditLogic(ctx context.Context, svcCtx *svc.ServiceContext) *KnowledgeEditLogic {
  19. return &KnowledgeEditLogic{
  20. ctx: ctx,
  21. svcCtx: svcCtx,
  22. Logger: logx.WithContext(ctx),
  23. }
  24. }
  25. // KnowledgeEdit 知识编辑
  26. func (l *KnowledgeEditLogic) KnowledgeEdit(in *knowledgeclient.KnowledgeEditReq) (*knowledgeclient.AddResponse, error) {
  27. // todo: add your logic here and delete this line
  28. result := &knowledgeclient.AddResponse{}
  29. //修改答案
  30. answerUpdate := map[string]interface{}{
  31. "update_time": time.Now().Local().Format(util.Date_Full_Layout),
  32. "content": in.Answer,
  33. }
  34. if in.State == 0 {
  35. answerUpdate["state"] = 0
  36. }
  37. //获取问题分词
  38. keywords := util.HttpDo(in.Question)
  39. fool := Mysql.ExecTx("编辑问题、答案", func(tx *sql.Tx) bool {
  40. ok1 := Mysql.UpdateByTx(tx, util.ANSWER, map[string]interface{}{"id": in.AnswerId}, answerUpdate)
  41. //修改问题
  42. questionUpdate := map[string]interface{}{
  43. "content": in.Question,
  44. "keywords": keywords,
  45. }
  46. ok2 := Mysql.UpdateByTx(tx, util.QUESTION, map[string]interface{}{"answerId": in.AnswerId}, questionUpdate)
  47. return ok1 && ok2
  48. })
  49. if in.State != 0 && fool {
  50. //修改es数据
  51. knowledge := map[string]interface{}{
  52. "knowledge_id": in.KnowledgeId,
  53. "status": 1,
  54. "create_time": time.Now().Local().Format(util.Date_Full_Layout),
  55. "create_person": in.Person,
  56. "answer": in.Answer,
  57. "question": in.Question,
  58. "keywords": keywords,
  59. "answer_id": in.AnswerId,
  60. "tenant_id": in.TenantId,
  61. }
  62. ok := elastic.UpdateNewDoc(C.Es.Index, C.Es.Type, knowledge)
  63. if ok {
  64. result.ErrorCode = 0
  65. result.ErrorMsg = "修改问题成功"
  66. } else {
  67. result.ErrorCode = -1
  68. result.ErrorMsg = "修改es问题失败"
  69. }
  70. } else {
  71. result.ErrorCode = -1
  72. result.ErrorMsg = "修改mysql问题失败"
  73. }
  74. return result, nil
  75. }