Skip to content

Commit

Permalink
添加记录用户答题 #18
Browse files Browse the repository at this point in the history
  • Loading branch information
yangchenglong11 committed Oct 21, 2017
1 parent e1d17b2 commit 04ce5f1
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 8 deletions.
37 changes: 37 additions & 0 deletions backend/controllers/question.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
21 changes: 13 additions & 8 deletions backend/models/question.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"`
Expand All @@ -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
}

Expand All @@ -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
}

0 comments on commit 04ce5f1

Please sign in to comment.