feat: test display api
This commit is contained in:
parent
8b9b3cf0cf
commit
201bba54d8
|
@ -26,7 +26,7 @@ import (
|
|||
"openscore/auth"
|
||||
"openscore/util"
|
||||
|
||||
beego "github.com/beego/beego/v2/adapter"
|
||||
beego "github.com/beego/beego/v2/server/web"
|
||||
// "github.com/astaxie/beego"
|
||||
)
|
||||
|
||||
|
@ -34,6 +34,10 @@ type ApiController struct {
|
|||
beego.Controller
|
||||
}
|
||||
|
||||
type TestPaperApiController struct {
|
||||
beego.Controller
|
||||
}
|
||||
|
||||
func (c *ApiController) GetSessionUser() *auth.Claims {
|
||||
s := c.GetSession("user")
|
||||
if s == nil {
|
||||
|
|
|
@ -10,8 +10,9 @@ package controllers
|
|||
import (
|
||||
"fmt"
|
||||
"openscore/auth"
|
||||
"openscore/models"
|
||||
|
||||
beego "github.com/beego/beego/v2/adapter"
|
||||
beego "github.com/beego/beego/v2/server/web"
|
||||
)
|
||||
|
||||
type Response struct {
|
||||
|
@ -20,11 +21,11 @@ type Response struct {
|
|||
Data interface{} `json:"data"`
|
||||
}
|
||||
|
||||
var CasdoorEndpoint = beego.AppConfig.String("casdoorEndpoint")
|
||||
var ClientId = beego.AppConfig.String("clientId")
|
||||
var ClientSecret = beego.AppConfig.String("clientSecret")
|
||||
var JwtSecret = beego.AppConfig.String("jwtSecret")
|
||||
var CasdoorOrganization = beego.AppConfig.String("casdoorOrganization")
|
||||
var CasdoorEndpoint, _ = beego.AppConfig.String("casdoorEndpoint")
|
||||
var ClientId, _ = beego.AppConfig.String("clientId")
|
||||
var ClientSecret, _ = beego.AppConfig.String("clientSecret")
|
||||
var JwtSecret, _ = beego.AppConfig.String("jwtSecret")
|
||||
var CasdoorOrganization, _ = beego.AppConfig.String("casdoorOrganization")
|
||||
|
||||
func init() {
|
||||
auth.InitConfig(CasdoorEndpoint, ClientId, ClientSecret, JwtSecret, CasdoorOrganization)
|
||||
|
@ -34,13 +35,17 @@ func (c *ApiController) Get() {
|
|||
//c.Data["Website"] = "beego.me"
|
||||
//c.Data["Email"] = "astaxie@gmail.com"
|
||||
//c.TplName = "index.tpl"
|
||||
a := new(models.Topic)
|
||||
fmt.Println(a)
|
||||
c.Ctx.WriteString("hello OpenCT")
|
||||
c.Data["json"] = "hello OpenCT"
|
||||
c.ServeJSON()
|
||||
}
|
||||
|
||||
func (c *ApiController) Login() {
|
||||
code := c.Input().Get("code")
|
||||
state := c.Input().Get("state")
|
||||
input, _ := c.Input()
|
||||
code := input.Get("code")
|
||||
state := input.Get("state")
|
||||
|
||||
token, err := auth.GetOAuthToken(code, state)
|
||||
if err != nil {
|
||||
|
|
|
@ -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()
|
||||
}
|
|
@ -11,7 +11,7 @@ import (
|
|||
// struct : Topic(大题)
|
||||
// comment: must capitalize the first letter of the field in Topic
|
||||
type Topic struct {
|
||||
Question_id int64 `xorm:"id pk"`
|
||||
Question_id int64 `xorm:"pk"`
|
||||
Question_name string `xorm:"varchar(50)"`
|
||||
Subject_name string `xorm:"varchar(50)"`
|
||||
Standard_error int64
|
||||
|
@ -22,7 +22,7 @@ type Topic struct {
|
|||
}
|
||||
|
||||
type SubTopic struct {
|
||||
Question_detail_id int64 `xorm:"id pk" `
|
||||
Question_detail_id int64 `xorm:"pk" `
|
||||
Question_detail_name string
|
||||
Question_id int64
|
||||
Question_detail_score int64
|
||||
|
@ -97,7 +97,7 @@ type PaperDistribution struct {
|
|||
}
|
||||
|
||||
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 {
|
||||
log.Println(err)
|
||||
}
|
||||
|
@ -111,6 +111,22 @@ func (t *Topic) GetTopic(id int64) error {
|
|||
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 {
|
||||
has, err := x.Where(builder.Eq{"question_detail_id": id}).Get(st)
|
||||
if !has || err != nil {
|
||||
|
|
|
@ -15,11 +15,11 @@ import (
|
|||
)
|
||||
|
||||
func init() {
|
||||
beego.Router("/", &controllers.ApiController{})
|
||||
beego.Router("/api/login", &controllers.ApiController{}, "POST:Login")
|
||||
beego.Router("/api/logout", &controllers.ApiController{}, "POST:Logout")
|
||||
beego.Router("/api/get-account", &controllers.ApiController{}, "GET:GetAccount")
|
||||
beego.Router("/openct/marking/score/test/display", &controllers.TestPaperApiController{}, "GET:Display")
|
||||
beego.Router("/", &controllers.TestPaperApiController{})
|
||||
beego.Router("/api/login", &controllers.ApiController{}, "post:Login")
|
||||
beego.Router("/api/logout", &controllers.ApiController{}, "post:Logout")
|
||||
beego.Router("/api/get-account", &controllers.ApiController{}, "get:GetAccount")
|
||||
beego.Router("/openct/marking/score/test/display", &controllers.TestPaperApiController{}, "post:Display")
|
||||
|
||||
// beego.Router("/api/get-users", &controllers.ApiController{}, "GET:GetUsers")
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue