package service import ( elastic "app.yhyue.com/moapp/jybase/esv1" "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter" "context" "database/sql" "errors" "github.com/zeromicro/go-zero/core/logx" "knowledgeBase/entity" . "knowledgeBase/rpc/knowledge/init" "knowledgeBase/rpc/knowledge/knowledgeclient" "knowledgeBase/rpc/knowledge/util" "time" ) type KnowledgeService struct{} func (k *KnowledgeService) KnowledgeAdd(param *knowledgeclient.AddRequest) (bool, string, error) { //先查找知识库Id query := map[string]interface{}{"status": 1, "appid": param.AppId, "ent_id": param.EntId} datalist := Mysql.Find(util.KNOWLEDGE, query, "id", "", -1, -1) if datalist != nil && *datalist != nil && len(*datalist) > 0 { //问题进行分词 keywords := util.HttpDo(param.Question) //通过entUserId获取创建人名称,调用用户中心 req := &usercenter.EntUserReq{ EntId: param.EntId, EntUserId: param.EntUserId, AppId: param.AppId, } resp, err := entity.UserCenterLib.GetEntUserInfo(context.Background(), req) if err != nil { logx.Infof("查询用户中台创建人信息失败", param.EntId, param.EntUserId, "err:", err) return false, "查询用户中台创建人信息失败", err } createPerson := resp.Data.Name var answerId int64 nowTime := time.Now().Local().Format(util.Date_Full_Layout) fool := Mysql.ExecTx("添加知识", func(tx *sql.Tx) bool { //插入答案 answerData := map[string]interface{}{ "knowledge_id": (*datalist)[0]["id"], "status": 1, "create_time": nowTime, "update_time": nowTime, "create_person": createPerson, "content": param.Answer, } answerId = Mysql.Insert(util.ANSWER, answerData) //插入问题 questionData := map[string]interface{}{ "answer_id": answerId, "content": param.Question, "keywords": keywords, } questionId := Mysql.Insert(util.QUESTION, questionData) return answerId > 0 && questionId > 0 }) if fool { //插入es knowledge := map[string]interface{}{ "knowledgeId": (*datalist)[0]["id"], "status": 1, "createTime": time.Now().Unix(), "createPerson": createPerson, "answer": param.Answer, "question": param.Question, "keywords": keywords, "answerId": answerId, "entId": param.EntId, } b := elastic.Save(C.Es.Index, C.Es.Type, knowledge) if b { return true, "插入es成功", nil } else { return false, "插入es出错", errors.New("插入es出错") } } else { return false, "插入mysql出错", errors.New("插入mysql出错") } } else { return false, "租户不存在", errors.New("租户不存在") } }