Browse Source

添加注释、优化代码

renjiaojiao 3 years ago
parent
commit
a8494eb98a

+ 1 - 0
rpc/knowledge/internal/logic/findanswerlogic.go

@@ -23,6 +23,7 @@ func NewFindAnswerLogic(ctx context.Context, svcCtx *svc.ServiceContext) *FindAn
 	}
 }
 
+// FindAnswer 根据问题查询答案
 func (l *FindAnswerLogic) FindAnswer(in *knowledgeclient.FindAnswerReq) (*knowledgeclient.FindAnswerResp, error) {
 
 	k := service.KnowledgeService{}

+ 0 - 28
rpc/knowledge/internal/logic/knowledgelistlogic.go

@@ -26,34 +26,6 @@ func NewKnowledgeListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Kno
 func (l *KnowledgeListLogic) KnowledgeList(in *knowledgeclient.ListRequest) (*knowledgeclient.ListResponse, error) {
 	// todo: add your logic here and delete this line
 	result := &knowledgeclient.ListResponse{}
-	/*var knowledgeList knowledgeclient.ListData
-	var data []*knowledgeclient.KnowledgeEntity
-	countSql := "SELECT COUNT(b.id)  FROM " + util.KNOWLEDGE +
-		" a LEFT JOIN " + util.ANSWER + " b ON a.id = b.knowledge_id LEFT JOIN " + util.QUESTION +
-		" c ON b.id = c.answer_id WHERE b.`status` =1 and a.ent_id=?"
-	count := Mysql.CountBySql(countSql, in.EntId)
-	log.Println("总数:", count)
-	if count > 0 {
-		//列表数据
-		sql := "SELECT b.content as answer,c.content as question,b.id,b.knowledge_id  FROM " + util.KNOWLEDGE +
-			" a LEFT JOIN " + util.ANSWER + " b ON a.id = b.knowledge_id LEFT JOIN " + util.QUESTION +
-			" c ON b.id = c.answer_id WHERE b.`status` =1 and a.ent_id=? order by b.update_time desc limit ?,?"
-		log.Println(sql, in.EntId, (in.PageIndex-1)*in.PageSize, in.PageSize)
-		datalist := Mysql.SelectBySql(sql, in.EntId, (in.PageIndex-1)*in.PageSize, in.PageSize)
-		if datalist != nil && *datalist != nil && len(*datalist) > 0 {
-			for _, value := range *datalist {
-				knowledge := knowledgeclient.KnowledgeEntity{}
-				knowledge.Answer = cm.ObjToString(value["answer"])
-				knowledge.Question = cm.ObjToString(value["question"])
-				knowledge.AnswerId = cm.Int64All(value["id"])
-				knowledge.KnowledgeId = cm.Int64All(value["knowledge_id"])
-				data = append(data, &knowledge)
-			}
-		}
-		//log.Println("数据:", data)
-		knowledgeList.Total = count
-		knowledgeList.Data = data
-	}*/
 	k := service.KnowledgeService{}
 	knowledgeList := k.KnowledgeList(in)
 	result.ErrorCode = 0

+ 1 - 0
rpc/knowledge/internal/logic/recommendanswerlogic.go

@@ -23,6 +23,7 @@ func NewRecommendAnswerLogic(ctx context.Context, svcCtx *svc.ServiceContext) *R
 	}
 }
 
