领取状态

This commit is contained in:
2025-08-07 15:25:13 +08:00
parent 3002f2c304
commit 32f5327d9c
2 changed files with 20 additions and 21 deletions

View File

@@ -6,6 +6,7 @@ public class GuildGameConstant {
byte HAS_RECEIVE = 0;
byte RECEIVED = 1;
byte EXPIRE = 2;
byte RECEIVE_LIMIT = 4;//当天不可领取/不可领取
byte NOT_RECEIVE = 3; //不可领取
byte RECEIVE_LIMIT = 4;//当天不可领取
}
}

View File

@@ -36,7 +36,6 @@ import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ThreadPoolExecutor;
@@ -125,10 +124,6 @@ public class GameUsdService {
List<GameDiamondStatDay> guildGameMonthList = gameDiamondStatDayService.getGuildGameMonthList(guildMemberId, monthDate);
if (CollectionUtils.isNotEmpty(guildGameMonthList)) {
TreeMap<Integer, GameDiamondSalary> salaryMap = gameDiamondSalaryService.getDiamondSalaryMap(partitionId);
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId);
ZonedDateTime thirtyDaysAgoInZone = nowZoneDateTime.minusDays(30);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
guildGameMonthList.forEach(gameDiamondStatDay -> {
BigDecimal baseSalary = salaryMap.headMap(gameDiamondStatDay.getPlayGameNum(), true).lastEntry().getValue().getBaseSalary();
GuildGameDayDetailVo guildGameDayDetailVo = GuildGameDayDetailVo.builder()
@@ -136,20 +131,6 @@ public class GameUsdService {
.playGameNum(gameDiamondStatDay.getPlayGameNum())
.daySalary(baseSalary)
.build();
LocalDate localDate = LocalDate.parse(gameDiamondStatDay.getStatDate(), formatter);
ZonedDateTime statTimeInZone = localDate.atStartOfDay(ZoneId.of(partitionEnum.getZoneId()));
boolean expire = statTimeInZone.isBefore(thirtyDaysAgoInZone);
if (nowZoneDateTime.format(DateTimeUtil.dateFormatter).equalsIgnoreCase(gameDiamondStatDay.getStatDate())) {
guildGameDayDetailVo.setReceiveStatus(GuildGameConstant.ReceiveStatus.RECEIVE_LIMIT);
} else if (expire) {
guildGameDayDetailVo.setReceiveStatus(GuildGameConstant.ReceiveStatus.EXPIRE);
} else if (baseSalary.equals(BigDecimal.ZERO)) {
guildGameDayDetailVo.setReceiveStatus(GuildGameConstant.ReceiveStatus.RECEIVE_LIMIT);
} else {
guildGameDayDetailVo.setReceiveStatus(gameDiamondStatDay.getReceiveStatus());
}
realMap.put(gameDiamondStatDay.getStatDate(), guildGameDayDetailVo);
});
}
@@ -160,14 +141,31 @@ public class GameUsdService {
if (monthEnd.after(now)) {
monthEnd = now;
}
String nowDate = nowZoneDateTime.format(DateTimeUtil.dateFormatter);
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId);
ZonedDateTime thirtyDaysAgoInZone = nowZoneDateTime.minusDays(30);
while (monthEnd.after(monthBegin) || monthEnd.equals(monthBegin)){
String date = DateUtil.formatDate(monthEnd);
GuildGameDayDetailVo guildGameDayDetailVo = realMap.getOrDefault(date, GuildGameDayDetailVo.builder()
.statDate(date)
.playGameNum(0)
.daySalary(BigDecimal.ZERO)
.receiveStatus(GuildGameConstant.ReceiveStatus.RECEIVE_LIMIT)
.receiveStatus(GuildGameConstant.ReceiveStatus.NOT_RECEIVE)
.build());
LocalDate localDate = LocalDate.parse(guildGameDayDetailVo.getStatDate(), DateTimeUtil.dateFormatter);
ZonedDateTime statTimeInZone = localDate.atStartOfDay(ZoneId.of(partitionEnum.getZoneId()));
boolean expire = statTimeInZone.isBefore(thirtyDaysAgoInZone);
if (nowDate.equalsIgnoreCase(guildGameDayDetailVo.getStatDate())) {
guildGameDayDetailVo.setReceiveStatus(GuildGameConstant.ReceiveStatus.RECEIVE_LIMIT);
} else if (expire) {
guildGameDayDetailVo.setReceiveStatus(GuildGameConstant.ReceiveStatus.EXPIRE);
} else if (guildGameDayDetailVo.equals(BigDecimal.ZERO)) {
guildGameDayDetailVo.setReceiveStatus(GuildGameConstant.ReceiveStatus.NOT_RECEIVE);
} else {
guildGameDayDetailVo.setReceiveStatus(guildGameDayDetailVo.getReceiveStatus());
}
resultList.add(guildGameDayDetailVo);
monthEnd = DateUtil.offsetDay(monthEnd, -1);
}