日常任务-优化代码
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
@@ -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<Integer, List<DailyTaskReward>> taskRewardMap = dailyTaskRewardService.mapByTaskConfigId(Arrays.asList(taskConfigId));
|
||||
|
@@ -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<String, Long> 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<String, Long> 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<String, Long> 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;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user