家族-定时任务-钻石结算-bugfix

This commit is contained in:
khalil
2024-10-12 11:11:15 +08:00
parent c953edaf9b
commit 4a77384320
6 changed files with 38 additions and 15 deletions

View File

@@ -18,6 +18,7 @@ import com.accompany.business.model.vip.VipInfo;
import com.accompany.business.mybatismapper.GiftSendRecordMapper;
import com.accompany.business.service.activity.WeekStarService;
import com.accompany.business.service.apple.IOSRefundV2Service;
import com.accompany.business.service.clan.FamilyDiamondSettlementService;
import com.accompany.business.service.gift.GiftMessageService;
import com.accompany.business.service.level.LevelService;
import com.accompany.business.service.room.RoomManageService;
@@ -98,7 +99,7 @@ public class MyApiService {
@Autowired
private UserLevelExperienceExportService userLevelExperienceExportService;
@Autowired
private WeekStarService weekStarService;
private FamilyDiamondSettlementService familyDiamondSettlementService;
private Map<String, Future> futureMap = new ConcurrentHashMap<>();
@Autowired
@@ -378,4 +379,8 @@ public class MyApiService {
}
public void familyDiamondSettlement() {
familyDiamondSettlementService.settlement(null);
}
}

View File

@@ -142,5 +142,13 @@ public class MyApiController {
return BusiResult.success();
}
@GetMapping("/familyDiamondSettlement")
public BusiResult<Void> familyDiamondSettlement(Long roomId) {
if (null == roomId || !roomId.equals(603L)) {
throw new AdminServiceException(BusiStatus.PARAMERROR);
}
myApiService.familyDiamondSettlement();
return BusiResult.success();
}
}

View File

@@ -19,5 +19,5 @@ public interface FamilyMemberMapper extends BaseMapper<FamilyMember> {
FamilyMember selectFamilyMemberByTime(@Param("familyId") Integer familyId, @Param("uid") Long uid, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
List<FamilyMember> listValidFamilyMemberByPartitionId(@Param("familyId") Integer partitionId);
List<FamilyMember> listValidFamilyMemberByPartitionId(@Param("partitionId") Integer partitionId);
}

View File

@@ -13,6 +13,7 @@ import com.accompany.business.service.record.BillRecordService;
import com.accompany.common.utils.DateTimeUtil;
import com.accompany.core.enumeration.BillObjTypeEnum;
import com.accompany.core.enumeration.PartitionEnum;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
@@ -22,9 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.stream.Collectors;
@Slf4j
@@ -41,10 +40,9 @@ public class FamilyDiamondSettlementService {
private FamilyDiamondSettlementPurseService familyDiamondSettlementPurseService;
@Autowired
private BillRecordService billRecordService;
@Resource(name = "bizExecutor")
private ThreadPoolExecutor bizExecutor;
public void settlement(Integer waitSecond) throws InterruptedException {
@SneakyThrows
public void settlement(Integer waitSecond) {
//当天零点再前推1秒相当于昨天23:59:59 给客户端周查询
Date now = DateTimeUtil.addSeconds(DateTimeUtil.getBeginTimeOfDay(new Date()),-1);
@@ -95,6 +93,8 @@ public class FamilyDiamondSettlementService {
FamilyMemberDiamondSettlementRecordMapper familyMemberDiamondSettlementRecordMapper = batchSqlSession.getMapper(FamilyMemberDiamondSettlementRecordMapper.class);
try {
List<FamilyMemberDiamondSettlementRecord> recordList = new ArrayList<>();
int memberIndex = 0;
for (FamilyMember familyMember: familyMemberList){
Long uid = familyMember.getUid();
@@ -113,20 +113,22 @@ public class FamilyDiamondSettlementService {
settlementRecord.setUid(uid);
settlementRecord.setDiamondNum(golds);
settlementRecord.setCreateTime(now);
familyMemberDiamondSettlementRecordMapper.insert(settlementRecord);
bizExecutor.execute(() -> {
billRecordService.insertGeneralBillRecord(familyMember.getUid(), familyMember.getUid(), settlementRecord.getId().toString(),
BillObjTypeEnum.FAMILY_DIAMOND_SETTLEMENT, golds);
});
recordList.add(settlementRecord);
familyMemberDiamondSettlementRecordMapper.insert(settlementRecord);
if (memberIndex > 0 && memberIndex % batchSize == 0){
batchSqlSession.commit();
saveBillRecord(recordList);
}
memberIndex ++;
}
batchSqlSession.commit();
saveBillRecord(recordList);
} catch (Exception e){
batchSqlSession.rollback();
log.error("[家族金币结算] 扣成员金币发生异常回滚", e);
@@ -140,4 +142,12 @@ public class FamilyDiamondSettlementService {
}
private void saveBillRecord(List<FamilyMemberDiamondSettlementRecord> recordList) {
recordList.parallelStream().forEach(record -> {
billRecordService.insertGeneralBillRecord(record.getUid(), record.getUid(), record.getId().toString(),
BillObjTypeEnum.FAMILY_DIAMOND_SETTLEMENT, record.getDiamondNum());
});
recordList.clear();
}
}

View File

@@ -41,11 +41,11 @@
<select id="listValidFamilyMemberByPartitionId"
resultType="com.accompany.business.model.family.FamilyMember">
select family_id, uid, role_type, create_time, update_time, enable
select fm.id, family_id, fm.uid, role_type, fm.create_time, fm.update_time, enable
from family_member fm
inner join users u on fm.uid = u.uid
and fm.enable = 1
and u.partition_id = #{partition_id}
and u.partition_id = #{partitionId}
</select>
</mapper>

View File

@@ -18,7 +18,7 @@ public class FamilyDiamondSettlementTask {
* 周一凌晨0点
* */
@Scheduled(cron = "0 0 0 1,16 * *")
public void familyDiamondSettlement() throws InterruptedException {
public void familyDiamondSettlement() {
long now = System.currentTimeMillis();
log.info("familyGoldSettlement() start..........");