土耳其实时薪资fixed

This commit is contained in:
2025-10-17 14:13:56 +08:00
committed by khalil
parent 754031c039
commit da69ed63a8
8 changed files with 171 additions and 55 deletions

View File

@@ -1148,9 +1148,10 @@ public class DateTimeUtil {
return Date.from(eastEightZonedDateTime.toInstant()); return Date.from(eastEightZonedDateTime.toInstant());
} }
public static Date convertToEastEightZone(ZonedDateTime originalDate) { public static Date convertToEastEightZone(Date date, String originalZoneId) {
ZonedDateTime cycleBeginDateZoneDate = DateTimeUtil.convertWithZoneId(date, originalZoneId);
// 2. 转换为东八区时间 // 2. 转换为东八区时间
ZonedDateTime eastEightZonedDateTime = originalDate ZonedDateTime eastEightZonedDateTime = cycleBeginDateZoneDate
.withZoneSameInstant(ZoneId.of("Asia/Shanghai")); .withZoneSameInstant(ZoneId.of("Asia/Shanghai"));
// 3. 返回Date对象 // 3. 返回Date对象

View File

@@ -53,6 +53,10 @@ public class GuildDiamondStatisticsPolicy2Settle implements Serializable {
* 公会长薪资 * 公会长薪资
*/ */
private BigDecimal ownerSalary; private BigDecimal ownerSalary;
/**
* 问题薪资
*/
private BigDecimal issueSalary;
/** /**
* 创建时间 * 创建时间
*/ */

View File

@@ -13,6 +13,8 @@ import java.util.List;
public class GuildPolicy2MyVo { public class GuildPolicy2MyVo {
@ApiModelProperty("周期开始日期yyyy-MM-dd") @ApiModelProperty("周期开始日期yyyy-MM-dd")
private String cycleDate; private String cycleDate;
@ApiModelProperty("当前")
private String curCycleDate;
@ApiModelProperty("钻石数量") @ApiModelProperty("钻石数量")
private BigDecimal diamondNum = BigDecimal.ZERO; private BigDecimal diamondNum = BigDecimal.ZERO;

View File

@@ -2,10 +2,16 @@ package com.accompany.business.vo.guildpolicy;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal; import java.math.BigDecimal;
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel @ApiModel
@Data @Data
public class GuildPolicy2SalaryVo { public class GuildPolicy2SalaryVo {

View File

@@ -24,4 +24,7 @@ public interface GuildDiamondStatisticsPolicy2SettleMapper extends BaseMapper<Gu
@Param("startDate")String startDate, @Param("startDate")String startDate,
@Param("guildId") Integer guildId, @Param("uid") Long uid, @Param("guildId") Integer guildId, @Param("uid") Long uid,
@Param("partitionId") Integer partitionId); @Param("partitionId") Integer partitionId);
List<GuildDiamondStatisticsPolicy2Settle> groupByMemberStatDate(@Param("cycleDate") String cycleDate, @Param("partitionId") Integer partitionId,
@Param("guildMemberId") Long guildMemberId, @Param("guildId") Integer guildId);
} }

View File

@@ -6,6 +6,7 @@ import com.accompany.business.vo.guildpolicy.GuildPolicy2MemberAdminVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
@@ -31,4 +32,20 @@ public class GuildDiamondStatisticsPolicy2SettleService extends ServiceImpl<Guil
Page<GuildPolicy2MemberAdminVo> page = new Page<>(pageNo, pageSize); Page<GuildPolicy2MemberAdminVo> page = new Page<>(pageNo, pageSize);
return baseMapper.listByStatDate(page, cycleDate, guildId, uid, partitionId); return baseMapper.listByStatDate(page, cycleDate, guildId, uid, partitionId);
} }
public GuildDiamondStatisticsPolicy2Settle groupByMemberStatDate(String cycleDate, Integer partitionId,
Long guildMemberId) {
List<GuildDiamondStatisticsPolicy2Settle> guildDiamondStatisticsPolicy2Settles =
baseMapper.groupByMemberStatDate(cycleDate, partitionId, guildMemberId, null);
if (CollectionUtils.isEmpty(guildDiamondStatisticsPolicy2Settles)) {
return null;
}
return guildDiamondStatisticsPolicy2Settles.get(0);
}
public List<GuildDiamondStatisticsPolicy2Settle> groupByGuildMemberStatDate(String cycleDate, Integer partitionId,
Integer guildId) {
return baseMapper.groupByMemberStatDate(cycleDate, partitionId, null, guildId);
}
} }

