公会任务主播上麦明细

This commit is contained in:
2025-10-09 15:14:54 +08:00
parent cb5040c1fc
commit 8db6d82c4a
9 changed files with 90 additions and 5 deletions

View File

@@ -43,6 +43,7 @@ public class DailyTaskVo {
private GuildCycleDiamondWageLevelVo cycleDiamondWageLevelVo;
@ApiModelProperty("任务剩余秒数")
private Long expireSecond;
private Integer guildId;
@ApiModelProperty("公会开业仪式")
private List<GuildTaskLevelInfoVo> guildTaskVos;
}

View File

@@ -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;
}

View File

@@ -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<GuildMicStat
List<GuildMemberMicDayVo> groupByPartitionGuildDate(@Param("statDate")String statDate, @Param("partitionId") Integer partitionId,
@Param("reachMinutes") Integer reachMinutes, @Param("guildIds") List<Integer> guildIds);
IPage<GuildMemberMicVo> listGuildMemberMic(@Param("page") IPage<GuildMemberMicVo> page, @Param("partitionId") Integer partitionId,
@Param("guildId") Integer guildId, @Param("statDate") String statDate);
}

View File

@@ -66,6 +66,7 @@ public class GuildMicHandler extends AbstractDailyTaskHandler {
List<GuildTaskLevelInfoVo> 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());

View File

@@ -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<GuildMicStatis
}
return memberMicDayVos.stream().collect(Collectors.toMap(GuildMemberMicDayVo::getGuildId, GuildMemberMicDayVo::getMicDay));
}
public IPage<GuildMemberMicVo> listGuildMemberMic(IPage<GuildMemberMicVo> page, Integer partitionId, Integer guildId, String statDate) {
return baseMapper.listGuildMemberMic(page, partitionId, guildId, statDate);
}
}

View File

@@ -26,6 +26,15 @@ public class GuildTaskLevelInfoService extends ServiceImpl<GuildTaskLevelInfoMap
return baseMapper.selectList(wrapper);
}
public GuildTaskLevelInfo listGuildTaskLevel(Integer partitionId, String taskKey, Integer level) {
LambdaQueryWrapper<GuildTaskLevelInfo> 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<GuildTaskLevelInfo> listGuildTaskList(Integer partitionId, List<String> taskKeys) {
LambdaQueryWrapper<GuildTaskLevelInfo> wrapper = Wrappers.lambdaQuery();
wrapper.eq(GuildTaskLevelInfo::getPartitionId, partitionId);

View File

@@ -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<Integer, Integer> oldReceicveStatus(String taskKey, Integer guildId) {
return redissonClient.getMap(guild_task_receive.getKey(taskKey, guildId.toString()), new TypedJsonJacksonCodec(Integer.class, Integer.class));
}
public List<GuildMemberMicVo> micList(String taskKey, Integer level, String statDate, Integer partitionId,
Integer guildId, Integer pageNo, Integer pageSize) {
if (StringUtils.isEmpty(statDate)) {
return Collections.emptyList();
}
Page<GuildMemberMicVo> micVoPage = new Page<>(pageNo, pageSize, false);
IPage<GuildMemberMicVo> memberMicVoIPage = guildMicStatisticsPolicy2Service.listGuildMemberMic(micVoPage, partitionId, guildId, statDate);
List<GuildMemberMicVo> 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;
}
}

View File

@@ -81,6 +81,24 @@
GROUP BY gmp.guild_id
</select>
<select id="listGuildMemberMic" resultType="com.accompany.business.vo.guild.GuildMemberMicVo">
SELECT
u.erban_no erbanNo,
u.nick nick,
u.avatar avatar,
u.uid uid,
ifnull(gp.mic_minutes, 0) micMinutes
FROM
guild_member gm
LEFT JOIN guild_mic_statistics_policy2 gp ON gp.guild_member_id = gm.id AND gp.stat_date = #{statDate}
LEFT JOIN users u ON u.uid = gm.uid
WHERE
gm.partition_id = #{partitionId}
AND gm.guild_id = #{guildId}
AND gm.`enable` = 1
GROUP BY
gm.id
order by micMinutes desc
</select>
</mapper>

View File

@@ -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<List<GuildMemberMicVo>> 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));
}
}