From 4a7738432002a8e747b9b7d4300b143d611d3c26 Mon Sep 17 00:00:00 2001 From: khalil Date: Sat, 12 Oct 2024 11:11:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=B6=E6=97=8F-=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1-=E9=92=BB=E7=9F=B3=E7=BB=93=E7=AE=97-bugfix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/service/api/MyApiService.java | 7 ++++- .../admin/controller/api/MyApiController.java | 8 +++++ .../family/FamilyMemberMapper.java | 2 +- .../clan/FamilyDiamondSettlementService.java | 30 ++++++++++++------- .../sqlmappers/FamilyMemberMapper.xml | 4 +-- .../task/FamilyDiamondSettlementTask.java | 2 +- 6 files changed, 38 insertions(+), 15 deletions(-) diff --git a/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/api/MyApiService.java b/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/api/MyApiService.java index 873178ac4..b5c68a988 100644 --- a/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/api/MyApiService.java +++ b/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/api/MyApiService.java @@ -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 futureMap = new ConcurrentHashMap<>(); @Autowired @@ -378,4 +379,8 @@ public class MyApiService { } + public void familyDiamondSettlement() { + familyDiamondSettlementService.settlement(null); + } + } diff --git a/accompany-admin/accompany-admin-web/src/main/java/com/accompany/admin/controller/api/MyApiController.java b/accompany-admin/accompany-admin-web/src/main/java/com/accompany/admin/controller/api/MyApiController.java index 05c2f3952..e11ad3406 100644 --- a/accompany-admin/accompany-admin-web/src/main/java/com/accompany/admin/controller/api/MyApiController.java +++ b/accompany-admin/accompany-admin-web/src/main/java/com/accompany/admin/controller/api/MyApiController.java @@ -142,5 +142,13 @@ public class MyApiController { return BusiResult.success(); } + @GetMapping("/familyDiamondSettlement") + public BusiResult familyDiamondSettlement(Long roomId) { + if (null == roomId || !roomId.equals(603L)) { + throw new AdminServiceException(BusiStatus.PARAMERROR); + } + myApiService.familyDiamondSettlement(); + return BusiResult.success(); + } } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/family/FamilyMemberMapper.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/family/FamilyMemberMapper.java index bce076bea..06dfe27e4 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/family/FamilyMemberMapper.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/family/FamilyMemberMapper.java @@ -19,5 +19,5 @@ public interface FamilyMemberMapper extends BaseMapper { FamilyMember selectFamilyMemberByTime(@Param("familyId") Integer familyId, @Param("uid") Long uid, @Param("startTime") Date startTime, @Param("endTime") Date endTime); - List listValidFamilyMemberByPartitionId(@Param("familyId") Integer partitionId); + List listValidFamilyMemberByPartitionId(@Param("partitionId") Integer partitionId); } \ No newline at end of file diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/clan/FamilyDiamondSettlementService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/clan/FamilyDiamondSettlementService.java index 1ff76d6ad..6b7596cad 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/clan/FamilyDiamondSettlementService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/clan/FamilyDiamondSettlementService.java @@ -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 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 recordList) { + recordList.parallelStream().forEach(record -> { + billRecordService.insertGeneralBillRecord(record.getUid(), record.getUid(), record.getId().toString(), + BillObjTypeEnum.FAMILY_DIAMOND_SETTLEMENT, record.getDiamondNum()); + }); + recordList.clear(); + } + } diff --git a/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/FamilyMemberMapper.xml b/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/FamilyMemberMapper.xml index 882643a41..1104fdb4d 100644 --- a/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/FamilyMemberMapper.xml +++ b/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/FamilyMemberMapper.xml @@ -41,11 +41,11 @@ \ No newline at end of file diff --git a/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/FamilyDiamondSettlementTask.java b/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/FamilyDiamondSettlementTask.java index 3b0e24472..50e0e8b09 100644 --- a/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/FamilyDiamondSettlementTask.java +++ b/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/FamilyDiamondSettlementTask.java @@ -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..........");