日常任务-日任务优化代码

This commit is contained in:
2025-09-04 11:58:30 +08:00
parent 4364974176
commit 2ecc60a88d
3 changed files with 20 additions and 17 deletions

View File

@@ -42,6 +42,4 @@ public class GuildMemberWeekLevelRewardItemVo {
private BigDecimal bonusRewardNum;
@ApiModelProperty("状态012")
private Byte bonusStatus;
@ApiModelProperty("是否隐藏")
private boolean hideFlag;
}

View File

@@ -127,6 +127,8 @@ public class GuildMemberWeekLevelRewardV2Service extends ServiceImpl<GuildMember
keySet.addAll(bonusKeySet);
String bonusKey = String.join("_" , guildMemberId.toString(), "bonus" , "process");
keySet.add(bonusKey);
String levelRField = String.join("_" , guildMember.getUid().toString(), "level_R");
keySet.add(levelRField);
String mondayDateStr = mondayTime.format(DateTimeUtil.dateFormatter);
Map<String, Number> userProcessMap = getWeekMap(mondayDateStr, partitionId).getAll(keySet);
@@ -148,15 +150,9 @@ public class GuildMemberWeekLevelRewardV2Service extends ServiceImpl<GuildMember
BigDecimal preLevelMaxNum = BigDecimal.ZERO;
BigDecimal remainUserProcess = userProcess;
GuildMemberWeekLevelRewardRecord record = recordMapper.selectOne(Wrappers.<GuildMemberWeekLevelRewardRecord>lambdaQuery()
.eq(GuildMemberWeekLevelRewardRecord::getUid, uid)
.eq(GuildMemberWeekLevelRewardRecord::getMonday, mondayDateStr)
.eq(GuildMemberWeekLevelRewardRecord::getLevel, 0));
Long receiveGuildMemberId = userProcessMap.getOrDefault(levelRField, 0L).longValue();
boolean filterLevelR = record != null && !record.getGuildMemberId().equals(guildMemberId);//过滤R档位(防薅羊毛)
filterLevelR = filterLevelR || this.calFilterLevelR(guildMember);
if (needFilter || filterLevelR) {//公会首页过滤R档位
if (needFilter || this.calFilterLevelR(guildMember, receiveGuildMemberId)) {//公会首页过滤R档位 || 过滤条件过滤
levelRewardList.removeIf(levelReward -> levelReward.getLevel() == 0);
}
@@ -277,8 +273,9 @@ public class GuildMemberWeekLevelRewardV2Service extends ServiceImpl<GuildMember
String userProcessKey = String.join("_" , guildMemberId.toString(), "process");
String statusId = String.join("_" , guildMemberId.toString(), levelId);
String bonusStatusId = String.join("_" , guildMemberId.toString(), levelId, "bonus");
String levelRField = String.join("_" , uid.toString(), "level_R");
Set<String> keySet = Set.of(userProcessKey, statusId, bonusStatusId);
Set<String> keySet = Set.of(userProcessKey, statusId, bonusStatusId, levelRField);
RMap<String, Number> processMap = getWeekMap(monday, partitionId);
Map<String, Number> userProcessMap = processMap.getAll(keySet);
@@ -293,7 +290,7 @@ public class GuildMemberWeekLevelRewardV2Service extends ServiceImpl<GuildMember
}
} else {
Byte bonusStatus = userProcessMap.getOrDefault(bonusStatusId, Constant.status.delete).byteValue();
if (Constant.status.delete.equals(status) || !Constant.status.delete.equals(bonusStatus) || !processMap.fastPutIfAbsent(bonusStatusId, Constant.status.invalid)) {
if (!Constant.status.delete.equals(bonusStatus) || !processMap.fastPutIfAbsent(bonusStatusId, Constant.status.invalid)) {
throw new ServiceException(BusiStatus.CHARGE_RECEICVE_REPEAT);
}
}
@@ -335,6 +332,9 @@ public class GuildMemberWeekLevelRewardV2Service extends ServiceImpl<GuildMember
.eq(GuildMemberWeekLevelRewardRecord::getMonday, monday)
.eq(GuildMemberWeekLevelRewardRecord::getLevel, levelReward.getLevel()));
}
if (levelReward.getLevel() == 0) {
processMap.put(levelRField, guildMemberId);
}
String tip = I18NMessageSourceUtil.getMessage(I18nAlertEnum.FAMILY_MEMBER_WEEK_LEVEL_REWARD,
new Object[]{levelReward.getLevel(), levelReward.getRewardNum()}, partitionId);
@@ -461,16 +461,21 @@ public class GuildMemberWeekLevelRewardV2Service extends ServiceImpl<GuildMember
}
return JSONObject.parseObject(confValueById, GuildWeekLevelRFilterConfigVo.class).getByPartitionId(partitionId);
}
private Boolean calFilterLevelR(GuildMember guildMember) {
private Boolean calFilterLevelR(GuildMember guildMember, Long receiveGuildMemberId) {
if (receiveGuildMemberId > 0L && !receiveGuildMemberId.equals(guildMember.getId())) {
return Boolean.TRUE;
}
GuildWeekLevelRFilterConfigVo filterConfig = this.getFilterConfig(guildMember.getPartitionId());
if (filterConfig == null){
return Boolean.FALSE;
}
if (CollectionUtils.isEmpty(filterConfig.getGuildIds()) || !filterConfig.getGuildIds().contains(guildMember.getGuildId())) {
boolean notFilterGuild = CollectionUtils.isEmpty(filterConfig.getUids()) || !filterConfig.getGuildIds().contains(guildMember.getGuildId());
boolean notFilterUid = CollectionUtils.isEmpty(filterConfig.getUids()) || !filterConfig.getUids().contains(guildMember.getUid());
if (notFilterGuild && notFilterUid) {
return Boolean.FALSE;
}
if (CollectionUtils.isEmpty(filterConfig.getUids()) || !filterConfig.getUids().contains(guildMember.getUid())) {
}
return Boolean.TRUE;
}

View File

@@ -412,7 +412,7 @@ public class GuildTaskService {
ZonedDateTime nowZonedDateTime = DateTimeUtil.convertWithZoneId(now, partitionEnum.getZoneId());
boolean expired = true;
DailyTaskTypeEnum dailyTaskTypeEnum = DailyTaskTypeEnum.valueOf(reachRecord.getTaskKey());
if (dailyTaskTypeEnum.equals(DailyTaskTypeEnum.GUILD_MIC)) {
if (dailyTaskTypeEnum.equals(DailyTaskTypeEnum.GUILD_CREATE)) {
ZonedDateTime guildCreateDate = DateTimeUtil.convertWithZoneId(guild.getCreateTime(), partitionEnum.getZoneId());
ZonedDateTime createAfter14Day = guildCreateDate.plusDays(14).withHour(23).withMinute(59).withSecond(59);
ZonedDateTime nowZoneDateTime = DateTimeUtil.convertWithZoneId(now, partitionEnum.getZoneId());