feat: test display api

This commit is contained in:
David 2021-07-28 23:00:37 +08:00
parent 8b9b3cf0cf
commit 201bba54d8
5 changed files with 89 additions and 17 deletions

View File

@ -26,7 +26,7 @@ import (
"openscore/auth" "openscore/auth"
"openscore/util" "openscore/util"
beego "github.com/beego/beego/v2/adapter" beego "github.com/beego/beego/v2/server/web"
// "github.com/astaxie/beego" // "github.com/astaxie/beego"
) )
@ -34,6 +34,10 @@ type ApiController struct {
beego.Controller beego.Controller
} }
type TestPaperApiController struct {
beego.Controller
}
func (c *ApiController) GetSessionUser() *auth.Claims { func (c *ApiController) GetSessionUser() *auth.Claims {
s := c.GetSession("user") s := c.GetSession("user")
if s == nil { if s == nil {

View File

@ -10,8 +10,9 @@ package controllers
import ( import (
"fmt" "fmt"
"openscore/auth" "openscore/auth"
"openscore/models"
beego "github.com/beego/beego/v2/adapter" beego "github.com/beego/beego/v2/server/web"
) )
type Response struct { type Response struct {
@ -20,11 +21,11 @@ type Response struct {
Data interface{} `json:"data"` Data interface{} `json:"data"`
} }
var CasdoorEndpoint = beego.AppConfig.String("casdoorEndpoint") var CasdoorEndpoint, _ = beego.AppConfig.String("casdoorEndpoint")
var ClientId = beego.AppConfig.String("clientId") var ClientId, _ = beego.AppConfig.String("clientId")
var ClientSecret = beego.AppConfig.String("clientSecret") var ClientSecret, _ = beego.AppConfig.String("clientSecret")
var JwtSecret = beego.AppConfig.String("jwtSecret") var JwtSecret, _ = beego.AppConfig.String("jwtSecret")
var CasdoorOrganization = beego.AppConfig.String("casdoorOrganization") var CasdoorOrganization, _ = beego.AppConfig.String("casdoorOrganization")
func init() { func init() {
auth.InitConfig(CasdoorEndpoint, ClientId, ClientSecret, JwtSecret, CasdoorOrganization) auth.InitConfig(CasdoorEndpoint, ClientId, ClientSecret, JwtSecret, CasdoorOrganization)
@ -34,13 +35,17 @@ func (c *ApiController) Get() {
//c.Data["Website"] = "beego.me" //c.Data["Website"] = "beego.me"
//c.Data["Email"] = "astaxie@gmail.com" //c.Data["Email"] = "astaxie@gmail.com"
//c.TplName = "index.tpl" //c.TplName = "index.tpl"
a := new(models.Topic)
fmt.Println(a)
c.Ctx.WriteString("hello OpenCT") c.Ctx.WriteString("hello OpenCT")
c.Data["json"] = "hello OpenCT" c.Data["json"] = "hello OpenCT"
c.ServeJSON() c.ServeJSON()
} }
func (c *ApiController) Login() { func (c *ApiController) Login() {
code := c.Input().Get("code") input, _ := c.Input()
state := c.Input().Get("state") code := input.Get("code")
state := input.Get("state")
token, err := auth.GetOAuthToken(code, state) token, err := auth.GetOAuthToken(code, state)
if err != nil { if err != nil {

47
controllers/score.go Normal file
View File

@ -0,0 +1,47 @@
package controllers
import (
"encoding/json"
"log"
"openscore/models"
"strconv"
)
type testStruct struct {
Name string
}
func (c *TestPaperApiController) Display() {
var requestBody map[string]interface{}
json.Unmarshal(c.Ctx.Input.RequestBody, &requestBody)
log.Println(requestBody["testId"])
testIdstr := requestBody["testId"].(string)
testId, err := strconv.ParseInt(testIdstr, 10, 64)
if err != nil {
log.Println("parse questionId fail")
}
var testPaper models.TestPaper
var topic models.Topic
var subTopic []models.SubTopic
testPaper.GetTestPaper(testId)
topic.GetTopic(testPaper.Question_id)
models.GetSubTopicsByQuestionId(testPaper.Question_id, &subTopic)
var picSrcs []string
for i := 0; i < len(subTopic); i++ {
var testPaperInfo models.TestPaperInfo
testPaperInfo.GetTestPaperInfoByTestIdAndQuestionDetailId(subTopic[i].Question_id, subTopic[i].Question_detail_id)
picSrcs = append(picSrcs, testPaperInfo.Pic_src)
}
data := make(map[string]interface{})
data["questionId"] = testPaper.Question_id
data["questionName"] = topic.Question_name
data["subTopic"] = subTopic
data["picSrcs"] = picSrcs
resp := Response{"10000", "OK", data}
c.Data["json"] = resp
c.ServeJSON()
}

View File

@ -11,7 +11,7 @@ import (
// struct : Topic(大题) // struct : Topic(大题)
// comment: must capitalize the first letter of the field in Topic // comment: must capitalize the first letter of the field in Topic
type Topic struct { type Topic struct {
Question_id int64 `xorm:"id pk"` Question_id int64 `xorm:"pk"`
Question_name string `xorm:"varchar(50)"` Question_name string `xorm:"varchar(50)"`
Subject_name string `xorm:"varchar(50)"` Subject_name string `xorm:"varchar(50)"`
Standard_error int64 Standard_error int64
@ -22,7 +22,7 @@ type Topic struct {
} }
type SubTopic struct { type SubTopic struct {
Question_detail_id int64 `xorm:"id pk" ` Question_detail_id int64 `xorm:"pk" `
Question_detail_name string Question_detail_name string
Question_id int64 Question_id int64
Question_detail_score int64 Question_detail_score int64
@ -97,7 +97,7 @@ type PaperDistribution struct {
} }
func initMarkingModels() { func initMarkingModels() {
err := x.Sync2(new(Topic), new(SubTopic), new(TestPaper), new(TestPaperInfo)) err := x.Sync2(new(Topic), new(SubTopic), new(TestPaper), new(TestPaperInfo), new(ScoreRecord), new(UnderCorrectedPaper), new(PaperDistribution))
if err != nil { if err != nil {
log.Println(err) log.Println(err)
} }
@ -111,6 +111,22 @@ func (t *Topic) GetTopic(id int64) error {
return err return err
} }
func GetSubTopicsByQuestionId(id int64, st *[]SubTopic) error {
err := x.Where("question_id = ?", id).Find(st)
if err != nil {
log.Println("could not find any SubTopic")
}
return err
}
func (t *TestPaperInfo) GetTestPaperInfoByTestIdAndQuestionDetailId(testId int64, questionDetailId int64) error {
has, err := x.Where("question_detail_id = ? and test_id = ?", questionDetailId, testId).Get(t)
if !has || err != nil {
log.Println("could not specific info")
}
return err
}
func (st *SubTopic) GetSubTopic(id int64) error { func (st *SubTopic) GetSubTopic(id int64) error {
has, err := x.Where(builder.Eq{"question_detail_id": id}).Get(st) has, err := x.Where(builder.Eq{"question_detail_id": id}).Get(st)
if !has || err != nil { if !has || err != nil {

View File

@ -15,11 +15,11 @@ import (
) )
func init() { func init() {
beego.Router("/", &controllers.ApiController{}) beego.Router("/", &controllers.TestPaperApiController{})
beego.Router("/api/login", &controllers.ApiController{}, "POST:Login") beego.Router("/api/login", &controllers.ApiController{}, "post:Login")
beego.Router("/api/logout", &controllers.ApiController{}, "POST:Logout") beego.Router("/api/logout", &controllers.ApiController{}, "post:Logout")
beego.Router("/api/get-account", &controllers.ApiController{}, "GET:GetAccount") beego.Router("/api/get-account", &controllers.ApiController{}, "get:GetAccount")
beego.Router("/openct/marking/score/test/display", &controllers.TestPaperApiController{}, "GET:Display") beego.Router("/openct/marking/score/test/display", &controllers.TestPaperApiController{}, "post:Display")
// beego.Router("/api/get-users", &controllers.ApiController{}, "GET:GetUsers") // beego.Router("/api/get-users", &controllers.ApiController{}, "GET:GetUsers")
} }