From c39729f949f008c578bf77f25d5b0c1fee342f0b Mon Sep 17 00:00:00 2001 From: zayac Date: Tue, 2 Jul 2024 00:34:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=8D=E8=83=BD=E6=AD=A3?= =?UTF-8?q?=E7=A1=AE=E6=98=BE=E7=A4=BA=E6=98=A8=E6=97=A5=E8=B4=9F=E7=9B=88?= =?UTF-8?q?=E5=88=A9=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resp/team/TeamAccountWithChange.java | 2 + .../com/zayac/admin/schedule/DailyReport.java | 2 +- .../zayac/admin/service/DepositService.java | 60 ++++++++++++++----- .../admin/service/RegistrationService.java | 6 +- .../admin/service/TelegramMessageService.java | 17 +++--- 5 files changed, 61 insertions(+), 26 deletions(-) diff --git a/zayac-admin-agent/src/main/java/com/zayac/admin/resp/team/TeamAccountWithChange.java b/zayac-admin-agent/src/main/java/com/zayac/admin/resp/team/TeamAccountWithChange.java index d5375bb4..619182a7 100644 --- a/zayac-admin-agent/src/main/java/com/zayac/admin/resp/team/TeamAccountWithChange.java +++ b/zayac-admin-agent/src/main/java/com/zayac/admin/resp/team/TeamAccountWithChange.java @@ -26,4 +26,6 @@ import lombok.NoArgsConstructor; public class TeamAccountWithChange extends TeamAccount { private int newRegisterNum; private int newDepositNum; + private int nowDateRegNum; + private int nowDateDepNum; } diff --git a/zayac-admin-agent/src/main/java/com/zayac/admin/schedule/DailyReport.java b/zayac-admin-agent/src/main/java/com/zayac/admin/schedule/DailyReport.java index 6898f602..7cbf3674 100644 --- a/zayac-admin-agent/src/main/java/com/zayac/admin/schedule/DailyReport.java +++ b/zayac-admin-agent/src/main/java/com/zayac/admin/schedule/DailyReport.java @@ -176,7 +176,7 @@ public class DailyReport { //保存数据 saveData(ministerUser, deptUsers, yesterday, accountNameWithTopAgentName); //getPayFailedMember(ministerUser, accountUsernameToUserMap, yesterday); - sendFinance(yesterday, accountUsernameToUserMap, ministerUser); + sendFinance(LocalDate.now(), accountUsernameToUserMap, ministerUser); }); log.info("dailySummarize finished at {}", LocalDateTime.now()); } diff --git a/zayac-admin-agent/src/main/java/com/zayac/admin/service/DepositService.java b/zayac-admin-agent/src/main/java/com/zayac/admin/service/DepositService.java index 261015aa..8ced3fde 100644 --- a/zayac-admin-agent/src/main/java/com/zayac/admin/service/DepositService.java +++ b/zayac-admin-agent/src/main/java/com/zayac/admin/service/DepositService.java @@ -23,6 +23,7 @@ import com.zayac.admin.constant.ApiPathConstants; import com.zayac.admin.req.ActiveListReq; import com.zayac.admin.req.MemberDetailsReq; import com.zayac.admin.req.PayRecordsListReq; +import com.zayac.admin.req.team.TeamInfoReq; import com.zayac.admin.req.team.TeamMemberListReq; import com.zayac.admin.resp.*; import com.zayac.admin.resp.team.Team; @@ -40,10 +41,8 @@ import java.math.BigDecimal; import java.time.Duration; import java.time.LocalDate; import java.time.LocalDateTime; -import java.util.Comparator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.time.LocalTime; +import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicInteger; @@ -58,6 +57,7 @@ import static com.zayac.admin.utils.CommonUtils.findChangedTeamAccount; public class DepositService { private final CompletableFutureWebClientService completableFutureWebClientService; private final TelegramMessageService telegramMessageService; + private final TeamService teamService; private static final String BOT_TOKEN = "6013830443:AAHUOS4v6Ln19ziZkH-L28-HZQLJrGcvhto"; private static final Long TELEGRAM_CHAT_ID = 6054562838L; @@ -115,8 +115,29 @@ public class DepositService { return completableFutureWebClientService .fetchDataForAccount(account, ApiPathConstants.ACTIVE_LIST, req, new ParameterizedTypeReference>>>() { }) - .thenApply(Pagination::getList) + .thenApply(response -> { + if (response == null || response.getList() == null) { + log.warn("Fetched active list responses are null"); + return Collections.emptyList(); + } + return response.getList(); + }) .thenComposeAsync(activeListResps -> { + if (activeListResps.isEmpty()) { + TeamInfoReq teamInfoReq = TeamInfoReq.builder() + .startDate(nowDate.atStartOfDay()) + .endDate(nowDate.atTime(LocalTime.MAX)) + .agentName(accountWithChange.getAgentName()) + .pageNum(1) + .pageSize(1) + .build(); + log.info("未能获取到{}首存信息", accountWithChange.getAgentName()); + CompletableFuture teamInfoFuture = teamService.getLatestTeamInfoAsync(account, teamInfoReq) + .thenAcceptAsync(team -> accountWithChange.setNowDateDepNum(team.getList().get(0).getFirstDepositNum()), asyncTaskExecutor); + + return teamInfoFuture.thenApply(v -> Collections.emptyList()); + } + // 过滤并排序 List sortedList = activeListResps.stream() .filter(resp -> resp.getFirstPayTime() != null && resp.getFirstPayTime() @@ -124,6 +145,11 @@ public class DepositService { .sorted(Comparator.comparing(ActiveListResp::getFirstPayTime)) .collect(Collectors.toList()); + long nowDateNewDep = activeListResps.stream() + .filter(mem -> mem.getFirstPayTime().isAfter(nowDate.atStartOfDay())) + .count(); + accountWithChange.setNowDateDepNum((int)nowDateNewDep); + // 截取后N个元素 List activeListRespList = ListUtil.sub(sortedList, -accountWithChange .getNewDepositNum(), sortedList.size()); @@ -144,12 +170,16 @@ public class DepositService { return completableFutureWebClientService .fetchDataForAccount(account, ApiPathConstants.PAY_RECORDS_LIST_URL, payRecordsListReq, new ParameterizedTypeReference>>>() { }) - .thenApply(Pagination::getList) - .thenAcceptAsync(payRecords -> { - if (payRecords != null && !payRecords.isEmpty()) { - resp.setDeposit(payRecords.get(0).getScoreAmount()); - } else { + .thenApply(response -> { + if (response == null || response.getList() == null) { log.warn("No pay records found for member: {}", resp.getName()); + return Collections.emptyList(); + } + return response.getList(); + }) + .thenAcceptAsync(payRecords -> { + if (!payRecords.isEmpty()) { + resp.setDeposit(payRecords.get(0).getScoreAmount()); } }, asyncTaskExecutor); } @@ -178,8 +208,7 @@ public class DepositService { } private String buildNotificationMessage(TeamAccountWithChange accountWithChange, String depositResults) { - return telegramMessageService.buildDepositMessage(accountWithChange.getAgentName(), accountWithChange - .getNewDepositNum(), depositResults, accountWithChange.getFirstDepositNum()); + return telegramMessageService.buildDepositMessage(accountWithChange, depositResults); } private void sendNotifications(TeamAccountWithChange accountWithChange, @@ -187,7 +216,8 @@ public class DepositService { Map accountUsernameToUserMap, String notification) { var currUser = accountUsernameToUserMap.get(accountWithChange.getAgentName()); - if (currUser != null && DisEnableStatusEnum.ENABLE.equals(currUser.getNeedNotify())) { + if (currUser != null && DisEnableStatusEnum.ENABLE.equals(currUser.getNeedNotify()) && !"guanzi".equals(currUser + .getUsername())) { String botToken = StrUtil.isEmpty(currUser.getBotToken()) ? ministerUser.getBotToken() : currUser.getBotToken(); @@ -289,9 +319,7 @@ public class DepositService { UserWithRolesAndAccountsResp ministerUser, Map accountUsernameToUserMap, StringBuilder depositResults) { - String notification = telegramMessageService.buildDepositMessage(accountWithChange - .getAgentName(), accountWithChange.getNewDepositNum(), depositResults.toString(), accountWithChange - .getFirstDepositNum()); + String notification = telegramMessageService.buildDepositMessage(accountWithChange, depositResults.toString()); var currUser = accountUsernameToUserMap.get(accountWithChange.getAgentName()); if (currUser != null && DisEnableStatusEnum.ENABLE.equals(currUser.getNeedNotify())) { String botToken = StrUtil.isEmpty(currUser.getBotToken()) diff --git a/zayac-admin-agent/src/main/java/com/zayac/admin/service/RegistrationService.java b/zayac-admin-agent/src/main/java/com/zayac/admin/service/RegistrationService.java index b6dff2df..7febe54b 100644 --- a/zayac-admin-agent/src/main/java/com/zayac/admin/service/RegistrationService.java +++ b/zayac-admin-agent/src/main/java/com/zayac/admin/service/RegistrationService.java @@ -77,8 +77,10 @@ public class RegistrationService { completableFutureWebClientService .fetchDataForAccount(account, ApiPathConstants.MEMBER_TEAM_LIST_URL, memberListReq, new ParameterizedTypeReference>>>() { }) - .thenApply(MemberPagination::getList) - .thenAcceptAsync(members -> { + //.thenApply(MemberPagination::getList) + .thenAcceptAsync(memberPagination -> { + List members = memberPagination.getList(); + accountWithChange.setNowDateRegNum(memberPagination.getTotal()); log.info("Successfully get [{}] new registered members for {}", members .size(), accountWithChange.getAgentName()); if (CollUtil.isNotEmpty(members)) { diff --git a/zayac-admin-agent/src/main/java/com/zayac/admin/service/TelegramMessageService.java b/zayac-admin-agent/src/main/java/com/zayac/admin/service/TelegramMessageService.java index b1344136..b5e6ad84 100644 --- a/zayac-admin-agent/src/main/java/com/zayac/admin/service/TelegramMessageService.java +++ b/zayac-admin-agent/src/main/java/com/zayac/admin/service/TelegramMessageService.java @@ -91,10 +91,10 @@ public class TelegramMessageService { String memberNames = accountMembers.stream().map(TeamMember::getName).collect(Collectors.joining(", ")); if (currUser != null) { - return String.format("👏 [%s] %s 注册: %d 会员: `%s` 总数:*%d*", currUser.getNickname(), teamAccount + return String.format("👏 [%s] %s 注册: %d 会员: `%s` 本月:*%d*", currUser.getNickname(), teamAccount .getAgentName(), accountMembers.size(), memberNames, teamAccount.getSubMemberNum()); } - return String.format("👏 %s 注册: %d 会员: `%s` 总数:*%d*", teamAccount.getAgentName(), accountMembers + return String.format("👏 %s 注册: %d 会员: `%s` 本月:*%d*", teamAccount.getAgentName(), accountMembers .size(), memberNames, teamAccount.getSubMemberNum()); } @@ -103,16 +103,19 @@ public class TelegramMessageService { String memberNames = accountMembers.stream() .map(member -> "`" + member.getName() + "`") .collect(Collectors.joining(", ")); - return String.format("👏 %s 注册: %d 会员: %s 总数:*%d*", teamAccount.getAgentName(), accountMembers - .size(), memberNames, teamAccount.getSubMemberNum()); + return String.format("👏 %s 注册: %d 今日: *%d* 本月:*%d* 会员: %s ", teamAccount.getAgentName(), accountMembers + .size(), teamAccount.getNowDateRegNum(), teamAccount.getSubMemberNum(), memberNames); } - public String buildDepositMessage(String agentName, int newDepositNum, String depositResults, int firstDepositNum) { - return String.format("🎉 %s 首存: *%d* %s 总数: *%d*", agentName, newDepositNum, depositResults, firstDepositNum); + public String buildDepositMessage(TeamAccountWithChange accountWithChange, String memberInfo) { + + return String.format("🎉 %s 首存: *%d* 今日: *%d* 本月: *%d* \n%s", accountWithChange + .getAgentName(), accountWithChange.getNewDepositNum(), accountWithChange + .getNowDateDepNum(), accountWithChange.getFirstDepositNum(), memberInfo); } public String buildDepositResultsMessage(String name, BigDecimal scoreAmount) { - return String.format("会员: `%s`, 首存金额: *%s*\n", name, scoreAmount); + return String.format("会员: `%s`, 金额: *%s*\n", name, scoreAmount); } public String buildFailedPayMessage(String accountName, List accountMembers) {