123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- package dao
- import (
- "context"
- "database/sql"
- "fmt"
- "go-common/app/admin/main/answer/model"
- "go-common/library/log"
- )
- const (
- _questionTable = "ans_v3_question"
- _typeTable = "ans_v3_question_type"
- _queHistory = "answer_history_%d"
- )
- // QueByID by id.
- func (d *Dao) QueByID(c context.Context, id int64) (res *model.Question, err error) {
- que := &model.QuestionDB{}
- if err := d.db.Table(_questionTable).Where("id=?", id).First(que).Error; err != nil {
- return nil, err
- }
- res = &model.Question{QuestionDB: que, Ans: []string{que.Ans1, que.Ans2, que.Ans3, que.Ans4}}
- return
- }
- // ByIDs by id.
- func (d *Dao) ByIDs(c context.Context, IDs []int64) (res []*model.QuestionDB, err error) {
- if err := d.db.Table(_questionTable).Where("id in (?)", IDs).Find(&res).Error; err != nil {
- return nil, err
- }
- return
- }
- // IDsByState by id.
- func (d *Dao) IDsByState(c context.Context) (res []int64, err error) {
- var (
- rows *sql.Rows
- )
- if rows, err = d.db.Table(_questionTable).Select("id").Where("state = ?", 1).Rows(); err != nil {
- return nil, err
- }
- for rows.Next() {
- var qid int64
- if err = rows.Scan(&qid); err != nil {
- return
- }
- res = append(res, qid)
- }
- return
- }
- // QuestionAdd add register question.
- func (d *Dao) QuestionAdd(c context.Context, q *model.QuestionDB) (aff int64, err error) {
- db := d.db.Save(q)
- if err = db.Error; err != nil {
- return
- }
- aff = db.RowsAffected
- return
- }
- // QuestionEdit edit register question.
- func (d *Dao) QuestionEdit(c context.Context, arg *model.QuestionDB) (aff int64, err error) {
- que := map[string]interface{}{
- "question": arg.Question,
- "ans1": arg.Ans1,
- "ans2": arg.Ans2,
- "ans3": arg.Ans3,
- "ans4": arg.Ans4,
- "operator": arg.Operator,
- }
- db := d.db.Table(_questionTable).Omit("ctime, operator").Where("id = ?", arg.ID).Updates(que)
- if err = db.Error; err != nil {
- log.Error("%+v", err)
- return
- }
- aff = db.RowsAffected
- return
- }
- // QuestionList .
- func (d *Dao) QuestionList(c context.Context, arg *model.ArgQue) (res []*model.QuestionDB, err error) {
- db := d.db.Table(_questionTable)
- if arg.TypeID != 0 {
- db = db.Where("type_id=?", arg.TypeID)
- }
- if arg.State != -1 {
- db = db.Where("state=?", arg.State)
- }
- if len(arg.Question) != 0 {
- db = db.Where("question LIKE '%%" + arg.Question + "%%'")
- }
- db = db.Offset((arg.Pn - 1) * arg.Ps).Limit(arg.Ps).Order("id desc")
- if err = db.Find(&res).Error; err != nil {
- return nil, err
- }
- return
- }
- // QuestionCount question page total count.
- func (d *Dao) QuestionCount(c context.Context, arg *model.ArgQue) (res int64, err error) {
- db := d.db.Table(_questionTable)
- if arg.TypeID != 0 {
- db = db.Where("type_id=?", arg.TypeID)
- }
- if arg.State != -1 {
- db = db.Where("state=?", arg.State)
- }
- if len(arg.Question) != 0 {
- db = db.Where("question LIKE '%%" + arg.Question + "%%'")
- }
- if err = db.Count(&res).Error; err != nil {
- return 0, err
- }
- return
- }
- // UpdateStatus update question state.
- func (d *Dao) UpdateStatus(c context.Context, state int8, qid int64, operator string) (aff int64, err error) {
- val := map[string]interface{}{
- "state": state,
- "operator": operator,
- }
- db := d.db.Table(_questionTable).Where("id=?", qid).Updates(val)
- if err = db.Error; err != nil {
- return
- }
- aff = db.RowsAffected
- return
- }
- // Types get all types.
- func (d *Dao) Types(c context.Context) (res []*model.TypeInfo, err error) {
- db := d.db.Table(_typeTable)
- if err = db.Where("parentid != 0").Find(&res).Error; err != nil {
- return nil, err
- }
- return
- }
- // TypeSave add register question type.
- func (d *Dao) TypeSave(c context.Context, t *model.TypeInfo) (aff int64, err error) {
- db := d.db.Save(t)
- if err = db.Error; err != nil {
- return
- }
- aff = db.RowsAffected
- return
- }
- // BaseQS .
- func (d *Dao) BaseQS(c context.Context) (res []*model.QuestionDB, err error) {
- db := d.db.Table("ans_register_question")
- db = db.Where("type_id=6 AND state=1")
- if err = db.Omit("id").Find(&res).Error; err != nil {
- return nil, err
- }
- return
- }
- // AllQS .
- func (d *Dao) AllQS(c context.Context) (res []*model.QuestionDB, err error) {
- db := d.db.Table("ans_v3_question")
- if err = db.Find(&res).Error; err != nil {
- return nil, err
- }
- return
- }
- // InsBaseQs .
- func (d *Dao) InsBaseQs(c context.Context, qs *model.QuestionDB) (lastID int64, err error) {
- db := d.db.Table(_questionTable)
- qs.TypeID = 36
- qs.State = 1
- db = db.Create(qs)
- if err = db.Error; err != nil {
- return
- }
- lastID = qs.ID
- return
- }
- // QueHistory .
- func (d *Dao) QueHistory(c context.Context, arg *model.ArgHistory) (res []*model.AnswerHistoryDB, err error) {
- db := d.db.Table(fmt.Sprintf(_queHistory, arg.Mid%10))
- db = db.Where("mid = ?", arg.Mid).Offset((arg.Pn - 1) * arg.Ps).Limit(arg.Ps).Order("id desc")
- if err = db.Find(&res).Error; err != nil {
- return nil, err
- }
- return
- }
- // HistoryCount .
- func (d *Dao) HistoryCount(c context.Context, arg *model.ArgHistory) (res int64, err error) {
- db := d.db.Table(fmt.Sprintf(_queHistory, arg.Mid%10))
- if err = db.Where("mid = ?", arg.Mid).Count(&res).Error; err != nil {
- return 0, err
- }
- return
- }
|