+// RecommendAnswer 根据问题推荐3个答案
 func (l *RecommendAnswerLogic) RecommendAnswer(in *knowledgeclient.FindAnswerReq) (*knowledgeclient.RecommendAnswerResp, error) {
 	var result = &knowledgeclient.RecommendAnswerResp{}
 	k := service.KnowledgeService{}

+ 23 - 27
rpc/knowledge/internal/service/knowledgeService.go

@@ -4,14 +4,12 @@ import (
 	cm "app.yhyue.com/moapp/jybase/common"
 	. "app.yhyue.com/moapp/jybase/encrypt"
 	elastic "app.yhyue.com/moapp/jybase/esv1"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter"
 	. "bp.jydev.jianyu360.cn/SocialPlatform/knowledgeBase/entity"
 	"bp.jydev.jianyu360.cn/SocialPlatform/knowledgeBase/rpc/knowledge/knowledgeclient"
 	"bp.jydev.jianyu360.cn/SocialPlatform/knowledgeBase/rpc/knowledge/util"
-	"context"
 	"database/sql"
+	"fmt"
 	"github.com/zeromicro/go-zero/core/logx"
-	"log"
 	"strconv"
 	"time"
 )
@@ -23,6 +21,7 @@ var (
 	Type  = "smart"
 )
 
+// KnowledgeAdd 添加问题
 func (k *KnowledgeService) KnowledgeAdd(param *knowledgeclient.AddRequest, segment string) (bool, string) {
 	//先查找知识库Id
 	query := map[string]interface{}{"status": 1, "appid": param.AppId, "ent_id": param.EntId}
@@ -31,7 +30,6 @@ func (k *KnowledgeService) KnowledgeAdd(param *knowledgeclient.AddRequest, segme
 		//问题进行分词
 		keywords := ""
 		keywordsArr := util.HanlpGetNormalWords(param.Question, segment)
-		log.Println("keywordsArr", keywordsArr)
 		if len(keywordsArr) != 0 {
 			for _, val := range keywordsArr {
 				keywords += val + " "
@@ -41,7 +39,7 @@ func (k *KnowledgeService) KnowledgeAdd(param *knowledgeclient.AddRequest, segme
 			keywords = param.Question
 		}
 		//通过entUserId获取创建人名称,调用用户中心
-		req := &usercenter.EntUserReq{
+		/*req := &usercenter.EntUserReq{
 			EntId:     param.EntId,
 			EntUserId: param.EntUserId,
 			AppId:     param.AppId,
@@ -50,8 +48,8 @@ func (k *KnowledgeService) KnowledgeAdd(param *knowledgeclient.AddRequest, segme
 		if resp.ErrorCode != 0 {
 			logx.Info("查询用户中台创建人信息失败", param.EntId, param.EntUserId, "err:", err)
 			return false, "查询用户中台创建人信息失败"
-		}
-		createPerson := resp.Data.Name
+		}*/
+		createPerson := param.EntUserId
 		var answerId int64
 		nowTime := time.Now().Local().Format(util.Date_Full_Layout)
 		fool := Mysql.ExecTx("添加知识", func(tx *sql.Tx) bool {
@@ -95,12 +93,13 @@ func (k *KnowledgeService) KnowledgeAdd(param *knowledgeclient.AddRequest, segme
 	return false, "租户不存在"
 }
 
+// KnowledgeEdit 编辑问题
 func (k *KnowledgeService) KnowledgeEdit(param *knowledgeclient.KnowledgeEditReq, segment string) (ok bool) {
 	ok = false
 	//获取问题分词
 	keywords := ""
 	keywordsArr := util.HanlpGetNormalWords(param.Question, segment)
-	log.Println("keywordsArr", keywordsArr)
+	logx.Info("keywordsArr", keywordsArr)
 	if len(keywordsArr) != 0 {
 		for _, val := range keywordsArr {
 			keywords += val + " "
@@ -110,7 +109,7 @@ func (k *KnowledgeService) KnowledgeEdit(param *knowledgeclient.KnowledgeEditReq
 		keywords = param.Question
 	}
 	//通过entUserId获取创建人名称
-	req := &usercenter.EntUserReq{
+	/*req := &usercenter.EntUserReq{
 		EntId:     param.EntId,
 		EntUserId: param.EntUserId,
 		AppId:     param.AppId,
@@ -119,8 +118,8 @@ func (k *KnowledgeService) KnowledgeEdit(param *knowledgeclient.KnowledgeEditReq
 	if resp.ErrorCode != 0 {
 		logx.Info("查询用户中台创建人信息失败", param.EntId, param.EntUserId, "err:", err)
 		return ok
-	}
-	createPerson := resp.Data.Name
+	}*/
+	createPerson := param.EntUserId
 	fool := Mysql.ExecTx("编辑问题、答案", func(tx *sql.Tx) bool {
 		//修改答案
 		answerUpdate := map[string]interface{}{
@@ -158,20 +157,15 @@ func (k *KnowledgeService) KnowledgeEdit(param *knowledgeclient.KnowledgeEditReq
 	return ok
 }
 
+// KnowledgeList 问题列表
 func (k *KnowledgeService) KnowledgeList(param *knowledgeclient.ListRequest) *knowledgeclient.ListData {
 	var knowledgeList knowledgeclient.ListData
 	var data []*knowledgeclient.KnowledgeEntity
-	countSql := "SELECT COUNT(b.id)  FROM " + util.KNOWLEDGE +
-		" a LEFT JOIN " + util.ANSWER + " b ON a.id = b.knowledge_id LEFT JOIN " + util.QUESTION +
-		" c ON b.id = c.answer_id WHERE b.`status` =1 and a.ent_id=?"
-	count := Mysql.CountBySql(countSql, param.EntId)
-	log.Println("总数:", count)
+	countSql := fmt.Sprintf("SELECT COUNT(b.id) FROM %s a LEFT JOIN %s b ON a.id = b.knowledge_id LEFT JOIN %s c ON b.id = c.answer_id WHERE b.`status` =1 and a.ent_id=%d", util.KNOWLEDGE, util.ANSWER, util.QUESTION, param.EntId)
+	count := Mysql.CountBySql(countSql)
 	if count > 0 {
 		//列表数据
-		sql1 := "SELECT b.content as answer,c.content as question,b.id,b.knowledge_id  FROM " + util.KNOWLEDGE +
-			" a LEFT JOIN " + util.ANSWER + " b ON a.id = b.knowledge_id LEFT JOIN " + util.QUESTION +
-			" c ON b.id = c.answer_id WHERE b.`status` =1 and a.ent_id=? order by b.update_time desc limit ?,?"
-		//log.Println(sql, param.EntId, (param.PageIndex-1)*param.PageSize, param.PageSize)
+		sql1 := fmt.Sprintf("SELECT b.content as answer,c.content as question,b.id,b.knowledge_id  FROM %s a LEFT JOIN %s b ON a.id = b.knowledge_id LEFT JOIN %s c ON b.id = c.answer_id WHERE b.`status` =1 and a.ent_id=? order by b.update_time desc limit ?,?", util.KNOWLEDGE, util.ANSWER, util.QUESTION)
 		datalist := Mysql.SelectBySql(sql1, param.EntId, (param.PageIndex-1)*param.PageSize, param.PageSize)
 		if datalist != nil && *datalist != nil && len(*datalist) > 0 {
 			for _, value := range *datalist {
@@ -183,17 +177,17 @@ func (k *KnowledgeService) KnowledgeList(param *knowledgeclient.ListRequest) *kn
 				data = append(data, &knowledge)
 			}
 		}
-		//log.Println("数据:", data)
 		knowledgeList.Total = count
 		knowledgeList.Data = data
 	}
 	return &knowledgeList
 }
 
+// KnowledgeInfo 问题详情
 func (k *KnowledgeService) KnowledgeInfo(answerId int64) (data *knowledgeclient.KnowledgeEntity, ok bool) {
-	sql1 := "SELECT b.content as answer,c.content as question,b.id,b.knowledge_id  FROM " + util.ANSWER +
-		" b LEFT JOIN " + util.QUESTION + " c ON b.id = c.answer_id WHERE b.`status` =1 AND b.id = ? "
-	datalist := Mysql.SelectBySql(sql1, answerId)
+	//util.ANSWER,util.QUESTION
+	sql1 := fmt.Sprintf("SELECT b.content as answer,c.content as question,b.id,b.knowledge_id  FROM %s b LEFT JOIN %s c ON b.id = c.answer_id WHERE b.`status` =1 AND b.id = %d", util.ANSWER, util.QUESTION, answerId)
+	datalist := Mysql.SelectBySql(sql1)
 	if datalist != nil && *datalist != nil && len(*datalist) > 0 {
 		knowledge := knowledgeclient.KnowledgeEntity{}
 		knowledge.Answer = cm.ObjToString((*datalist)[0]["answer"])
@@ -205,6 +199,7 @@ func (k *KnowledgeService) KnowledgeInfo(answerId int64) (data *knowledgeclient.
 	return nil, false
 }
 
+// KnowledgeDel 删除问题
 func (k *KnowledgeService) KnowledgeDel(answerId int64) (ok bool) {
 	ok = false
 	//修改答案
@@ -216,12 +211,13 @@ func (k *KnowledgeService) KnowledgeDel(answerId int64) (ok bool) {
 
 	if fool {
 		//删除es数据
-		query := `{"query":{"bool":{"must":[{"term":{"answerId":"` + strconv.Itoa(int(answerId)) + `"}}],"must_not":[],"should":[]}},"from":0,"size":10,"sort":[],"facets":{}}`
+		query := `{"query":{"bool":{"must":[{"term":{"answerId":"` + strconv.Itoa(int(answerId)) + `"}}],"must_not":[],"should":[]}},"from":0,"size":1,"sort":[],"facets":{}}`
 		ok = elastic.Del(Index, Type, query)
 	}
 	return ok
 }
 
+// FindAnswer 根据问题推荐一个答案
 func (k *KnowledgeService) FindAnswer(param *knowledgeclient.FindAnswerReq, addr, index, segment string) *knowledgeclient.Question {
 	var question knowledgeclient.Question
 	robotEntId := SE.Decode4Hex(param.RobotEntId)
@@ -239,6 +235,7 @@ func (k *KnowledgeService) FindAnswer(param *knowledgeclient.FindAnswerReq, addr
 	return &question
 }
 
+// RecommendAnswer 根据问题推荐三个答案
 func (k *KnowledgeService) RecommendAnswer(param *knowledgeclient.FindAnswerReq, segment string) []*knowledgeclient.Question {
 	var (
 		keyWords    = ""
@@ -256,10 +253,9 @@ func (k *KnowledgeService) RecommendAnswer(param *knowledgeclient.FindAnswerReq,
 	if keyWords == "" {
 		keyWords = param.Question
 	}
-	log.Println("entId:", SE.Decode4Hex(param.RobotEntId))
+	logx.Info("entId:", SE.Decode4Hex(param.RobotEntId))
 	var query = util.DSL4SearchByKwsOrid(keyWords, SE.Decode4Hex(param.RobotEntId))
 	res := elastic.GetAllByNgram(Index, Type, query, "", "", searchField, 0, 3, 0, false)
-	log.Println("推荐3个答案:", res)
 	if res != nil && len(*res) > 0 {
 		for _, val := range *res {
 			answers = append(answers, &knowledgeclient.Question{

+ 2 - 2
rpc/knowledge/test/knowledge_test.go

@@ -25,7 +25,7 @@ func Test_KnowledgeAdd(t *testing.T) {
 	req := &knowledgeclient.AddRequest{}
 	req.AppId = "10000"
 	req.EntId = 14929
-	req.Question = "超级订阅为什么购买不了"
+	req.Question = "超级订阅为什么购买不了1111"
 	req.Answer = "超级订阅按购买区域、时间计价,您看下购买页,是否有选择购买的省份,选择购买的区域后,系统会自动计价,您下单购买就可以了。"
 	req.EntUserId = 4315
 	res, err := TestSystem.KnowledgeAdd(ctx, req)
@@ -49,7 +49,7 @@ func Test_KnowledgeInfo(t *testing.T) {
 	ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
 	TestSystem := knowledgeclient.NewKnowledge(zrpc.MustNewClient(c.TestConf))
 	req := &knowledgeclient.KnowledgeEntity{}
-	req.AnswerId = 23
+	req.AnswerId = 30238
 	res, err := TestSystem.KnowledgeInfo(ctx, req)
 	log.Println("res ", res)
 	log.Println("err ", err)

+ 2 - 3
rpc/knowledge/util/elasticsearch_dsl.go

@@ -2,7 +2,6 @@ package util
 
 import (
 	"fmt"
-	"github.com/zeromicro/go-zero/core/logx"
 	"strings"
 )
 
@@ -22,7 +21,7 @@ func DSL4SmartResponse(question string, entId string, msgType int, addr, index,
 	}
 	question = strings.Join(hanlpCutWords, "")
 	lenQuestion := len([]rune(question))
-	logx.Info("lenQuestion", lenQuestion)
+	//logx.Info("lenQuestion", lenQuestion)
 	if lenQuestion >= 2 {
 		queryPercent := "40%"
 		if lenQuestion < 5 {
@@ -44,7 +43,7 @@ func DSL4SmartResponse(question string, entId string, msgType int, addr, index,
 		}
 		query = fmt.Sprintf(query, "", typeStr, question, queryPercent, entId)
 		queryDSL := fmt.Sprintf(totalQuery, postFilter, query, `"answer","question"`, 1)
-		logx.Info("queryDSL:", queryDSL)
+		//logx.Info("queryDSL:", queryDSL)
 		return queryDSL
 	}
 	return ""