feat: test display api
This commit is contained in:
parent
8b9b3cf0cf
commit
201bba54d8
|
@ -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 {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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(大题)
|
// 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 {
|
||||||
|
|
|
@ -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")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue