日常任务时长优化

This commit is contained in:
2025-09-24 14:46:02 +08:00
parent ff07d21e02
commit 75d3bca541
5 changed files with 39 additions and 23 deletions

View File

@@ -48,7 +48,7 @@ public abstract class AbstractDailyTaskHandler implements DailyTaskHandler {
@Autowired
protected DailyTaskConfigService dailyTaskConfigService;
@Autowired
private GuildMemberService guildMemberService;
protected GuildMemberService guildMemberService;
@Autowired
private DailyTaskRewardRecordService dailyTaskRewardRecordService;
@Autowired

View File

@@ -6,7 +6,6 @@ import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.service.dailytask.AbstractDailyTaskHandler;
import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType;
import com.accompany.business.service.guild.GuildDiamondWageService;
import com.accompany.business.service.guild.GuildMemberService;
import com.accompany.business.vo.dailytask.DailyProgressContext;
import com.accompany.business.vo.dailytask.DailyTaskContext;
import com.accompany.business.vo.dailytask.DailyTaskVo;
@@ -18,8 +17,6 @@ import org.springframework.stereotype.Component;
@DailyTaskHandlerType(DailyTaskTypeEnum.GUILD_SALARY)
public class GuildSalaryHandler extends AbstractDailyTaskHandler {
@Autowired
private GuildMemberService guildMemberService;
@Autowired
private GuildDiamondWageService guildDiamondWageService;

View File

@@ -4,7 +4,6 @@ import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.service.dailytask.AbstractDailyTaskHandler;
import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType;
import com.accompany.business.service.guild.GuildMemberService;
import com.accompany.business.service.guild.GuildMemberWeekLevelRewardSelectService;
import com.accompany.business.vo.dailytask.DailyProgressContext;
import com.accompany.business.vo.dailytask.DailyTaskContext;
@@ -23,10 +22,6 @@ public class GuildWeekRewardHandler extends AbstractDailyTaskHandler {
@Autowired
private GuildMemberWeekLevelRewardSelectService guildMemberWeekLevelRewardSelectService;
@Autowired
private GuildMemberService guildMemberService;
@Override
public void doExecuteProgress(DailyProgressContext progressContext) {
}

View File

@@ -5,7 +5,6 @@ import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.service.dailytask.AbstractDailyTaskHandler;
import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType;
import com.accompany.business.service.guild.GuildMemberService;
import com.accompany.business.service.guildpolicy2.GuildMicStatisticsPolicy2Service;
import com.accompany.business.vo.dailytask.DailyProgressContext;
import com.accompany.business.vo.dailytask.DailyTaskContext;
@@ -32,8 +31,6 @@ public class UpMicCoinHandler extends AbstractDailyTaskHandler {
@Autowired
private GuildMicStatisticsPolicy2Service guildMicStatisticsPolicy2Service;
@Autowired
private GuildMemberService guildMemberService;
@Override
@@ -78,7 +75,7 @@ public class UpMicCoinHandler extends AbstractDailyTaskHandler {
if (receiveStatus == DailyTaskConstant.ReceiveStatus.RECEIVED) {
return dailyTaskVo;
}
dailyTaskVo.setReachNum(totalDuration.longValue());
dailyTaskVo.setReachNum(Math.min(totalDuration.longValue(), context.getStandardValue()));
return dailyTaskVo;
}

View File

@@ -1,12 +1,16 @@
package com.accompany.business.service.dailytask.handler;
import com.accompany.business.constant.dailytask.DailyTaskConstant;
import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.service.dailytask.AbstractDailyTaskHandler;
import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType;
import com.accompany.business.service.guildpolicy2.GuildMicStatisticsPolicy2Service;
import com.accompany.business.service.room.RoomMicService;
import com.accompany.business.vo.dailytask.DailyProgressContext;
import com.accompany.business.vo.dailytask.DailyTaskContext;
import com.accompany.business.vo.dailytask.DailyTaskVo;
import com.accompany.core.enumeration.PartitionEnum;
import org.redisson.api.RAtomicLong;
import org.redisson.api.RBucket;
import org.springframework.beans.factory.annotation.Autowired;
@@ -22,6 +26,8 @@ public class UpMicHandler extends AbstractDailyTaskHandler {
@Autowired
private RoomMicService roomMicService;
@Autowired
private GuildMicStatisticsPolicy2Service guildMicStatisticsPolicy2Service;
@Override
@@ -36,22 +42,43 @@ public class UpMicHandler extends AbstractDailyTaskHandler {
Long uid = context.getUid();
DailyTaskVo dailyTaskVo = new DailyTaskVo();
String todayDate = context.getTodayDate();
RAtomicLong userDayUpMicDuration = roomMicService.userDayUpMicDuration(todayDate, uid);
long totalDuration = userDayUpMicDuration.get();
RBucket<Long> longRBucket = roomMicService.userUpMicTime(uid);
Long upMicTime = longRBucket.get();
DailyTaskTypeEnum taskType = context.getDailyTaskTypeEnum();
if (longRBucket.isExists()) {
Map<String, Integer> upMicDuration = roomMicService.calUserUpMicDuration(upMicTime, Calendar.getInstance().getTimeInMillis(), context.getPartitionId());
if (!upMicDuration.isEmpty()) {
totalDuration += upMicDuration.getOrDefault(todayDate, 0);
long totalDuration = 0L;
if (PartitionEnum.ENGLISH2.getId() == context.getPartitionId()) {
RBucket<Integer> taskStatus = taskStatus(uid, todayDate, taskType);
if (!taskStatus.isExists()) { //达标之后不再统计上麦时长
GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(uid);
if (null == guildMember) {
return null;
}
totalDuration = guildMicStatisticsPolicy2Service.getMinutes(context.getPartitionId(), guildMember.getId(), todayDate);
} else {
totalDuration = taskStatus.get();
}
} else {
RAtomicLong userDayUpMicDuration = roomMicService.userDayUpMicDuration(todayDate, uid);
totalDuration = userDayUpMicDuration.get();
RBucket<Long> longRBucket = roomMicService.userUpMicTime(uid);
Long upMicTime = longRBucket.get();
if (longRBucket.isExists()) {
Map<String, Integer> upMicDuration = roomMicService.calUserUpMicDuration(upMicTime, Calendar.getInstance().getTimeInMillis(), context.getPartitionId());
if (!upMicDuration.isEmpty()) {
totalDuration += upMicDuration.getOrDefault(todayDate, 0);
}
}
}
if (totalDuration >= context.getStandardValue()) {
DailyTaskConstant.ReceiveStatus receiveStatus = computeReceiveStatus(uid, todayDate, taskType);
boolean receive = receiveStatus.equals(DailyTaskConstant.ReceiveStatus.RECEIVED);
if (totalDuration >= context.getStandardValue() && !receive) {
taskStatus(uid, todayDate, taskType).set(1, Duration.ofDays(1));
}
if (receive) {
totalDuration = context.getStandardValue();
}
dailyTaskVo.setReachNum(Math.min(totalDuration, context.getStandardValue()));
dailyTaskVo.setReceiveStatus(computeReceiveStatus(uid, todayDate, taskType));
dailyTaskVo.setReceiveStatus(receiveStatus);
return dailyTaskVo;
}
}