feat(fix): modify Problem api

This commit is contained in:
David 2021-08-10 15:40:30 +08:00
parent f8a12da531
commit b20eedceeb
1 changed files with 76 additions and 17 deletions

View File

@ -74,33 +74,92 @@ func (c *TestPaperApiController) Point() {
testIdstr := requestBody["testId"].(string)
userId, _ := strconv.ParseInt(userIdstr, 10, 64)
scores := strings.Split(scoresstr, "-")
testIds := strings.Split(testIdstr, "-")
var testInfo models.TestPaperInfo
testId, _ := strconv.ParseInt(testIdstr, 10, 64)
var scoreArr []int64
var sum int64 = 0
for _, i := range scores {
j, err := strconv.ParseInt(i, 10, 64)
sum += j
if err != nil {
panic(err)
}
scoreArr = append(scoreArr, j)
}
var test models.TestPaper
var sum int64
for i := 0; i < len(testIds); i++ {
var underTest models.UnderCorrectedPaper
id, _ := strconv.ParseInt(testIds[i], 10, 64)
testInfo.GetTestPaperInfo(id)
underTest.GetUnderCorrectedPaper(id)
var topic models.Topic
test.GetTestPaper(testId)
topic.GetTopic(test.Question_id)
var testInfos []models.TestPaperInfo
models.GetTestInfoListByTestId(testId, &testInfos)
var underTest models.UnderCorrectedPaper
underTest.GetUnderCorrectedPaper(testId)
underTest.Delete()
final := false
if underTest.Test_question_type == 1 {
test.Examiner_first_id = userId
test.Examiner_first_score = sum
final = true
} else if underTest.Test_question_type == 2 && test.Examiner_first_id == -1 {
test.Examiner_first_id = userId
test.Examiner_first_score = sum
} else if underTest.Test_question_type == 2 && test.Examiner_second_id == -1 {
test.Examiner_second_id = userId
test.Examiner_second_score = sum
if math.Abs(float64(test.Examiner_second_score)-float64(test.Examiner_first_score)) <= float64(topic.Standard_error) {
final = true
}
} else if underTest.Test_question_type == 4 || underTest.Test_question_type == 5 {
test.Leader_id = userId
test.Leader_score = sum
final = true
} else {
test.Examiner_third_id = userId
test.Examiner_third_score = sum
}
if final {
test.Final_score = sum
underTest.Delete()
testInfo.Examiner_first_id = userId
} else {
newUnderTest := underTest
underTest.Delete()
newUnderTest.Test_question_type += 1
newUnderTest.Save()
}
test.Update()
for i := 0; i < len(scores); i++ {
score, _ := strconv.ParseInt(scores[i], 10, 64)
sum += score
testInfo.Examiner_first_score = score
testInfo.Final_score = score
if underTest.Test_question_type == 1 {
testInfos[i].Examiner_first_id = userId
testInfos[i].Examiner_first_score = score
} else if underTest.Test_question_type == 2 && testInfos[i].Examiner_first_id == -1 {
testInfos[i].Examiner_first_id = userId
testInfos[i].Examiner_first_score = score
} else if underTest.Test_question_type == 2 && testInfos[i].Examiner_second_id == -1 {
testInfos[i].Examiner_second_id = userId
testInfos[i].Examiner_second_score = score
} else if underTest.Test_question_type == 4 || underTest.Test_question_type == 5 {
testInfos[i].Leader_id = userId
testInfos[i].Leader_score = score
} else {
testInfos[i].Examiner_second_id = userId
testInfos[i].Examiner_second_score = score
}
if final {
testInfos[i].Final_score = score
}
}
test.GetTestPaper(testInfo.Test_id)
test.Examiner_first_id = userId
test.Examiner_first_score = sum
test.Final_score = sum
test.Update()
var record models.ScoreRecord
record.Score = sum
record.Test_id = testInfo.Test_id
record.Test_id = testId
record.Test_record_type = 1
record.User_id = userId
record.Score_time = time.Now()
record.Save()
}