Merge branch 'frontend' of https://gitee.com/Ontheway520/open-ct into frontend

This commit is contained in:
scales 2021-10-01 18:16:56 +08:00
commit 25860dd401
6 changed files with 693 additions and 467 deletions

View File

@ -3,21 +3,10 @@
<component name="ChangeListManager">
<list default="true" id="90d49d24-cd7e-4f14-b075-c6e5fe5ae2ce" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/casdoor/conf/app.conf" beforeDir="false" afterPath="$PROJECT_DIR$/casdoor/conf/app.conf" afterDir="false" />
<change beforePath="$PROJECT_DIR$/controllers/Administrator.go" beforeDir="false" afterPath="$PROJECT_DIR$/controllers/Administrator.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/controllers/score.go" beforeDir="false" afterPath="$PROJECT_DIR$/controllers/score.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/controllers/supervisor.go" beforeDir="false" afterPath="$PROJECT_DIR$/controllers/supervisor.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/frontend" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/lastupdate.tmp" beforeDir="false" afterPath="$PROJECT_DIR$/lastupdate.tmp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/main.go" beforeDir="false" afterPath="$PROJECT_DIR$/main.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/models/scoreRecord.go" beforeDir="false" afterPath="$PROJECT_DIR$/models/scoreRecord.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/models/testPaper.go" beforeDir="false" afterPath="$PROJECT_DIR$/models/testPaper.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/models/topic.go" beforeDir="false" afterPath="$PROJECT_DIR$/models/topic.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/models/underCorrectedPaper.go" beforeDir="false" afterPath="$PROJECT_DIR$/models/underCorrectedPaper.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/models/user.go" beforeDir="false" afterPath="$PROJECT_DIR$/models/user.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/requests/admin.go" beforeDir="false" afterPath="$PROJECT_DIR$/requests/admin.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/requests/supervisor.go" beforeDir="false" afterPath="$PROJECT_DIR$/requests/supervisor.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/responses/supervisor.go" beforeDir="false" afterPath="$PROJECT_DIR$/responses/supervisor.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/routers/router.go" beforeDir="false" afterPath="$PROJECT_DIR$/routers/router.go" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
@ -195,9 +184,9 @@
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
<url>file://$PROJECT_DIR$/controllers/supervisor.go</url>
<line>777</line>
<option name="timeStamp" value="6" />
<url>file://$PROJECT_DIR$/controllers/score.go</url>
<line>159</line>
<option name="timeStamp" value="8" />
</line-breakpoint>
</breakpoints>
</breakpoint-manager>

View File

