package dao import ( "database/sql" "exam_system/config" "exam_system/entity" "exam_system/result" "exam_system/utils" "exam_system/vo" "fmt" "time" ) func AddQuestionBank(t *entity.QuestionBank) *result.Result { sqlStr := "insert into question_bank(name,status,description,create_at,update_at) values (?,?,?,?,?)" res, err := config.DB.Exec(sqlStr, t.Name, t.Status, t.Description, time.Now(), time.Now()) if err != nil { return result.UNKNOW_ERROR.SetData(err) } id, _ := res.LastInsertId() return result.SuccessResult(id) } func QuestionBankDetail(id string) *result.Result { sqlStr := "select q.*,count(s.id) sub_num from question_bank q left join subject s on q.id=s.qb_id where q.id=? and q.delete_at is null group by q.id" var t vo.QuestionBankVo err := config.DB.Get(&t, sqlStr, id) if err != nil { if err == sql.ErrNoRows { return result.DATA_NOT_FOUND } return result.UNKNOW_ERROR.SetData(err.Error()) } return result.SuccessResult(&t) } func QuestionBankList(page, size int, sort string, query map[string]interface{}) *result.Result { // 1、查询列表 sqlStr := "select q.*,count( s.id ) sub_num from question_bank q left join subject s on q.id=s.qb_id and s.delete_at is null where q.delete_at is null " params := make([]interface{}, 0) if query["status"] != nil { sqlStr += "and q.status = ? " params = append(params, query["status"]) } if query["key"] != nil { sqlStr += "and q.name like ? " params = append(params, "%"+query["key"].(string)+"%") } sqlStr += "group by q.id order by create_at " if sort == "desc" { sqlStr += "desc " } sqlStr += "limit ?,?" params = append(params, utils.PostionSize(page,size), size) var ts []*vo.QuestionBankVo err := config.DB.Select(&ts, sqlStr, params...) if err != nil { return result.UNKNOW_ERROR.SetMsg(err.Error()) } // 3、查询所有 totalStr := "select count(id) from question_bank where delete_at is null " params = make([]interface{}, 0) if query["status"] != nil { totalStr += "and status = ? " params = append(params, query["status"]) } if query["key"] != nil { totalStr += "and name like ? " params = append(params, "%"+query["key"].(string)) } var total int err = config.DB.Get(&total, totalStr, params...) if err != nil { return result.UNKNOW_ERROR.SetMsg(err.Error()) } return result.SUCCESS.SetData(result.NewPage(page,len(ts),total,ts)) } func UpdateQuestionBank(q *entity.QuestionBank) *result.Result { sqlStr := "update question_bank set name=?,description=?,status=?,update_at=? where id=? and delete_at is null " res, err := config.DB.Exec(sqlStr, q.Name, q.Description, q.Status, time.Now(), q.Id) if err != nil { return result.UNKNOW_ERROR.SetData(err) } affected, _ := res.RowsAffected() return result.SuccessResult(result.NewResultChange(affected)) } func DeleteQuestionBanks(ids []string) *result.Result { parm := []interface{}{time.Now()} parmStr := "" for k, id := range ids { parm = append(parm, id) if k == (len(ids) - 1) { parmStr += "?" } else { parmStr += "?," } } sqlStr := fmt.Sprintf("update question_bank set delete_at=? where id in (%s)", parmStr) res, err := config.DB.Exec(sqlStr, parm...) if err != nil { return result.UNKNOW_ERROR.SetMsg(err.Error()) } affected, _ := res.RowsAffected() return result.SUCCESS.SetData(result.NewResultChange(affected)) }