公会新政策字段补全

This commit is contained in:
2025-08-12 14:24:33 +08:00
parent 88fdb6dedb
commit 5b80dbdd1d
10 changed files with 66 additions and 17 deletions

View File

@@ -34,6 +34,7 @@ public class GuildDiamondStatisticsPolicy2 implements Serializable {
*/
private Integer guildId;
private BigDecimal diamondNum;
private Integer micSecond;
/**
* 创建时间
*/

View File

@@ -12,6 +12,6 @@ import java.math.BigDecimal;
public class GuildPolicy2MemberVo extends SimpleUserVo {
@ApiModelProperty("钻石数量")
private BigDecimal diamondNum;
@ApiModelProperty("有效")
@ApiModelProperty("有效天数")
private Integer micDay;
}

View File

@@ -2,15 +2,23 @@ package com.accompany.business.vo.guildpolicy;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ApiModel("公会政策2个人数据")
@Data
public class GuildPolicy2PersonalVo {
@ApiModelProperty("Date")
private String cycleDate;
@ApiModelProperty("统计日期")
private String statDate;
@ApiModelProperty("钻石数量")
private BigDecimal diamondNum;
@ApiModelProperty("上麦分钟")

View File

@@ -71,7 +71,7 @@ public class SuperLuckyGiftDiamondIncomeListener implements ApplicationListener<
} else if (Constant.ClanMode.GUILD_POLICY2.equals(partitionInfo.getClanMode())) {
String cycleDate = FullMonthCycleTimeUtil.getCycleDateByZoneId(time, partitionInfo.getZoneId());
String statDate = FullMonthCycleTimeUtil.getCycleDay(time, partitionInfo.getZoneId());
guildDiamondStatisticsPolicy2Service.updateDayDiamondStatistics(cycleDate, statDate, guildMember, totalDiamondNum);
guildDiamondStatisticsPolicy2Service.updateDayDiamondStatistics(cycleDate, statDate, guildMember, totalDiamondNum, 0);
}
//todo 时区 zoneId
guildRankService.updateRank(guildMember.getGuildId(), guildMember.getUid(), totalDiamondNum, receiver.getPartitionId());

View File

@@ -20,7 +20,7 @@ public interface GuildDiamondStatisticsPolicy2Mapper extends BaseMapper<GuildDia
int updateDayDiamondStatistics(@Param("cycleDate")String cycleDate, @Param("statDate")String statDate,
@Param("guildMemberId")Long guildMemberId, @Param("partitionId") Integer partitionId, @Param("guildId")Integer guildId, @Param("uid")Long uid,
@Param("diamond") BigDecimal diamond, @Param("time") Date time);
@Param("diamond") BigDecimal diamond, @Param("time") Date time, @Param("micSecond") Integer micSecond);
BigDecimal getTotalDiamondInCycleGuild(@Param("cycleDate")String cycleDate, @Param("guildId")Integer guildId);

View File

@@ -85,7 +85,7 @@ public class GuildGiftRecordService extends ServiceImpl<GuildGiftRecordMapper, G
} else if (Constant.ClanMode.GUILD_POLICY2.equals(partitionInfo.getClanMode())) {
String cycleDate = FullMonthCycleTimeUtil.getCycleDateByZoneId(createTime, partitionInfo.getZoneId());
String statDate = FullMonthCycleTimeUtil.getCycleDay(createTime, partitionInfo.getZoneId());
guildDiamondStatisticsPolicy2Service.updateDayDiamondStatistics(cycleDate, statDate, guildMember, giftSendRecord.getTotalDiamondNum());
guildDiamondStatisticsPolicy2Service.updateDayDiamondStatistics(cycleDate, statDate, guildMember, giftSendRecord.getTotalDiamondNum(), 0);
}
guildRankService.updateRank(guildGiftRecord);

View File

