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