package handler import ( "net/http" "gitea.starryskymeow.cn/B309/datamarket/internal/service" "github.com/go-chi/chi/v5" "github.com/go-chi/render" ) type CreatePricingRequest struct { AssetID string `json:"asset_id"` TaskType string `json:"task_type"` ModelType string `json:"model_type"` BuyerBudgetMin *float64 `json:"buyer_budget_min"` BuyerBudgetMax *float64 `json:"buyer_budget_max"` PrivacyRequirement *string `json:"privacy_requirement"` UsagePurpose *string `json:"usage_purpose"` RequestNote *string `json:"request_note"` } func (req *CreatePricingRequest) Bind(_ *http.Request) error { return nil } func CreatePricing(svc service.PricingService) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { req := &CreatePricingRequest{} if err := render.Bind(r, req); err != nil { renderServiceError(w, r, service.NewValidationError("request data error: "+err.Error())) return } result, err := svc.CreatePricing(r.Context(), service.PricingCreateInput{ AssetID: req.AssetID, TaskType: req.TaskType, ModelType: req.ModelType, BuyerBudgetMin: req.BuyerBudgetMin, BuyerBudgetMax: req.BuyerBudgetMax, PrivacyRequirement: req.PrivacyRequirement, UsagePurpose: req.UsagePurpose, RequestNote: req.RequestNote, }) if err != nil { renderServiceError(w, r, err) return } renderSuccess(w, r, http.StatusCreated, "定价建议生成成功", result) } } func GetPricing(svc service.PricingService) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { result, err := svc.GetPricing(r.Context(), chi.URLParam(r, "id")) if err != nil { renderServiceError(w, r, err) return } renderSuccess(w, r, http.StatusOK, "success", result) } }