优化结构
This commit is contained in:
@@ -122,6 +122,8 @@ func (d *Data) removeIntegrationConfigFromFile() error {
|
||||
}
|
||||
|
||||
func (d *Data) reloadConfig(ctx context.Context) error {
|
||||
// Explicit reload is the lifecycle boundary that rebuilds database, cache,
|
||||
// Mongo, storage, and integration clients after a file snapshot change.
|
||||
d.configMu.Lock()
|
||||
defer d.configMu.Unlock()
|
||||
configPath := d.runtime.ConfigPath()
|
||||
|
||||
@@ -411,7 +411,7 @@ func paymentCreateRequiresNotifyURL(provider string, extra, config map[string]an
|
||||
if value == "" {
|
||||
value = paymentkit.FirstText(config, keys...)
|
||||
}
|
||||
normalized := strings.NewReplacer(".", "_", "-", "_", " ", "_").Replace(strings.ToLower(strings.TrimSpace(value)))
|
||||
normalized := paymentkit.NormalizePaymentMethod(value)
|
||||
switch provider {
|
||||
case bizpayment.PaymentAlipay, bizpayment.PaymentAlipayV3:
|
||||
return !paymentkit.ContainsFold([]string{"pay", "trade_pay", "alipay_trade_pay", "barcode", "barcode_pay", "micropay", "face_to_face"}, normalized)
|
||||
|
||||
@@ -66,3 +66,27 @@ func TestParameterRepositoryKeepsReferenceEmptyQuerySemantics(t *testing.T) {
|
||||
t.Fatalf("empty bulk delete removed rows: count=%d", count)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParameterUpdateDoesNotReviveSoftDeletedRow(t *testing.T) {
|
||||
data := newTransactionTestData(t)
|
||||
repo := ¶meterRepo{data: data}
|
||||
ctx := context.Background()
|
||||
item := &system.SystemParameter{Name: "before-delete", Key: "soft-delete-key", Value: "value"}
|
||||
if err := repo.CreateParameter(ctx, item); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := data.gormDB.WithContext(ctx).Delete(¶meterPO{}, item.ID).Error; err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
item.Name = "must-not-revive"
|
||||
if err := repo.UpdateParameter(ctx, item); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var persisted parameterPO
|
||||
if err := data.gormDB.WithContext(ctx).Unscoped().First(&persisted, item.ID).Error; err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if persisted.Name != "before-delete" || persisted.DeletedAt.Time.IsZero() {
|
||||
t.Fatalf("soft-deleted row changed or revived: %+v", persisted)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user