diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/guildtask/GuildTaskLevelRewardRecord.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/guildtask/GuildTaskLevelRewardRecord.java index e55615a03..a59bef250 100644 --- a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/guildtask/GuildTaskLevelRewardRecord.java +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/guildtask/GuildTaskLevelRewardRecord.java @@ -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; /** * 创建时间 */ diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/guildtask/GuildTaskReachRecord.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/guildtask/GuildTaskReachRecord.java index 9b910c576..1df3867c1 100644 --- a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/guildtask/GuildTaskReachRecord.java +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/guildtask/GuildTaskReachRecord.java @@ -63,6 +63,14 @@ public class GuildTaskReachRecord implements Serializable { * 达标状态0-未领取,1-已领取 */ private Integer receiveStatus; + /** + * 登录ip + */ + private String loginIp; + /** + * 设备号 + */ + private String deviceId; /** * 创建时间 */ diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/GuildMicHandler.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/GuildMicHandler.java index f16c8fae6..93691685f 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/GuildMicHandler.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/dailytask/handler/GuildMicHandler.java @@ -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 deviceLimitGuildId = guildTaskReachRecordService.getByDeveceId(cycleDate, dailyTaskTypeEnum.name(), partitionId, deviceId); + if (CollectionUtils.isNotEmpty(deviceLimitGuildId) && !deviceLimitGuildId.contains(guild.getId())) { + return null; + } + Set loginLimitGuildId = guildTaskReachRecordService.getByLoginIp(cycleDate, dailyTaskTypeEnum.name(), partitionId, realIpAddress); + if (CollectionUtils.isNotEmpty(loginLimitGuildId) && !loginLimitGuildId.contains(guild.getId())) { + return null; + } + } List guildWeekTaskList = guildTaskService.getGuildWeekTaskList(cycleDate, dailyTaskTypeEnum.getHandlerType(), taskDate, partitionId, guild.getId()); DailyTaskVo dailyTaskVo = new DailyTaskVo(); dailyTaskVo.setGuildTaskVos(guildWeekTaskList); diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskLevelRewardRecordService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskLevelRewardRecordService.java index 0a43ab0a6..82cb80d66 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskLevelRewardRecordService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskLevelRewardRecordService.java @@ -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 { 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 getByDeveceId(String cycleDate, String taskKey, Integer partitionId, String deviceId) { - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - wrapper.eq(GuildTaskLevelRewardRecord::getTaskKey, taskKey) - .eq(GuildTaskLevelRewardRecord::getPartitionId, partitionId) - .eq(GuildTaskLevelRewardRecord::getCycleDate, cycleDate) - .eq(GuildTaskLevelRewardRecord::getDeviceId, deviceId); - List guildTaskLevelRewardRecords = baseMapper.selectList(wrapper); - if (CollectionUtils.isEmpty(guildTaskLevelRewardRecords)) { - return Collections.emptySet(); - } - return guildTaskLevelRewardRecords.stream().map(GuildTaskLevelRewardRecord::getLevel).collect(Collectors.toSet()); - } - - public Set getByLoginIp(String cycleDate, String taskKey, Integer partitionId, String loginIp) { - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - wrapper.eq(GuildTaskLevelRewardRecord::getTaskKey, taskKey) - .eq(GuildTaskLevelRewardRecord::getPartitionId, partitionId) - .eq(GuildTaskLevelRewardRecord::getCycleDate, cycleDate) - .eq(GuildTaskLevelRewardRecord::getDeviceId, loginIp); - List guildTaskLevelRewardRecords = baseMapper.selectList(wrapper); - if (CollectionUtils.isEmpty(guildTaskLevelRewardRecords)) { - return Collections.emptySet(); - } - return guildTaskLevelRewardRecords.stream().map(GuildTaskLevelRewardRecord::getLevel).collect(Collectors.toSet()); - } - } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskReachRecordService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskReachRecordService.java index c3c7d45bd..ef990adb7 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskReachRecordService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskReachRecordService.java @@ -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 getByDeveceId(String cycleDate, String taskKey, Integer partitionId, String deviceId) { + LambdaQueryWrapper 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 GuildTaskReachRecords = baseMapper.selectList(wrapper); + if (CollectionUtils.isEmpty(GuildTaskReachRecords)) { + return Collections.emptySet(); + } + return GuildTaskReachRecords.stream().map(GuildTaskReachRecord::getLevel).collect(Collectors.toSet()); + } + + public Set getByLoginIp(String cycleDate, String taskKey, Integer partitionId, String loginIp) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(GuildTaskReachRecord::getTaskKey, taskKey) + .eq(GuildTaskReachRecord::getPartitionId, partitionId) + .eq(GuildTaskReachRecord::getCycleDate, cycleDate) + .eq(GuildTaskReachRecord::getDeviceId, loginIp); + List GuildTaskReachRecords = baseMapper.selectList(wrapper); + if (CollectionUtils.isEmpty(GuildTaskReachRecords)) { + return Collections.emptySet(); + } + return GuildTaskReachRecords.stream().map(GuildTaskReachRecord::getLevel).collect(Collectors.toSet()); + } } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskService.java index 6a93ef06f..b36b2aa05 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskService.java @@ -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);