日常任务-改版并且添加房间送礼任务

This commit is contained in:
2025-08-28 15:06:38 +08:00
parent 254e876d50
commit cf5ccb33e1
21 changed files with 173 additions and 91 deletions

View File

@@ -17,6 +17,7 @@ public interface DailyTaskConstant {
charge_gold,//日充值金币
play_game,//游戏种类
recv_gold_num,//收礼金币
send_gold_num,//送礼金币
task_config,//任务配置
up_mic_coin_ip_limit,//主播上麦领取ip限制
up_mic_coin_uid_limit,//主播上麦领取ip限制

View File

@@ -16,6 +16,7 @@ public enum DailyTaskTypeEnum {
UP_MIC_COIN("UP_MIC_COIN"),//上麦聊天(获得金币)
ROOM_DAY_DIAMOND("ROOM_DAY_DIAMOND"),//房间日流水奖励
GUILD_WEEK_REWARD("GUILD_WEEK_REWARD"),//公会周奖励
ROOM_SEND_NOMAL_GIFT_GOLD("ROOM_SEND_NOMAL_GIFT_GOLD"),//房间送普通礼物礼对应金币
;
private String handlerType;

View File

@@ -1,21 +1,32 @@
package com.accompany.business.vo.dailytask;
import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
import com.accompany.business.model.dailytask.DailyTaskReward;
import lombok.Data;
import java.util.List;
@Data
public class DailyTaskContext {
private final Long uid;
private final DailyTaskVo dailyTaskVo;
private String todayDate;
private DailyTaskTypeEnum dailyTaskTypeEnum;
private Integer partitionId;
private Integer taskConfigId;
private String deviceId;
private String realIpAddress;
private Long standardValue;
private List<DailyTaskReward> configRewards;
private List<DailyTaskRewardVo> rewardVos;
public DailyTaskContext(Long uid, DailyTaskVo dailyTaskVo, Integer partitionId, String deviceId, String realIpAddress) {
public DailyTaskContext(DailyTaskTypeEnum dailyTaskTypeEnum, Integer taskConfigId, Long uid,
Integer partitionId, String deviceId, String realIpAddress, Long standardValue) {
this.dailyTaskTypeEnum = dailyTaskTypeEnum;
this.taskConfigId = taskConfigId;
this.uid = uid;
this.dailyTaskVo = dailyTaskVo;
this.partitionId = partitionId;
this.deviceId = deviceId;
this.realIpAddress = realIpAddress;
this.standardValue = standardValue;
}
}

View File

@@ -29,10 +29,10 @@ public class DailyTaskVo {
private Long reachNum;
@ApiModelProperty("达标值")
private Long standardValue;
private String todayDate;
@ApiModelProperty("奖励列表")
private List<DailyTaskRewardVo> rewardVos;
private List<DailyTaskReward> configRewards;
private String todayDate;
@ApiModelProperty("房间流水奖励")
private DailyTaskRoomDiamondVo diamondVo;
private List<GuildMemberWeekLevelRewardItemVo> guildWeekRewardItems;

View File

@@ -59,9 +59,18 @@ public abstract class AbstractDailyTaskHandler implements DailyTaskHandler {
public DailyTaskVo handle(DailyTaskContext context){
String todayDate = this.getTaskDate(context.getPartitionId(), new Date());
context.setTodayDate(todayDate);
context.getDailyTaskVo().setTodayDate(todayDate);
context.getDailyTaskVo().setPartitionId(context.getPartitionId());
return this.doHandle(context);
DailyTaskVo dailyTaskVo = this.doHandle(context);
if (dailyTaskVo == null) {
return dailyTaskVo;
}
dailyTaskVo.setRewardVos(context.getRewardVos());
dailyTaskVo.setConfigRewards(context.getConfigRewards());
dailyTaskVo.setTodayDate(todayDate);
dailyTaskVo.setStandardValue(context.getStandardValue());
dailyTaskVo.setTaskType(context.getDailyTaskTypeEnum());
dailyTaskVo.setPartitionId(context.getPartitionId());
return dailyTaskVo;
}
/**

View File

@@ -43,9 +43,7 @@ public class DailyTaskConfigService extends ServiceImpl<DailyTaskConfigMapper, D
return dailyTaskConfig;
}
LambdaQueryWrapper<DailyTaskConfig> wrapper = Wrappers.lambdaQuery();
wrapper.select(DailyTaskConfig::getTaskConfigId, DailyTaskConfig::getTaskTabType, DailyTaskConfig::getTaskKey,
DailyTaskConfig::getTaskName, DailyTaskConfig::getReachNum, DailyTaskConfig::getTaskSeq)
.eq(DailyTaskConfig::getPartitionId, partitionId)
wrapper.eq(DailyTaskConfig::getPartitionId, partitionId)
.eq(DailyTaskConfig::getTaskKey, taskKey)
.eq(DailyTaskConfig::getEnable, 1)
.orderByAsc(DailyTaskConfig::getTaskSeq);

View File

@@ -55,9 +55,9 @@ public class DailyTaskService {
@Autowired
private UsersService usersService;
public DailyTaskVo executeDailyTask(DailyTaskVo dailyTaskVo, Long uid, Integer partitionId, String deviceId, String realIpAddress) {
DailyTaskHandler handler = taskHandlerRegistry.getHandler(dailyTaskVo.getTaskType().getHandlerType());
DailyTaskContext dailyTaskContext = new DailyTaskContext(uid, dailyTaskVo, partitionId, deviceId, realIpAddress);
public DailyTaskVo executeDailyTask(DailyTaskContext dailyTaskContext) {
DailyTaskTypeEnum dailyTaskTypeEnum = dailyTaskContext.getDailyTaskTypeEnum();
DailyTaskHandler handler = taskHandlerRegistry.getHandler(dailyTaskTypeEnum.getHandlerType());
return handler.handle(dailyTaskContext);
}
@@ -79,15 +79,13 @@ public class DailyTaskService {
* @param todayDate
* @return
*/
public BusiResult executeReceive(Integer taskConfigId, Long uid, String todayDate, String deviceId, String realIpAddress) {
DailyTaskVo dailyTaskVo = this.taskVo(taskConfigId, uid);
DailyTaskTypeEnum taskType = dailyTaskVo.getTaskType();
DailyTaskHandler handler = taskHandlerRegistry.getHandler(taskType.getHandlerType());
public BusiResult executeReceive(DailyTaskTypeEnum dailyTaskTypeEnum, Long uid, String todayDate, String deviceId, String realIpAddress) {
DailyTaskContext dailyTaskContext = this.taskVo(dailyTaskTypeEnum, uid, deviceId, realIpAddress);
DailyTaskHandler handler = taskHandlerRegistry.getHandler(dailyTaskTypeEnum.getHandlerType());
if (handler == null || StringUtils.isEmpty(todayDate) || uid == null) {
throw new ServiceException(BusiStatus.PARAMERROR);
}
DailyTaskContext dailyTaskContext = new DailyTaskContext(uid, dailyTaskVo, dailyTaskVo.getPartitionId(), deviceId, realIpAddress);
dailyTaskVo = handler.handle(dailyTaskContext);
DailyTaskVo dailyTaskVo = handler.handle(dailyTaskContext);
return handler.receive(uid, todayDate, dailyTaskVo, deviceId, realIpAddress);
}
@@ -143,15 +141,15 @@ public class DailyTaskService {
Users users = usersService.getUsersByUid(uid);
Integer partitionId = users.getPartitionId();
List<DailyTaskVo> dailyTaskVos = this.taskVoList(partitionId, taskTabType, taskRole, uid);
List<DailyTaskContext> dailyTaskContexts = this.taskVoList(partitionId, taskTabType, taskRole, uid, deviceId, realIpAddress);
List<DailyTaskVo> executeDailyTaskList = new ArrayList<>();
if (CollectionUtils.isEmpty(dailyTaskVos)) {
return dailyTaskVos;
if (CollectionUtils.isEmpty(dailyTaskContexts)) {
return executeDailyTaskList;
}
List<DailyTaskVo> executeDailyTaskList = new ArrayList<>();
dailyTaskVos.stream().forEach(dailyTaskVo -> {
DailyTaskVo taskVo = executeDailyTask(dailyTaskVo, uid, partitionId, deviceId, realIpAddress);
dailyTaskContexts.stream().forEach(dailyTaskContext -> {
DailyTaskVo taskVo = executeDailyTask(dailyTaskContext);
if (taskVo != null) {
executeDailyTaskList.add(taskVo);
}
@@ -160,8 +158,8 @@ public class DailyTaskService {
return executeDailyTaskList;
}
public List<DailyTaskVo> taskVoList(Integer partitionId, Integer taskTabType, List<Byte> taskRole, Long uid) {
List<DailyTaskVo> resultList = new ArrayList<>();
public List<DailyTaskContext> taskVoList(Integer partitionId, Integer taskTabType, List<Byte> taskRole, Long uid, String deviceId, String realIpAddress) {
List<DailyTaskContext> resultList = new ArrayList<>();
List<DailyTaskConfig> dailyTaskConfigs = dailyTaskConfigService.listByRole(partitionId, taskTabType, taskRole);
if (CollectionUtils.isEmpty(dailyTaskConfigs)) {
return resultList;
@@ -175,13 +173,8 @@ public class DailyTaskService {
for (DailyTaskConfig dailyTaskConfig : dailyTaskConfigs) {
try {
DailyTaskVo dailyTaskVo = DailyTaskVo.builder().
taskConfigId(dailyTaskConfig.getTaskConfigId()).
taskType(DailyTaskTypeEnum.valueOf(dailyTaskConfig.getTaskKey())).
standardValue(dailyTaskConfig.getReachNum())
.partitionId(dailyTaskConfig.getPartitionId())
.build();
resultList.add(dailyTaskVo);
resultList.add(new DailyTaskContext(DailyTaskTypeEnum.valueOf(dailyTaskConfig.getTaskKey()), dailyTaskConfig.getTaskConfigId(),
uid, partitionId, deviceId, realIpAddress, dailyTaskConfig.getReachNum()));
} catch (Exception e) {
log.error("taskVoList error,config:{} e:{}", JSONObject.toJSONString(dailyTaskConfig),e.getMessage(), e);
}
@@ -189,13 +182,13 @@ public class DailyTaskService {
if (CollectionUtils.isEmpty(resultList)) {
return resultList;
}
List<Integer> taskConfigIds = resultList.stream().map(DailyTaskVo::getTaskConfigId).collect(Collectors.toList());
List<Integer> taskConfigIds = resultList.stream().map(DailyTaskContext::getTaskConfigId).collect(Collectors.toList());
Map<Integer, List<DailyTaskReward>> taskRewardMap = dailyTaskRewardService.mapByTaskConfigId(taskConfigIds);
if (MapUtils.isEmpty(taskRewardMap)) {
return resultList;
}
List<DailyTaskRewardVo> rewardVos;
for (DailyTaskVo dailyTaskVo : resultList) {
for (DailyTaskContext dailyTaskVo : resultList) {
rewardVos = new ArrayList<>();
dailyTaskVo.setRewardVos(rewardVos);
List<DailyTaskReward> dailyTaskRewards = taskRewardMap.get(dailyTaskVo.getTaskConfigId());
@@ -216,30 +209,26 @@ public class DailyTaskService {
return resultList;
}
public DailyTaskVo taskVo(Integer taskConfigId, Long uid) {
DailyTaskConfig dailyTaskConfig = dailyTaskConfigService.getById(taskConfigId);
public DailyTaskContext taskVo(DailyTaskTypeEnum dailyTaskTypeEnum, Long uid, String deviceId, String realIpAddress) {
Users users = usersService.getUsersByUid(uid);
DailyTaskConfig dailyTaskConfig = dailyTaskConfigService.getByPartTaskKey(users.getPartitionId(), dailyTaskTypeEnum.name());
Boolean isRechargeUser = rechargeUserService.isRechargeUser(uid);
if (isRechargeUser && dailyTaskConfig.getRechargeLimit()) {
throw new ServiceException(BusiStatus.ACCESS_DENIED);
}
DailyTaskContext dailyTaskContext = new DailyTaskContext(dailyTaskTypeEnum, dailyTaskConfig.getTaskConfigId(),
uid, users.getPartitionId(), deviceId, realIpAddress, dailyTaskConfig.getReachNum());
DailyTaskVo dailyTaskVo = DailyTaskVo.builder().
taskConfigId(dailyTaskConfig.getTaskConfigId()).
taskType(DailyTaskTypeEnum.valueOf(dailyTaskConfig.getTaskKey())).
standardValue(dailyTaskConfig.getReachNum())
.partitionId(dailyTaskConfig.getPartitionId())
.build();
Map<Integer, List<DailyTaskReward>> taskRewardMap = dailyTaskRewardService.mapByTaskConfigId(Arrays.asList(taskConfigId));
Map<Integer, List<DailyTaskReward>> taskRewardMap = dailyTaskRewardService.mapByTaskConfigId(Arrays.asList(dailyTaskConfig.getTaskConfigId()));
if (MapUtils.isEmpty(taskRewardMap)) {
return dailyTaskVo;
return dailyTaskContext;
}
List<DailyTaskReward> dailyTaskRewards = taskRewardMap.get(dailyTaskVo.getTaskConfigId());
List<DailyTaskReward> dailyTaskRewards = taskRewardMap.get(dailyTaskContext.getTaskConfigId());
if (CollectionUtils.isEmpty(dailyTaskRewards)) {
return dailyTaskVo;
return dailyTaskContext;
}
dailyTaskVo.setConfigRewards(dailyTaskRewards);
return dailyTaskVo;
dailyTaskContext.setConfigRewards(dailyTaskRewards);
return dailyTaskContext;
}
}

View File

@@ -58,14 +58,14 @@ public class ChargeGoldNumHandler extends AbstractDailyTaskHandler {
@Override
public DailyTaskVo doHandle(DailyTaskContext context) {
DailyTaskTypeEnum taskType = context.getDailyTaskVo().getTaskType();
DailyTaskVo dailyTaskVo = context.getDailyTaskVo();
DailyTaskTypeEnum taskType = context.getDailyTaskTypeEnum();
Long uid = context.getUid();
String todayDate = context.getTodayDate();
Long chargeGold = dailyChargeGold(context.getPartitionId(), todayDate).getOrDefault(uid, 0L);
dailyTaskVo.setReachNum(chargeGold);
dailyTaskVo.setReceiveStatus(computeReceiveStatus(uid, todayDate, taskType));
return dailyTaskVo;
return DailyTaskVo.builder()
.reachNum(chargeGold)
.receiveStatus(computeReceiveStatus(uid, todayDate, taskType))
.build();
}
private RMap<Long, Long> dailyChargeGold(Integer partitionId, String todayDate) {

View File

@@ -26,10 +26,10 @@ public class DailySignHandler extends AbstractDailyTaskHandler {
@Override
public DailyTaskVo doHandle(DailyTaskContext context) {
DailyTaskVo dailyTaskVo = context.getDailyTaskVo();
DailyTaskConstant.ReceiveStatus receiveStatus = computeReceiveStatus(context.getUid(),
context.getTodayDate(), dailyTaskVo.getTaskType());
dailyTaskVo.setReceiveStatus(receiveStatus);
return dailyTaskVo;
DailyTaskConstant.ReceiveStatus receiveStatus =
computeReceiveStatus(context.getUid(), context.getTodayDate(), context.getDailyTaskTypeEnum());
return DailyTaskVo.builder()
.receiveStatus(receiveStatus)
.build();
}
}

View File

@@ -34,7 +34,7 @@ public class GuildWeekRewardHandler extends AbstractDailyTaskHandler {
@Override
public DailyTaskVo doHandle(DailyTaskContext context) {
DailyTaskVo dailyTaskVo = context.getDailyTaskVo();
DailyTaskVo dailyTaskVo = new DailyTaskVo();
Integer partitionId = context.getPartitionId();
Long uid = context.getUid();
GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(uid);

View File

@@ -46,10 +46,11 @@ public class PlayGameHandler extends AbstractDailyTaskHandler {
public DailyTaskVo doHandle(DailyTaskContext context) {
Long uid = context.getUid();
String todayDate = context.getTodayDate();
DailyTaskVo dailyTaskVo = context.getDailyTaskVo();
dailyTaskVo.setReachNum((long)playGameCategory(uid, todayDate).size());
dailyTaskVo.setReceiveStatus(computeReceiveStatus(uid, todayDate, dailyTaskVo.getTaskType()));
return dailyTaskVo;
DailyTaskTypeEnum dailyTaskTypeEnum = context.getDailyTaskTypeEnum();
return DailyTaskVo.builder()
.reachNum((long)playGameCategory(uid, todayDate).size())
.receiveStatus(computeReceiveStatus(uid, todayDate, dailyTaskTypeEnum))
.build();
}
private RSet<String> playGameCategory(Long uid, String todayDate) {

View File

@@ -22,7 +22,7 @@ public class RecvLuckyGiftHandler extends AbstractDailyTaskHandler {
@Override
public void doExecuteProgress(DailyProgressContext progressContext) {
Long uid = progressContext.getUid();
Long uid = progressContext.getRecvUid();
Integer partitionId = progressContext.getPartitionId();
String todayDate = getTaskDate(partitionId, progressContext.getCreateTime());
RBucket<Integer> taskStatus = taskStatus(uid, todayDate, DailyTaskTypeEnum.RECV_LUCKY_GIFT);
@@ -37,10 +37,11 @@ public class RecvLuckyGiftHandler extends AbstractDailyTaskHandler {
@Override
public DailyTaskVo doHandle(DailyTaskContext context) {
DailyTaskVo dailyTaskVo = context.getDailyTaskVo();
Long uid = context.getUid();
String todayDate = context.getTodayDate();
dailyTaskVo.setReceiveStatus(computeReceiveStatus(uid, todayDate, dailyTaskVo.getTaskType()));
return dailyTaskVo;
DailyTaskTypeEnum dailyTaskTypeEnum = context.getDailyTaskTypeEnum();
return DailyTaskVo.builder()
.receiveStatus(computeReceiveStatus(uid, todayDate, dailyTaskTypeEnum))
.build();
}
}

View File

@@ -23,7 +23,7 @@ public class RecvNomalGiftGoldHandler extends AbstractDailyTaskHandler {
@Override
public void doExecuteProgress(DailyProgressContext progressContext) {
Long uid = progressContext.getUid();
Long uid = progressContext.getRecvUid();
Integer partitionId = progressContext.getPartitionId();
String todayDate = getTaskDate(partitionId, progressContext.getCreateTime());
RMap<Long, Long> recvGoldNum = recvGoldNum(partitionId, todayDate);
@@ -43,11 +43,12 @@ public class RecvNomalGiftGoldHandler extends AbstractDailyTaskHandler {
public DailyTaskVo doHandle(DailyTaskContext context) {
String todayDate = context.getTodayDate();
RMap<Long, Long> recvGoldNum = recvGoldNum(context.getPartitionId(), todayDate);
DailyTaskVo dailyTaskVo = context.getDailyTaskVo();
DailyTaskTypeEnum dailyTaskTypeEnum = context.getDailyTaskTypeEnum();
Long uid = context.getUid();
dailyTaskVo.setReceiveStatus(computeReceiveStatus(uid, todayDate, dailyTaskVo.getTaskType()));
dailyTaskVo.setReachNum(recvGoldNum.getOrDefault(uid, 0L));
return dailyTaskVo;
return DailyTaskVo.builder()
.receiveStatus(computeReceiveStatus(uid, todayDate, dailyTaskTypeEnum))
.reachNum(recvGoldNum.getOrDefault(uid, 0L))
.build();
}
private RMap<Long, Long> recvGoldNum(Integer partitionId, String todayDate) {

View File

@@ -22,7 +22,7 @@ public class RecvNomalGiftHandler extends AbstractDailyTaskHandler {
@Override
public void doExecuteProgress(DailyProgressContext progressContext) {
Long uid = progressContext.getUid();
Long uid = progressContext.getRecvUid();
Integer partitionId = progressContext.getPartitionId();
String todayDate = getTaskDate(partitionId, progressContext.getCreateTime());
RBucket<Integer> taskStatus = taskStatus(uid, todayDate, DailyTaskTypeEnum.RECV_NOMAL_GIFT);
@@ -38,10 +38,11 @@ public class RecvNomalGiftHandler extends AbstractDailyTaskHandler {
@Override
public DailyTaskVo doHandle(DailyTaskContext context) {
DailyTaskVo dailyTaskVo = context.getDailyTaskVo();
Long uid = context.getUid();
String todayDate = context.getTodayDate();
dailyTaskVo.setReceiveStatus(computeReceiveStatus(uid, todayDate, dailyTaskVo.getTaskType()));
return dailyTaskVo;
DailyTaskTypeEnum dailyTaskTypeEnum = context.getDailyTaskTypeEnum();
return DailyTaskVo.builder()
.receiveStatus(computeReceiveStatus(uid, todayDate, dailyTaskTypeEnum))
.build();
}
}

View File

@@ -40,7 +40,7 @@ public class RoomDayDiamondHandler extends AbstractDailyTaskHandler {
@Override
public DailyTaskVo doHandle(DailyTaskContext context) {
DailyTaskVo dailyTaskVo = context.getDailyTaskVo();
DailyTaskVo dailyTaskVo = new DailyTaskVo();
Integer partitionId = context.getPartitionId();
Long uid = context.getUid();
DailyTaskRoomDiamondVo dailyTaskRoomDiamondVo = new DailyTaskRoomDiamondVo();

View File

@@ -0,0 +1,66 @@
package com.accompany.business.service.dailytask.handler;
import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
import com.accompany.business.model.dailytask.DailyTaskConfig;
import com.accompany.business.service.dailytask.AbstractDailyTaskHandler;
import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType;
import com.accompany.business.service.gift.GiftSendService;
import com.accompany.business.vo.dailytask.DailyProgressContext;
import com.accompany.business.vo.dailytask.DailyTaskContext;
import com.accompany.business.vo.dailytask.DailyTaskVo;
import org.redisson.api.RBucket;
import org.redisson.api.RMap;
import org.redisson.client.codec.LongCodec;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.Duration;
import static com.accompany.business.constant.dailytask.DailyTaskConstant.RedisKey.send_gold_num;
import static com.accompany.business.constant.dailytask.DailyTaskTypeEnum.ROOM_SEND_NOMAL_GIFT_GOLD;
@Component
@DailyTaskHandlerType(ROOM_SEND_NOMAL_GIFT_GOLD)
public class RoomSendGiftGoldNumHandler extends AbstractDailyTaskHandler {
@Autowired
private GiftSendService giftSendService;
@Override
public void doExecuteProgress(DailyProgressContext progressContext) {
boolean luckyGift = giftSendService.isLuckyGift(progressContext.getGiftType());
if (luckyGift) {
return;
}
Long uid = progressContext.getUid();
Integer partitionId = progressContext.getPartitionId();
String todayDate = getTaskDate(partitionId, progressContext.getCreateTime());
RBucket<Integer> taskStatus = taskStatus(uid, todayDate, ROOM_SEND_NOMAL_GIFT_GOLD);
if (taskStatus.isExists()) {
return;
}
RMap<Long, Long> sendGoldNum = sendGoldNum(partitionId, todayDate);
Long addAndGet = sendGoldNum.addAndGet(uid, progressContext.getRecvGoldNum());
sendGoldNum.expire(Duration.ofDays(EXPIRE_DAY));
DailyTaskConfig dailyTaskConfig = dailyTaskConfigService.getByPartTaskKey(partitionId, ROOM_SEND_NOMAL_GIFT_GOLD.name());
if (dailyTaskConfig != null && addAndGet != null && addAndGet >= dailyTaskConfig.getReachNum()) {
taskStatus(uid, todayDate, DailyTaskTypeEnum.ROOM_SEND_NOMAL_GIFT_GOLD).set(1, Duration.ofDays(EXPIRE_DAY));
}
}
@Override
public DailyTaskVo doHandle(DailyTaskContext context) {
String todayDate = context.getTodayDate();
RMap<Long, Long> sendGoldNum = sendGoldNum(context.getPartitionId(), todayDate);
Long uid = context.getUid();
DailyTaskTypeEnum dailyTaskTypeEnum = context.getDailyTaskTypeEnum();
return DailyTaskVo.builder()
.receiveStatus(computeReceiveStatus(uid, todayDate, dailyTaskTypeEnum))
.reachNum(sendGoldNum.getOrDefault(uid, 0L))
.build();
}
private RMap<Long, Long> sendGoldNum(Integer partitionId, String todayDate) {
return redissonClient.getMap(send_gold_num.getKey(partitionId.toString(), todayDate), LongCodec.INSTANCE);
}
}

View File

@@ -32,10 +32,11 @@ public class RoomSendGiftHandler extends AbstractDailyTaskHandler {
@Override
public DailyTaskVo doHandle(DailyTaskContext context) {
DailyTaskVo dailyTaskVo = context.getDailyTaskVo();
Long uid = context.getUid();
String todayDate = context.getTodayDate();
dailyTaskVo.setReceiveStatus(computeReceiveStatus(uid, todayDate, dailyTaskVo.getTaskType()));
return dailyTaskVo;
DailyTaskTypeEnum dailyTaskTypeEnum = context.getDailyTaskTypeEnum();
return DailyTaskVo.builder()
.receiveStatus(computeReceiveStatus(uid, todayDate, dailyTaskTypeEnum))
.build();
}
}

View File

@@ -47,9 +47,9 @@ public class UpMicCoinHandler extends AbstractDailyTaskHandler {
@Override
public DailyTaskVo doHandle(DailyTaskContext context) {
Long uid = context.getUid();
DailyTaskVo dailyTaskVo = context.getDailyTaskVo();
DailyTaskVo dailyTaskVo = new DailyTaskVo();
String deviceId = context.getDeviceId();
DailyTaskTypeEnum taskType = dailyTaskVo.getTaskType();
DailyTaskTypeEnum taskType = context.getDailyTaskTypeEnum();
String realIpAddress = context.getRealIpAddress();
String mondayDate = context.getTodayDate();
String nowDate = getNowDate(context.getPartitionId(), new Date());
@@ -74,7 +74,7 @@ public class UpMicCoinHandler extends AbstractDailyTaskHandler {
totalDuration = taskStatus.get();
}
dailyTaskVo.setTodayDate(mondayDate);
if (totalDuration != null && totalDuration >= dailyTaskVo.getStandardValue()) {
if (totalDuration != null && totalDuration >= context.getStandardValue()) {
taskStatus.set(totalDuration, Duration.ofDays(getReceiveExpireDay()));
}
DailyTaskConstant.ReceiveStatus receiveStatus = computeReceiveStatus(uid, mondayDate, taskType);

View File

@@ -34,20 +34,20 @@ public class UpMicHandler extends AbstractDailyTaskHandler {
@Override
public DailyTaskVo doHandle(DailyTaskContext context) {
Long uid = context.getUid();
DailyTaskVo dailyTaskVo = context.getDailyTaskVo();
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 = dailyTaskVo.getTaskType();
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);
}
}
if (totalDuration >= dailyTaskVo.getStandardValue()) {
if (totalDuration >= context.getStandardValue()) {
taskStatus(uid, todayDate, taskType).set(1, Duration.ofDays(1));
}
dailyTaskVo.setReachNum(totalDuration);

View File

@@ -38,6 +38,7 @@ public class DailyTaskGiftListener implements ApplicationListener<GiftMessageEve
dailyTaskService.executeProgress(DailyTaskTypeEnum.RECV_NOMAL_GIFT_GOLD, dailyProgressContext);
dailyTaskService.executeProgress(DailyTaskTypeEnum.RECV_NOMAL_GIFT, dailyProgressContext);
dailyTaskService.executeProgress(DailyTaskTypeEnum.ROOM_SEND_GIFT, dailyProgressContext);
dailyTaskService.executeProgress(DailyTaskTypeEnum.ROOM_SEND_NOMAL_GIFT_GOLD, dailyProgressContext);
} catch (Exception e) {
log.error("DailyTaskGiftListener:e.getMessage:{}", e.getMessage(), e);
}

View File

@@ -1,5 +1,6 @@
package com.accompany.business.controller.activity.dailytask;
import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
import com.accompany.business.service.dailytask.DailyTaskService;
import com.accompany.business.service.dailytask.DailyTaskShopService;
import com.accompany.business.vo.dailytask.DailyTaskShopCenterVo;
@@ -55,10 +56,10 @@ public class DailyTaskController {
})
@Authorization
@PostMapping("/recv")
public BusiResult<List<DailyTaskVo>> recv(@RequestHeader(PUB_UID) Long uid, String todayDate, Integer taskConfigId,
public BusiResult<List<DailyTaskVo>> recv(@RequestHeader(PUB_UID) Long uid, String todayDate, DailyTaskTypeEnum taskType,
@RequestHeader(DEVICE_ID)String deviceId, HttpServletRequest request) {
String realIpAddress = IPUtils.getRealIpAddress(request);
return dailyTaskService.executeReceive(taskConfigId, uid, todayDate, deviceId, realIpAddress);
return dailyTaskService.executeReceive(taskType, uid, todayDate, deviceId, realIpAddress);
}
@ApiOperation(value = "兑换中心", httpMethod = "GET")