diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/dailytask/DailyTaskVo.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/dailytask/DailyTaskVo.java index 8b5ebaaf8..954d0dea0 100644 --- a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/dailytask/DailyTaskVo.java +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/dailytask/DailyTaskVo.java @@ -43,6 +43,7 @@ public class DailyTaskVo { private GuildCycleDiamondWageLevelVo cycleDiamondWageLevelVo; @ApiModelProperty("任务剩余秒数") private Long expireSecond; + private Integer guildId; @ApiModelProperty("公会开业仪式") private List guildTaskVos; } diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildMemberMicVo.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildMemberMicVo.java new file mode 100644 index 000000000..2246746a5 --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildMemberMicVo.java @@ -0,0 +1,11 @@ +package com.accompany.business.vo.guild; + +import com.accompany.business.vo.SimpleUserVo; +import lombok.Data; + + +@Data +public class GuildMemberMicVo extends SimpleUserVo { + private Integer micMinutes; + private Boolean reachState; +} diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/guildpolicy2/GuildMicStatisticsPolicy2Mapper.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/guildpolicy2/GuildMicStatisticsPolicy2Mapper.java index 7051ec121..de99d1216 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/guildpolicy2/GuildMicStatisticsPolicy2Mapper.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/guildpolicy2/GuildMicStatisticsPolicy2Mapper.java @@ -1,9 +1,11 @@ package com.accompany.business.mybatismapper.guildpolicy2; import com.accompany.business.model.guildpolicy2.GuildMicStatisticsPolicy2; +import com.accompany.business.vo.guild.GuildMemberMicVo; import com.accompany.business.vo.guildpolicy.GuildMemberMicDayVo; import com.accompany.business.vo.guildpolicy.GuildPolicy2PersonalVo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Param; import java.util.Date; @@ -36,4 +38,7 @@ public interface GuildMicStatisticsPolicy2Mapper extends BaseMapper groupByPartitionGuildDate(@Param("statDate")String statDate, @Param("partitionId") Integer partitionId, @Param("reachMinutes") Integer reachMinutes, @Param("guildIds") List guildIds); + + IPage listGuildMemberMic(@Param("page") IPage page, @Param("partitionId") Integer partitionId, + @Param("guildId") Integer guildId, @Param("statDate") String statDate); } 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 2ba7ae515..cacfd4b14 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 @@ -66,6 +66,7 @@ public class GuildMicHandler extends AbstractDailyTaskHandler { List guildWeekTaskList = guildTaskService.getGuildWeekTaskList(cycleDate, dailyTaskTypeEnum.name(), taskDate, partitionId, guild.getId()); DailyTaskVo dailyTaskVo = new DailyTaskVo(); dailyTaskVo.setGuildTaskVos(guildWeekTaskList); + dailyTaskVo.setGuildId(guild.getId()); ZonedDateTime weekEndTime = nowZonedDateTime.with(TemporalAdjusters.previousOrSame(DayOfWeek.SUNDAY)).withMinute(59).withHour(23).withSecond(59); Duration duration = Duration.between(weekEndTime, nowZonedDateTime); dailyTaskVo.setExpireSecond(duration.getSeconds()); diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildpolicy2/GuildMicStatisticsPolicy2Service.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildpolicy2/GuildMicStatisticsPolicy2Service.java index 6e9027f36..953b5ced5 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildpolicy2/GuildMicStatisticsPolicy2Service.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildpolicy2/GuildMicStatisticsPolicy2Service.java @@ -3,8 +3,10 @@ package com.accompany.business.service.guildpolicy2; import com.accompany.business.model.guild.GuildMember; import com.accompany.business.model.guildpolicy2.GuildMicStatisticsPolicy2; import com.accompany.business.mybatismapper.guildpolicy2.GuildMicStatisticsPolicy2Mapper; +import com.accompany.business.vo.guild.GuildMemberMicVo; import com.accompany.business.vo.guildpolicy.GuildMemberMicDayVo; import com.accompany.business.vo.guildpolicy.GuildPolicy2PersonalVo; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; @@ -70,4 +72,8 @@ public class GuildMicStatisticsPolicy2Service extends ServiceImpl listGuildMemberMic(IPage page, Integer partitionId, Integer guildId, String statDate) { + return baseMapper.listGuildMemberMic(page, partitionId, guildId, statDate); + } } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskLevelInfoService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskLevelInfoService.java index f917bafa3..9690898e1 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskLevelInfoService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildtask/GuildTaskLevelInfoService.java @@ -26,6 +26,15 @@ public class GuildTaskLevelInfoService extends ServiceImpl wrapper = Wrappers.lambdaQuery(); + wrapper.eq(GuildTaskLevelInfo::getPartitionId, partitionId); + wrapper.eq(GuildTaskLevelInfo::getTaskKey, taskKey) + .eq(GuildTaskLevelInfo::getLevel, level) + .orderByAsc(GuildTaskLevelInfo::getLevel); + return baseMapper.selectOne(wrapper, false); + } + public List listGuildTaskList(Integer partitionId, List taskKeys) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); wrapper.eq(GuildTaskLevelInfo::getPartitionId, partitionId); 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 578b48de5..a4a6f79ae 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 @@ -19,6 +19,7 @@ import com.accompany.business.service.guildpolicy2.GuildMicStatisticsPolicy2Serv import com.accompany.business.service.user.UserGoldBeanService; import com.accompany.business.util.RewardUtil; import com.accompany.business.vo.dailytask.DailyTaskRewardVo; +import com.accompany.business.vo.guild.GuildMemberMicVo; import com.accompany.business.vo.guild.GuildTaskLevelInfoVo; import com.accompany.common.result.BusiResult; import com.accompany.common.status.BusiStatus; @@ -29,6 +30,9 @@ import com.accompany.core.enumeration.I18nAlertEnum; import com.accompany.core.enumeration.PartitionEnum; import com.accompany.core.exception.ServiceException; import com.accompany.core.util.I18NMessageSourceUtil; +import com.accompany.core.util.StringUtils; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.redisson.api.RMap; @@ -392,6 +396,7 @@ public class GuildTaskService { infoVo.setCurDiamondNum(BigDecimal.ZERO); infoVo.setCurAnchorMicReachNum(0); if (statDate.equals(cycleDate) && guildTaskLevelInfo.getLevel() == 1) { + infoVo.setReachStatDate(statDate); infoVo.setReceiveStatus(DailyTaskConstant.ReceiveStatus.UNCOMPLETED); } else { infoVo.setReceiveStatus(DailyTaskConstant.ReceiveStatus.NOTYETOPEN); @@ -538,4 +543,26 @@ public class GuildTaskService { private RMap oldReceicveStatus(String taskKey, Integer guildId) { return redissonClient.getMap(guild_task_receive.getKey(taskKey, guildId.toString()), new TypedJsonJacksonCodec(Integer.class, Integer.class)); } + + + public List micList(String taskKey, Integer level, String statDate, Integer partitionId, + Integer guildId, Integer pageNo, Integer pageSize) { + if (StringUtils.isEmpty(statDate)) { + return Collections.emptyList(); + } + Page micVoPage = new Page<>(pageNo, pageSize, false); + IPage memberMicVoIPage = guildMicStatisticsPolicy2Service.listGuildMemberMic(micVoPage, partitionId, guildId, statDate); + List records = memberMicVoIPage.getRecords(); + if (CollectionUtils.isEmpty(records)) { + return Collections.emptyList(); + } + GuildTaskLevelInfo guildTaskLevelInfo = guildTaskLevelInfoService.listGuildTaskLevel(partitionId, taskKey, level); + Integer anchorMicReachMinutes = guildTaskLevelInfo.getAnchorMicReachMinutes(); + for (GuildMemberMicVo record : records) { + boolean reach = anchorMicReachMinutes <= record.getMicMinutes(); + record.setReachState(reach); + record.setMicMinutes(reach ? anchorMicReachMinutes : record.getMicMinutes()); + } + return records; + } } diff --git a/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/GuildMicStatisticsPolicy2Mapper.xml b/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/GuildMicStatisticsPolicy2Mapper.xml index 9646d8d9e..90278b1e3 100644 --- a/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/GuildMicStatisticsPolicy2Mapper.xml +++ b/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/GuildMicStatisticsPolicy2Mapper.xml @@ -81,6 +81,24 @@ GROUP BY gmp.guild_id - + diff --git a/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/activity/dailytask/GuildTaskController.java b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/activity/dailytask/GuildTaskController.java index cf5283dc7..011e83fad 100644 --- a/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/activity/dailytask/GuildTaskController.java +++ b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/activity/dailytask/GuildTaskController.java @@ -1,17 +1,16 @@ package com.accompany.business.controller.activity.dailytask; import com.accompany.business.service.guildtask.GuildTaskService; +import com.accompany.business.vo.guild.GuildMemberMicVo; import com.accompany.common.result.BusiResult; import com.accompany.common.utils.IPUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestHeader; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import java.util.List; import static com.accompany.common.constant.ApplicationConstant.PublicParameters.DEVICE_ID; import static com.accompany.common.constant.ApplicationConstant.PublicParameters.PUB_UID; @@ -31,4 +30,12 @@ public class GuildTaskController { String loginIp = IPUtils.getRealIpAddress(request); return guildTaskService.receive(reachId, uid, loginIp, deviceId); } + + + @ApiOperation(value = "上麦时长列表", httpMethod = "GET") + @GetMapping("/micList") + public BusiResult> micList(String taskKey, Integer level, String statDate, + Integer partitionId, Integer guildId, Integer pageNo, Integer pageSize) { + return BusiResult.success(guildTaskService.micList(taskKey, level, statDate, partitionId, guildId, pageNo, pageSize)); + } }