h_exam.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package handler
  2. import (
  3. webServerEntity "cicv-data-closedloop/amd64/web_server/entity"
  4. "cicv-data-closedloop/common/config/c_db"
  5. "cicv-data-closedloop/common/config/c_log"
  6. commonEntity "cicv-data-closedloop/common/entity"
  7. "cicv-data-closedloop/common/util"
  8. "github.com/gin-gonic/gin"
  9. "net/http"
  10. "time"
  11. )
  12. // 考试开始时间
  13. func Begin(c *gin.Context) {
  14. param := new(webServerEntity.ExamPao)
  15. // 映射到结构体
  16. if err := c.ShouldBindJSON(&param); err != nil {
  17. c_log.GlobalLogger.Error("项目启动接收请求参数报错:", err)
  18. c.JSON(http.StatusBadRequest, commonEntity.Response{
  19. Code: 500,
  20. Msg: "请求体解析失败。",
  21. })
  22. return
  23. }
  24. // 插入到数据库
  25. sqlTemplate, _ := util.ReadFile(c_db.SqlFilesMap["exam-insert-begin_time-by-team_name.sql"])
  26. if err := c_db.DoTx(sqlTemplate, []any{
  27. param.TeamName,
  28. time.Now(),
  29. }); err != nil {
  30. c_log.GlobalLogger.Error("插入数据报错:", err)
  31. c.JSON(http.StatusBadRequest, commonEntity.Response{
  32. Code: 500,
  33. Msg: "插入数据报错。",
  34. })
  35. return
  36. }
  37. c.JSON(http.StatusOK, commonEntity.Response{
  38. Code: 200,
  39. Msg: "插入数据成功。",
  40. })
  41. }
  42. // 考试结束时间
  43. func End(c *gin.Context) {
  44. param := new(webServerEntity.ExamPao)
  45. // 映射到结构体
  46. if err := c.ShouldBindJSON(&param); err != nil {
  47. c_log.GlobalLogger.Error("项目启动接收请求参数报错:", err)
  48. c.JSON(http.StatusBadRequest, commonEntity.Response{
  49. Code: 500,
  50. Msg: "请求体解析失败。",
  51. })
  52. return
  53. }
  54. // 1 查询指定队伍的开始时间最新的考试是否有结束时间,如果有则不在处理,如果没有则更新
  55. var result webServerEntity.ExamPo
  56. selectSql, err := util.ReadFile(c_db.SqlFilesMap["exam-select-latest-by-team_name.sql"])
  57. if err != nil {
  58. c_log.GlobalLogger.Error("读取sql文件报错:", err)
  59. c.JSON(http.StatusBadRequest, commonEntity.Response{
  60. Code: 500,
  61. Msg: "读取sql文件报错。",
  62. })
  63. return
  64. }
  65. // 可以传参数
  66. if err = c_db.MysqlDb.Select(&result, selectSql, param.TeamName); err != nil {
  67. c_log.GlobalLogger.Error("数据库查询报错:", err)
  68. c.JSON(http.StatusBadRequest, commonEntity.Response{
  69. Code: 500,
  70. Msg: "数据库查询报错。",
  71. })
  72. return
  73. }
  74. c_log.GlobalLogger.Info("数据库查询成功:", result)
  75. if !result.EndTime.IsZero() {
  76. c_log.GlobalLogger.Error("赛队", param.TeamName, "重复请求考试结束接口!")
  77. c.JSON(http.StatusBadRequest, commonEntity.Response{
  78. Code: 500,
  79. Msg: "重复请求。",
  80. })
  81. return
  82. }
  83. // 更新到数据库
  84. sqlTemplate, _ := util.ReadFile(c_db.SqlFilesMap["exam-update-end_time-by-team_name.sql"])
  85. if err := c_db.DoTx(sqlTemplate, []any{
  86. time.Now(),
  87. param.TeamName,
  88. }); err != nil {
  89. c_log.GlobalLogger.Error("插入数据报错:", err)
  90. c.JSON(http.StatusBadRequest, commonEntity.Response{
  91. Code: 500,
  92. Msg: "插入数据报错。",
  93. })
  94. return
  95. }
  96. c.JSON(http.StatusOK, commonEntity.Response{
  97. Code: 200,
  98. Msg: "插入数据成功。",
  99. })
  100. }
  101. // Page 分页查询
  102. func Page(c *gin.Context) {
  103. param := new(webServerEntity.ExamPagePao)
  104. _ = c.ShouldBindJSON(&param)
  105. c_log.GlobalLogger.Info("参数为:", param)
  106. var result []webServerEntity.ExamPo
  107. if param.TeamName == "" {
  108. if param.Topic == "" {
  109. selectSql, _ := util.ReadFile(c_db.SqlFilesMap["exam-select-page.sql"])
  110. _ = c_db.MysqlDb.Select(&result, selectSql, param.Page.CurrentPage*param.Page.Size, param.Page.Size)
  111. }
  112. }
  113. c.JSON(http.StatusOK, commonEntity.Response{
  114. Code: 200,
  115. Msg: "分页查询成功。",
  116. Data: result,
  117. })
  118. }