修复周星
This commit is contained in:
parent
dc6f15369c
commit
157307a474
@ -14,7 +14,7 @@ import (
|
||||
// ProcessGiftEvent 按送礼事件发生时间归属配置,并把积分累加到对应周期实时榜。
|
||||
func (s *WeekStarService) ProcessGiftEvent(ctx context.Context, event weekStarGiftEvent, rawPayload string) error {
|
||||
sysOrigin := s.normalizeSysOrigin(event.SysOrigin)
|
||||
trackID := strings.TrimSpace(event.TrackID)
|
||||
trackID := strings.TrimSpace(event.TrackID.String())
|
||||
if trackID == "" || int64(event.SendUserID) <= 0 {
|
||||
return nil
|
||||
}
|
||||
@ -154,7 +154,7 @@ func (e weekStarMessageEventEnvelope) bodyPayload() (string, bool, error) {
|
||||
}
|
||||
|
||||
func (e weekStarGiftEvent) hasBusinessFields() bool {
|
||||
return strings.TrimSpace(e.TrackID) != "" ||
|
||||
return strings.TrimSpace(e.TrackID.String()) != "" ||
|
||||
int64(e.SendUserID) > 0 ||
|
||||
int64(e.GiftConfig.ID) > 0
|
||||
}
|
||||
|
||||
@ -190,7 +190,7 @@ func TestProcessGiftEventCountsConfiguredNonDefaultSysOrigin(t *testing.T) {
|
||||
}
|
||||
|
||||
err := service.ProcessGiftEvent(ctx, weekStarGiftEvent{
|
||||
TrackID: "tarab-track-1",
|
||||
TrackID: flexibleString("tarab-track-1"),
|
||||
SysOrigin: "TARAB",
|
||||
SendUserID: flexibleInt64(3001),
|
||||
Quantity: flexibleInt64(2),
|
||||
@ -264,7 +264,7 @@ func TestProcessGiftPayloadUnwrapsJavaMessageEventEnvelope(t *testing.T) {
|
||||
}
|
||||
|
||||
body, err := json.Marshal(map[string]any{
|
||||
"trackId": "2049831533035974657",
|
||||
"trackId": int64(2049831533035974657),
|
||||
"sysOrigin": "LIKEI",
|
||||
"sendUserId": "2042274349343506434",
|
||||
"quantity": 4,
|
||||
|
||||
@ -71,9 +71,35 @@ func (v flexibleInt64) MarshalJSON() ([]byte, error) {
|
||||
return json.Marshal(strconv.FormatInt(int64(v), 10))
|
||||
}
|
||||
|
||||
// flexibleString 用于兼容 MQ 中字符串和数字混用的幂等 ID 字段。
|
||||
type flexibleString string
|
||||
|
||||
// UnmarshalJSON 把 JSON 字符串或数字统一解析成字符串。
|
||||
func (v *flexibleString) UnmarshalJSON(data []byte) error {
|
||||
raw := strings.TrimSpace(string(data))
|
||||
if raw == "" || raw == "null" {
|
||||
*v = ""
|
||||
return nil
|
||||
}
|
||||
if strings.HasPrefix(raw, "\"") && strings.HasSuffix(raw, "\"") {
|
||||
var parsed string
|
||||
if err := json.Unmarshal(data, &parsed); err != nil {
|
||||
return err
|
||||
}
|
||||
*v = flexibleString(strings.TrimSpace(parsed))
|
||||
return nil
|
||||
}
|
||||
*v = flexibleString(raw)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (v flexibleString) String() string {
|
||||
return string(v)
|
||||
}
|
||||
|
||||
// weekStarGiftEvent 表示送礼 MQ 事件的核心字段。
|
||||
type weekStarGiftEvent struct {
|
||||
TrackID string `json:"trackId"`
|
||||
TrackID flexibleString `json:"trackId"`
|
||||
SysOrigin string `json:"sysOrigin"`
|
||||
SendUserID flexibleInt64 `json:"sendUserId"`
|
||||
Quantity flexibleInt64 `json:"quantity"`
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user