日常任务-公会活动设备ip限制
This commit is contained in:
@@ -31,7 +31,6 @@ public class GuildTaskLevelRewardRecord implements Serializable {
|
||||
* 公户开业仪式配置ID
|
||||
*/
|
||||
private Integer guildTaskId;
|
||||
private String taskKey;
|
||||
/**
|
||||
* 等级
|
||||
*/
|
||||
@@ -56,14 +55,6 @@ public class GuildTaskLevelRewardRecord implements Serializable {
|
||||
* 奖品数量
|
||||
*/
|
||||
private Long awardNum;
|
||||
/**
|
||||
* 登录ip
|
||||
*/
|
||||
private String loginIp;
|
||||
/**
|
||||
* 设备号
|
||||
*/
|
||||
private String deviceId;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
|
@@ -63,6 +63,14 @@ public class GuildTaskReachRecord implements Serializable {
|
||||
* 达标状态0-未领取,1-已领取
|
||||
*/
|
||||
private Integer receiveStatus;
|
||||
/**
|
||||
* 登录ip
|
||||
*/
|
||||
private String loginIp;
|
||||
/**
|
||||
* 设备号
|
||||
*/
|
||||
private String deviceId;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
|
@@ -5,6 +5,7 @@ import com.accompany.business.model.guild.Guild;
|
||||
import com.accompany.business.service.dailytask.AbstractDailyTaskHandler;
|
||||
import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType;
|
||||
import com.accompany.business.service.guild.GuildService;
|
||||
import com.accompany.business.service.guildtask.GuildTaskReachRecordService;
|
||||
import com.accompany.business.service.guildtask.GuildTaskService;
|
||||
import com.accompany.business.vo.dailytask.DailyProgressContext;
|
||||
import com.accompany.business.vo.dailytask.DailyTaskContext;
|
||||
@@ -12,6 +13,7 @@ import com.accompany.business.vo.dailytask.DailyTaskVo;
|
||||
import com.accompany.business.vo.guild.GuildTaskLevelInfoVo;
|
||||
import com.accompany.common.utils.DateTimeUtil;
|
||||
import com.accompany.core.enumeration.PartitionEnum;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -20,6 +22,7 @@ import java.time.ZonedDateTime;
|
||||
import java.time.temporal.TemporalAdjusters;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Component
|
||||
@DailyTaskHandlerType(DailyTaskTypeEnum.GUILD_MIC)
|
||||
@@ -29,6 +32,8 @@ public class GuildMicHandler extends AbstractDailyTaskHandler {
|
||||
private GuildService guildService;
|
||||
@Autowired
|
||||
private GuildTaskService guildTaskService;
|
||||
@Autowired
|
||||
private GuildTaskReachRecordService guildTaskReachRecordService;
|
||||
|
||||
@Override
|
||||
public DailyTaskVo doHandle(DailyTaskContext context) {
|
||||
@@ -36,6 +41,7 @@ public class GuildMicHandler extends AbstractDailyTaskHandler {
|
||||
if (guild == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Date now = new Date();
|
||||
Integer partitionId = context.getPartitionId();
|
||||
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId);
|
||||
@@ -43,6 +49,19 @@ public class GuildMicHandler extends AbstractDailyTaskHandler {
|
||||
String taskDate = context.getTodayDate();
|
||||
ZonedDateTime nowZonedDateTime = DateTimeUtil.convertWithZoneId(now, partitionEnum.getZoneId());
|
||||
String cycleDate = nowZonedDateTime.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)).format(DateTimeUtil.dateFormatter);
|
||||
|
||||
if (DailyTaskTypeEnum.GUILD_MIC.equals(dailyTaskTypeEnum)) {
|
||||
String realIpAddress = context.getRealIpAddress();
|
||||
String deviceId = context.getDeviceId();
|
||||
Set<Integer> deviceLimitGuildId = guildTaskReachRecordService.getByDeveceId(cycleDate, dailyTaskTypeEnum.name(), partitionId, deviceId);
|
||||
if (CollectionUtils.isNotEmpty(deviceLimitGuildId) && !deviceLimitGuildId.contains(guild.getId())) {
|
||||
return null;
|
||||
}
|
||||
Set<Integer> loginLimitGuildId = guildTaskReachRecordService.getByLoginIp(cycleDate, dailyTaskTypeEnum.name(), partitionId, realIpAddress);
|
||||
if (CollectionUtils.isNotEmpty(loginLimitGuildId) && !loginLimitGuildId.contains(guild.getId())) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
List<GuildTaskLevelInfoVo> guildWeekTaskList = guildTaskService.getGuildWeekTaskList(cycleDate, dailyTaskTypeEnum.getHandlerType(), taskDate, partitionId, guild.getId());
|
||||
DailyTaskVo dailyTaskVo = new DailyTaskVo();
|
||||
dailyTaskVo.setGuildTaskVos(guildWeekTaskList);
|
||||
|
@@ -2,17 +2,10 @@ package com.accompany.business.service.guildtask;
|
||||
|
||||
import com.accompany.business.model.guildtask.GuildTaskLevelRewardRecord;
|
||||
import com.accompany.business.mybatismapper.guildtask.GuildTaskLevelRewardRecordMapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 公户开业仪式奖励奖励记录 服务实现类
|
||||
@@ -24,51 +17,22 @@ import java.util.stream.Collectors;
|
||||
public class GuildTaskLevelRewardRecordService extends ServiceImpl<GuildTaskLevelRewardRecordMapper, GuildTaskLevelRewardRecord> {
|
||||
|
||||
public GuildTaskLevelRewardRecord calRecord(Integer partitionId, Long uid, Integer guildId, Long guildMemberId, Integer guildTaskId, Integer level,
|
||||
String cycleDate, String statDate, Byte awardType, Long awardId, Long awardNum, String loginIp, String deviceId, String taskKey) {
|
||||
String cycleDate, String statDate, Byte awardType, Long awardId, Long awardNum) {
|
||||
GuildTaskLevelRewardRecord rewardRecord = new GuildTaskLevelRewardRecord();
|
||||
rewardRecord.setPartitionId(partitionId);
|
||||
rewardRecord.setUid(uid);
|
||||
rewardRecord.setGuildId(guildId);
|
||||
rewardRecord.setGuildMemberId(guildMemberId);
|
||||
rewardRecord.setGuildTaskId(guildTaskId);
|
||||
rewardRecord.setTaskKey(taskKey);
|
||||
rewardRecord.setLevel(level);
|
||||
rewardRecord.setCycleDate(cycleDate);
|
||||
rewardRecord.setStatDate(statDate);
|
||||
rewardRecord.setAwardType(awardType);
|
||||
rewardRecord.setAwardId(awardId);
|
||||
rewardRecord.setAwardNum(awardNum);
|
||||
rewardRecord.setLoginIp(loginIp);
|
||||
rewardRecord.setDeviceId(deviceId);
|
||||
rewardRecord.setCreateTime(new Date());
|
||||
rewardRecord.setUpdateTime(new Date());
|
||||
return rewardRecord;
|
||||
}
|
||||
|
||||
public Set<Integer> getByDeveceId(String cycleDate, String taskKey, Integer partitionId, String deviceId) {
|
||||
LambdaQueryWrapper<GuildTaskLevelRewardRecord> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(GuildTaskLevelRewardRecord::getTaskKey, taskKey)
|
||||
.eq(GuildTaskLevelRewardRecord::getPartitionId, partitionId)
|
||||
.eq(GuildTaskLevelRewardRecord::getCycleDate, cycleDate)
|
||||
.eq(GuildTaskLevelRewardRecord::getDeviceId, deviceId);
|
||||
List<GuildTaskLevelRewardRecord> guildTaskLevelRewardRecords = baseMapper.selectList(wrapper);
|
||||
if (CollectionUtils.isEmpty(guildTaskLevelRewardRecords)) {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
return guildTaskLevelRewardRecords.stream().map(GuildTaskLevelRewardRecord::getLevel).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
public Set<Integer> getByLoginIp(String cycleDate, String taskKey, Integer partitionId, String loginIp) {
|
||||
LambdaQueryWrapper<GuildTaskLevelRewardRecord> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(GuildTaskLevelRewardRecord::getTaskKey, taskKey)
|
||||
.eq(GuildTaskLevelRewardRecord::getPartitionId, partitionId)
|
||||
.eq(GuildTaskLevelRewardRecord::getCycleDate, cycleDate)
|
||||
.eq(GuildTaskLevelRewardRecord::getDeviceId, loginIp);
|
||||
List<GuildTaskLevelRewardRecord> guildTaskLevelRewardRecords = baseMapper.selectList(wrapper);
|
||||
if (CollectionUtils.isEmpty(guildTaskLevelRewardRecords)) {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
return guildTaskLevelRewardRecords.stream().map(GuildTaskLevelRewardRecord::getLevel).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -5,10 +5,14 @@ import com.accompany.business.mybatismapper.guildtask.GuildTaskReachRecordMapper
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 新公会达标任务信息表 服务实现类
|
||||
@@ -43,4 +47,32 @@ public class GuildTaskReachRecordService extends ServiceImpl<GuildTaskReachRecor
|
||||
guildTaskReachRecord.setReceiveStatus(receiveStatus);
|
||||
return baseMapper.updateById(guildTaskReachRecord);
|
||||
}
|
||||
|
||||
|
||||
public Set<Integer> getByDeveceId(String cycleDate, String taskKey, Integer partitionId, String deviceId) {
|
||||
LambdaQueryWrapper<GuildTaskReachRecord> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(GuildTaskReachRecord::getTaskKey, taskKey)
|
||||
.eq(GuildTaskReachRecord::getPartitionId, partitionId)
|
||||
.eq(GuildTaskReachRecord::getCycleDate, cycleDate)
|
||||
.eq(GuildTaskReachRecord::getDeviceId, deviceId)
|
||||
.eq(GuildTaskReachRecord::getReceiveStatus, 1);
|
||||
List<GuildTaskReachRecord> GuildTaskReachRecords = baseMapper.selectList(wrapper);
|
||||
if (CollectionUtils.isEmpty(GuildTaskReachRecords)) {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
return GuildTaskReachRecords.stream().map(GuildTaskReachRecord::getLevel).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
public Set<Integer> getByLoginIp(String cycleDate, String taskKey, Integer partitionId, String loginIp) {
|
||||
LambdaQueryWrapper<GuildTaskReachRecord> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(GuildTaskReachRecord::getTaskKey, taskKey)
|
||||
.eq(GuildTaskReachRecord::getPartitionId, partitionId)
|
||||
.eq(GuildTaskReachRecord::getCycleDate, cycleDate)
|
||||
.eq(GuildTaskReachRecord::getDeviceId, loginIp);
|
||||
List<GuildTaskReachRecord> GuildTaskReachRecords = baseMapper.selectList(wrapper);
|
||||
if (CollectionUtils.isEmpty(GuildTaskReachRecords)) {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
return GuildTaskReachRecords.stream().map(GuildTaskReachRecord::getLevel).collect(Collectors.toSet());
|
||||
}
|
||||
}
|
||||
|
@@ -429,6 +429,8 @@ public class GuildTaskService {
|
||||
}
|
||||
reachRecord.setReceiveStatus(1);
|
||||
reachRecord.setUpdateTime(now);
|
||||
reachRecord.setLoginIp(loginIp);
|
||||
reachRecord.setDeviceId(deviceId);
|
||||
boolean received = guildTaskReachRecordService.updateById(reachRecord);
|
||||
if (!received) {
|
||||
throw new ServiceException(BusiStatus.DAILY_TASK_RECEIVE_END);
|
||||
@@ -447,7 +449,7 @@ public class GuildTaskService {
|
||||
GuildTaskLevelRewardRecord rewardRecord = guildTaskLevelRewardRecordService.calRecord(partitionId, guildMember.getUid(), guildId, guildMember.getId(),
|
||||
reachRecord.getGuildTaskId(), reachRecord.getLevel(), reachRecord.getCycleDate(),
|
||||
reachRecord.getStatDate(), configReward.getAwardType(), configReward.getAwardId(),
|
||||
configReward.getAwardNum(), loginIp, deviceId, dailyTaskTypeEnum.name());
|
||||
configReward.getAwardNum());
|
||||
if (configReward.getAwardRole().equals(GuildConstant.RoleType.OWNER)) {//只给公会长发奖励
|
||||
if (guildMember.getRoleType().equals(GuildConstant.RoleType.OWNER)) {
|
||||
rewardRecords.add(rewardRecord);
|
||||
|
Reference in New Issue
Block a user