86 lines
2.2 KiB
Go
86 lines
2.2 KiB
Go
package handler
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"gitea.starryskymeow.cn/B309/datamarket/internal/service"
|
|
"github.com/go-chi/chi/v5"
|
|
"github.com/go-chi/render"
|
|
)
|
|
|
|
type CreateValidationRequest struct {
|
|
AssetID string `json:"asset_id"`
|
|
RequestID string `json:"request_id"`
|
|
ValidationType string `json:"validation_type"`
|
|
}
|
|
|
|
func (req *CreateValidationRequest) Bind(_ *http.Request) error {
|
|
return nil
|
|
}
|
|
|
|
type ListPageQuery struct {
|
|
Limit int32 `schema:"limit"`
|
|
Offset int32 `schema:"offset"`
|
|
OrderStatus string `schema:"order_status"`
|
|
}
|
|
|
|
func CreateValidation(svc service.ValidationService) http.HandlerFunc {
|
|
return func(w http.ResponseWriter, r *http.Request) {
|
|
req := &CreateValidationRequest{}
|
|
if err := render.Bind(r, req); err != nil {
|
|
renderServiceError(w, r, service.NewValidationError("request data error: "+err.Error()))
|
|
return
|
|
}
|
|
|
|
result, err := svc.CreateValidation(r.Context(), service.ValidationCreateInput{
|
|
AssetID: req.AssetID,
|
|
RequestID: req.RequestID,
|
|
ValidationType: req.ValidationType,
|
|
})
|
|
if err != nil {
|
|
renderServiceError(w, r, err)
|
|
return
|
|
}
|
|
|
|
renderSuccess(w, r, http.StatusCreated, "验证申请提交成功", result)
|
|
}
|
|
}
|
|
|
|
func GetValidation(svc service.ValidationService) http.HandlerFunc {
|
|
return func(w http.ResponseWriter, r *http.Request) {
|
|
result, err := svc.GetValidation(r.Context(), chi.URLParam(r, "id"))
|
|
if err != nil {
|
|
renderServiceError(w, r, err)
|
|
return
|
|
}
|
|
|
|
renderSuccess(w, r, http.StatusOK, "success", result)
|
|
}
|
|
}
|
|
|
|
func ListValidations(svc service.ValidationService) http.HandlerFunc {
|
|
return func(w http.ResponseWriter, r *http.Request) {
|
|
var query ListPageQuery
|
|
if err := decoder.Decode(&query, r.URL.Query()); err != nil {
|
|
renderServiceError(w, r, service.NewValidationError("request data error: "+err.Error()))
|
|
return
|
|
}
|
|
|
|
result, err := svc.ListValidations(r.Context(), service.ValidationListInput{
|
|
Limit: query.Limit,
|
|
Offset: query.Offset,
|
|
})
|
|
if err != nil {
|
|
renderServiceError(w, r, err)
|
|
return
|
|
}
|
|
|
|
renderSuccess(w, r, http.StatusOK, "success", ListResponse[service.Validation]{
|
|
List: result.List,
|
|
Total: result.Total,
|
|
Limit: result.Limit,
|
|
Offset: result.Offset,
|
|
})
|
|
}
|
|
}
|