From 9ec55f46b4deabb520b2a6fb259a3eb7f4b9c8b1 Mon Sep 17 00:00:00 2001 From: Havoc412 <2993167370@qq.com> Date: Wed, 13 Nov 2024 20:04:08 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20add=20knowledge=20random=20list=20A?= =?UTF-8?q?PI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/global/errcode/code.go | 1 + app/global/errcode/knowledge.go | 13 +++++++++ app/global/errcode/msg.go | 2 ++ .../controller/web/knowledge_controler.go | 26 +++++++++++++++++ .../web_register_validator.go | 5 ++++ app/http/validator/web/knowledge/random.go | 29 +++++++++++++++++++ routers/web.go | 5 ++++ 7 files changed, 81 insertions(+) create mode 100644 app/global/errcode/knowledge.go create mode 100644 app/http/controller/web/knowledge_controler.go create mode 100644 app/http/validator/web/knowledge/random.go diff --git a/app/global/errcode/code.go b/app/global/errcode/code.go index fc1b773..da314fe 100644 --- a/app/global/errcode/code.go +++ b/app/global/errcode/code.go @@ -6,6 +6,7 @@ const ( ErrUser ErrEncounter ErrNlp + ErrKnowledge ) const ( diff --git a/app/global/errcode/knowledge.go b/app/global/errcode/knowledge.go new file mode 100644 index 0000000..dd179b8 --- /dev/null +++ b/app/global/errcode/knowledge.go @@ -0,0 +1,13 @@ +package errcode + +const ( + ErrKnowledgeRandomList = iota + ErrKnowledge +) + +func KnowledgeMsgInit(m msg) { + m[ErrKnowledgeRandomList] = "随机获取科普知识点失败" +} + +func KnowledgeMsgUserInit(m msg) { + m[ErrKnowledgeRandomList] = "随机获取科普知识点失败" +} diff --git a/app/global/errcode/msg.go b/app/global/errcode/msg.go index 9f6c2da..f2d2bdb 100644 --- a/app/global/errcode/msg.go +++ b/app/global/errcode/msg.go @@ -13,11 +13,13 @@ func init() { UserMsgInit(ErrMsg) EnocunterMsgInit(ErrMsg) NlpMsgInit(ErrMsg) + KnowledgeMsgInit(ErrMsg) // INGO ErrMsgForUser = make(msg) AnimalMsgUserInit(ErrMsgForUser) EncounterMsgUserInit(ErrMsgForUser) + KnowledgeMsgUserInit(ErrMsgForUser) } func GeneralMsgInit(m msg) { diff --git a/app/http/controller/web/knowledge_controler.go b/app/http/controller/web/knowledge_controler.go new file mode 100644 index 0000000..a46fa7d --- /dev/null +++ b/app/http/controller/web/knowledge_controler.go @@ -0,0 +1,26 @@ +package web + +import ( + "catface/app/global/consts" + "catface/app/global/errcode" + "catface/app/model_es" + "catface/app/utils/response" + + "github.com/gin-gonic/gin" +) + +type Knowledge struct { +} + +func (k *Knowledge) RandomList(context *gin.Context) { + num := context.GetFloat64(consts.ValidatorPrefix + "num") + + knowledgeList, err := model_es.CreateKnowledgeESFactory().RandomDocuments(int(num)) + if err != nil { + code := errcode.ErrKnowledgeRandomList + response.Fail(context, code, errcode.ErrMsg[code], errcode.ErrMsgForUser[code]) + } else { + response.Success(context, consts.CurdStatusOkMsg, knowledgeList) + } + +} diff --git a/app/http/validator/common/register_validator/web_register_validator.go b/app/http/validator/common/register_validator/web_register_validator.go index 0cd56a5..8f66a29 100644 --- a/app/http/validator/common/register_validator/web_register_validator.go +++ b/app/http/validator/common/register_validator/web_register_validator.go @@ -9,6 +9,7 @@ import ( "catface/app/http/validator/web/animal_like" "catface/app/http/validator/web/encounter" "catface/app/http/validator/web/encounter_like" + "catface/app/http/validator/web/knowledge" "catface/app/http/validator/web/nlp" "catface/app/http/validator/web/search" "catface/app/http/validator/web/users" @@ -86,4 +87,8 @@ func WebRegisterValidator() { // TAG Search key = consts.ValidatorPrefix + "SearchAll" containers.Set(key, search.SearchAll{}) + + // TAG Knowledge + key = consts.ValidatorPrefix + "KnowledgeRandomList" + containers.Set(key, knowledge.Random{}) } diff --git a/app/http/validator/web/knowledge/random.go b/app/http/validator/web/knowledge/random.go new file mode 100644 index 0000000..7220d30 --- /dev/null +++ b/app/http/validator/web/knowledge/random.go @@ -0,0 +1,29 @@ +package knowledge + +import ( + "catface/app/global/consts" + "catface/app/http/controller/web" + "catface/app/http/validator/core/data_transfer" + "catface/app/utils/response" + + "github.com/gin-gonic/gin" +) + +type Random struct { + Num int `form:"num" json:"num"` +} + +func (r Random) CheckParams(context *gin.Context) { + if err := context.ShouldBind(&r); err != nil { + response.ValidatorError(context, err) + return + } + + extraAddBindDataContext := data_transfer.DataAddContext(r, consts.ValidatorPrefix, context) + if extraAddBindDataContext == nil { + response.ErrorSystem(context, "Random Knowledge 表单验证器json化失败", "") + } else { + // 验证完成,调用控制器,并将验证器成员(字段)递给控制器,保持上下文数据一致性 + (&web.Knowledge{}).RandomList(extraAddBindDataContext) + } +} diff --git a/routers/web.go b/routers/web.go index ab59863..ace50af 100644 --- a/routers/web.go +++ b/routers/web.go @@ -154,6 +154,11 @@ func InitWebRouter() *gin.Engine { { search.GET("", validatorFactory.Create(consts.ValidatorPrefix+"SearchAll")) } + + knowledge := backend.Group("knowledge") + { + knowledge.GET("random", validatorFactory.Create(consts.ValidatorPrefix+"KnowledgeRandomList")) + } // } }