土耳其新政策-钻石流水-有效时长bug
This commit is contained in:
@@ -34,7 +34,7 @@ public interface GuildDiamondStatisticsPolicy2Mapper extends BaseMapper<GuildDia
|
||||
|
||||
List<GuildPolicy2MemberVo> listMemberData(@Param("cycleDate")String cycleDate, @Param("guildId")Integer guildId);
|
||||
|
||||
List<GuildPolicy2PersonalVo> listPersonalData(@Param("cycleDate")String cycleDate, @Param("guildMemberId")Long guildMemberId);
|
||||
List<GuildPolicy2PersonalVo> listPersonalDiamondData(@Param("cycleDate")String cycleDate, @Param("guildMemberId")Long guildMemberId);
|
||||
|
||||
IPage<GuildMemberDiamondStatisticsDayVo> listMemberByStatDate(@Param("ipage") IPage<GuildMemberDiamondStatisticsDayVo> ipage,
|
||||
@Param("startDate")String startDate, @Param("endDate")String endDate,
|
||||
|
@@ -2,6 +2,7 @@ package com.accompany.business.mybatismapper.guildpolicy2;
|
||||
|
||||
import com.accompany.business.model.guildpolicy2.GuildMicStatisticsPolicy2;
|
||||
import com.accompany.business.vo.guildpolicy.GuildMemberMicDayVo;
|
||||
import com.accompany.business.vo.guildpolicy.GuildPolicy2PersonalVo;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
@@ -26,4 +27,6 @@ public interface GuildMicStatisticsPolicy2Mapper extends BaseMapper<GuildMicStat
|
||||
List<GuildMemberMicDayVo> groupByStatDate(@Param("statDate")String statDate, @Param("endDate")String endDate,
|
||||
@Param("partitionId") Integer partitionId, @Param("guildMemberId") Long guildMemberId);
|
||||
|
||||
|
||||
List<GuildPolicy2PersonalVo> listPersonalMicData(@Param("cycleDate")String cycleDate, @Param("guildMemberId")Long guildMemberId);
|
||||
}
|
||||
|
@@ -44,8 +44,8 @@ public class GuildDiamondStatisticsPolicy2Service extends ServiceImpl<GuildDiamo
|
||||
return baseMapper.listMemberData(cycleDate, guildId);
|
||||
}
|
||||
|
||||
public List<GuildPolicy2PersonalVo> listPersonalData(String cycleDate, Long guildMemberId) {
|
||||
return baseMapper.listPersonalData(cycleDate, guildMemberId);
|
||||
public List<GuildPolicy2PersonalVo> listPersonalDiamondData(String cycleDate, Long guildMemberId) {
|
||||
return baseMapper.listPersonalDiamondData(cycleDate, guildMemberId);
|
||||
}
|
||||
|
||||
public IPage<GuildMemberDiamondStatisticsDayVo> listMemberByStatDate(String statDate, String endDate,
|
||||
|
@@ -4,6 +4,7 @@ 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.guildpolicy.GuildMemberMicDayVo;
|
||||
import com.accompany.business.vo.guildpolicy.GuildPolicy2PersonalVo;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -50,4 +51,8 @@ public class GuildMicStatisticsPolicy2Service extends ServiceImpl<GuildMicStatis
|
||||
public List<GuildMemberMicDayVo> listByStatDate(String statDate, String endDate, int partitionId, Long guildMemberId) {
|
||||
return baseMapper.groupByStatDate(statDate, endDate, partitionId, guildMemberId);
|
||||
}
|
||||
|
||||
public List<GuildPolicy2PersonalVo> listPersonalMicData(String cycleDate, Long guildMemberId) {
|
||||
return baseMapper.listPersonalMicData(cycleDate, guildMemberId);
|
||||
}
|
||||
}
|
||||
|
@@ -34,6 +34,7 @@ import java.time.ZonedDateTime;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.accompany.common.constant.Constant.ClanMode.GUILD_POLICY2;
|
||||
|
||||
@@ -77,7 +78,10 @@ public class GuildPolicy2Service {
|
||||
|
||||
guildPolicy2Vo.setDiamondNum(guildDiamondStatisticsPolicy2Service.getTotalDiamondInCycleMember(cycleBeginDate, guildMemberId));
|
||||
|
||||
List<GuildPolicy2PersonalVo> myData = guildDiamondStatisticsPolicy2Service.listPersonalData(cycleBeginDate, guildMemberId);
|
||||
List<GuildPolicy2PersonalVo> myDiamondData = guildDiamondStatisticsPolicy2Service.listPersonalDiamondData(cycleBeginDate, guildMemberId);
|
||||
List<GuildPolicy2PersonalVo> myMicData = guildMicStatisticsPolicy2Service.listPersonalMicData(cycleBeginDate, guildMemberId);
|
||||
|
||||
List<GuildPolicy2PersonalVo> myData = mergeMyDataLists(myDiamondData, myMicData);
|
||||
|
||||
if (CollectionUtils.isNotEmpty(myData)) {
|
||||
guildPolicy2Vo.setMicDay(myData.stream().collect(Collectors.summingInt(GuildPolicy2PersonalVo::getMicDay)));
|
||||
@@ -93,6 +97,31 @@ public class GuildPolicy2Service {
|
||||
return BusiResult.success(guildPolicy2Vo);
|
||||
}
|
||||
|
||||
public List<GuildPolicy2PersonalVo> mergeMyDataLists(List<GuildPolicy2PersonalVo> list1, List<GuildPolicy2PersonalVo> list2) {
|
||||
// 处理空列表情况
|
||||
if (list1 == null || list1.isEmpty()) return list2 != null ? list2 : new ArrayList<>();
|
||||
if (list2 == null || list2.isEmpty()) return list1;
|
||||
|
||||
// 合并两个列表并按statDate分组
|
||||
Map<String, GuildPolicy2PersonalVo> mergedMap = Stream.concat(list1.stream(), list2.stream())
|
||||
.collect(Collectors.toMap(
|
||||
GuildPolicy2PersonalVo::getStatDate,
|
||||
vo -> vo,
|
||||
(vo1, vo2) -> {
|
||||
// 合并相同statDate的对象
|
||||
GuildPolicy2PersonalVo merged = new GuildPolicy2PersonalVo();
|
||||
merged.setStatDate(vo1.getStatDate());
|
||||
merged.setDiamondNum(vo1.getDiamondNum().add(vo2.getDiamondNum()));
|
||||
merged.setMicMinute(vo1.getMicMinute() + vo2.getMicMinute());
|
||||
merged.setMicDay(vo1.getMicDay() + vo2.getMicDay());
|
||||
merged.setValidMicDay(vo1.getValidMicDay() || vo2.getValidMicDay());
|
||||
return merged;
|
||||
}
|
||||
));
|
||||
|
||||
return new ArrayList<>(mergedMap.values());
|
||||
}
|
||||
|
||||
private void fillAllDayOfMonth(GuildPolicy2Vo guildPolicy2Vo, List<GuildPolicy2PersonalVo> myData, String cycleBeginDate, PartitionEnum partitionEnum) {
|
||||
List<GuildPolicy2PersonalVo> resultMyDate = new ArrayList<>();
|
||||
ZonedDateTime nowZoneDateTime = DateTimeUtil.convertWithZoneId(new Date(), partitionEnum.getZoneId());
|
||||
|
@@ -35,26 +35,32 @@
|
||||
u.avatar as avatar,
|
||||
u.uid as uid,
|
||||
ifnull(sum(gdsp.diamond_num), 0) as diamondNum,
|
||||
COUNT(DISTINCT CASE WHEN gmp.mic_minutes >= 120 THEN gdsp.stat_date END) AS micDay
|
||||
gmp.micDay micDay
|
||||
from guild_member gm
|
||||
left join `guild_diamond_statistics_policy2` gdsp on gm.id = gdsp.guild_member_id and gdsp.cycle_date = #{cycleDate}
|
||||
left join guild_mic_statistics_policy2 gmp on gmp.guild_member_id = gm.id and gmp.cycle_date = #{cycleDate}
|
||||
left join users u on u.uid = gm.uid
|
||||
left join
|
||||
(select guild_member_id, sum(diamond_num) diamond_num
|
||||
from guild_diamond_statistics_policy2
|
||||
where cycle_date = #{cycleDate}
|
||||
GROUP BY guild_member_id) gdsp on gm.id = gdsp.guild_member_id
|
||||
left join
|
||||
(select guild_member_id, COUNT(DISTINCT CASE WHEN mic_minutes >= 120 THEN stat_date END) micDay
|
||||
from guild_mic_statistics_policy2
|
||||
where cycle_date = #{cycleDate} GROUP BY guild_member_id) gmp on gmp.guild_member_id = gm.id
|
||||
left join users u on u.uid = gm.uid
|
||||
where gm.guild_id = #{guildId}
|
||||
and gm.`enable` = 1
|
||||
group by u.uid
|
||||
and gm.`enable` = 1
|
||||
group by gm.uid
|
||||
</select>
|
||||
|
||||
<select id="listPersonalData" resultType="com.accompany.business.vo.guildpolicy.GuildPolicy2PersonalVo">
|
||||
<select id="listPersonalDiamondData" resultType="com.accompany.business.vo.guildpolicy.GuildPolicy2PersonalVo">
|
||||
select
|
||||
gdsp.stat_date as statDate,
|
||||
ifnull(gdsp.diamond_num, 0) as diamondNum,
|
||||
ifnull(gmp.mic_minutes, 0) as micMinute,
|
||||
if(gmp.mic_minutes >= 120, 1, 0) micDay,
|
||||
if(gmp.mic_minutes >= 120, 1, 0) as validMicDay
|
||||
0 as micMinute,
|
||||
0 micDay,
|
||||
0 validMicDay
|
||||
from `guild_diamond_statistics_policy2` gdsp
|
||||
left join guild_mic_statistics_policy2 gmp on gmp.guild_member_id = gdsp.guild_member_id and gmp.stat_date = gdsp.stat_date and gmp.cycle_date = #{cycleDate}
|
||||
left join guild_member gm on gm.id = gdsp.guild_member_id and gdsp.cycle_date = #{cycleDate}
|
||||
left join guild_member gm on gm.id = gdsp.guild_member_id
|
||||
where gdsp.cycle_date = #{cycleDate}
|
||||
and gdsp.guild_member_id = #{guildMemberId}
|
||||
and gm.`enable` = 1
|
||||
|
@@ -38,4 +38,19 @@
|
||||
group by stat_date,guild_member_id
|
||||
</select>
|
||||
|
||||
<select id="listPersonalMicData" resultType="com.accompany.business.vo.guildpolicy.GuildPolicy2PersonalVo">
|
||||
select
|
||||
gmp.stat_date as statDate,
|
||||
0 as diamondNum,
|
||||
ifnull(gmp.mic_minutes, 0) as micMinute,
|
||||
if(gmp.mic_minutes >= 120, 1, 0) micDay,
|
||||
if(gmp.mic_minutes >= 120, 1, 0) as validMicDay
|
||||
from `guild_mic_statistics_policy2` gmp
|
||||
left join guild_member gm on gm.id = gmp.guild_member_id
|
||||
where gmp.cycle_date = #{cycleDate}
|
||||
and gmp.guild_member_id = #{guildMemberId}
|
||||
and gm.`enable` = 1
|
||||
group by gmp.stat_date
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
Reference in New Issue
Block a user