家族-定时任务-分区进行钻石清除

This commit is contained in:
2025-09-22 11:09:59 +08:00
parent c66ca51b94
commit 8837bf906c
3 changed files with 34 additions and 8 deletions

View File

@@ -12,6 +12,8 @@ public class FamilyMemberDiamondSettlementRecord {
@TableId(type = IdType.AUTO)
private Long id;
private Long familyMemberId;
private String cycleDate;
private Integer partitionId;
private Integer familyId;
private Byte roleType;
private Long uid;

View File

@@ -9,7 +9,7 @@ import com.accompany.business.service.family.FamilyMemberService;
import com.accompany.business.service.purse.FamilyDiamondSettlementPurseService;
import com.accompany.business.service.purse.UserPurseService;
import com.accompany.business.service.record.BillRecordService;
import com.accompany.common.utils.DateTimeUtil;
import com.accompany.business.util.CycleTimeUtil;
import com.accompany.core.enumeration.BillObjTypeEnum;
import com.accompany.core.enumeration.PartitionEnum;
import lombok.SneakyThrows;
@@ -21,6 +21,7 @@ import org.redisson.api.RLocalCachedMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Date;
@@ -44,11 +45,16 @@ public class FamilyDiamondSettlementService {
private BillRecordService billRecordService;
@SneakyThrows
public void settlement(Integer waitSecond) {
//当天零点再前推1秒相当于昨天23:59:59 给客户端周查询
Date now = DateTimeUtil.addSeconds(DateTimeUtil.getBeginTimeOfDay(new Date()),-1);
public void settlement(Integer partitionId, String cycleDate, Integer waitSecond) {
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId);
List<FamilyMember> familyMemberList = familyMemberService.listValidFamilyMemberByPartitionId(PartitionEnum.ENGLISH.getId());
if (!StringUtils.hasText(cycleDate)){
cycleDate = CycleTimeUtil.getLastDateByZoneId(partitionEnum.getZoneId());
}
Date now = new Date();
List<FamilyMember> familyMemberList = familyMemberService.listValidFamilyMemberByPartitionId(partitionEnum.getId());
if (CollectionUtils.isEmpty(familyMemberList)){
return;
}
@@ -110,6 +116,8 @@ public class FamilyDiamondSettlementService {
//结算记录
FamilyMemberDiamondSettlementRecord settlementRecord = new FamilyMemberDiamondSettlementRecord();
settlementRecord.setFamilyMemberId(familyMember.getId());
settlementRecord.setCycleDate(cycleDate);
settlementRecord.setPartitionId(familyMember.getPartitionId());
settlementRecord.setFamilyId(familyMember.getFamilyId());
settlementRecord.setRoleType(familyMember.getRoleType());
settlementRecord.setUid(uid);

View File

@@ -1,13 +1,14 @@
package com.accompany.scheduler.task;
import com.accompany.business.service.clan.FamilyDiamondSettlementService;
import com.accompany.core.enumeration.PartitionEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Slf4j
//@Component
@Component
public class FamilyDiamondSettlementTask {
@Autowired
@@ -18,11 +19,26 @@ public class FamilyDiamondSettlementTask {
* 周一凌晨0点
* */
@Scheduled(cron = "0 0 0 1,16 * *")
public void familyDiamondSettlement() {
public void familyDiamondSettlementEn() {
long now = System.currentTimeMillis();
log.info("familyGoldSettlement() start..........");
service.settlement(null);
service.settlement(PartitionEnum.ENGLISH.getId(), null, null);
long finish = System.currentTimeMillis();
log.info("familyGoldSettlement() cost {}ms finish..........", finish-now);
}
/**
* 公会钻石结算
* 周一凌晨0点
* */
@Scheduled(cron = "0 0 0 1,16 * *", zone = "Asia/Riyadh")
public void familyDiamondSettlementTr() {
long now = System.currentTimeMillis();
log.info("familyGoldSettlement() start..........");
service.settlement(PartitionEnum.TURKEY.getId(), null, null);
long finish = System.currentTimeMillis();
log.info("familyGoldSettlement() cost {}ms finish..........", finish-now);