From 04ce5f1ecd45ab73c3093dd1b24f351765d483ec Mon Sep 17 00:00:00 2001 From: yangchenglong11 <1332456142@qq.com> Date: Sat, 21 Oct 2017 23:47:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AE=B0=E5=BD=95=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=AD=94=E9=A2=98=20#18?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/controllers/question.go | 37 +++++++++++++++++++++++++++++++++ backend/models/question.go | 21 ++++++++++++------- 2 files changed, 50 insertions(+), 8 deletions(-) diff --git a/backend/controllers/question.go b/backend/controllers/question.go index 67b6b2c..f747322 100644 --- a/backend/controllers/question.go +++ b/backend/controllers/question.go @@ -98,4 +98,41 @@ func (qc *QuestionController) Delete() { log.Logger.Info("Delete question success") finish: qc.ServeJSON(true) +} + +func (qc *QuestionController) Update() { + var ( + err error + q models.PassedQuestion + flag bool + ) + + err = json.Unmarshal(qc.Ctx.Input.RequestBody, &q) + if err != nil { + log.Logger.Error("Update question json unmarshal err:", err) + qc.Data["json"] = map[string]interface{}{general.RespKeyStatus: general.ErrInvalidParams} + goto finish + } + + flag, err = utils.GlobalValid.Valid(&q) + if !flag { + for _, err := range utils.GlobalValid.Errors { + log.Logger.Error("The PassedQuestion key "+err.Key+" has err:", err) + } + + qc.Data["json"] = map[string]interface{}{general.RespKeyStatus: general.ErrInvalidParams} + goto finish + } + + err = models.QuestionService.AddPassed(&q) + if err != nil { + log.Logger.Error("Add passed question mysql err:", err) + qc.Data["json"] = map[string]interface{}{general.RespKeyStatus: general.ErrMysql} + goto finish + } + + qc.Data["json"] = map[string]interface{}{general.RespKeyStatus: general.ErrSucceed} + log.Logger.Info("Add passed question success") +finish: + qc.ServeJSON(true) } \ No newline at end of file diff --git a/backend/models/question.go b/backend/models/question.go index c6eb47b..91211b4 100644 --- a/backend/models/question.go +++ b/backend/models/question.go @@ -21,13 +21,6 @@ type Question struct { Status int `json:"status" gorm:"column:status"` } -type UserAddQues struct { - ID string `json:"id" gorm:"column:id" valid:"Required"` - NID string `json:"nid" gorm:"column:nid" valid:"Required"` - Description string `json:"desci" gorm:"column:desc" valid:"Required"` - Status int `json:"status" gorm:"column:status"` -} - type PassedQuestion struct { UID string `json:"uid" gorm:"column:uid" valid:"Required"` QID string `json:"qid" gorm:"column:qid" valid:"Required"` @@ -40,9 +33,17 @@ type QuestionVote struct { Kind int `json:"kind" gorm:"column:kind"` } +func (u Question) TableName() string { + return "question" +} + +func (pq PassedQuestion) TableName() string { + return "passquestion" +} + func (qu *QuestionServiceProvider) GetQuestionByUser(user string, num int) ([]Question, error) { var q []Question - err := tidb.Conn.Raw("SELECT * FROM question WHERE status = 17 AND id NOT IN (SELECT uid FROM passquestion WHERE uid = ? AND status = 17)", user).Scan(&q) + err := tidb.Conn.Raw("SELECT * FROM question WHERE status = ? AND id NOT IN (SELECT uid FROM passquestion WHERE uid = ? AND status = ?)", general.Active, user, general.Active).Scan(&q) return q[0:num], err.Error } @@ -55,3 +56,7 @@ func (qu *QuestionServiceProvider) AdminAddQuestion(question *Question) error { func (qu *QuestionServiceProvider) DeleteQuestion(qid string) error { return tidb.Conn.Model(&Question{}).Where("id = ?", qid).Update("status", general.Inactive).Error } + +func (p *QuestionServiceProvider)AddPassed(pq *PassedQuestion) error { + return tidb.Conn.Model(&PassedQuestion{}).Create(pq).Error +} \ No newline at end of file