fix: inject path param into context for all purchase handlers

Nine gateway handlers for purchase orders, receipts, and suppliers were
passing r.Context() directly to their logic constructors without first
extracting the URL path segment via pathvar.Vars(r)["id"]. This caused
ctxdata.GetPathId to always return an empty string, making GET/PUT/DELETE
operations on individual resources silently return "not found" even when
the record existed in the database.
This commit is contained in:
kae 2026-06-18 18:24:35 +09:00 committed by Chever John
parent 4733677334
commit 4c427672a3
9 changed files with 36 additions and 9 deletions

View File

@ -1,16 +1,19 @@
package order
import (
"context"
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"github.com/zeromicro/go-zero/rest/pathvar"
"muyu-apiserver/gateway/internal/logic/purchase/order"
"muyu-apiserver/gateway/internal/svc"
)
func CancelPurchaseOrderHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
l := order.NewCancelPurchaseOrderLogic(r.Context(), svcCtx)
ctx := context.WithValue(r.Context(), "pathId", pathvar.Vars(r)["id"])
l := order.NewCancelPurchaseOrderLogic(ctx, svcCtx)
err := l.CancelPurchaseOrder()
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)

View File

@ -1,16 +1,19 @@
package order
import (
"context"
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"github.com/zeromicro/go-zero/rest/pathvar"
"muyu-apiserver/gateway/internal/logic/purchase/order"
"muyu-apiserver/gateway/internal/svc"
)
func ConfirmPurchaseOrderHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
l := order.NewConfirmPurchaseOrderLogic(r.Context(), svcCtx)
ctx := context.WithValue(r.Context(), "pathId", pathvar.Vars(r)["id"])
l := order.NewConfirmPurchaseOrderLogic(ctx, svcCtx)
err := l.ConfirmPurchaseOrder()
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)

View File

@ -1,16 +1,19 @@
package order
import (
"context"
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"github.com/zeromicro/go-zero/rest/pathvar"
"muyu-apiserver/gateway/internal/logic/purchase/order"
"muyu-apiserver/gateway/internal/svc"
)
func GetPurchaseOrderHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
l := order.NewGetPurchaseOrderLogic(r.Context(), svcCtx)
ctx := context.WithValue(r.Context(), "pathId", pathvar.Vars(r)["id"])
l := order.NewGetPurchaseOrderLogic(ctx, svcCtx)
resp, err := l.GetPurchaseOrder()
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)

View File

@ -1,9 +1,11 @@
package order
import (
"context"
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"github.com/zeromicro/go-zero/rest/pathvar"
"muyu-apiserver/gateway/internal/logic/purchase/order"
"muyu-apiserver/gateway/internal/svc"
"muyu-apiserver/gateway/internal/types"
@ -17,7 +19,8 @@ func UpdatePurchaseOrderHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return
}
l := order.NewUpdatePurchaseOrderLogic(r.Context(), svcCtx)
ctx := context.WithValue(r.Context(), "pathId", pathvar.Vars(r)["id"])
l := order.NewUpdatePurchaseOrderLogic(ctx, svcCtx)
err := l.UpdatePurchaseOrder(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)

View File

@ -1,16 +1,19 @@
package receipt
import (
"context"
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"github.com/zeromicro/go-zero/rest/pathvar"
"muyu-apiserver/gateway/internal/logic/purchase/receipt"
"muyu-apiserver/gateway/internal/svc"
)
func ConfirmPurchaseReceiptHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
l := receipt.NewConfirmPurchaseReceiptLogic(r.Context(), svcCtx)
ctx := context.WithValue(r.Context(), "pathId", pathvar.Vars(r)["id"])
l := receipt.NewConfirmPurchaseReceiptLogic(ctx, svcCtx)
err := l.ConfirmPurchaseReceipt()
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)

View File

@ -1,16 +1,19 @@
package receipt
import (
"context"
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"github.com/zeromicro/go-zero/rest/pathvar"
"muyu-apiserver/gateway/internal/logic/purchase/receipt"
"muyu-apiserver/gateway/internal/svc"
)
func GetPurchaseReceiptHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
l := receipt.NewGetPurchaseReceiptLogic(r.Context(), svcCtx)
ctx := context.WithValue(r.Context(), "pathId", pathvar.Vars(r)["id"])
l := receipt.NewGetPurchaseReceiptLogic(ctx, svcCtx)
resp, err := l.GetPurchaseReceipt()
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)

View File

@ -1,16 +1,19 @@
package supplier
import (
"context"
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"github.com/zeromicro/go-zero/rest/pathvar"
"muyu-apiserver/gateway/internal/logic/purchase/supplier"
"muyu-apiserver/gateway/internal/svc"
)
func DeleteSupplierHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
l := supplier.NewDeleteSupplierLogic(r.Context(), svcCtx)
ctx := context.WithValue(r.Context(), "pathId", pathvar.Vars(r)["id"])
l := supplier.NewDeleteSupplierLogic(ctx, svcCtx)
err := l.DeleteSupplier()
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)

View File

@ -1,16 +1,19 @@
package supplier
import (
"context"
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"github.com/zeromicro/go-zero/rest/pathvar"
"muyu-apiserver/gateway/internal/logic/purchase/supplier"
"muyu-apiserver/gateway/internal/svc"
)
func GetSupplierHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
l := supplier.NewGetSupplierLogic(r.Context(), svcCtx)
ctx := context.WithValue(r.Context(), "pathId", pathvar.Vars(r)["id"])
l := supplier.NewGetSupplierLogic(ctx, svcCtx)
resp, err := l.GetSupplier()
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)

View File

@ -1,9 +1,11 @@
package supplier
import (
"context"
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"github.com/zeromicro/go-zero/rest/pathvar"
"muyu-apiserver/gateway/internal/logic/purchase/supplier"
"muyu-apiserver/gateway/internal/svc"
"muyu-apiserver/gateway/internal/types"
@ -17,7 +19,8 @@ func UpdateSupplierHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return
}
l := supplier.NewUpdateSupplierLogic(r.Context(), svcCtx)
ctx := context.WithValue(r.Context(), "pathId", pathvar.Vars(r)["id"])
l := supplier.NewUpdateSupplierLogic(ctx, svcCtx)
err := l.UpdateSupplier(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)