公会新政策字段补全
This commit is contained in:
@@ -34,6 +34,7 @@ public class GuildDiamondStatisticsPolicy2 implements Serializable {
|
||||
*/
|
||||
private Integer guildId;
|
||||
private BigDecimal diamondNum;
|
||||
private Integer micSecond;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
|
@@ -12,6 +12,6 @@ import java.math.BigDecimal;
|
||||
public class GuildPolicy2MemberVo extends SimpleUserVo {
|
||||
@ApiModelProperty("钻石数量")
|
||||
private BigDecimal diamondNum;
|
||||
@ApiModelProperty("有效")
|
||||
@ApiModelProperty("有效天数")
|
||||
private Integer micDay;
|
||||
}
|
||||
|
@@ -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("上麦分钟")
|
||||
|
@@ -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());
|
||||
|
@@ -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);
|
||||
|
||||
|
@@ -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);
|
||||
|
@@ -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) {
|
||||
|
@@ -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);
|
||||
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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}
|
||||
|
Reference in New Issue
Block a user