From bcb8cd222c9bc52f788732ba2ac2a2c99eccd249 Mon Sep 17 00:00:00 2001 From: shanshanzhong147 Date: Fri, 5 Jun 2026 23:35:42 -0700 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D(#10):=20=E7=A6=81=E6=AD=A2?= =?UTF-8?q?=E9=80=9A=E7=94=A8=E8=AE=A2=E5=8D=95=E7=8A=B6=E6=80=81=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=A0=87=E8=AE=B0=E9=80=80=E6=AC=BE=20(#12)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: multica-agent --- .../admin/order/updateOrderStatusLogic.go | 4 +++ .../order/updateOrderStatusLogic_test.go | 27 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 internal/logic/admin/order/updateOrderStatusLogic_test.go diff --git a/internal/logic/admin/order/updateOrderStatusLogic.go b/internal/logic/admin/order/updateOrderStatusLogic.go index 17df64d..2164652 100644 --- a/internal/logic/admin/order/updateOrderStatusLogic.go +++ b/internal/logic/admin/order/updateOrderStatusLogic.go @@ -31,6 +31,10 @@ func NewUpdateOrderStatusLogic(ctx context.Context, svcCtx *svc.ServiceContext) } func (l *UpdateOrderStatusLogic) UpdateOrderStatus(req *types.UpdateOrderStatusRequest) error { + if req.Status == orderStatusRefunded { + return errors.Wrapf(xerr.NewErrCode(xerr.OrderStatusError), "refund status must use refund order endpoint") + } + info, err := l.svcCtx.OrderModel.FindOne(l.ctx, req.Id) if err != nil { l.Errorw("[UpdateOrderStatus] FindOne error", logger.Field("error", err.Error())) diff --git a/internal/logic/admin/order/updateOrderStatusLogic_test.go b/internal/logic/admin/order/updateOrderStatusLogic_test.go new file mode 100644 index 0000000..d867b92 --- /dev/null +++ b/internal/logic/admin/order/updateOrderStatusLogic_test.go @@ -0,0 +1,27 @@ +package order + +import ( + "context" + "testing" + + "github.com/perfect-panel/server/internal/svc" + "github.com/perfect-panel/server/internal/types" + "github.com/perfect-panel/server/pkg/logger" + "github.com/perfect-panel/server/pkg/xerr" +) + +func TestUpdateOrderStatus_RejectsRefundStatus(t *testing.T) { + logic := &UpdateOrderStatusLogic{ + Logger: logger.WithContext(context.Background()), + ctx: context.Background(), + svcCtx: &svc.ServiceContext{}, + } + + err := logic.UpdateOrderStatus(&types.UpdateOrderStatusRequest{ + Id: 1001, + Status: orderStatusRefunded, + }) + if !isErrCode(err, xerr.OrderStatusError) { + t.Fatalf("UpdateOrderStatus error code = %v, want OrderStatusError; raw=%v", errCodeOf(err), err) + } +}