123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- package router
- import (
- "exam_system/dao"
- "exam_system/entity"
- "exam_system/result"
- "exam_system/utils"
- "exam_system/vo"
- "net/http"
- "strconv"
- "strings"
- "github.com/gin-gonic/gin"
- "github.com/xuri/excelize/v2"
- )
- func ExamRecord(router *RouterPlus) {
- // 添加考试记录管理(开始考试)
- router.POST("/examRecord", AddExamRecord)
- // 提交答案
- router.PUT("/examRecord", UpdateExamRecord)
- // 获取考试记录列表
- router.GET("/examRecord/list", ExamRecordList)
- // 获取考试记录
- router.GET("/examRecord/:id", GetExamRecord)
- // 导出考试记录
- //router.router.GET("/examRecord/download",)
- r := router.Group("/admin")
- {
- // 获取考试记录管理
- r.GET("/examRecord/:id", AdminGetExamRecord)
- // 获取考试记录管理列表
- r.GET("/examRecord/list", AdminExamRecordList)
- // 删除考试记录管理
- // r.DELETE("/examRecord/:ids", AdminDeleteExamRecord)
- // 导出考试记录
- r.routerGroup.GET("/examRecord/download/:id", AdminDownloadExamRecord)
- }
- }
- func AddExamRecord(c *gin.Context) *result.Result {
- var examRecord entity.ExamRecord
- err := c.ShouldBindJSON(&examRecord)
- id, exists := c.Get("id")
- if !exists {
- return result.UNAUTHORIZED
- }
- examRecord.UserId = id.(int)
- if err != nil || examRecord.Id == 0 {
- return result.PARAM_ERROR
- }
- examRecord.Ip = strings.Split(c.Request.RemoteAddr, ":")[0]
- return dao.AddExamRecord(&examRecord)
- }
- func ExamRecordList(c *gin.Context) *result.Result {
- page, size, _, query, err := utils.Page(c)
- if err != nil {
- return result.PARAM_ERROR
- }
- uid, exists := c.Get("id")
- if !exists {
- return result.UNAUTHORIZED
- }
- return dao.ExamRecordList(page, size, query, uid.(int))
- }
- func GetExamRecord(c *gin.Context) *result.Result {
- idStr := c.Param("id")
- if idStr == "" {
- return result.UNKNOW_ERROR
- }
- id, err := strconv.Atoi(idStr)
- if err != nil {
- return result.UNKNOW_ERROR
- }
- uid, exists := c.Get("id")
- if !exists {
- return result.UNAUTHORIZED
- }
- return dao.ExamRecordDetail(id, uid.(int))
- }
- func UpdateExamRecord(c *gin.Context) *result.Result {
- var examRecord vo.ExamRecordVo
- err := c.ShouldBindJSON(&examRecord)
- if err != nil || examRecord.Id == 0 || examRecord.AnswerVo == nil || examRecord.Token == "" {
- return result.PARAM_ERROR
- }
- return dao.UpdateExamRecord(&examRecord)
- }
- func AdminGetExamRecord(c *gin.Context) *result.Result {
- idStr := c.Param("id")
- if idStr == "" {
- return result.UNKNOW_ERROR
- }
- id, err := strconv.Atoi(idStr)
- if err != nil {
- return result.UNKNOW_ERROR
- }
- return dao.AdminExamRecordDetail(id)
- }
- func AdminExamRecordList(c *gin.Context) *result.Result {
- page, size, _, query, err := utils.Page(c)
- examIdStr := c.Query("exam_id")
- if err != nil {
- return result.PARAM_ERROR
- }
- examId, _ := strconv.Atoi(examIdStr)
- return dao.AdminExamRecordList(page, size, query, examId)
- }
- func AdminDeleteExamRecord(c *gin.Context) *result.Result {
- idStr := c.Param("ids")
- if idStr == "" {
- return result.PARAM_ERROR
- }
- ids := strings.Split(idStr, ",")
- return dao.DeleteExamRecords(ids)
- }
- func AdminDownloadExamRecord(c *gin.Context) {
- idStr := c.Param("id")
- file, err := excelize.OpenFile(utils.ScorePath)
- if err != nil {
- c.JSON(http.StatusOK, result.UNKNOW_ERROR.SetMsg(err.Error()))
- }
- res := dao.AdminDownloadExamRecord(file, idStr)
- if res.Code != result.SUCCESS.Code {
- c.JSON(http.StatusOK, res)
- }
- c.Header("Content-Type", "application/octet-stream")
- c.Header("Content-Disposition", "attachment; filename=考生信息导出.xlsx")
- c.Header("Content-Transfer-Encoding", "binary")
- _ = file.Write(c.Writer)
- }
|