View File

@@ -20,6 +20,7 @@ import com.accompany.common.constant.Constant;
import com.accompany.common.result.BusiResult; import com.accompany.common.result.BusiResult;
import com.accompany.common.status.BusiStatus; import com.accompany.common.status.BusiStatus;
import com.accompany.common.utils.DateTimeUtil; import com.accompany.common.utils.DateTimeUtil;
import com.accompany.common.utils.StringUtils;
import com.accompany.core.enumeration.BillObjTypeEnum; import com.accompany.core.enumeration.BillObjTypeEnum;
import com.accompany.core.enumeration.PartitionEnum; import com.accompany.core.enumeration.PartitionEnum;
import com.accompany.core.exception.ServiceException; import com.accompany.core.exception.ServiceException;
@@ -29,6 +30,7 @@ import com.accompany.payment.service.ChargeRecordService;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -95,6 +97,16 @@ public class GuildPolicy2Service {
return cycleBeginDate.equals(curCycleBeginDate) || cycleBeginDate.compareTo(MIN_CYCLE_DATE) < 0; return cycleBeginDate.equals(curCycleBeginDate) || cycleBeginDate.compareTo(MIN_CYCLE_DATE) < 0;
} }
@NotNull
private static BigDecimal getIssiueSalary(ChargeRecord chargeRecord) {
if (chargeRecord == null) {
return BigDecimal.ZERO;
}
return BigDecimal.valueOf(chargeRecord.getAmount() != null ? chargeRecord.getAmount() : 0D)
.divide(BigDecimal.valueOf(100))
.multiply(ISSUE_SALARY_RATE);
}
public BusiResult<GuildPolicy2MyVo> getGuildPolicy2(Long uid, String cycleBeginDate) { public BusiResult<GuildPolicy2MyVo> getGuildPolicy2(Long uid, String cycleBeginDate) {
GuildPolicy2MyVo guildPolicy2MyVo = new GuildPolicy2MyVo(); GuildPolicy2MyVo guildPolicy2MyVo = new GuildPolicy2MyVo();
guildPolicy2MyVo.setCycleDate(cycleBeginDate); guildPolicy2MyVo.setCycleDate(cycleBeginDate);
@@ -105,29 +117,69 @@ public class GuildPolicy2Service {
Long guildMemberId = guildMember.getId(); Long guildMemberId = guildMember.getId();
String curCycleBeginDate = FullMonthCycleTimeUtil.getCycleDate(DateTimeUtil.convertWithZoneId(new Date(), partitionEnum.getZoneId())); String curCycleBeginDate = FullMonthCycleTimeUtil.getCycleDate(DateTimeUtil.convertWithZoneId(new Date(), partitionEnum.getZoneId()));
guildPolicy2MyVo.setCurCycleDate(curCycleBeginDate);
List<GuildPolicy2PersonalVo> myMicData = guildMicStatisticsPolicy2Service.listPersonalMicData(cycleBeginDate, guildMemberId); List<GuildPolicy2PersonalVo> myMicData = guildMicStatisticsPolicy2Service.listPersonalMicData(cycleBeginDate, guildMemberId);
if (isCurrentOrPastCycle(cycleBeginDate, curCycleBeginDate)) {// 当前周期 if (isCurrentOrPastCycle(cycleBeginDate, curCycleBeginDate)) {// 当前周期
guildPolicy2MyVo.setDiamondNum(guildDiamondStatisticsPolicy2Service.getTotalDiamondInCycleMember(cycleBeginDate, guildMemberId)); guildPolicy2MyVo.setDiamondNum(guildDiamondStatisticsPolicy2Service.getTotalDiamondInCycleMember(cycleBeginDate, guildMemberId));
List<GuildPolicy2PersonalVo> myDiamondData = guildDiamondStatisticsPolicy2Service.listPersonalDiamondData(cycleBeginDate, guildMemberId);
List<GuildPolicy2PersonalVo> myData = this.mergeMyDataLists(myDiamondData, myMicData);
if (CollectionUtils.isNotEmpty(myData)) {
guildPolicy2MyVo.setMicDay(myData.stream().collect(Collectors.summingInt(GuildPolicy2PersonalVo::getMicDay)));
}
//填满整月天数
this.fillAllDayOfMonth(guildPolicy2MyVo, myData, cycleBeginDate, partitionEnum);
TreeMap<BigDecimal, GuildDiamondWagePolicy2> diamondWageMap = guildDiamondWagePolicy2Service.getDiamondWageMap(partitionEnum.getId()); TreeMap<BigDecimal, GuildDiamondWagePolicy2> diamondWageMap = guildDiamondWagePolicy2Service.getDiamondWageMap(partitionEnum.getId());
GuildPolicy2SalaryVo salaryVo = guildDiamondWagePolicy2Service.getSalaryVo(diamondWageMap, guildPolicy2MyVo.getDiamondNum(), guildPolicy2MyVo.getMicDay()); GuildPolicy2SalaryVo salaryVo = guildDiamondWagePolicy2Service.getSalaryVo(diamondWageMap, guildPolicy2MyVo.getDiamondNum(), guildPolicy2MyVo.getMicDay());
guildPolicy2MyVo.setMySalary(salaryVo); guildPolicy2MyVo.setMySalary(salaryVo);
} else { } else {
//to-do GuildDiamondStatisticsPolicy2Settle settleMap = guildDiamondStatisticsPolicy2SettleService
.groupByMemberStatDate(cycleBeginDate, partitionEnum.getId(), guildMemberId);
if (settleMap == null || !settleMap.getGuildMemberId().equals(guildMemberId)) {//历史周期是否有结算,或者不在当前公会
return BusiResult.success(guildPolicy2MyVo);
}
guildPolicy2MyVo.setDiamondNum(settleMap.getDiamondNum());
guildPolicy2MyVo.setMySalary(GuildPolicy2SalaryVo.builder()
.diamondNum(settleMap.getDiamondNum())
.micSalary(settleMap.getAnchorMicSalary())
.ownerSalary(settleMap.getOwnerSalary())
.build());
} }
this.fillPersonDetailData(cycleBeginDate, guildMemberId, myMicData, guildPolicy2MyVo, partitionEnum);
return BusiResult.success(guildPolicy2MyVo); return BusiResult.success(guildPolicy2MyVo);
} }
private void fillPersonDetailData(String cycleBeginDate, Long guildMemberId, List<GuildPolicy2PersonalVo> myMicData, GuildPolicy2MyVo guildPolicy2MyVo, PartitionEnum partitionEnum) {
List<GuildPolicy2PersonalVo> myDiamondData = guildDiamondStatisticsPolicy2Service.listPersonalDiamondData(cycleBeginDate, guildMemberId);
List<GuildPolicy2PersonalVo> myData = this.mergeMyDataLists(myDiamondData, myMicData);
if (CollectionUtils.isNotEmpty(myData)) {
guildPolicy2MyVo.setMicDay(myData.stream().collect(Collectors.summingInt(GuildPolicy2PersonalVo::getMicDay)));
}
//填满整月天数
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);
}
guildPolicy2MyVo.setMyData(resultMyDate);
}
//合并流水与在麦天数数据 //合并流水与在麦天数数据
private List<GuildPolicy2PersonalVo> mergeMyDataLists(List<GuildPolicy2PersonalVo> list1, List<GuildPolicy2PersonalVo> list2) { private List<GuildPolicy2PersonalVo> mergeMyDataLists(List<GuildPolicy2PersonalVo> list1, List<GuildPolicy2PersonalVo> list2) {
// 处理空列表情况 // 处理空列表情况
@@ -154,34 +206,6 @@ public class GuildPolicy2Service {
return new ArrayList<>(mergedMap.values()); return new ArrayList<>(mergedMap.values());
} }
private void fillAllDayOfMonth(GuildPolicy2MyVo guildPolicy2MyVo, 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);
}
guildPolicy2MyVo.setMyData(resultMyDate);
}
public BusiResult<GuildPolicy2AgencyVo> getGuildMemberPolicy2(Long uid, String cycleBeginDate) { public BusiResult<GuildPolicy2AgencyVo> getGuildMemberPolicy2(Long uid, String cycleBeginDate) {
GuildPolicy2AgencyVo guildPolicy2AgencyVo = new GuildPolicy2AgencyVo(); GuildPolicy2AgencyVo guildPolicy2AgencyVo = new GuildPolicy2AgencyVo();
guildPolicy2AgencyVo.setCycleDate(cycleBeginDate); guildPolicy2AgencyVo.setCycleDate(cycleBeginDate);
@@ -207,14 +231,10 @@ public class GuildPolicy2Service {
List<Long> uids = memberData.stream().map(GuildPolicy2MemberVo::getUid).collect(Collectors.toList()); List<Long> uids = memberData.stream().map(GuildPolicy2MemberVo::getUid).collect(Collectors.toList());
Date cycleBegin = DateUtil.parseDate(cycleBeginDate); Date cycleBegin = DateUtil.beginOfDay(DateUtil.parseDate(cycleBeginDate));
Date cycleEnd = DateUtil.endOfMonth(cycleBegin); Date cycleEnd = DateUtil.endOfMonth(cycleBegin);
ZonedDateTime cycleBeginDateZoneDate = DateTimeUtil.convertWithZoneId(cycleBegin, partitionEnum.getZoneId()); Date beginOfMonth = DateTimeUtil.convertToEastEightZone(cycleBegin, partitionEnum.getZoneId());
ZonedDateTime zoneBeginTime = cycleBeginDateZoneDate.withHour(0).withMinute(0).withSecond(0).withNano(0); Date endOfMonth = DateTimeUtil.convertToEastEightZone(cycleEnd, partitionEnum.getZoneId());
ZonedDateTime cycleEndDateZoneDate = DateTimeUtil.convertWithZoneId(cycleEnd, partitionEnum.getZoneId());
ZonedDateTime zoneEndTime = cycleEndDateZoneDate.withHour(23).withMinute(59).withSecond(59).withNano(999_999_999);
Date beginOfMonth = DateTimeUtil.convertToEastEightZone(zoneBeginTime);
Date endOfMonth = DateTimeUtil.convertToEastEightZone(zoneEndTime);
Map<Long, ChargeRecord> refundGroupUidDateMap = chargeRecordService.getRefundGroupUidDateMap(uids, beginOfMonth, endOfMonth); Map<Long, ChargeRecord> refundGroupUidDateMap = chargeRecordService.getRefundGroupUidDateMap(uids, beginOfMonth, endOfMonth);
@@ -224,12 +244,7 @@ public class GuildPolicy2Service {
item.setMicSalary(item.getMicSalary().add(diamondWageVo.getAnchorMicSalary())); item.setMicSalary(item.getMicSalary().add(diamondWageVo.getAnchorMicSalary()));
item.setOwnerSalary(item.getOwnerSalary().add(diamondWageVo.getOwnerSalary())); item.setOwnerSalary(item.getOwnerSalary().add(diamondWageVo.getOwnerSalary()));
ChargeRecord chargeRecord = refundGroupUidDateMap.get(item.getUid()); ChargeRecord chargeRecord = refundGroupUidDateMap.get(item.getUid());
if (chargeRecord != null) { item.setIssueSalary(this.getIssiueSalary(chargeRecord));
BigDecimal refundAmount = BigDecimal.valueOf(chargeRecord.getAmount() != null ? chargeRecord.getAmount() : 0D)
.divide(BigDecimal.valueOf(100))
.multiply(ISSUE_SALARY_RATE);
item.setIssueSalary(refundAmount);
}
}); });
GuildPolicy2SalaryVo salaryVo = new GuildPolicy2SalaryVo(); GuildPolicy2SalaryVo salaryVo = new GuildPolicy2SalaryVo();
salaryVo.setDiamondSalary(memberData.stream().map(GuildPolicy2MemberVo::getDiamondSalary).reduce(BigDecimal.ZERO, BigDecimal::add)); salaryVo.setDiamondSalary(memberData.stream().map(GuildPolicy2MemberVo::getDiamondSalary).reduce(BigDecimal.ZERO, BigDecimal::add));
@@ -238,7 +253,39 @@ public class GuildPolicy2Service {
salaryVo.setIssueSalary(memberData.stream().map(GuildPolicy2MemberVo::getIssueSalary).reduce(BigDecimal.ZERO, BigDecimal::add)); salaryVo.setIssueSalary(memberData.stream().map(GuildPolicy2MemberVo::getIssueSalary).reduce(BigDecimal.ZERO, BigDecimal::add));
guildPolicy2AgencyVo.setGuildSalary(salaryVo); guildPolicy2AgencyVo.setGuildSalary(salaryVo);
} else { } else {
//to-do List<GuildDiamondStatisticsPolicy2Settle> settleList = guildDiamondStatisticsPolicy2SettleService
.groupByGuildMemberStatDate(cycleBeginDate, partitionEnum.getId(), guildMember.getGuildId());
if (CollectionUtils.isEmpty(settleList)) {
return BusiResult.success(guildPolicy2AgencyVo);
}
List<GuildPolicy2MemberVo> memberData = guildPolicy2AgencyVo.getMemberData();
List<Long> uids = settleList.stream().map(GuildDiamondStatisticsPolicy2Settle::getUid).collect(Collectors.toList());
Map<Long, Users> usersMap = usersService.getUsersMapByUids(uids);
for (GuildDiamondStatisticsPolicy2Settle policy2Settle : settleList) {
GuildPolicy2MemberVo memberVo = new GuildPolicy2MemberVo();
memberVo.setUid(policy2Settle.getUid());
memberVo.setMicDay(policy2Settle.getMicDay());
memberVo.setDiamondNum(policy2Settle.getDiamondNum());
memberVo.setDiamondSalary(policy2Settle.getAnchorSalary());
memberVo.setMicSalary(policy2Settle.getAnchorMicSalary());
memberVo.setOwnerSalary(policy2Settle.getOwnerSalary());
memberVo.setIssueSalary(policy2Settle.getIssueSalary());
Users users = usersMap.get(memberVo.getUid());
if (null != users) {
memberVo.setNick(users.getNick());
memberVo.setErbanNo(users.getErbanNo());
memberVo.setAvatar(users.getAvatar());
}
memberData.add(memberVo);
}
GuildPolicy2SalaryVo salaryVo = new GuildPolicy2SalaryVo();
salaryVo.setDiamondSalary(memberData.stream().map(GuildPolicy2MemberVo::getDiamondSalary).reduce(BigDecimal.ZERO, BigDecimal::add));
salaryVo.setMicSalary(memberData.stream().map(GuildPolicy2MemberVo::getMicSalary).reduce(BigDecimal.ZERO, BigDecimal::add));
salaryVo.setOwnerSalary(memberData.stream().map(GuildPolicy2MemberVo::getOwnerSalary).reduce(BigDecimal.ZERO, BigDecimal::add));
salaryVo.setIssueSalary(memberData.stream().map(GuildPolicy2MemberVo::getIssueSalary).reduce(BigDecimal.ZERO, BigDecimal::add));
guildPolicy2AgencyVo.setDiamondNum(memberData.stream().map(GuildPolicy2MemberVo::getDiamondNum).reduce(BigDecimal.ZERO, BigDecimal::add));
guildPolicy2AgencyVo.setGuildSalary(salaryVo);
} }
return BusiResult.success(guildPolicy2AgencyVo); return BusiResult.success(guildPolicy2AgencyVo);
} }
@@ -368,7 +415,7 @@ public class GuildPolicy2Service {
} }
public void settle(PartitionEnum partitionEnum, String cycleDate) { public void settle(PartitionEnum partitionEnum, String cycleDate) {
if (!GUILD_POLICY2.equals(partitionEnum.getClanMode())) { if (!GUILD_POLICY2.equals(partitionEnum.getClanMode()) || StringUtils.isEmpty(cycleDate)) {
log.info("GuildPolicy2Service.settle partitionEnum:{}, clanMode:{} cycleDate:{}", partitionEnum, partitionEnum.getClanMode(), cycleDate); log.info("GuildPolicy2Service.settle partitionEnum:{}, clanMode:{} cycleDate:{}", partitionEnum, partitionEnum.getClanMode(), cycleDate);
return; return;
} }
@@ -378,6 +425,14 @@ public class GuildPolicy2Service {
log.info("Policy2Settle.emptyData"); log.info("Policy2Settle.emptyData");
return; return;
} }
Date cycleBegin = DateUtil.beginOfDay(DateUtil.parseDate(cycleDate));
Date cycleEnd = DateUtil.endOfMonth(cycleBegin);
Date beginOfMonth = DateTimeUtil.convertToEastEightZone(cycleBegin, partitionEnum.getZoneId());
Date endOfMonth = DateTimeUtil.convertToEastEightZone(cycleEnd, partitionEnum.getZoneId());
List<Long> uids = list.stream().map(GuildDiamondStatisticsPolicy2Settle::getUid).collect(Collectors.toList());
Map<Long, ChargeRecord> refundGroupUidDateMap = chargeRecordService.getRefundGroupUidDateMap(uids, beginOfMonth, endOfMonth);
Date date = new Date(); Date date = new Date();
TreeMap<BigDecimal, GuildDiamondWagePolicy2> diamondWageMap = guildDiamondWagePolicy2Service.getDiamondWageMap(partitionId); TreeMap<BigDecimal, GuildDiamondWagePolicy2> diamondWageMap = guildDiamondWagePolicy2Service.getDiamondWageMap(partitionId);
for (GuildDiamondStatisticsPolicy2Settle settle : list) { for (GuildDiamondStatisticsPolicy2Settle settle : list) {
@@ -391,6 +446,8 @@ public class GuildPolicy2Service {
settle.setAnchorSalary(diamondWagePolicy2.getAnchorDiamondSalary()); settle.setAnchorSalary(diamondWagePolicy2.getAnchorDiamondSalary());
settle.setOwnerSalary(diamondWagePolicy2.getOwnerSalary()); settle.setOwnerSalary(diamondWagePolicy2.getOwnerSalary());
settle.setAnchorMicSalary(diamondWagePolicy2.getAnchorMicSalary()); settle.setAnchorMicSalary(diamondWagePolicy2.getAnchorMicSalary());
ChargeRecord chargeRecord = refundGroupUidDateMap.get(settle.getUid());
settle.setIssueSalary(this.getIssiueSalary(chargeRecord));
} }
guildDiamondStatisticsPolicy2SettleService.saveBatch(list); guildDiamondStatisticsPolicy2SettleService.saveBatch(list);
} }

View File

@@ -59,4 +59,30 @@
group by gm.id group by gm.id
ORDER BY diamondNum desc ORDER BY diamondNum desc
</select> </select>
<select id="groupByMemberStatDate" resultType="com.accompany.business.model.guildpolicy2.GuildDiamondStatisticsPolicy2Settle">
select
cycle_date cycleDate,
partition_id partitionId,
guild_member_id guildMemberId,
guild_id guildId,
uid uid,
diamond_num diamondNum,
mic_minutes micMinutes,
mic_day micDay,
issue_salary issueSalary,
anchor_salary anchorSalary,
anchor_mic_salary anchorMicSalary,
owner_salary ownerSalary
from guild_diamond_statistics_policy2_settle
where partition_id = #{partitionId}
and cycle_date = #{cycleDate}
<if test="guildMemberId != null">
and guild_member_id = #{guildMemberId}
</if>
<if test="guildId != null">
and guild_id = #{guildId}
</if>
group by guild_member_id
</select>
</mapper> </mapper>