LingxinMeng 1 éve
szülő
commit
f10884f9ac

+ 16 - 4
amd64/web_server/handler/h_exam.go

@@ -141,7 +141,7 @@ func ExamEndTicker() {
 						c_log.GlobalLogger.Error("赛队", teamName, "考试已结束!")
 						return
 					}
-					// 更新到数据库
+					// 更新到数据库(只更新最新一条)
 					stage := ""
 					if time.Now().Before(trialBegin) {
 						stage = "表演赛"
@@ -150,11 +150,23 @@ func ExamEndTicker() {
 					} else {
 						stage = "决赛"
 					}
-					sqlTemplate, _ := util.ReadFile(c_db.SqlFilesMap["exam-update-end_time-by-team_name-and-topic.sql"])
+					// 查询最新一条的id
+					selectSql, err = util.ReadFile(c_db.SqlFilesMap["exam-select-max-id-by-team_name-and-topic.sql"])
+					if err != nil {
+						c_log.GlobalLogger.Error("读取sql文件报错:", err)
+						return
+					}
+					// 可以传参数
+					var resultId []int
+					if err = c_db.MysqlDb.Select(&result, selectSql, teamName, stage); err != nil {
+						c_log.GlobalLogger.Error("数据库查询报错:", err)
+						return
+					}
+
+					sqlTemplate, _ := util.ReadFile(c_db.SqlFilesMap["exam-update-end_time-by-id.sql"])
 					if err := c_db.DoTx(sqlTemplate, []any{
 						time.Now(),
-						teamName,
-						stage,
+						util.ToString(resultId[0]),
 					}); err != nil {
 						c_log.GlobalLogger.Error("插入数据报错:", err)
 						return

+ 6 - 0
amd64/web_server/sql/exam-select-max-id-by-team_name-and-topic.sql

@@ -0,0 +1,6 @@
+select id
+from exam
+where team_name = ?
+  and topic = ?
+order by begin_time desc
+limit 1

+ 4 - 0
amd64/web_server/sql/exam-update-end_time-by-id.sql

@@ -0,0 +1,4 @@
+update exam
+set end_time = ?
+where id = ?
+

+ 3 - 1
amd64/web_server/sql/exam-update-end_time-by-team_name-and-topic.sql

@@ -1,2 +1,4 @@
-update exam set end_time = ? where team_name = ?
+update exam
+set end_time = ?
+where id = (select id from exam where team_name = ? and topic = ? order by begin_time desc limit 1)
 

+ 1 - 1
amd64/web_server/sql/exam-update-end_time-by-team_name.sql

@@ -1,2 +1,2 @@
-update exam set end_time = ? where team_name = ? and topic = ?
+update exam set end_time = ? where team_name = ?