@ -130,21 +130,8 @@ func UploadPic(name string,text []string)(src string) {
func (c *AdminApiController) ReadExcel(){
c.Ctx.ResponseWriter.Header().Set("Access-Control-Allow-Origin", c.Ctx.Request.Header.Get("Origin"))
defer c.ServeJSON()
//var requestBody requests.ReadExcel
var resp Response
var err error
//err =json.Unmarshal(c.Ctx.Input.RequestBody, &requestBody)
//if err!=nil {
// log.Println(err)
// resp = Response{"10001","cannot unmarshal",err}
// c.Data["json"] = resp
// return
//}
//supervisorId := requestBody.SupervisorId
// filePath := requestBody.FilePath
//bytes := requestBody.Excel
//r := requests.ReadExcelBytes{}
_, header, err := c.GetFile("excel")
err = err
if err != nil {
@ -153,26 +140,8 @@ func (c *AdminApiController) ReadExcel(){
c.Data["json"] = resp
return
}
//bytes := r.Excel
//----------------------------------------------------
//bytes, err := os.ReadFile(filePath)
//
//
//file, err := os.Create("excelFile")
//if err!=nil {
// log.Println(err)
// resp = Response{"30000","excel 表导入错误",err}
// c.Data["json"] = resp
// return
//}
//_, err = file.Write(bytes)
//if err!=nil {
// log.Println(err)
// resp = Response{"30000","excel 表导入错误",err}
// c.Data["json"] = resp
// return
//}
f, err := excelize.OpenFile(header.Filename)
if err != nil {
@ -225,6 +194,7 @@ func (c *AdminApiController) ReadExcel(){
if !has {
testPaper.Test_id=testId
testPaper.Question_id=questionId
testPaper.Question_status=1
testPaper.Candidate=name
err = testPaper.Insert()
if err != nil {
@ -266,7 +236,261 @@ func (c *AdminApiController) ReadExcel(){
}
}
//err = file.Close()
if err!=nil {
log.Println(err)
}
err = os.Remove("excelFile")
if err!=nil {
log.Println(err)
}
//------------------------------------------------
data := make(map[string]interface{})
data["data"] =nil
resp = Response{"10000", "OK", data}
c.Data["json"] = resp
}
/**
2.样卷导入
*/
func (c *AdminApiController) ReadExampleExcel(){
c.Ctx.ResponseWriter.Header().Set("Access-Control-Allow-Origin", c.Ctx.Request.Header.Get("Origin"))
defer c.ServeJSON()
var resp Response
var err error
_, header, err := c.GetFile("excel")
err = err
if err != nil {
log.Println(err)
resp = Response{"10001","cannot unmarshal",err}
c.Data["json"] = resp
return
}
//----------------------------------------------------
f, err := excelize.OpenFile(header.Filename)
if err != nil {
log.Println(err)
resp = Response{"30000","excel 表导入错误",err}
c.Data["json"] = resp
return
}
// Get all the rows in the Sheet1.
rows, err := f.GetRows("Sheet2")
if err != nil {
log.Println(err)
resp = Response{"30000","excel 表导入错误",err}
c.Data["json"] = resp
return
}
for i:=1;i<len(rows);i++ {
for j:=1;j<len(rows[i]);j++ {
if i>=1&&j>=3 {
//准备数据
testIdStr:=rows[i][0]
testId, _ := strconv.ParseInt(testIdStr, 10, 64)
questionIds := strings.Split(rows[0][j], "-")
questionIdStr:=questionIds[0]
questionId, _ := strconv.ParseInt(questionIdStr, 10, 64)
questionDetailIdStr:=questionIds[3]
questionDetailId, _ := strconv.ParseInt(questionDetailIdStr, 10, 64)
name:=rows[i][2]
//填充数据
var testPaperInfo models.TestPaperInfo
var testPaper models.TestPaper
testPaperInfo.Question_detail_id=questionDetailId
s:=rows[i][j]
split := strings.Split(s, "\n")
src := UploadPic(rows[i][0]+rows[0][j], split)
testPaperInfo.Pic_src=src
//查看大题试卷是否已经导入
has,err := testPaper.GetTestPaper(testId)
if err!=nil {
log.Println(err)
}
//导入大题试卷
if !has {
testPaper.Test_id=testId
testPaper.Question_id=questionId
testPaper.Question_status=6
testPaper.Candidate=name
err = testPaper.Insert()
if err != nil {
log.Println(err)
resp = Response{"30001","试卷大题导入错误",err}
c.Data["json"] = resp
return
}
}
//导入小题试卷
testPaperInfo.Test_id=testId
err = testPaperInfo.Insert()
if err != nil {
log.Println(err)
resp = Response{"30002","试卷小题导错误",err}
c.Data["json"] = resp
return
}
}
}
}
//获取选项名 存导入试卷数
for k:=3;k<len(rows[0]);k++ {
questionIds := strings.Split(rows[0][k], "-")
questionIdStr:=questionIds[0]
questionId, _ := strconv.ParseInt(questionIdStr, 10, 64)
var topic models.Topic
topic.Question_id=questionId
topic.Import_number=int64(len(rows)-1)
err = topic.Update()
if err != nil {
log.Println(err)
resp = Response{"30003","大题导入试卷数更新错误",err}
c.Data["json"] = resp
return
}
}
if err!=nil {
log.Println(err)
}
err = os.Remove("excelFile")
if err!=nil {
log.Println(err)
}
//------------------------------------------------
data := make(map[string]interface{})
data["data"] =nil
resp = Response{"10000", "OK", data}
c.Data["json"] = resp
}
func (c *AdminApiController) ReadAnswerExcel(){
c.Ctx.ResponseWriter.Header().Set("Access-Control-Allow-Origin", c.Ctx.Request.Header.Get("Origin"))
defer c.ServeJSON()
var resp Response
var err error
_, header, err := c.GetFile("excel")
err = err
if err != nil {
log.Println(err)
resp = Response{"10001","cannot unmarshal",err}
c.Data["json"] = resp
return
}
//----------------------------------------------------
f, err := excelize.OpenFile(header.Filename)
if err != nil {
log.Println(err)
resp = Response{"30000","excel 表导入错误",err}
c.Data["json"] = resp
return
}
// Get all the rows in the Sheet1.
rows, err := f.GetRows("Sheet2")
if err != nil {
log.Println(err)
resp = Response{"30000","excel 表导入错误",err}
c.Data["json"] = resp
return
}
for i:=1;i<len(rows);i++ {
for j:=1;j<len(rows[i]);j++ {
if i>=1&&j>=3 {
//准备数据
testIdStr:=rows[i][0]
testId, _ := strconv.ParseInt(testIdStr, 10, 64)
questionIds := strings.Split(rows[0][j], "-")
questionIdStr:=questionIds[0]
questionId, _ := strconv.ParseInt(questionIdStr, 10, 64)
questionDetailIdStr:=questionIds[3]
questionDetailId, _ := strconv.ParseInt(questionDetailIdStr, 10, 64)
name:=rows[i][2]
//填充数据
var testPaperInfo models.TestPaperInfo
var testPaper models.TestPaper
testPaperInfo.Question_detail_id=questionDetailId
s:=rows[i][j]
split := strings.Split(s, "\n")
src := UploadPic(rows[i][0]+rows[0][j], split)
testPaperInfo.Pic_src=src
//查看大题试卷是否已经导入
has,err := testPaper.GetTestPaper(testId)
if err!=nil {
log.Println(err)
}
//导入大题试卷
if !has {
testPaper.Test_id=testId
testPaper.Question_id=questionId
testPaper.Question_status=5
testPaper.Candidate=name
err = testPaper.Insert()
if err != nil {
log.Println(err)
resp = Response{"30001","试卷大题导入错误",err}
c.Data["json"] = resp
return
}
}
//导入小题试卷
testPaperInfo.Test_id=testId
err = testPaperInfo.Insert()
if err != nil {
log.Println(err)
resp = Response{"30002","试卷小题导错误",err}
c.Data["json"] = resp
return
}
}
}
}
//获取选项名 存导入试卷数
for k:=3;k<len(rows[0]);k++ {
questionIds := strings.Split(rows[0][k], "-")
questionIdStr:=questionIds[0]
questionId, _ := strconv.ParseInt(questionIdStr, 10, 64)
var topic models.Topic
topic.Question_id=questionId
topic.Import_number=int64(len(rows)-1)
err = topic.Update()
if err != nil {
log.Println(err)
resp = Response{"30003","大题导入试卷数更新错误",err}
c.Data["json"] = resp
return
}
}
if err!=nil {
log.Println(err)
}

View File

@ -117,7 +117,9 @@ func (c *TestPaperApiController) List() {
func (c *TestPaperApiController) Point() {
defer c.ServeJSON()
var requestBody requests.TestPoint
err := json.Unmarshal(c.Ctx.Input.RequestBody, &requestBody)
var resp Response
var err error
err = json.Unmarshal(c.Ctx.Input.RequestBody, &requestBody)
if err != nil {
resp := Response{"10001", "cannot unmarshal", err}
c.Data["json"] = resp
@ -131,18 +133,7 @@ func (c *TestPaperApiController) Point() {
scores := strings.Split(scoresStr, "-")
testDetailIds := strings.Split(testDetailIdStr, "-")
//-------------------------------------------------------
//score数组string转int
var scoreArr []int64
var sum int64 = 0
var record models.ScoreRecord
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 topic models.Topic
@ -166,149 +157,414 @@ func (c *TestPaperApiController) Point() {
c.Data["json"] = resp
return
}
if underTest.Test_question_type==0 {
standardError := topic.Standard_error
final := false
//分三种情况
if userId == test.Examiner_first_id {
var sum int64
//给试卷详情表打分
for i := 0; i < len(testDetailIds); i++ {
//取出小题试卷id,和小题分数
var testInfo models.TestPaperInfo
testDetailIdString:=testDetailIds[i]
testDetailId, _ := strconv.ParseInt(testDetailIdString, 10, 64)
scoreString:=scores[i]
score, _ := strconv.ParseInt(scoreString, 10, 64)
//------------------------------------------------
if topic.Score_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) {
log.Println(math.Abs(float64(test.Examiner_second_score) - float64(test.Examiner_first_score)))
sum = int64(math.Abs(float64(test.Examiner_second_score+test.Examiner_first_score)) / 2)
final = true
} else {
newUnderTest := models.UnderCorrectedPaper{}
//随机 抽一个 人
newUnderTest.User_id = models.FindNewUserId(test.Examiner_first_id, test.Examiner_second_id, test.Question_id)
newUnderTest.Test_question_type = 3
newUnderTest.Test_id = underTest.Test_id
newUnderTest.Question_id = underTest.Question_id
err = newUnderTest.Save()
//查试卷小题
err := testInfo.GetTestPaperInfo(testDetailId)
if err != nil {
resp := Response{"10008", "get testPaper fail", err}
c.Data["json"] = resp
return
}
//修改试卷详情表
testInfo.Examiner_first_self_score=score
err = testInfo.Update()
if err != nil {
resp := Response{"10009", "update testPaper fail", err}
c.Data["json"] = resp
return
}
sum += score
}
//给试卷表打分
test.Examiner_first_self_score = sum
err = test.Update()
if err != nil {
resp := Response{"10005", "insert undertest fail", err}
resp := Response{"10007", "update test fail", err}
c.Data["json"] = resp
return
}
}
}
if underTest.Test_question_type == 0 {
test.Leader_id = userId
test.Leader_score = sum
final = true
}
if underTest.Test_question_type == 3 {
test.Examiner_third_id = userId
test.Examiner_third_score = sum
first := math.Abs(float64(test.Examiner_third_score - test.Examiner_first_score))
second := math.Abs(float64(test.Examiner_third_score - test.Examiner_second_score))
var small float64
if first <= second {
small = first
sum = (test.Examiner_third_score + test.Examiner_first_score) / 2
} else {
small = second
sum = (test.Examiner_third_score + test.Examiner_second_score) / 2
}
if small <= float64(topic.Standard_error) {
final = true
} else {
//删除试卷待批改表 ,增加试卷记录表
var record models.ScoreRecord
var underTest models.UnderCorrectedPaper
test.Question_status = 2
newUnderTest := models.UnderCorrectedPaper{}
//阅卷组长类型默认 id 10000
newUnderTest.User_id = "10000"
newUnderTest.Test_question_type = 4
newUnderTest.Test_id = underTest.Test_id
newUnderTest.Question_id = underTest.Question_id
err = newUnderTest.Save()
if err != nil {
resp := Response{"10006", "insert undertest fail", err}
err = models.GetSelfScorePaperByTestQuestionTypeAndTestId(&underTest, testId,userId)
if err!=nil {
resp = Response{"20012","GetUnderCorrectedPaperByUserIdAndTestId fail",err}
c.Data["json"] = resp
return
}
}
}
if final {
test.Final_score = sum
record.Test_finish=1
}
record.Score = sum
record.Test_id = testId
record.Test_record_type = underTest.Test_question_type
record.User_id = userId
record.Question_id=underTest.Question_id
err = record.Save()
if err!=nil {
resp = Response{"20013","Save fail",err}
c.Data["json"] = resp
return
}
err = underTest.SelfMarkDelete()
if err!=nil {
resp = Response{"20014","Delete fail",err}
c.Data["json"] = resp
return
}
if math.Abs(float64(sum-test.Examiner_first_score))>float64(standardError) {
var newUnderTest models.UnderCorrectedPaper
newUnderTest.User_id="10000"
newUnderTest.Self_score_id=userId
newUnderTest.Test_id=testId
newUnderTest.Question_id=test.Question_id
newUnderTest.Test_question_type=7
newUnderTest.Save()
}
}else if userId==test.Examiner_second_id {
var sum int64
//给试卷详情表打分
for i := 0; i < len(testDetailIds); i++ {
//取出小题试卷id,和小题分数
var testInfo models.TestPaperInfo
testDetailIdString:=testDetailIds[i]
testDetailId, _ := strconv.ParseInt(testDetailIdString, 10, 64)
scoreString:=scores[i]
score, _ := strconv.ParseInt(scoreString, 10, 64)
//------------------------------------------------
//查试卷小题
err := testInfo.GetTestPaperInfo(testDetailId)
if err != nil {
resp := Response{"10008", "get testPaper fail", err}
c.Data["json"] = resp
return
}
//修改试卷详情表
testInfo.Examiner_second_self_score=score
err = testInfo.Update()
if err != nil {
resp := Response{"10009", "update testPaper fail", err}
c.Data["json"] = resp
return
}
sum += score
}
//给试卷表打分
test.Examiner_second_self_score = sum
err = test.Update()
if err != nil {
resp := Response{"10007", "update test fail", err}
c.Data["json"] = resp
return
}
//删除试卷待批改表 ,增加试卷记录表
var record models.ScoreRecord
var underTest models.UnderCorrectedPaper
err = models.GetSelfScorePaperByTestQuestionTypeAndTestId(&underTest, testId,userId)
if err!=nil {
resp = Response{"20012","GetUnderCorrectedPaperByUserIdAndTestId fail",err}
c.Data["json"] = resp
return
}
record.Score = sum
record.Test_id = testId
record.Test_record_type = underTest.Test_question_type
record.User_id = userId
record.Question_id=underTest.Question_id
err = record.Save()
if err!=nil {
resp = Response{"20013","Save fail",err}
c.Data["json"] = resp
return
}
err = underTest.SelfMarkDelete()
if err!=nil {
resp = Response{"20014","Delete fail",err}
c.Data["json"] = resp
return
}
if math.Abs(float64(sum-test.Examiner_second_score))>float64(standardError) {
var newUnderTest models.UnderCorrectedPaper
newUnderTest.User_id="10000"
newUnderTest.Test_id=testId
newUnderTest.Self_score_id=userId
newUnderTest.Question_id=test.Question_id
newUnderTest.Test_question_type=7
newUnderTest.Save()
}
} else if userId ==test.Examiner_third_id {
var sum int64
//给试卷详情表打分
for i := 0; i < len(testDetailIds); i++ {
//取出小题试卷id,和小题分数
var testInfo models.TestPaperInfo
testDetailIdString:=testDetailIds[i]
testDetailId, _ := strconv.ParseInt(testDetailIdString, 10, 64)
scoreString:=scores[i]
score, _ := strconv.ParseInt(scoreString, 10, 64)
//------------------------------------------------
//查试卷小题
err := testInfo.GetTestPaperInfo(testDetailId)
if err != nil {
resp := Response{"10008", "get testPaper fail", err}
c.Data["json"] = resp
return
}
//修改试卷详情表
testInfo.Examiner_third_self_score=score
err = testInfo.Update()
if err != nil {
resp := Response{"10009", "update testPaper fail", err}
c.Data["json"] = resp
return
}
sum += score
}
//给试卷表打分
test.Examiner_third_self_score = sum
err = test.Update()
if err != nil {
resp := Response{"10007", "update test fail", err}
c.Data["json"] = resp
return
}
//删除试卷待批改表 ,增加试卷记录表
var record models.ScoreRecord
var underTest models.UnderCorrectedPaper
err = models.GetSelfScorePaperByTestQuestionTypeAndTestId(&underTest, testId,userId)
if err!=nil {
resp = Response{"20012","GetUnderCorrectedPaperByUserIdAndTestId fail",err}
c.Data["json"] = resp
return
}
record.Score = sum
record.Test_id = testId
record.Test_record_type = underTest.Test_question_type
record.User_id = userId
record.Question_id=underTest.Question_id
err = record.Save()
if err!=nil {
resp = Response{"20013","Save fail",err}
c.Data["json"] = resp
return
}
err = underTest.SelfMarkDelete()
if err!=nil {
resp = Response{"20014","Delete fail",err}
c.Data["json"] = resp
return
}
if math.Abs(float64(sum-test.Examiner_third_score))>float64(standardError) {
var newUnderTest models.UnderCorrectedPaper
newUnderTest.User_id="10000"
newUnderTest.Test_id=testId
newUnderTest.Question_id=test.Question_id
newUnderTest.Self_score_id=userId
newUnderTest.Test_question_type=7
newUnderTest.Save()
}
err = underTest.Delete()
if err != nil {
resp := Response{"10006", "delete undertest fail", err}
c.Data["json"] = resp
return
}
err = test.Update()
if err != nil {
resp := Response{"10007", "update test fail", err}
c.Data["json"] = resp
return
}
for i := 0; i < len(scores); i++ {
score := scoreArr[i]
var tempTest models.TestPaperInfo
id, _ := strconv.ParseInt(testDetailIds[i], 10, 64)
log.Println(id)
err = tempTest.GetTestPaperInfo(id)
if err != nil {
resp := Response{"10008", "get testPaper fail", err}
c.Data["json"] = resp
return
}
}else { //score数组string转int
var scoreArr []int64
var sum int64 = 0
var record models.ScoreRecord
for _, i := range scores {
j, err := strconv.ParseInt(i, 10, 64)
sum += j
if err != nil {
panic(err)
}
scoreArr = append(scoreArr, j)
}
final := false
if topic.Score_type == 1 {
tempTest.Examiner_first_id = userId
tempTest.Examiner_first_score = score
} else if topic.Score_type == 2 && tempTest.Examiner_first_id == "-1" {
tempTest.Examiner_first_id = userId
tempTest.Examiner_first_score = score
} else if topic.Score_type == 2 && tempTest.Examiner_second_id == "-1" {
tempTest.Examiner_second_id = userId
tempTest.Examiner_second_score = score
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) {
log.Println(math.Abs(float64(test.Examiner_second_score) - float64(test.Examiner_first_score)))
sum = int64(math.Abs(float64(test.Examiner_second_score+test.Examiner_first_score)) / 2)
final = true
} else {
newUnderTest := models.UnderCorrectedPaper{}
//随机 抽一个 人
newUnderTest.User_id = models.FindNewUserId(test.Examiner_first_id, test.Examiner_second_id, test.Question_id)
newUnderTest.Test_question_type = 3
newUnderTest.Test_id = underTest.Test_id
newUnderTest.Question_id = underTest.Question_id
err = newUnderTest.Save()
if err != nil {
resp := Response{"10005", "insert undertest fail", err}
c.Data["json"] = resp
return
}
}
}
if underTest.Test_question_type == 4 || underTest.Test_question_type == 5 {
tempTest.Leader_id = userId
tempTest.Leader_score = score
} else if underTest.Test_question_type == 3 {
tempTest.Examiner_third_id = userId
tempTest.Examiner_third_score = score
if underTest.Test_question_type == 0 {
test.Leader_id = userId
test.Leader_score = sum
final = true
}
if underTest.Test_question_type == 3 {
test.Examiner_third_id = userId
test.Examiner_third_score = sum
first := math.Abs(float64(test.Examiner_third_score - test.Examiner_first_score))
second := math.Abs(float64(test.Examiner_third_score - test.Examiner_second_score))
var small float64
if first <= second {
small = first
sum = (test.Examiner_third_score + test.Examiner_first_score) / 2
} else {
small = second
sum = (test.Examiner_third_score + test.Examiner_second_score) / 2
}
if small <= float64(topic.Standard_error) {
final = true
} else {
test.Question_status = 2
newUnderTest := models.UnderCorrectedPaper{}
//阅卷组长类型默认 id 10000
newUnderTest.User_id = "10000"
newUnderTest.Test_question_type = 4
newUnderTest.Test_id = underTest.Test_id
newUnderTest.Question_id = underTest.Question_id
err = newUnderTest.Save()
if err != nil {
resp := Response{"10006", "insert undertest fail", err}
c.Data["json"] = resp
return
}
}
}
if final {
tempTest.Final_score = score
test.Final_score = sum
record.Test_finish=1
}
err = tempTest.Update()
err = underTest.Delete()
if err != nil {
resp := Response{"10009", "update testPaper fail", err}
resp := Response{"10006", "delete undertest fail", err}
c.Data["json"] = resp
return
}
err = test.Update()
if err != nil {
resp := Response{"10007", "update test fail", err}
c.Data["json"] = resp
return
}
for i := 0; i < len(scores); i++ {
score := scoreArr[i]
var tempTest models.TestPaperInfo
id, _ := strconv.ParseInt(testDetailIds[i], 10, 64)
log.Println(id)
err = tempTest.GetTestPaperInfo(id)
if err != nil {
resp := Response{"10008", "get testPaper fail", err}
c.Data["json"] = resp
return
}
if topic.Score_type == 1 {
tempTest.Examiner_first_id = userId
tempTest.Examiner_first_score = score
} else if topic.Score_type == 2 && tempTest.Examiner_first_id == "-1" {
tempTest.Examiner_first_id = userId
tempTest.Examiner_first_score = score
} else if topic.Score_type == 2 && tempTest.Examiner_second_id == "-1" {
tempTest.Examiner_second_id = userId
tempTest.Examiner_second_score = score
}
if underTest.Test_question_type == 4 || underTest.Test_question_type == 5 {
tempTest.Leader_id = userId
tempTest.Leader_score = score
} else if underTest.Test_question_type == 3 {
tempTest.Examiner_third_id = userId
tempTest.Examiner_third_score = score
}
if final {
tempTest.Final_score = score
}
err = tempTest.Update()
if err != nil {
resp := Response{"10009", "update testPaper fail", err}
c.Data["json"] = resp
return
}
}
record.Score = sum
record.Question_id = topic.Question_id
record.Test_id = testId
record.Test_record_type = underTest.Test_question_type
record.User_id = userId
record.Score_time = time.Now()
err = record.Save()
if err != nil {
resp := Response{"10010", "insert record fail", err}
c.Data["json"] = resp
return
}
}
record.Score = sum
record.Question_id = topic.Question_id
record.Test_id = testId
record.Test_record_type = underTest.Test_question_type
record.User_id = userId
record.Score_time = time.Now()
err = record.Save()
if err != nil {
resp := Response{"10010", "insert record fail", err}
c.Data["json"] = resp
return
}
resp := Response{"10000", "ok", err}
resp = Response{"10000", "ok", err}
c.Data["json"] = resp
}
@ -702,291 +958,44 @@ func (c *TestPaperApiController) SelfScoreList() {
c.Data["json"] = resp
}
/**
20.自评卷打分
*/
func (c *TestPaperApiController) SelfMarkPoint() {
defer c.ServeJSON()
var requestBody requests.TestPoint
var resp Response
var err error
err=json.Unmarshal(c.Ctx.Input.RequestBody, &requestBody)
if err!=nil {
resp = Response{"10001","cannot unmarshal",err}
c.Data["json"] = resp
return
}
userId := requestBody.UserId
testId := requestBody.TestId
scoreStr:= requestBody.Scores
testDetailIdStr:=requestBody.TestDetailId
testDetailIds := strings.Split(testDetailIdStr, "-")
scores := strings.Split(scoreStr, "-")
//---------------------------------------------------------------------------------------
//查找大题
var test models.TestPaper
_,err = test.GetTestPaper(testId)
if err != nil || test.Test_id == 0 {
resp := Response{"10002", "get test paper fail", err}
c.Data["json"] = resp
return
}
var topic models.Topic
topic.GetTopic(test.Question_id)
standardError := topic.Standard_error
//分三种情况
if userId == test.Examiner_first_id {
var sum int64
//给试卷详情表打分
for i := 0; i < len(testDetailIds); i++ {
//取出小题试卷id,和小题分数
var testInfo models.TestPaperInfo
testDetailIdString:=testDetailIds[i]
testDetailId, _ := strconv.ParseInt(testDetailIdString, 10, 64)
scoreString:=scores[i]
score, _ := strconv.ParseInt(scoreString, 10, 64)
//------------------------------------------------
//查试卷小题
err := testInfo.GetTestPaperInfo(testDetailId)
if err != nil {
resp := Response{"10008", "get testPaper fail", err}
c.Data["json"] = resp
return
}
//修改试卷详情表
testInfo.Examiner_first_self_score=score
err = testInfo.Update()
if err != nil {
resp := Response{"10009", "update testPaper fail", err}
c.Data["json"] = resp
return
}
sum += score
}
//给试卷表打分
test.Examiner_first_self_score = sum
err = test.Update()
if err != nil {
resp := Response{"10007", "update test fail", err}
c.Data["json"] = resp
return
}
//删除试卷待批改表 ,增加试卷记录表
var record models.ScoreRecord
var underTest models.UnderCorrectedPaper
err = models.GetSelfScorePaperByTestQuestionTypeAndTestId(&underTest, testId,userId)
if err!=nil {
resp = Response{"20012","GetUnderCorrectedPaperByUserIdAndTestId fail",err}
c.Data["json"] = resp
return
}
record.Score = sum
record.Test_id = testId
record.Test_record_type = underTest.Test_question_type
record.User_id = userId
record.Question_id=underTest.Question_id
err = record.Save()
if err!=nil {
resp = Response{"20013","Save fail",err}
c.Data["json"] = resp
return
}
err = underTest.SelfMarkDelete()
if err!=nil {
resp = Response{"20014","Delete fail",err}
c.Data["json"] = resp
return
}
if math.Abs(float64(sum-test.Examiner_first_score))>float64(standardError) {
var newUnderTest models.UnderCorrectedPaper
newUnderTest.User_id="10000"
newUnderTest.Self_score_id=userId
newUnderTest.Test_id=testId
newUnderTest.Question_id=test.Question_id
newUnderTest.Test_question_type=7
newUnderTest.Save()
}
}else if userId==test.Examiner_second_id {
var sum int64
//给试卷详情表打分
for i := 0; i < len(testDetailIds); i++ {
//取出小题试卷id,和小题分数
var testInfo models.TestPaperInfo
testDetailIdString:=testDetailIds[i]
testDetailId, _ := strconv.ParseInt(testDetailIdString, 10, 64)
scoreString:=scores[i]
score, _ := strconv.ParseInt(scoreString, 10, 64)
//------------------------------------------------
//查试卷小题
err := testInfo.GetTestPaperInfo(testDetailId)
if err != nil {
resp := Response{"10008", "get testPaper fail", err}
c.Data["json"] = resp
return
}
//修改试卷详情表
testInfo.Examiner_second_self_score=score
err = testInfo.Update()
if err != nil {
resp := Response{"10009", "update testPaper fail", err}
c.Data["json"] = resp
return
}
sum += score
}
//给试卷表打分
test.Examiner_second_self_score = sum
err = test.Update()
if err != nil {
resp := Response{"10007", "update test fail", err}
c.Data["json"] = resp
return
}
//删除试卷待批改表 ,增加试卷记录表
var record models.ScoreRecord
var underTest models.UnderCorrectedPaper
err = models.GetSelfScorePaperByTestQuestionTypeAndTestId(&underTest, testId,userId)
if err!=nil {
resp = Response{"20012","GetUnderCorrectedPaperByUserIdAndTestId fail",err}
c.Data["json"] = resp
return
}
record.Score = sum
record.Test_id = testId
record.Test_record_type = underTest.Test_question_type
record.User_id = userId
record.Question_id=underTest.Question_id
err = record.Save()
if err!=nil {
resp = Response{"20013","Save fail",err}
c.Data["json"] = resp
return
}
err = underTest.SelfMarkDelete()
if err!=nil {
resp = Response{"20014","Delete fail",err}
c.Data["json"] = resp
return
}
if math.Abs(float64(sum-test.Examiner_second_score))>float64(standardError) {
var newUnderTest models.UnderCorrectedPaper
newUnderTest.User_id="10000"
newUnderTest.Test_id=testId
newUnderTest.Self_score_id=userId
newUnderTest.Question_id=test.Question_id
newUnderTest.Test_question_type=7
newUnderTest.Save()
}
} else if userId ==test.Examiner_third_id {
var sum int64
//给试卷详情表打分
for i := 0; i < len(testDetailIds); i++ {
//取出小题试卷id,和小题分数
var testInfo models.TestPaperInfo
testDetailIdString:=testDetailIds[i]
testDetailId, _ := strconv.ParseInt(testDetailIdString, 10, 64)
scoreString:=scores[i]
score, _ := strconv.ParseInt(scoreString, 10, 64)
//------------------------------------------------
//查试卷小题
err := testInfo.GetTestPaperInfo(testDetailId)
if err != nil {
resp := Response{"10008", "get testPaper fail", err}
c.Data["json"] = resp
return
}
//修改试卷详情表
testInfo.Examiner_third_self_score=score
err = testInfo.Update()
if err != nil {
resp := Response{"10009", "update testPaper fail", err}
c.Data["json"] = resp
return
}
sum += score
}
//给试卷表打分
test.Examiner_third_self_score = sum
err = test.Update()
if err != nil {
resp := Response{"10007", "update test fail", err}
c.Data["json"] = resp
return
}
//删除试卷待批改表 ,增加试卷记录表
var record models.ScoreRecord
var underTest models.UnderCorrectedPaper
err = models.GetSelfScorePaperByTestQuestionTypeAndTestId(&underTest, testId,userId)
if err!=nil {
resp = Response{"20012","GetUnderCorrectedPaperByUserIdAndTestId fail",err}
c.Data["json"] = resp
return
}
record.Score = sum
record.Test_id = testId
record.Test_record_type = underTest.Test_question_type
record.User_id = userId
record.Question_id=underTest.Question_id
err = record.Save()
if err!=nil {
resp = Response{"20013","Save fail",err}
c.Data["json"] = resp
return
}
err = underTest.SelfMarkDelete()
if err!=nil {
resp = Response{"20014","Delete fail",err}
c.Data["json"] = resp
return
}
if math.Abs(float64(sum-test.Examiner_third_score))>float64(standardError) {
var newUnderTest models.UnderCorrectedPaper
newUnderTest.User_id="10000"
newUnderTest.Test_id=testId
newUnderTest.Question_id=test.Question_id
newUnderTest.Self_score_id=userId
newUnderTest.Test_question_type=7
newUnderTest.Save()
}
}
//----------------------------------------
resp = Response{"10000", "OK", nil}
c.Data["json"] = resp
}
///**
//20.自评卷打分
//*/
//func (c *TestPaperApiController) SelfMarkPoint() {
// defer c.ServeJSON()
// var requestBody requests.TestPoint
//
//
// err=json.Unmarshal(c.Ctx.Input.RequestBody, &requestBody)
// if err!=nil {
// resp = Response{"10001","cannot unmarshal",err}
// c.Data["json"] = resp
// return
// }
// userId := requestBody.UserId
// testId := requestBody.TestId
// scoreStr:= requestBody.Scores
// testDetailIdStr:=requestBody.TestDetailId
// testDetailIds := strings.Split(testDetailIdStr, "-")
// scores := strings.Split(scoreStr, "-")
//
// //---------------------------------------------------------------------------------------
//
//
// //查找大题
// var test models.TestPaper
// _,err = test.GetTestPaper(testId)
// if err != nil || test.Test_id == 0 {
// resp := Response{"10002", "get test paper fail", err}
// c.Data["json"] = resp
// return
// }
// var topic models.Topic
// topic.GetTopic(test.Question_id)
//
//
//
// //----------------------------------------
// resp = Response{"10000", "OK", nil}
// c.Data["json"] = resp
//}

View File

@ -1 +1 @@
{"C:\\Users\\yang\\Desktop\\阅卷系统\\controllers":1632989080226348900}
{"C:\\Users\\chen\\go\\src\\open-ct\\controllers":1633069342469615300}

View File

@ -182,7 +182,7 @@ func FindProblemUnderCorrectedList(problemUnderCorrectedPaper *[] UnderCorrected
return err
}
func GetDistributedTestIdPaperByUserId(id string, up *[]int64) error {
err := x.Table("under_corrected_paper").Select("test_id").Where("user_id = ?", id).Where(" test_question_type=1 or test_question_type=2 or test_question_type=3").Find(up)
err := x.Table("under_corrected_paper").Select("test_id").Where("user_id = ?", id).Where(" test_question_type=0 or test_question_type=1 or test_question_type=2 or test_question_type=3").Find(up)
if err != nil {
log.Panic(err)
log.Println("could not find any paper")

View File

@ -22,7 +22,7 @@ func init() {
beego.Router("/openct/marking/score/test/display", &controllers.TestPaperApiController{}, "post:Display")
beego.Router("/openct/marking/score/test/list", &controllers.TestPaperApiController{}, "post:List")
beego.Router("/openct/marking/score/self/list", &controllers.TestPaperApiController{}, "post:SelfScoreList")
beego.Router("/openct/marking/score/self/point", &controllers.TestPaperApiController{}, "post:SelfMarkPoint")
//beego.Router("/openct/marking/score/self/point", &controllers.TestPaperApiController{}, "post:SelfMarkPoint")
beego.Router("/openct/marking/score/test/point", &controllers.TestPaperApiController{}, "post:Point")
beego.Router("/openct/marking/score/test/problem", &controllers.TestPaperApiController{}, "post:Problem")
beego.Router("/openct/marking/score/test/answer", &controllers.TestPaperApiController{}, "post:Answer")
@ -58,6 +58,10 @@ func init() {
//beego.Router("/openct/marking/admin/uploadPic",&controllers.AdminApiController{},"post:UploadPic")
beego.Router("/openct/marking/admin/readExcel",&controllers.AdminApiController{},"post:ReadExcel")
beego.Router("/openct/marking/admin/readExcel", &controllers.AdminApiController{}, "OPTIONS:ReadExcel")
beego.Router("/openct/marking/admin/readExampleExcel",&controllers.AdminApiController{},"post:ReadExampleExcel")
beego.Router("/openct/marking/admin/readExampleExcel", &controllers.AdminApiController{}, "OPTIONS:ReadExampleExcel")
beego.Router("/openct/marking/admin/readAnswerExcel",&controllers.AdminApiController{},"post:ReadAnswerExcel")
beego.Router("/openct/marking/admin/readAnswerExcel", &controllers.AdminApiController{}, "OPTIONS:ReadAnswerExcel")
beego.Router("/openct/marking/admin/distribution",&controllers.AdminApiController{},"post:Distribution")
beego.Router("/openct/marking/admin/distribution/info",&controllers.AdminApiController{},"post:DistributionInfo")
beego.Router("/openct/marking/admin/questionBySubList",&controllers.AdminApiController{},"post:QuestionBySubList")