From 0165dd10ee4aee25517f9638f987c976337ed704 Mon Sep 17 00:00:00 2001 From: hokli <2629910752@qq.com> Date: Wed, 27 Aug 2025 15:00:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E5=B8=B8=E4=BB=BB=E5=8A=A1-=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dailytask/AbstractDailyTaskHandler.java | 30 ++++++++++++++----- .../service/dailytask/DailyTaskHandler.java | 2 +- .../service/dailytask/DailyTaskService.java | 4 +++ .../dailytask/handler/UpMicCoinHandler.java | 18 +++++------ 4 files changed, 36 insertions(+), 18 deletions(-) diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/AbstractDailyTaskHandler.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/AbstractDailyTaskHandler.java index 323a349a9..79ce6c08c 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/AbstractDailyTaskHandler.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/AbstractDailyTaskHandler.java @@ -55,9 +55,10 @@ public abstract class AbstractDailyTaskHandler implements DailyTaskHandler { @Override public DailyTaskVo handle(DailyTaskContext context){ - String todayDate = this.getTodayDate(context.getPartitionId(), new Date()); + String todayDate = this.getTaskDate(context.getPartitionId(), new Date()); context.setTodayDate(todayDate); context.getDailyTaskVo().setTodayDate(todayDate); + context.getDailyTaskVo().setPartitionId(context.getPartitionId()); return this.doHandle(context); } @@ -98,11 +99,11 @@ public abstract class AbstractDailyTaskHandler implements DailyTaskHandler { */ @Override public BusiResult receive(Long uid, String receiveDate, DailyTaskVo dailyTaskVo, String deviceId, String realIpAddress) { - Users users = usersService.getUsersByUid(uid); DailyTaskTypeEnum dailyTaskTypeEnum = dailyTaskVo.getTaskType(); - DailyTaskContext dailyTaskContext = new DailyTaskContext(uid, dailyTaskVo, users.getPartitionId(), deviceId, realIpAddress); - this.handle(dailyTaskContext); - + Integer partitionId = dailyTaskVo.getPartitionId(); + if (dailyTaskVo == null) { + throw new ServiceException(BusiStatus.DAILY_TASK_RECEIVE_END); + } if (!dailyTaskVo.getTodayDate().equals(receiveDate)) { throw new ServiceException(BusiStatus.DAILY_RECEIVE_EXPIRE); } @@ -111,7 +112,7 @@ public abstract class AbstractDailyTaskHandler implements DailyTaskHandler { throw new ServiceException(BusiStatus.DAILY_TASK_UNCOMPLETED); } Integer receiveStatus = receiveStatus(uid, receiveDate, dailyTaskTypeEnum) - .getAndSet(1, Duration.ofDays(EXPIRE_DAY)); + .getAndSet(1, Duration.ofDays(getReceiveExpireDay())); if (receiveStatus != null) { throw new ServiceException(BusiStatus.DAILY_RECEIVE_EXIST); } @@ -126,9 +127,12 @@ public abstract class AbstractDailyTaskHandler implements DailyTaskHandler { guildMemberId = guildMember.getId(); guildId = guildMember.getGuildId(); } + if (dailyTaskTypeEnum.equals(DailyTaskTypeEnum.UP_MIC_COIN)) { //上麦领金币的日期为周期 + receiveDate = getNowDate(partitionId, new Date()); + } for (DailyTaskReward configReward : dailyTaskVo.getConfigRewards()) { dailyTaskRewardRecordService.addRecord(configReward.getTaskConfigId(), dailyTaskVo.getTaskType().name(), - uid, users.getPartitionId(), guildId, guildMemberId, configReward.getAwardType(), + uid, partitionId, guildId, guildMemberId, configReward.getAwardType(), configReward.getAwardId(), configReward.getAwardNum(), receiveDate); if (RewardTypeEnum.GOLDBEAN.getType().equals(configReward.getAwardType())) { userGoldBeanService.addGoldBean(uid, BigDecimal.valueOf(configReward.getAwardNum()), GoldBeanBillType.TASK_GAIN, @@ -143,7 +147,13 @@ public abstract class AbstractDailyTaskHandler implements DailyTaskHandler { } @Override - public String getTodayDate(Integer partitionId, Date date) { + public String getTaskDate(Integer partitionId, Date date) { + PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId); + ZonedDateTime zonedDateTime = DateTimeUtil.convertWithZoneId(date, partitionEnum.getZoneId()); + return zonedDateTime.format(DateTimeUtil.dateFormatter); + } + + protected String getNowDate(Integer partitionId, Date date) { PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId); ZonedDateTime zonedDateTime = DateTimeUtil.convertWithZoneId(date, partitionEnum.getZoneId()); return zonedDateTime.format(DateTimeUtil.dateFormatter); @@ -181,4 +191,8 @@ public abstract class AbstractDailyTaskHandler implements DailyTaskHandler { return redissonClient.getBucket(task_status.getKey(uid.toString(), dailyTaskTypeEnum.name(), todayDate.replaceAll("-", "")), IntegerCodec.INSTANCE); } + + protected Integer getReceiveExpireDay() { + return EXPIRE_DAY; + } } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskHandler.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskHandler.java index 5cf427a46..c74ce967a 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskHandler.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskHandler.java @@ -20,5 +20,5 @@ public interface DailyTaskHandler { BusiResult receive(Long uid, String receiveDate, DailyTaskVo dailyTaskVo, String deviceId, String realIpAddress); - String getTodayDate(Integer partitionId, Date date); + String getTaskDate(Integer partitionId, Date date); } \ No newline at end of file diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskService.java index e8db1317a..11e4f6236 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/DailyTaskService.java @@ -86,6 +86,8 @@ public class DailyTaskService { 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); return handler.receive(uid, todayDate, dailyTaskVo, deviceId, realIpAddress); } @@ -177,6 +179,7 @@ public class DailyTaskService { taskConfigId(dailyTaskConfig.getTaskConfigId()). taskType(DailyTaskTypeEnum.valueOf(dailyTaskConfig.getTaskKey())). standardValue(dailyTaskConfig.getReachNum()) + .partitionId(dailyTaskConfig.getPartitionId()) .build(); resultList.add(dailyTaskVo); } catch (Exception e) { @@ -224,6 +227,7 @@ public class DailyTaskService { taskConfigId(dailyTaskConfig.getTaskConfigId()). taskType(DailyTaskTypeEnum.valueOf(dailyTaskConfig.getTaskKey())). standardValue(dailyTaskConfig.getReachNum()) + .partitionId(dailyTaskConfig.getPartitionId()) .build(); Map> taskRewardMap = dailyTaskRewardService.mapByTaskConfigId(Arrays.asList(taskConfigId)); diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/UpMicCoinHandler.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/UpMicCoinHandler.java index a4bcc434f..1d2aca4dc 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/UpMicCoinHandler.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/UpMicCoinHandler.java @@ -75,7 +75,7 @@ public class UpMicCoinHandler extends AbstractDailyTaskHandler { } dailyTaskVo.setTodayDate(mondayDate); if (totalDuration != null && totalDuration >= dailyTaskVo.getStandardValue()) { - taskStatus.set(totalDuration, Duration.ofDays(1)); + taskStatus.set(totalDuration, Duration.ofDays(getReceiveExpireDay())); } DailyTaskConstant.ReceiveStatus receiveStatus = computeReceiveStatus(uid, mondayDate, taskType); dailyTaskVo.setReceiveStatus(receiveStatus); @@ -103,24 +103,19 @@ public class UpMicCoinHandler extends AbstractDailyTaskHandler { deveiceCache.put(deviceId, uid); RMap ipCache = getIpCache(receiveDate); ipCache.put(realIpAddress, uid); - deveiceCache.expire(Duration.ofDays(7)); - ipCache.expire(Duration.ofDays(7)); + deveiceCache.expire(Duration.ofDays(getReceiveExpireDay())); + ipCache.expire(Duration.ofDays(getReceiveExpireDay())); return BusiResult.success(); } @Override - public String getTodayDate(Integer partitionId, Date date) { + public String getTaskDate(Integer partitionId, Date date) { PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId); ZonedDateTime zonedDateTime = DateTimeUtil.convertWithZoneId(date, partitionEnum.getZoneId()); return zonedDateTime.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)).format(DateTimeUtil.dateFormatter); } - private String getNowDate(Integer partitionId, Date date) { - PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId); - ZonedDateTime zonedDateTime = DateTimeUtil.convertWithZoneId(date, partitionEnum.getZoneId()); - return zonedDateTime.format(DateTimeUtil.dateFormatter); - } private RMap getIpCache(String monday) { return redissonClient.getMap(up_mic_coin_ip_limit.getKey(monday), new TypedJsonJacksonCodec(String.class, Long.class)); @@ -129,5 +124,10 @@ public class UpMicCoinHandler extends AbstractDailyTaskHandler { private RMap getDeveiceCache(String monday) { return redissonClient.getMap(up_mic_coin_device_limit.getKey(monday), new TypedJsonJacksonCodec(String.class, Long.class)); } + + @Override + protected Integer getReceiveExpireDay() { + return 7; + } }