122 lines
3.3 KiB
Go
122 lines
3.3 KiB
Go
package roomturnoverreward
|
|
|
|
import (
|
|
"sort"
|
|
"strings"
|
|
"time"
|
|
|
|
"chatapp3-golang/internal/model"
|
|
)
|
|
|
|
func (s *Service) normalizeSysOrigin(sysOrigin string) string {
|
|
sysOrigin = strings.ToUpper(strings.TrimSpace(sysOrigin))
|
|
if sysOrigin != "" {
|
|
return sysOrigin
|
|
}
|
|
if fallback := strings.ToUpper(strings.TrimSpace(s.cfg.RoomTurnoverReward.DefaultSysOrigin)); fallback != "" {
|
|
return fallback
|
|
}
|
|
if fallback := strings.ToUpper(strings.TrimSpace(s.cfg.WeekStar.DefaultSysOrigin)); fallback != "" {
|
|
return fallback
|
|
}
|
|
return "LIKEI"
|
|
}
|
|
|
|
func (s *Service) defaultTimezone() string {
|
|
if timezone := strings.TrimSpace(s.cfg.RoomTurnoverReward.Timezone); timezone != "" {
|
|
return timezone
|
|
}
|
|
if timezone := strings.TrimSpace(s.cfg.WeekStar.Timezone); timezone != "" {
|
|
return timezone
|
|
}
|
|
return defaultRoomTurnoverRewardTimezone
|
|
}
|
|
|
|
func defaultLevelPayloads() []RoomTurnoverRewardLevelPayload {
|
|
return []RoomTurnoverRewardLevelPayload{
|
|
{Level: 1, TurnoverThreshold: 100000, RewardGold: 2000, Enabled: true},
|
|
{Level: 2, TurnoverThreshold: 500000, RewardGold: 15000, Enabled: true},
|
|
{Level: 3, TurnoverThreshold: 2000000, RewardGold: 80000, Enabled: true},
|
|
{Level: 4, TurnoverThreshold: 5000000, RewardGold: 250000, Enabled: true},
|
|
}
|
|
}
|
|
|
|
func buildLevelPayloads(rows []model.RoomTurnoverRewardLevel) []RoomTurnoverRewardLevelPayload {
|
|
sort.Slice(rows, func(i, j int) bool {
|
|
return rows[i].Level < rows[j].Level
|
|
})
|
|
result := make([]RoomTurnoverRewardLevelPayload, 0, len(rows))
|
|
for _, row := range rows {
|
|
result = append(result, RoomTurnoverRewardLevelPayload{
|
|
ID: row.ID,
|
|
Level: row.Level,
|
|
TurnoverThreshold: row.TurnoverThreshold,
|
|
RewardGold: row.RewardGold,
|
|
Enabled: row.Enabled,
|
|
})
|
|
}
|
|
return result
|
|
}
|
|
|
|
func toRecordView(row model.RoomTurnoverRewardRecord) RoomTurnoverRewardRecordView {
|
|
return RoomTurnoverRewardRecordView{
|
|
ID: row.ID,
|
|
ConfigID: row.ConfigID,
|
|
SysOrigin: row.SysOrigin,
|
|
CycleKey: row.CycleKey,
|
|
PeriodStartAt: formatDateTime(row.PeriodStartAt),
|
|
PeriodEndAt: formatDateTime(row.PeriodEndAt),
|
|
RoomID: row.RoomID,
|
|
RoomAccount: row.RoomAccount,
|
|
RoomName: row.RoomName,
|
|
RoomCover: row.RoomCover,
|
|
OwnerUserID: row.OwnerUserID,
|
|
CountryCode: row.CountryCode,
|
|
CountryName: row.CountryName,
|
|
TurnoverAmount: row.TurnoverAmount,
|
|
Level: row.Level,
|
|
TurnoverThreshold: row.TurnoverThreshold,
|
|
RewardGold: row.RewardGold,
|
|
TrackID: row.TrackID,
|
|
Status: row.Status,
|
|
RetryCount: row.RetryCount,
|
|
LastError: row.LastError,
|
|
SentAt: formatDateTime(pointerTimeValue(row.SentAt)),
|
|
UpdateTime: formatDateTime(row.UpdateTime),
|
|
}
|
|
}
|
|
|
|
func normalizePage(cursor, limit int) (int, int) {
|
|
if cursor <= 0 {
|
|
cursor = 1
|
|
}
|
|
if limit <= 0 {
|
|
limit = 20
|
|
}
|
|
if limit > 100 {
|
|
limit = 100
|
|
}
|
|
return cursor, limit
|
|
}
|
|
|
|
func formatDateTime(t time.Time) string {
|
|
if t.IsZero() {
|
|
return ""
|
|
}
|
|
return t.Format("2006-01-02 15:04:05")
|
|
}
|
|
|
|
func pointerTimeValue(value *time.Time) time.Time {
|
|
if value == nil {
|
|
return time.Time{}
|
|
}
|
|
return *value
|
|
}
|
|
|
|
func truncateString(value string, limit int) string {
|
|
if limit <= 0 || len(value) <= limit {
|
|
return value
|
|
}
|
|
return value[:limit]
|
|
}
|