From 4777c6dabbcb23c17083a756665841659f41cba8 Mon Sep 17 00:00:00 2001 From: zhx Date: Wed, 20 May 2026 11:03:53 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8F=91=E5=A5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/model/models.go | 14 ++++++++------ .../service/room_turnover_reward_settlement.go | 14 ++++++++++++++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/internal/model/models.go b/internal/model/models.go index 90a62f9..a43d6c3 100644 --- a/internal/model/models.go +++ b/internal/model/models.go @@ -97,12 +97,13 @@ func (WeekStarRewardRecord) TableName() string { return "week_star_reward_record // RoomTurnoverRewardConfig 保存房间流水奖励的系统级配置。 type RoomTurnoverRewardConfig struct { - ID int64 `gorm:"column:id;primaryKey"` - SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_room_turnover_reward_sys_origin"` - Enabled bool `gorm:"column:enabled;index:idx_room_turnover_reward_enabled"` - Timezone string `gorm:"column:timezone;size:64"` - CreateTime time.Time `gorm:"column:create_time"` - UpdateTime time.Time `gorm:"column:update_time"` + ID int64 `gorm:"column:id;primaryKey"` + SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_room_turnover_reward_sys_origin"` + Enabled bool `gorm:"column:enabled;index:idx_room_turnover_reward_enabled"` + AutoRewardEnabled bool `gorm:"column:auto_reward_enabled"` + Timezone string `gorm:"column:timezone;size:64"` + CreateTime time.Time `gorm:"column:create_time"` + UpdateTime time.Time `gorm:"column:update_time"` } func (RoomTurnoverRewardConfig) TableName() string { return "room_turnover_reward_config" } @@ -141,6 +142,7 @@ type RoomTurnoverRewardRecord struct { TurnoverThreshold int64 `gorm:"column:turnover_threshold"` RewardGold int64 `gorm:"column:reward_gold"` TrackID string `gorm:"column:track_id;size:128;uniqueIndex:uk_room_turnover_reward_track"` + SourceID string `gorm:"column:source_id;size:128"` Status string `gorm:"column:status;size:32;index:idx_room_turnover_reward_record_status"` RetryCount int `gorm:"column:retry_count"` LastError string `gorm:"column:last_error;size:1024"` diff --git a/internal/service/room_turnover_reward_settlement.go b/internal/service/room_turnover_reward_settlement.go index 74853b2..db484c3 100644 --- a/internal/service/room_turnover_reward_settlement.go +++ b/internal/service/room_turnover_reward_settlement.go @@ -208,6 +208,9 @@ func (s *RoomTurnoverRewardSettlementService) settleCycle( if record.Status != roomTurnoverRewardStatusPending && record.Status != roomTurnoverRewardStatusFailed { continue } + if !configRow.AutoRewardEnabled { + continue + } if err := s.dispatchRewardRecord(ctx, &record, contribution.ID); err != nil { lastErr = err } @@ -276,6 +279,7 @@ func (s *RoomTurnoverRewardSettlementService) ensureRewardRecord( TurnoverThreshold: level.TurnoverThreshold, RewardGold: level.RewardGold, TrackID: roomTurnoverRewardTrackID(sysOrigin, cycleKey, roomID), + SourceID: strings.TrimSpace(contribution.ID), Status: roomTurnoverRewardStatusPending, CreateTime: now, UpdateTime: now, @@ -295,6 +299,16 @@ func (s *RoomTurnoverRewardSettlementService) ensureRewardRecord( First(&saved).Error; err != nil { return model.RoomTurnoverRewardRecord{}, err } + if strings.TrimSpace(saved.SourceID) == "" && strings.TrimSpace(contribution.ID) != "" { + sourceID := strings.TrimSpace(contribution.ID) + if err := s.repo.DB.WithContext(ctx). + Model(&model.RoomTurnoverRewardRecord{}). + Where("id = ?", saved.ID). + Update("source_id", sourceID).Error; err != nil { + return model.RoomTurnoverRewardRecord{}, err + } + saved.SourceID = sourceID + } return saved, nil }