package logic import ( elastic "app.yhyue.com/moapp/jybase/esv1" "context" "database/sql" "github.com/zeromicro/go-zero/core/logx" . "knowledgeBase/rpc/knowledge/init" "knowledgeBase/rpc/knowledge/internal/svc" "knowledgeBase/rpc/knowledge/knowledgeclient" "knowledgeBase/rpc/knowledge/util" "time" ) type KnowledgeEditLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewKnowledgeEditLogic(ctx context.Context, svcCtx *svc.ServiceContext) *KnowledgeEditLogic { return &KnowledgeEditLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } // KnowledgeEdit 知识编辑 func (l *KnowledgeEditLogic) KnowledgeEdit(in *knowledgeclient.KnowledgeEditReq) (*knowledgeclient.AddResponse, error) { // todo: add your logic here and delete this line result := &knowledgeclient.AddResponse{} //修改答案 answerUpdate := map[string]interface{}{ "update_time": time.Now().Local().Format(util.Date_Full_Layout), "content": in.Answer, } if in.State == 0 { answerUpdate["state"] = 0 } //获取问题分词 keywords := util.HttpDo(in.Question) fool := Mysql.ExecTx("编辑问题、答案", func(tx *sql.Tx) bool { ok1 := Mysql.UpdateByTx(tx, util.ANSWER, map[string]interface{}{"id": in.AnswerId}, answerUpdate) //修改问题 questionUpdate := map[string]interface{}{ "content": in.Question, "keywords": keywords, } ok2 := Mysql.UpdateByTx(tx, util.QUESTION, map[string]interface{}{"answerId": in.AnswerId}, questionUpdate) return ok1 && ok2 }) if in.State != 0 && fool { //修改es数据 knowledge := map[string]interface{}{ "knowledge_id": in.KnowledgeId, "status": 1, "create_time": time.Now().Local().Format(util.Date_Full_Layout), "create_person": in.Person, "answer": in.Answer, "question": in.Question, "keywords": keywords, "answer_id": in.AnswerId, "tenant_id": in.TenantId, } ok := elastic.UpdateNewDoc(C.Es.Index, C.Es.Type, knowledge) if ok { result.ErrorCode = 0 result.ErrorMsg = "修改问题成功" } else { result.ErrorCode = -1 result.ErrorMsg = "修改es问题失败" } } else { result.ErrorCode = -1 result.ErrorMsg = "修改mysql问题失败" } return result, nil }