refactor(jpush): move vendor field handling into ThirdPartyChannel struct
All checks were successful
Build Backend / build (push) Successful in 2m20s
Build Backend / build-docker (push) Successful in 1m15s

Move the vendor switch logic into the ThirdPartyChannel struct as Set/IsEmpty/Normalize
methods to improve encapsulation and eliminate code duplication in the vendor params
builder. Also simplify messageToParams to reuse buildMessagePayload results and remove
unused notification_type extras from push notifications.
This commit is contained in:
lafay
2026-06-18 00:02:00 +08:00
parent a0e210feab
commit 755392e999
3 changed files with 46 additions and 32 deletions

View File

@@ -120,32 +120,11 @@ func (f *Factory) Build(params MessageParams, cfg config.ChannelConfig) *PushPay
if m == nil {
continue
}
switch c.VendorName() {
case "xiaomi":
tpc.Xiaomi = m
case "huawei":
tpc.Huawei = m
case "oppo":
tpc.OPPO = m
case "vivo":
tpc.VIVO = m
case "meizu":
tpc.Meizu = m
case "honor":
tpc.Honor = m
case "fcm":
tpc.FCM = m
}
}
// 全部厂商字段为空则置 nil避免序列化出空的 third_party_channel
if tpc.Xiaomi == nil && tpc.Huawei == nil && tpc.OPPO == nil &&
tpc.VIVO == nil && tpc.Meizu == nil && tpc.Honor == nil && tpc.FCM == nil {
tpc = nil
tpc.Set(c.VendorName(), m)
}
return &PushPayload{
Notification: notification,
TPC: tpc,
TPC: tpc.Normalize(),
}
}