package controllers import ( "encoding/json" "github.com/open-ct/openitem/object" ) // GetOneSubmit // @Title GetOneSubmit // @Description 获取一个submit的信息 // @Param submitId path string true "要获取的submit uuid" // @Success 200 {object} object.Submit // @Failure 400 "invalid submit id" // @router /api/review/proj/submit/:submitId [get] func (c *ApiController) GetOneSubmit() { if c.RequireSignedIn() { return } submitId := c.GetString(":submitId") if submitId == "" { c.ResponseError("invalid id") return } resp, err := object.GetOneSubmit(submitId) if err != nil { c.ResponseError(err.Error()) return } c.ResponseOk(resp) } // GetSubmitsInStep @Title GetSubmitInStep // @Description 获取一个step下的所有submit // @Param stepId path string true "step的uuid" // @Success 200 {object} []object.Submit // @Failure 400 "invalid step id" // @router /api/review/proj/submits/:stepId [get] func (c *ApiController) GetSubmitsInStep() { if c.RequireSignedIn() { return } stepId := c.GetString(":stepId") if stepId == "" { c.ResponseError("invalid id") return } resp, err := object.GetStepSubmits(stepId) if err != nil { c.ResponseError(err.Error()) return } c.ResponseOk(resp) } // GetUserSubmitInStep // @Title GetUserSubmitInStep // @Description 获取某个用户在指定step下的submit // @Param json body object.GetUserSubmitsInStepRequest true "用户&step信息" // @Success 200 {object} []object.Submit // @Failure 400 "invalid json" // @router /api/review/proj/submits/user [post] func (c *ApiController) GetUserSubmitInStep() { if c.RequireSignedIn() { return } var req object.GetUserSubmitsInStepRequest err := json.Unmarshal(c.Ctx.Input.RequestBody, &req) if err != nil { c.ResponseError(err.Error()) return } resp, err := object.GetUserSubmitsInStep(&req) if err != nil { c.ResponseError(err.Error()) return } c.ResponseOk(resp) } // MakeOneSubmit // @Title MakeOneSubmit // @Description 创建一个新的submit // @Param token header string true "user token get at login" // @Param json body object.Submit true "新submit信息" // @Success 200 {object} response.Default // @Failure 400 "invalid json" // @router /api/review/proj/submit [post] func (c *ApiController) MakeOneSubmit() { if c.RequireSignedIn() { return } var req object.Submit err := json.Unmarshal(c.Ctx.Input.RequestBody, &req) if err != nil { c.ResponseError(err.Error()) return } user := c.GetSessionUser() req.Submitter = user.Id resp, err := object.MakeOneSubmit(&req) if err != nil { c.ResponseError(err.Error()) return } c.ResponseOk(resp) } // AppendContentInStep // @Title AppendContentInStep // @Description 在一个step中的content下追加新的材料(即用户在上传材料审核的历史记录) // @Param json body object.AppendContentInSubmit true "上传的材料信息" // @Success 200 {object} response.Default // @Failure 400 "invalid json" // @router /api/review/proj/submit/content [post] func (c *ApiController) AppendContentInStep() { if c.RequireSignedIn() { return } var req object.AppendContentInSubmit err := json.Unmarshal(c.Ctx.Input.RequestBody, &req) if err != nil { c.ResponseError(err.Error()) return } resp, err := object.AppendContent(&req) if err != nil { c.ResponseError(err.Error()) return } c.ResponseOk(resp) } // WithdrawContentInStep // @Title WithdrawContentInStep // @Description 用户撤回某次提交的材料审核 // @Param json body object.WithdrawContentInSubmit true "撤回的信息" // @Success 200 {object} response.Default // @Failure 400 "invalid json" // @router /api/review/proj/submit/content [delete] func (c *ApiController) WithdrawContentInStep() { if c.RequireSignedIn() { return } var req object.WithdrawContentInSubmit err := json.Unmarshal(c.Ctx.Input.RequestBody, &req) if err != nil { c.ResponseError(err.Error()) return } resp, err := object.WithdrawContent(&req) if err != nil { c.ResponseError(err.Error()) return } c.ResponseOk(resp) } // SetSubmitStatus // @Title SetSubmitStatus // @Description 更改提交的状态(即管理员最终审核某次提交是否最终通过) // @Param json body object.SetSubmitStatusRequest true "设定的状态" // @Success 200 true // @Failure 400 "invalid json" // @router /api/review/proj/submit [put] func (c *ApiController) SetSubmitStatus() { if c.RequireSignedIn() { return } var req object.SetSubmitStatusRequest err := json.Unmarshal(c.Ctx.Input.RequestBody, &req) if err != nil { c.ResponseError(err.Error()) return } err = object.SetSubmitStatus(&req) if err != nil { c.ResponseError(err.Error()) return } c.ResponseOk(true) } // DeleteSubmit // @Title DeleteSubmit // @Description 删除一次submit // @Param submitId path string true "要删除的submit的uuid" // @Success 200 true // @Failure 400 "invalid submit id" // @router /api/review/proj/submit/:submitId [delete] func (c *ApiController) DeleteSubmit() { if c.RequireSignedIn() { return } submitId := c.GetString(":submitId") if submitId == "" { c.ResponseError("invalid id") return } err := object.DeleteSubmit(submitId) if err != nil { c.ResponseError(err.Error()) return } c.ResponseOk(true) } // UpdateSubmitFile // @Title UpdateSubmitFile // @Description 更新submit中的文件 // @Param json body object.UpdateFileRequest "submit id 和 修改后的文件url" // @Success 200 true // @Failure 400 "invalid submit id" // @router /api/review/proj/submit/updatefile [put] func (c *ApiController) UpdateSubmitFile() { if c.RequireSignedIn() { return } var req *object.UpdateFileRequest err := json.Unmarshal(c.Ctx.Input.RequestBody, &req) if err != nil { c.ResponseError(err.Error()) return } err = object.UpdateSubmitFile(req) if err != nil { c.ResponseError(err.Error()) return } c.ResponseOk(true) } // GetProjectSubmit // @Title GetProjectSubmit // @Description 获取项目所有submit // @Param pid path string true "项目id" // @Success 200 true // @Failure 400 "invalid submit id" // @router /api/review/proj/submit/getall/:pid [get] func (c *ApiController) GetProjectSubmit() { if c.RequireSignedIn() { return } pid := c.GetString(":pid") if pid == "" { c.ResponseError("invalid id") return } resp, err := object.GetProjectSubmit(pid) if err != nil { c.ResponseError(err.Error()) return } c.ResponseOk(resp) }