回调优化为单地址 upsert 配置并支持重置密钥
- 回调订阅改为单记录 upsert:保存即覆盖(URL/事件/状态),自动停用其他订阅,无新增/删除 - 新增重置密钥:保存时传 rotate_secret=true 重新生成密钥并返回一次,解决密钥丢失无法找回 - 删除不再使用的 PATCH /callbacks/:id/status 路由及对应 handler/service 死代码 - 前端回调页改为内联表单(URL/事件/状态),新增重置密钥按钮(确认后展示新密钥一次) - 补充单地址复用、disabled 不投递、密钥轮换测试
This commit is contained in:
@@ -559,7 +559,7 @@ func TestMarkProcessingTimeoutDistinguishesUpstreamSubmission(t *testing.T) {
|
||||
t.Fatalf("create submitted order: %v", err)
|
||||
}
|
||||
if _, err := svc.UpdateFulfillment(FulfillmentUpdateInput{
|
||||
MerchantID: merchantID,
|
||||
MerchantID: merchantID,
|
||||
APIClientID: 13,
|
||||
OrderNo: submittedOrder.Order.OrderNo,
|
||||
Status: model.OrderStatusDelivering,
|
||||
@@ -582,7 +582,7 @@ func TestMarkProcessingTimeoutDistinguishesUpstreamSubmission(t *testing.T) {
|
||||
t.Fatalf("create interrupted order: %v", err)
|
||||
}
|
||||
if _, err := svc.UpdateFulfillment(FulfillmentUpdateInput{
|
||||
MerchantID: merchantID,
|
||||
MerchantID: merchantID,
|
||||
APIClientID: 13,
|
||||
OrderNo: interruptedOrder.Order.OrderNo,
|
||||
Status: model.OrderStatusDelivering,
|
||||
@@ -805,6 +805,31 @@ func TestCreateTestOrderSupportsFailedFulfillableStatus(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestCreateTestOrderSupportsCancelledUnfulfillableStatus(t *testing.T) {
|
||||
db := newServiceTestDB(t)
|
||||
merchantID, product := seedFulfillmentMerchant(t, db, "merchant-test-cancelled", 0, -1, 100)
|
||||
svc := NewFulfillmentService(db, nil)
|
||||
|
||||
order, err := svc.CreateTestOrder(CreateTestOrderInput{
|
||||
MerchantID: merchantID,
|
||||
SKU: product.SKU,
|
||||
OrderStatus: model.OrderStatusCancelled,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("create cancelled test order: %v", err)
|
||||
}
|
||||
if order.OrderStatus != model.OrderStatusCancelled || order.CancelledAt == nil {
|
||||
t.Fatalf("unexpected cancelled test order: %+v", order)
|
||||
}
|
||||
openOrder, err := svc.QueryOpenOrder(order.OrderNo)
|
||||
if err != nil {
|
||||
t.Fatalf("query open cancelled order: %v", err)
|
||||
}
|
||||
if openOrder.CanShip || openOrder.Status != "cancelled" || !strings.Contains(openOrder.CannotShipReason, "已取消") {
|
||||
t.Fatalf("cancelled test order should be unfulfillable, got %+v", openOrder)
|
||||
}
|
||||
}
|
||||
|
||||
func TestHandleShipNotifyUpdatesOrderAndEnqueuesMerchantCallback(t *testing.T) {
|
||||
db := newServiceTestDB(t)
|
||||
merchantID, product := seedFulfillmentMerchant(t, db, "merchant-source-notify", 1000, 2, 100)
|
||||
|
||||
Reference in New Issue
Block a user