mirror of
https://github.com/Mezeporta/Erupe.git
synced 2026-03-22 07:32:32 +01:00
Replace ~17 instances of '_ =' / '_ :=' with proper error checks that log warnings or send fail ACKs. Affected handlers: cafe, distitem, data, guild, guild_board, guild_cooking, guild_scout, house, mercenary, misc, and rengoku. Also resolves all pre-existing lint issues: unchecked bf.Seek in tests, unused filtered slice in svc_festa, unused mock fields, and unused signserver test helper.
61 lines
1.6 KiB
Go
61 lines
1.6 KiB
Go
package channelserver
|
|
|
|
import (
|
|
"time"
|
|
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
// FestaService encapsulates festa business logic, sitting between handlers and repos.
|
|
type FestaService struct {
|
|
festaRepo FestaRepo
|
|
logger *zap.Logger
|
|
}
|
|
|
|
// NewFestaService creates a new FestaService.
|
|
func NewFestaService(fr FestaRepo, log *zap.Logger) *FestaService {
|
|
return &FestaService{
|
|
festaRepo: fr,
|
|
logger: log,
|
|
}
|
|
}
|
|
|
|
// EnsureActiveEvent checks whether the current festa event is still active.
|
|
// If it has expired or none exists, all festa state is cleaned up and a new
|
|
// event is created starting at the next midnight. Returns the (possibly new)
|
|
// start time.
|
|
func (svc *FestaService) EnsureActiveEvent(currentStart uint32, now time.Time, nextMidnight time.Time) (uint32, error) {
|
|
if currentStart != 0 && now.Unix() <= int64(currentStart)+festaEventLifespan {
|
|
return currentStart, nil
|
|
}
|
|
|
|
if err := svc.festaRepo.CleanupAll(); err != nil {
|
|
svc.logger.Error("Failed to cleanup festa", zap.Error(err))
|
|
return 0, err
|
|
}
|
|
|
|
newStart := uint32(nextMidnight.Unix())
|
|
if err := svc.festaRepo.InsertEvent(newStart); err != nil {
|
|
svc.logger.Error("Failed to insert festa event", zap.Error(err))
|
|
return 0, err
|
|
}
|
|
|
|
return newStart, nil
|
|
}
|
|
|
|
// SubmitSouls filters out zero-value soul entries and records the remaining
|
|
// submissions for the character. Returns nil if all entries are zero.
|
|
func (svc *FestaService) SubmitSouls(charID, guildID uint32, souls []uint16) error {
|
|
hasNonZero := false
|
|
for _, s := range souls {
|
|
if s != 0 {
|
|
hasNonZero = true
|
|
break
|
|
}
|
|
}
|
|
if !hasNonZero {
|
|
return nil
|
|
}
|
|
return svc.festaRepo.SubmitSouls(charID, guildID, souls)
|
|
}
|