自动发奖
This commit is contained in:
parent
49d788be18
commit
4777c6dabb
@ -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"`
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user