@@ -21,9 +21,9 @@ import java.util.List;
@Service
public class GuildDiamondStatisticsPolicy2Service extends ServiceImpl<GuildDiamondStatisticsPolicy2Mapper, GuildDiamondStatisticsPolicy2> {
public int updateDayDiamondStatistics(String cycleDate, String statDate, GuildMember guildMember, double diamond) {
public int updateDayDiamondStatistics(String cycleDate, String statDate, GuildMember guildMember, double diamond, int micSecond) {
return baseMapper.updateDayDiamondStatistics(cycleDate, statDate, guildMember.getId(), guildMember.getPartitionId(),
guildMember.getGuildId(), guildMember.getUid(), BigDecimal.valueOf(diamond), new Date());
guildMember.getGuildId(), guildMember.getUid(), BigDecimal.valueOf(diamond), new Date(), micSecond);
}
public BigDecimal getTotalDiamondInCycle(String cycleDate, Integer guildId) {

View File

@@ -1,5 +1,6 @@
package com.accompany.business.service.guildpolicy2;
import cn.hutool.core.date.DateUtil;
import com.accompany.business.constant.guild.GuildConstant;
import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.service.guild.GuildAuthService;
@@ -7,6 +8,7 @@ import com.accompany.business.service.guild.GuildMemberService;
import com.accompany.business.service.guild.GuildService;
import com.accompany.business.util.FullMonthCycleTimeUtil;
import com.accompany.business.vo.guild.CycleDateVo;
import com.accompany.business.vo.guildpolicy.GuildPolicy2PersonalVo;
import com.accompany.business.vo.guildpolicy.GuildPolicy2Vo;
import com.accompany.common.result.BusiResult;
import com.accompany.common.status.BusiStatus;
@@ -14,11 +16,14 @@ import com.accompany.common.utils.DateTimeUtil;
import com.accompany.core.enumeration.PartitionEnum;
import com.accompany.core.exception.ServiceException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.ZoneId;
import java.util.List;
import java.time.ZonedDateTime;
import java.util.*;
@Slf4j
@Service
@@ -51,7 +56,10 @@ public class GuildPolicy2Service {
Long guildMemberId = guildMember.getId();
guildPolicy2Vo.setDiamondNum(guildDiamondStatisticsPolicy2Service.getTotalDiamondInCycleMember(cycleBeginDate, guildMemberId));
guildPolicy2Vo.setMyData(guildDiamondStatisticsPolicy2Service.listPersonalData(cycleBeginDate, guildMemberId));
List<GuildPolicy2PersonalVo> myData = guildDiamondStatisticsPolicy2Service.listPersonalData(cycleBeginDate, guildMemberId);
fillAllDayOfMonth(guildPolicy2Vo, myData, cycleBeginDate, partitionEnum);
if (guildAuthService.hasAuthByRoleType(partitionEnum.getClanMode(), guildMember.getRoleType(), GuildConstant.AuthCode.GUILD_POLICY2_MEMBER)) {
guildPolicy2Vo.setMemberData(guildDiamondStatisticsPolicy2Service.listMemberData(cycleBeginDate, guildMember.getGuildId()));
@@ -60,6 +68,34 @@ public class GuildPolicy2Service {
return BusiResult.success(guildPolicy2Vo);
}
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());
Map<String, GuildPolicy2PersonalVo> realMap = new HashMap<>();
if (CollectionUtils.isNotEmpty(myData)) {
myData.forEach(item -> realMap.put(item.getStatDate(), item));
}
Date monthBegin = DateUtil.parseDate(cycleBeginDate);
Date now = DateUtil.parseDate(nowZoneDateTime.format(DateTimeUtil.dateFormatter));
Date monthEnd = DateUtil.beginOfDay(DateUtil.endOfMonth(monthBegin));
if (monthEnd.after(now)) {
monthEnd = now;
}
while (monthEnd.after(monthBegin) || monthEnd.equals(monthBegin)){
String date = DateUtil.formatDate(monthEnd);
GuildPolicy2PersonalVo guildPolicy2PersonalVo = realMap.getOrDefault(date, GuildPolicy2PersonalVo.builder()
.statDate(date)
.cycleDate(cycleBeginDate)
.diamondNum(BigDecimal.ZERO)
.micMinute(0)
.validMicDay(false)
.build());
resultMyDate.add(guildPolicy2PersonalVo);
monthEnd = DateUtil.offsetDay(monthEnd, -1);
}
guildPolicy2Vo.setMyData(resultMyDate);
}
public BusiResult<List<CycleDateVo>> getCycleDates(Long uid) {
GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(uid);
if (null == guildMember){
@@ -73,6 +109,7 @@ public class GuildPolicy2Service {
List<CycleDateVo> cycleDateVos = FullMonthCycleTimeUtil.listCycleDateVo(guildMember.getCreateTime(),
ZoneId.of(partitionEnum.getZoneId()), DateTimeUtil.DEFAULT_DATE_PATTERN);
return BusiResult.success(cycleDateVos);
}

View File

@@ -112,7 +112,7 @@ public class FullMonthCycleTimeUtil {
startTime = getCycleTimeZdt(zdt);
}
list.sort(Comparator.comparing(CycleDateVo::getCycleDate));
list.sort(Comparator.comparing(CycleDateVo::getCycleDate).reversed());
return list;
}

View File

@@ -3,13 +3,13 @@
<mapper namespace="com.accompany.business.mybatismapper.guildpolicy2.GuildDiamondStatisticsPolicy2Mapper">
<update id="updateDayDiamondStatistics">
INSERT INTO `guild_diamond_statistics_policy2` (`cycle_date`, `stat_date`, `guild_member_id`, `partition_id`, `uid`,
`guild_id`, `diamond_num`, `create_time`, `update_time`)
VALUES (#{cycleDate}, #{statDate}, #{guildMemberId}, #{partitionId}, #{uid}, #{guildId}, #{diamond}, #{time},
#{time}) ON DUPLICATE KEY
`guild_id`, `diamond_num`, `mic_second`, `create_time`, `update_time`)
VALUES (#{cycleDate}, #{statDate}, #{guildMemberId}, #{partitionId}, #{uid}, #{guildId}, #{diamond}, #{micSecond}, #{time}, #{time})
ON DUPLICATE KEY
UPDATE
diamond_num = diamond_num +
values (diamond_num), update_time =
values (update_time)
diamond_num = diamond_num + values (diamond_num),
mic_second = values (mic_second),
update_time = values (update_time)
</update>
<select id="getTotalDiamondInCycleGuild" resultType="java.math.BigDecimal">
@@ -35,7 +35,8 @@
u.nick as nick,
u.avatar as avatar,
u.uid as uid,
ifnull(sum(gdsp.diamond_num), 0) as diamondNum
ifnull(sum(gdsp.diamond_num), 0) as diamondNum,
COUNT(DISTINCT CASE WHEN mic_second >= 7200 THEN stat_date END) AS 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 users u on u.uid = gm.uid
@@ -47,7 +48,9 @@
<select id="listPersonalData" resultType="com.accompany.business.vo.guildpolicy.GuildPolicy2PersonalVo">
select
gdsp.stat_date as statDate,
ifnull(sum(gdsp.diamond_num), 0) as diamondNum
ifnull(sum(gdsp.diamond_num), 0) as diamondNum,
gdsp.mic_second/60 as micMinute,
if(gdsp.mic_second >= 7200, 1, 0) as validMicDay
from `guild_diamond_statistics_policy2` gdsp
left join guild_member gm on gm.id = gdsp.guild_member_id and gdsp.cycle_date = #{cycleDate}
where gdsp.cycle_date = #{cycleDate}