日常任务-新主播上麦奖励
This commit is contained in:
@@ -984,6 +984,7 @@ public enum BusiStatus {
|
||||
DAILY_TASK_RECEIVE_END(500, "RECEIVED EXPIRE"),
|
||||
SUPER_BLOCK_NOAUTHORITY(500, "NOAUTHORITY OPERATE"),
|
||||
SUPER_BLOCK_MUST_BLOCK_REASON(500, "MUST SIGN BLOCK REASON"),
|
||||
DAILY_TASK_REWARD_ERROR(500, "DAILY TASK REWARD ERROR"),
|
||||
;
|
||||
|
||||
private final int value;
|
||||
|
@@ -317,6 +317,7 @@ public enum I18nAlertEnum {
|
||||
PACK_USE_SELF_SYS("你已经使用了【{0}】,对应的奖励已经放入你的背包啦!记得查收~"),
|
||||
PACK_SYS_SEND_SYS("恭喜你,系统给你赠送了{0}*{1}快去礼包中心查看使用吧!"),
|
||||
GOLD_BEAN_NAME("Gold Bean"),
|
||||
DIAMOND_NAME("DIAMOND"),
|
||||
;
|
||||
|
||||
private final String defaultStr;
|
||||
|
@@ -20,9 +20,8 @@ public interface DailyTaskConstant {
|
||||
send_gold_num,//送礼金币
|
||||
send_gift_num,//送礼数量
|
||||
task_config,//任务配置
|
||||
up_mic_coin_ip_limit,//主播上麦领取ip限制
|
||||
up_mic_coin_uid_limit,//主播上麦领取ip限制
|
||||
up_mic_coin_device_limit,//主播上麦领取设备限制
|
||||
ip_limit,//主播上麦领取ip限制
|
||||
device_limit,//主播上麦领取设备限制
|
||||
;
|
||||
|
||||
@Override
|
||||
|
@@ -18,9 +18,10 @@ 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"),//房间送普通礼物礼单个送礼达到金币
|
||||
ROOM_SEND_NOMAL_GIFT_GOLD("ROOM_SEND_NOMAL_GIFT_GOLD"),//房间送普通礼物礼单个送礼达到20000金币
|
||||
ROOM_SEND_LUCKY_NUM("ROOM_SEND_LUCKY_NUM"),//送出77个lucky礼物
|
||||
ROOM_SEND_BRAVO_NUM("ROOM_SEND_BRAVO_NUM"),//送出77个BRAVO礼物
|
||||
GM_UP_MIC("GM_UP_MIC"),//每日任务新主播上麦(薅羊毛)
|
||||
;
|
||||
|
||||
private String handlerType;
|
||||
|
@@ -36,4 +36,6 @@ public class DailyTaskVo {
|
||||
@ApiModelProperty("房间流水奖励")
|
||||
private DailyTaskRoomDiamondVo diamondVo;
|
||||
private List<GuildMemberWeekLevelRewardItemVo> guildWeekRewardItems;
|
||||
@ApiModelProperty("任务剩余时间")
|
||||
private Long expireSecond;
|
||||
}
|
||||
|
@@ -49,8 +49,7 @@ import org.springframework.stereotype.Service;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.accompany.core.enumeration.I18nAlertEnum.GOLD_BEAN_NAME;
|
||||
import static com.accompany.core.enumeration.I18nAlertEnum.GOLD_NAME;
|
||||
import static com.accompany.core.enumeration.I18nAlertEnum.*;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -327,6 +326,10 @@ public class ActivityH5LevelAwardServiceImpl extends ServiceImpl<ActivityH5Level
|
||||
i18nValue = I18NMessageSourceUtil.getMessage(GOLD_NAME, partitionId);
|
||||
vo.setPic("https://image.molistar.xyz/Molistarcoins.png");
|
||||
break;
|
||||
case GOLD:
|
||||
i18nValue = I18NMessageSourceUtil.getMessage(DIAMOND_NAME, partitionId);
|
||||
vo.setPic("https://image.molistar.xyz/diamond_dailytast.png");
|
||||
break;
|
||||
case VIP:
|
||||
VipInfo vipInfo = vipInfoService.getByVipLevel(refId);
|
||||
if (null == vipInfo) {
|
||||
|
@@ -26,6 +26,7 @@ import org.redisson.api.RMap;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.redisson.client.codec.IntegerCodec;
|
||||
import org.redisson.client.codec.LongCodec;
|
||||
import org.redisson.codec.TypedJsonJacksonCodec;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@@ -65,6 +66,7 @@ public abstract class AbstractDailyTaskHandler implements DailyTaskHandler {
|
||||
if (dailyTaskVo == null) {
|
||||
return dailyTaskVo;
|
||||
}
|
||||
dailyTaskVo.setTaskConfigId(context.getTaskConfigId());
|
||||
dailyTaskVo.setRewardVos(context.getRewardVos());
|
||||
dailyTaskVo.setConfigRewards(context.getConfigRewards());
|
||||
dailyTaskVo.setTodayDate(todayDate);
|
||||
@@ -123,14 +125,14 @@ public abstract class AbstractDailyTaskHandler implements DailyTaskHandler {
|
||||
if (!taskStatus.isExists()) {
|
||||
throw new ServiceException(BusiStatus.DAILY_TASK_UNCOMPLETED);
|
||||
}
|
||||
if (CollectionUtils.isEmpty(dailyTaskVo.getConfigRewards())) {
|
||||
throw new ServiceException(BusiStatus.DAILY_TASK_REWARD_ERROR);
|
||||
}
|
||||
Integer receiveStatus = receiveStatus(uid, receiveDate, dailyTaskTypeEnum)
|
||||
.getAndSet(1, Duration.ofDays(getReceiveExpireDay()));
|
||||
if (receiveStatus != null) {
|
||||
throw new ServiceException(BusiStatus.DAILY_RECEIVE_EXIST);
|
||||
}
|
||||
if (CollectionUtils.isEmpty(dailyTaskVo.getConfigRewards())) {
|
||||
throw new ServiceException(BusiStatus.SERVERBUSY);
|
||||
}
|
||||
|
||||
Long guildMemberId = 0L;
|
||||
Integer guildId = 0;
|
||||
@@ -216,4 +218,13 @@ public abstract class AbstractDailyTaskHandler implements DailyTaskHandler {
|
||||
protected RMap<Long, Long> sendGiftNum(DailyTaskTypeEnum dailyTaskTypeEnum, Integer partitionId, String todayDate) {
|
||||
return redissonClient.getMap(send_gift_num.getKey(partitionId.toString(), dailyTaskTypeEnum.name(), todayDate), LongCodec.INSTANCE);
|
||||
}
|
||||
|
||||
|
||||
protected RMap<String, Long> getIpCache(DailyTaskTypeEnum dailyTaskTypeEnum, String monday) {
|
||||
return redissonClient.getMap(ip_limit.getKey(dailyTaskTypeEnum.name(), monday), new TypedJsonJacksonCodec(String.class, Long.class));
|
||||
}
|
||||
|
||||
protected RMap<String, Long> getDeveiceCache(DailyTaskTypeEnum dailyTaskTypeEnum, String monday) {
|
||||
return redissonClient.getMap(device_limit.getKey(dailyTaskTypeEnum.name(), monday), new TypedJsonJacksonCodec(String.class, Long.class));
|
||||
}
|
||||
}
|
||||
|
@@ -48,6 +48,9 @@ public class DailyTaskConfigService extends ServiceImpl<DailyTaskConfigMapper, D
|
||||
.eq(DailyTaskConfig::getEnable, 1)
|
||||
.orderByAsc(DailyTaskConfig::getTaskSeq);
|
||||
DailyTaskConfig taskConfig = baseMapper.selectOne(wrapper, false);
|
||||
if (taskConfig == null) {
|
||||
return null;
|
||||
}
|
||||
cacheMap.put(taskKey, taskConfig);
|
||||
return taskConfig;
|
||||
}
|
||||
|
@@ -61,4 +61,32 @@ public class DailyTaskRewardRecordService extends ServiceImpl<DailyTaskRewardRec
|
||||
.like(StringUtils.isNotEmpty(ip), DailyTaskRewardRecord::getLoginIp, ip);
|
||||
return this.baseMapper.selectPage(new Page<>(pageNo, pageSize), wrapper);
|
||||
}
|
||||
|
||||
public DailyTaskRewardRecord getOneByGuildMember(Long uid,Integer partitionId, String taskKey){
|
||||
LambdaQueryWrapper<DailyTaskRewardRecord> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(DailyTaskRewardRecord::getPartitionId, partitionId)
|
||||
.eq(DailyTaskRewardRecord::getUid, uid)
|
||||
.eq(DailyTaskRewardRecord::getTaskKey, taskKey)
|
||||
.orderByAsc(DailyTaskRewardRecord::getStatDate)
|
||||
.last("limit 1");
|
||||
return this.baseMapper.selectOne(wrapper, false);
|
||||
}
|
||||
|
||||
public DailyTaskRewardRecord getFirstOneByIp(String ip, String taskKey){
|
||||
LambdaQueryWrapper<DailyTaskRewardRecord> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(DailyTaskRewardRecord::getLoginIp, ip)
|
||||
.eq(DailyTaskRewardRecord::getTaskKey, taskKey)
|
||||
.orderByAsc(DailyTaskRewardRecord::getStatDate)
|
||||
.last("limit 1");
|
||||
return this.baseMapper.selectOne(wrapper, false);
|
||||
}
|
||||
|
||||
public DailyTaskRewardRecord getFirstOneByDevice(String deviceId, String taskKey){
|
||||
LambdaQueryWrapper<DailyTaskRewardRecord> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(DailyTaskRewardRecord::getDeviceId, deviceId)
|
||||
.eq(DailyTaskRewardRecord::getTaskKey, taskKey)
|
||||
.orderByAsc(DailyTaskRewardRecord::getStatDate)
|
||||
.last("limit 1");
|
||||
return this.baseMapper.selectOne(wrapper, false);
|
||||
}
|
||||
}
|
@@ -0,0 +1,151 @@
|
||||
package com.accompany.business.service.dailytask.handler;
|
||||
|
||||
import cn.hutool.core.date.DateUnit;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.accompany.business.constant.CountryEnum;
|
||||
import com.accompany.business.constant.dailytask.DailyTaskConstant;
|
||||
import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
|
||||
import com.accompany.business.model.dailytask.DailyTaskRewardRecord;
|
||||
import com.accompany.business.model.guild.Guild;
|
||||
import com.accompany.business.model.guild.GuildMember;
|
||||
import com.accompany.business.service.dailytask.AbstractDailyTaskHandler;
|
||||
import com.accompany.business.service.dailytask.DailyTaskRewardRecordService;
|
||||
import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType;
|
||||
import com.accompany.business.service.guild.GuildMemberService;
|
||||
import com.accompany.business.service.guild.GuildService;
|
||||
import com.accompany.business.service.guildpolicy2.GuildMicStatisticsPolicy2Service;
|
||||
import com.accompany.business.vo.dailytask.DailyProgressContext;
|
||||
import com.accompany.business.vo.dailytask.DailyTaskContext;
|
||||
import com.accompany.business.vo.dailytask.DailyTaskVo;
|
||||
import com.accompany.common.result.BusiResult;
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.core.exception.ServiceException;
|
||||
import com.accompany.core.model.RegionInfo;
|
||||
import com.accompany.core.model.Users;
|
||||
import com.accompany.core.service.region.RegionInfoService;
|
||||
import org.redisson.api.RBucket;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 新账号注册后30天内,
|
||||
* 加入菲律宾公会
|
||||
* (公会所属国家为菲律宾,而不是公会长所属国家),注册后30天内 在加入公会后7天内会显示该任务
|
||||
*/
|
||||
@Component
|
||||
@DailyTaskHandlerType(DailyTaskTypeEnum.GM_UP_MIC)
|
||||
public class GuildMemberUpMicHandler extends AbstractDailyTaskHandler {
|
||||
|
||||
@Autowired
|
||||
private GuildMicStatisticsPolicy2Service guildMicStatisticsPolicy2Service;
|
||||
@Autowired
|
||||
private GuildMemberService guildMemberService;
|
||||
@Autowired
|
||||
private GuildService guildService;
|
||||
@Autowired
|
||||
private RegionInfoService regionInfoService;
|
||||
@Autowired
|
||||
private DailyTaskRewardRecordService dailyTaskRewardRecordService;
|
||||
|
||||
|
||||
@Override
|
||||
public void doExecuteProgress(DailyProgressContext progressContext) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public DailyTaskVo doHandle(DailyTaskContext context) {
|
||||
Long uid = context.getUid();
|
||||
DailyTaskVo dailyTaskVo = new DailyTaskVo();
|
||||
String deviceId = context.getDeviceId();
|
||||
DailyTaskTypeEnum taskType = context.getDailyTaskTypeEnum();
|
||||
String realIpAddress = context.getRealIpAddress();
|
||||
String taskDate = context.getTodayDate();
|
||||
Date now = new Date();
|
||||
String nowDate = getNowDate(context.getPartitionId(), now);
|
||||
Users users = usersService.getUsersByUid(uid);
|
||||
Integer partitionId = context.getPartitionId();
|
||||
GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(uid);
|
||||
if (null == guildMember) {
|
||||
return null;
|
||||
}
|
||||
Guild guild = guildService.getVaildGuildById(guildMember.getGuildId());
|
||||
if (guild == null || guild.getRegionId() == null) {
|
||||
return null;
|
||||
}
|
||||
RegionInfo regionInfo = regionInfoService.getById(guild.getRegionId());
|
||||
if (regionInfo == null || !regionInfo.getCode().equals(CountryEnum.PH.name())) {
|
||||
return null;
|
||||
}
|
||||
Date joinGuildTime = guildMember.getCreateTime();
|
||||
Date joinGuildAfterSevenDay = DateUtil.offsetDay(joinGuildTime, 7);
|
||||
Date thirdDay = DateUtil.offsetDay(users.getCreateTime(), 30);
|
||||
dailyTaskVo.setExpireSecond(DateUtil.between(joinGuildAfterSevenDay, now, DateUnit.SECOND));
|
||||
//注册后30天内 在加入公会后7天内会显示该任务
|
||||
if (!(joinGuildTime.before(thirdDay) && now.before(thirdDay)) || joinGuildAfterSevenDay.before(now)) {//过期
|
||||
return null;
|
||||
}
|
||||
DailyTaskRewardRecord taskRewardRecord = dailyTaskRewardRecordService.getOneByGuildMember(uid, partitionId, taskType.name());
|
||||
//已经在本公会领过该任务的账号(不满7天),退出后再次加入该公会,不会显示和服务端拦截领取该任务
|
||||
//已经在上个公会领过该任务的账号(无论多少天),退出后加入其他公会,不会显示和服务端拦截领取该任务
|
||||
if (taskRewardRecord != null && !taskRewardRecord.getGuildMemberId().equals(guildMember.getId())) {
|
||||
return null;
|
||||
}
|
||||
DailyTaskRewardRecord getFirstOneByIp = dailyTaskRewardRecordService.getFirstOneByIp(realIpAddress, taskType.name());
|
||||
if (getFirstOneByIp != null && !uid.equals(getFirstOneByIp.getUid())) {
|
||||
return null;
|
||||
}
|
||||
DailyTaskRewardRecord getFirstOneByDevice = dailyTaskRewardRecordService.getFirstOneByDevice(deviceId, taskType.name());
|
||||
if (getFirstOneByDevice != null && !uid.equals(getFirstOneByDevice.getUid())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
RBucket<Integer> taskStatus = taskStatus(uid, taskDate, taskType);
|
||||
Integer totalDuration;
|
||||
if (!taskStatus.isExists()) { //达标之后不再统计上麦时长
|
||||
totalDuration = guildMicStatisticsPolicy2Service.getMinutes(context.getPartitionId(), guildMember.getId(), nowDate);
|
||||
} else {
|
||||
totalDuration = taskStatus.get();
|
||||
}
|
||||
dailyTaskVo.setTodayDate(taskDate);
|
||||
if (totalDuration != null && totalDuration >= context.getStandardValue()) {
|
||||
taskStatus.set(totalDuration, Duration.ofDays(getReceiveExpireDay()));
|
||||
}
|
||||
DailyTaskConstant.ReceiveStatus receiveStatus = computeReceiveStatus(uid, taskDate, taskType);
|
||||
dailyTaskVo.setReceiveStatus(receiveStatus);
|
||||
if (receiveStatus == DailyTaskConstant.ReceiveStatus.RECEIVED) {
|
||||
return dailyTaskVo;
|
||||
}
|
||||
dailyTaskVo.setReachNum(totalDuration.longValue());
|
||||
return dailyTaskVo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BusiResult receive(Long uid, String receiveDate, DailyTaskVo dailyTaskVo, String deviceId, String realIpAddress) {
|
||||
DailyTaskTypeEnum taskType = dailyTaskVo.getTaskType();
|
||||
|
||||
DailyTaskRewardRecord getFirstOneByIp = dailyTaskRewardRecordService.getFirstOneByIp(realIpAddress, taskType.name());
|
||||
if (getFirstOneByIp != null && !uid.equals(getFirstOneByIp.getUid())) {
|
||||
throw new ServiceException(BusiStatus.DAILY_TASK_RECEIVE_END);
|
||||
}
|
||||
DailyTaskRewardRecord getFirstOneByDevice = dailyTaskRewardRecordService.getFirstOneByDevice(deviceId, taskType.name());
|
||||
if (getFirstOneByDevice != null && !uid.equals(getFirstOneByDevice.getUid())) {
|
||||
throw new ServiceException(BusiStatus.DAILY_TASK_RECEIVE_END);
|
||||
}
|
||||
|
||||
super.receive(uid, receiveDate, dailyTaskVo, deviceId, realIpAddress);
|
||||
|
||||
return BusiResult.success();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected Integer getReceiveExpireDay() {
|
||||
return 7;
|
||||
}
|
||||
}
|
||||
|
@@ -36,7 +36,7 @@ public class RoomSendLuckyNumHandler extends AbstractDailyTaskHandler {
|
||||
return;
|
||||
}
|
||||
RMap<Long, Long> sendGoldNum = sendGiftNum(ROOM_SEND_LUCKY_NUM, partitionId, todayDate);
|
||||
Long addAndGet = sendGoldNum.addAndGet(uid, progressContext.getGiftNum());
|
||||
Long addAndGet = sendGoldNum.addAndGet(uid, progressContext.getGiftNum().longValue());
|
||||
sendGoldNum.expire(Duration.ofDays(EXPIRE_DAY));
|
||||
DailyTaskConfig dailyTaskConfig = dailyTaskConfigService.getByPartTaskKey(partitionId, ROOM_SEND_LUCKY_NUM.name());
|
||||
if (dailyTaskConfig != null && addAndGet != null && addAndGet >= dailyTaskConfig.getReachNum()) {
|
||||
|
@@ -17,7 +17,6 @@ import com.accompany.core.enumeration.PartitionEnum;
|
||||
import com.accompany.core.exception.ServiceException;
|
||||
import org.redisson.api.RBucket;
|
||||
import org.redisson.api.RMap;
|
||||
import org.redisson.codec.TypedJsonJacksonCodec;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -27,9 +26,6 @@ import java.time.ZonedDateTime;
|
||||
import java.time.temporal.TemporalAdjusters;
|
||||
import java.util.Date;
|
||||
|
||||
import static com.accompany.business.constant.dailytask.DailyTaskConstant.RedisKey.up_mic_coin_device_limit;
|
||||
import static com.accompany.business.constant.dailytask.DailyTaskConstant.RedisKey.up_mic_coin_ip_limit;
|
||||
|
||||
@Component
|
||||
@DailyTaskHandlerType(DailyTaskTypeEnum.UP_MIC_COIN)
|
||||
public class UpMicCoinHandler extends AbstractDailyTaskHandler {
|
||||
@@ -51,18 +47,18 @@ public class UpMicCoinHandler extends AbstractDailyTaskHandler {
|
||||
String deviceId = context.getDeviceId();
|
||||
DailyTaskTypeEnum taskType = context.getDailyTaskTypeEnum();
|
||||
String realIpAddress = context.getRealIpAddress();
|
||||
String mondayDate = context.getTodayDate();
|
||||
String taskDate = context.getTodayDate();
|
||||
String nowDate = getNowDate(context.getPartitionId(), new Date());
|
||||
Long receivUid = getIpCache(mondayDate).getOrDefault(realIpAddress, 0L);
|
||||
Long receivUid = getIpCache(taskType, taskDate).getOrDefault(realIpAddress, 0L);
|
||||
if (receivUid > 0 && !receivUid.equals(uid)) {
|
||||
return null;
|
||||
}
|
||||
receivUid = getDeveiceCache(mondayDate).getOrDefault(deviceId, 0L);
|
||||
receivUid = getDeveiceCache(taskType, taskDate).getOrDefault(deviceId, 0L);
|
||||
if (receivUid > 0 && !receivUid.equals(uid)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
RBucket<Integer> taskStatus = taskStatus(uid, mondayDate, taskType);
|
||||
RBucket<Integer> taskStatus = taskStatus(uid, taskDate, taskType);
|
||||
Integer totalDuration;
|
||||
if (!taskStatus.isExists()) { //达标之后不再统计上麦时长
|
||||
GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(uid);
|
||||
@@ -73,11 +69,11 @@ public class UpMicCoinHandler extends AbstractDailyTaskHandler {
|
||||
} else {
|
||||
totalDuration = taskStatus.get();
|
||||
}
|
||||
dailyTaskVo.setTodayDate(mondayDate);
|
||||
dailyTaskVo.setTodayDate(taskDate);
|
||||
if (totalDuration != null && totalDuration >= context.getStandardValue()) {
|
||||
taskStatus.set(totalDuration, Duration.ofDays(getReceiveExpireDay()));
|
||||
}
|
||||
DailyTaskConstant.ReceiveStatus receiveStatus = computeReceiveStatus(uid, mondayDate, taskType);
|
||||
DailyTaskConstant.ReceiveStatus receiveStatus = computeReceiveStatus(uid, taskDate, taskType);
|
||||
dailyTaskVo.setReceiveStatus(receiveStatus);
|
||||
if (receiveStatus == DailyTaskConstant.ReceiveStatus.RECEIVED) {
|
||||
return dailyTaskVo;
|
||||
@@ -88,20 +84,21 @@ public class UpMicCoinHandler extends AbstractDailyTaskHandler {
|
||||
|
||||
@Override
|
||||
public BusiResult receive(Long uid, String receiveDate, DailyTaskVo dailyTaskVo, String deviceId, String realIpAddress) {
|
||||
Long receivUid = getIpCache(receiveDate).getOrDefault(realIpAddress, 0L);
|
||||
DailyTaskTypeEnum taskType = dailyTaskVo.getTaskType();
|
||||
Long receivUid = getIpCache(taskType, receiveDate).getOrDefault(realIpAddress, 0L);
|
||||
if (receivUid > 0 && !receivUid.equals(uid)) {
|
||||
throw new ServiceException(BusiStatus.DAILY_TASK_RECEIVE_END);
|
||||
}
|
||||
receivUid = getDeveiceCache(receiveDate).getOrDefault(deviceId, 0L);
|
||||
receivUid = getDeveiceCache(taskType, receiveDate).getOrDefault(deviceId, 0L);
|
||||
if (receivUid > 0 && !receivUid.equals(uid)) {
|
||||
throw new ServiceException(BusiStatus.DAILY_TASK_RECEIVE_END);
|
||||
}
|
||||
|
||||
super.receive(uid, receiveDate, dailyTaskVo, deviceId, realIpAddress);
|
||||
|
||||
RMap<String, Long> deveiceCache = getDeveiceCache(receiveDate);
|
||||
RMap<String, Long> deveiceCache = getDeveiceCache(taskType, receiveDate);
|
||||
deveiceCache.put(deviceId, uid);
|
||||
RMap<String, Long> ipCache = getIpCache(receiveDate);
|
||||
RMap<String, Long> ipCache = getIpCache(taskType, receiveDate);
|
||||
ipCache.put(realIpAddress, uid);
|
||||
deveiceCache.expire(Duration.ofDays(getReceiveExpireDay()));
|
||||
ipCache.expire(Duration.ofDays(getReceiveExpireDay()));
|
||||
@@ -116,15 +113,6 @@ public class UpMicCoinHandler extends AbstractDailyTaskHandler {
|
||||
return zonedDateTime.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)).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));
|
||||
}
|
||||
|
||||
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