From 4a2d07d1759f6540cc012d7a0036bdd029807479 Mon Sep 17 00:00:00 2001 From: Jsharkc <1773867204@qq.com> Date: Sun, 22 Oct 2017 03:56:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=B7=AF=E7=94=B1=20#29?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/controllers/knowledge.go | 116 +++++++++++++++++++++++++++++++ backend/controllers/question.go | 2 +- backend/routers/user/router.go | 16 +++++ 3 files changed, 133 insertions(+), 1 deletion(-) create mode 100644 backend/controllers/knowledge.go diff --git a/backend/controllers/knowledge.go b/backend/controllers/knowledge.go new file mode 100644 index 0000000..b7aac2c --- /dev/null +++ b/backend/controllers/knowledge.go @@ -0,0 +1,116 @@ +package controllers + +import ( + "encoding/json" + + "github.com/Jsharkc/TechTree/backend/general" + "github.com/Jsharkc/TechTree/backend/models" + "github.com/Jsharkc/TechTree/backend/utils" + "github.com/Jsharkc/TechTree/lib/log" +) + +type KnowledgeController struct { + BaseController +} + +func (kc *KnowledgeController) GetKnowledge() { + var ( + err error + k []models.Knowledge + flag bool + nid struct{ + NID string `json:"nid" valid:"Required"` + } + ) + + err = json.Unmarshal(kc.Ctx.Input.RequestBody, &nid) + if err != nil { + log.Logger.Error("Get knowledge json unmarshal err:", err) + kc.Data["json"] = map[string]interface{}{general.RespKeyStatus: general.ErrInvalidParams} + goto finish + } + + flag, err = utils.GlobalValid.Valid(&nid) + if !flag { + for _, err := range utils.GlobalValid.Errors { + log.Logger.Error("The knowledge key "+err.Key+" has err:", err) + } + + kc.Data["json"] = map[string]interface{}{general.RespKeyStatus: general.ErrInvalidParams} + goto finish + } + + k, err = models.KnowledgeService.GetKnowledgeByNode(nid.NID) + if err != nil { + log.Logger.Error("get knowledge err:", err) + kc.Data["json"] = map[string]interface{}{general.RespKeyStatus: general.ErrMysql} + goto finish + } + + kc.Data["json"] = map[string]interface{}{general.RespKeyStatus: general.ErrSucceed, general.RespKeyData: k} +finish: + kc.ServeJSON(true) +} + +func (kc *KnowledgeController) AdminAddKnowledge() { + var ( + err error + k models.Knowledge + flag bool + ) + + err = json.Unmarshal(kc.Ctx.Input.RequestBody, &k) + if err != nil { + log.Logger.Error("AdminAddKnowledge json unmarshal err:", err) + kc.Data["json"] = map[string]interface{}{general.RespKeyStatus: general.ErrInvalidParams} + goto finish + } + + flag, err = utils.GlobalValid.Valid(&k) + if !flag { + for _, err := range utils.GlobalValid.Errors { + log.Logger.Error("The knowledge key "+err.Key+" has err:", err) + } + + kc.Data["json"] = map[string]interface{}{general.RespKeyStatus: general.ErrInvalidParams} + goto finish + } + + err = models.KnowledgeService.AdminAddKnowledge(&k) + if err != nil { + log.Logger.Error("Add knowledge mysql err:", err) + kc.Data["json"] = map[string]interface{}{general.RespKeyStatus: general.ErrMysql} + goto finish + } + + kc.Data["json"] = map[string]interface{}{general.RespKeyStatus: general.ErrSucceed} + log.Logger.Info("Add question success") + finish: + kc.ServeJSON(true) +} + +func (kc *KnowledgeController) Delete() { + var ( + err error + id string + ) + + err = json.Unmarshal(kc.Ctx.Input.RequestBody, &id) + if err != nil || id == "" { + log.Logger.Error("Delete question json unmarshal err:", err) + kc.Data["json"] = map[string]interface{}{general.RespKeyStatus: general.ErrInvalidParams} + goto finish + } + + err = models.KnowledgeService.DeleteKnowledge(id) + if err != nil { + log.Logger.Error("Delete question mysql err:", err) + kc.Data["json"] = map[string]interface{}{general.RespKeyStatus: general.ErrMysql} + goto finish + } + + kc.Data["json"] = map[string]interface{}{general.RespKeyStatus: general.ErrSucceed} + log.Logger.Info("Delete question success") + finish: + kc.ServeJSON(true) +} diff --git a/backend/controllers/question.go b/backend/controllers/question.go index f768171..564e56b 100644 --- a/backend/controllers/question.go +++ b/backend/controllers/question.go @@ -117,7 +117,7 @@ finish: qc.ServeJSON(true) } -func (qc *QuestionController) Update() { +func (qc *QuestionController) AddPassed() { var ( err error q models.PassedQuestion diff --git a/backend/routers/user/router.go b/backend/routers/user/router.go index 09ea101..113e2c3 100644 --- a/backend/routers/user/router.go +++ b/backend/routers/user/router.go @@ -7,6 +7,22 @@ import ( ) func init() { + // User beego.Router("/login", &controllers.UserController{}, "post:Login") beego.Router("/user/register", &controllers.UserController{},"post:Register") + + // Node + beego.Router("/node/list", &controllers.NodeController{}, "get:ListAll") + beego.Router("/node/add", &controllers.UserController{}, "post:AddNode") + beego.Router("/node/vote/add", &controllers.UserController{}, "post:Vote") + beego.Router("/node/vote/query", &controllers.UserController{}, "post:QueryVoteExist") + beego.Router("/node/pass/add", &controllers.NodeController{}, "post:AddPass") + beego.Router("/node/pass/query", &controllers.NodeController{}, "post:IsPassed") + + // Question + beego.Router("/question/list", &controllers.QuestionController{}, "post:GetQuestion") + beego.Router("/question/pass/add", &controllers.QuestionController{}, "post:AddPassed") + + // Knowledge + beego.Router("/knowledge/list", &controllers.KnowledgeController{}, "post:GetKnowledge") }