56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
|
package task
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"github.com/WHUPRJ/woj-server/internal/e"
|
||
|
"github.com/WHUPRJ/woj-server/internal/model"
|
||
|
"github.com/WHUPRJ/woj-server/internal/service/runner"
|
||
|
"go.uber.org/zap"
|
||
|
)
|
||
|
|
||
|
func (s *service) SubmitJudge(pvid uint, storageKey string, submission model.Submission) (string, e.Status) {
|
||
|
payload, err := json.Marshal(
|
||
|
model.SubmitJudgePayload{
|
||
|
ProblemVersionId: pvid,
|
||
|
StorageKey: storageKey,
|
||
|
Submission: submission,
|
||
|
})
|
||
|
if err != nil {
|
||
|
s.log.Warn("json marshal error", zap.Error(err), zap.Any("Submission", submission))
|
||
|
return "", e.InternalError
|
||
|
}
|
||
|
|
||
|
info, status := s.submit(model.TypeSubmitJudge, payload, model.QueueRunner)
|
||
|
|
||
|
return info.ID, status
|
||
|
}
|
||
|
|
||
|
func (s *service) SubmitUpdate(status e.Status, sid uint, point int32, ctx runner.JudgeStatus) (string, e.Status) {
|
||
|
ctxText, err := json.Marshal(ctx)
|
||
|
if err != nil {
|
||
|
s.log.Warn("json marshal error",
|
||
|
zap.Error(err),
|
||
|
zap.Any("ctx", ctx))
|
||
|
return "", e.InternalError
|
||
|
}
|
||
|
|
||
|
payload, err := json.Marshal(model.SubmitUpdatePayload{
|
||
|
Status: status,
|
||
|
Sid: sid,
|
||
|
Point: point,
|
||
|
Context: string(ctxText),
|
||
|
})
|
||
|
if err != nil {
|
||
|
s.log.Warn("json marshal error",
|
||
|
zap.Error(err),
|
||
|
zap.Any("Status", status),
|
||
|
zap.Int32("Point", point),
|
||
|
zap.Any("Context", ctx))
|
||
|
return "", e.InternalError
|
||
|
}
|
||
|
|
||
|
info, status := s.submit(model.TypeSubmitUpdate, payload, model.QueueServer)
|
||
|
|
||
|
return info.ID, status
|
||
|
}
|