游戏薪资返回默认天数数据

This commit is contained in:
2025-08-06 19:11:03 +08:00
parent 6b5302d6f5
commit 1a6d4558cd

View File

@@ -1,5 +1,6 @@
package com.accompany.business.service.guildgame;
import cn.hutool.core.date.DateUtil;
import com.accompany.business.constant.guildgame.GameUsdOperateTypeEnum;
import com.accompany.business.model.UserPurse;
import com.accompany.business.model.guild.Guild;
@@ -119,34 +120,50 @@ public class GameUsdService {
private List<GuildGameDayDetailVo> getGameDayDetailList(Long guildMemberId, String monthDate, Integer partitionId, ZonedDateTime nowZoneDateTime) {
List<GuildGameDayDetailVo> resultList = new ArrayList<>();
Map<String, GuildGameDayDetailVo> realMap = new HashMap<>();
List<GameDiamondStatDay> guildGameMonthList = gameDiamondStatDayService.getGuildGameMonthList(guildMemberId, monthDate);
if (CollectionUtils.isEmpty(guildGameMonthList)) {
return resultList;
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 -> {
GuildGameDayDetailVo guildGameDayDetailVo = GuildGameDayDetailVo.builder()
.statDate(gameDiamondStatDay.getStatDate())
.playGameNum(gameDiamondStatDay.getPlayGameNum())
.daySalary(salaryMap.headMap(gameDiamondStatDay.getPlayGameNum(), true).lastEntry().getValue().getBaseSalary())
.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((byte) 4);
} else {
guildGameDayDetailVo.setReceiveStatus(expire ? 2 : gameDiamondStatDay.getReceiveStatus());
}
realMap.put(gameDiamondStatDay.getStatDate(), guildGameDayDetailVo);
});
}
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 -> {
GuildGameDayDetailVo guildGameDayDetailVo = GuildGameDayDetailVo.builder()
.statDate(gameDiamondStatDay.getStatDate())
.playGameNum(gameDiamondStatDay.getPlayGameNum())
.daySalary(salaryMap.headMap(gameDiamondStatDay.getPlayGameNum(), true).lastEntry().getValue().getBaseSalary())
.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((byte) 4);
} else {
guildGameDayDetailVo.setReceiveStatus(expire ? 2 : gameDiamondStatDay.getReceiveStatus());
}
Date monthBegin = DateUtil.parseDate(monthDate);
Date now = DateUtil.parseDate(nowZoneDateTime.format(DateTimeUtil.dateFormatter));
Date monthEnd = DateUtil.beginOfDay(DateUtil.endOfMonth(monthBegin));
if (monthEnd.after(now)) {
monthEnd = now;
}
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((byte) 0)
.build());
resultList.add(guildGameDayDetailVo);
});
monthEnd = DateUtil.offsetDay(monthEnd, -1);
}
return resultList;
}