新增了负盈利消息通知
This commit is contained in:
parent
daa6b29579
commit
92607bcaee
@ -16,13 +16,20 @@
|
||||
|
||||
package com.zayac.admin.agent.mapper;
|
||||
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
|
||||
import com.zayac.admin.agent.model.entity.FinanceDO;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 代理线财务报 Mapper
|
||||
*
|
||||
* @author zayac
|
||||
* @since 2024/06/04 17:14
|
||||
*/
|
||||
public interface FinanceMapper extends BaseMapper<FinanceDO> {}
|
||||
public interface FinanceMapper extends BaseMapper<FinanceDO> {
|
||||
@Select("SELECT * FROM agent_finance WHERE DATE(create_time) = #{date}")
|
||||
List<FinanceDO> selectFinancesByCreateTime(LocalDate date);
|
||||
}
|
@ -23,6 +23,7 @@ import com.zayac.admin.agent.model.req.FinanceReq;
|
||||
import com.zayac.admin.agent.model.resp.FinanceDetailResp;
|
||||
import com.zayac.admin.agent.model.resp.FinanceResp;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -33,4 +34,6 @@ import java.util.List;
|
||||
*/
|
||||
public interface FinanceService extends BaseService<FinanceResp, FinanceDetailResp, FinanceQuery, FinanceReq> {
|
||||
void addAll(List<FinanceDO> financeReqList);
|
||||
|
||||
List<FinanceDO> getFinanceByDate(LocalDate yesterday);
|
||||
}
|
@ -29,6 +29,7 @@ import com.zayac.admin.agent.model.resp.FinanceDetailResp;
|
||||
import com.zayac.admin.agent.model.resp.FinanceResp;
|
||||
import com.zayac.admin.agent.service.FinanceService;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -44,4 +45,16 @@ public class FinanceServiceImpl extends BaseServiceImpl<FinanceMapper, FinanceDO
|
||||
baseMapper.insertBatch(financeReqList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据日期查询所有的财务信息
|
||||
*
|
||||
* @param date 日期
|
||||
* @return List<FinanceDO>
|
||||
*/
|
||||
@Override
|
||||
public List<FinanceDO> getFinanceByDate(LocalDate date) {
|
||||
|
||||
return baseMapper.selectFinancesByCreateTime(date);
|
||||
}
|
||||
|
||||
}
|
@ -62,7 +62,7 @@ import java.util.stream.Collectors;
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@Profile("dev")
|
||||
@Profile("prod")
|
||||
public class DailyReport {
|
||||
private final TeamService teamService;
|
||||
private final DeptService deptService;
|
||||
@ -136,7 +136,9 @@ public class DailyReport {
|
||||
sendDailyReport(yesterday, yesterday.atStartOfDay(), LocalDateTime
|
||||
.of(yesterday, LocalTime.MAX), ministerUser, assistants, deptUsers);
|
||||
getPayFailedMember(ministerUser, accountUsernameToUserMap, yesterday);
|
||||
//保存金融数据
|
||||
saveData(ministerUser, deptUsers, yesterday);
|
||||
sendFinance(yesterday, accountUsernameToUserMap, ministerUser);
|
||||
});
|
||||
}
|
||||
|
||||
@ -164,6 +166,23 @@ public class DailyReport {
|
||||
});
|
||||
}
|
||||
|
||||
public void sendFinance(LocalDate date,
|
||||
Map<String, UserWithRolesAndAccountsResp> userWithRolesAndAccountsRespMap,
|
||||
UserWithRolesAndAccountsResp ministerUser) {
|
||||
List<FinanceDO> finances = financeService.getFinanceByDate(date);
|
||||
Map<String, List<FinanceDO>> userFinances = finances.stream()
|
||||
.filter(finance -> userWithRolesAndAccountsRespMap.containsKey(finance.getAgentName()))
|
||||
.collect(Collectors.groupingBy(FinanceDO::getAgentName));
|
||||
userFinances.forEach((agentName, userFinancesList) -> {
|
||||
UserWithRolesAndAccountsResp user = userWithRolesAndAccountsRespMap.get(agentName);
|
||||
if (user != null && DisEnableStatusEnum.ENABLE.equals(user.getNeedNotify())) {
|
||||
String message = telegramMessageService.buildFinanceMessage(userFinancesList);
|
||||
String botToken = StrUtil.isEmpty(user.getBotToken()) ? ministerUser.getBotToken() : user.getBotToken();
|
||||
telegramMessageService.sendMessage(botToken, user.getReportIds(), message);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询存款失败用户,并发送消息
|
||||
*
|
||||
@ -344,10 +363,11 @@ public class DailyReport {
|
||||
rows.add(new String[] {"总计", String.valueOf(totals[0]), String.valueOf(totals[1]),
|
||||
getPercent(totals[1], totals[0])});
|
||||
String message = TableFormatter.formatTableAsHtml(rows);
|
||||
telegramMessageService.sendMessage("6013830443:AAHUOS4v6Ln19ziZkH-L28-HZQLJrGcvhto", 6054562838L, message);
|
||||
if (ministerUser.getNeedNotify() == DisEnableStatusEnum.ENABLE) {
|
||||
telegramMessageService.sendMessage(ministerUser.getBotToken(), ministerUser.getReportIds(), message);
|
||||
}
|
||||
telegramMessageService.sendMessage("6013830443:AAHUOS4v6Ln19ziZkH-L28-HZQLJrGcvhto", 6054562838L, message);
|
||||
|
||||
//发送消息给助理
|
||||
if (!CollUtil.isEmpty(assistants)) {
|
||||
assistants.forEach(assistant -> {
|
||||
|
@ -108,7 +108,7 @@ public class DepositService {
|
||||
|
||||
return paginationCompletableFuture.thenApply(Pagination::getList)
|
||||
.thenComposeAsync(payRecords -> processPayRecords(payRecords, accountWithChange, account, nowDate, nowDateTime, depositResults, depositCounter, asyncTaskExecutor), asyncTaskExecutor)
|
||||
.thenRunAsync(() -> sendNotification(accountWithChange, ministerUser, accountUsernameToUserMap, depositResults, depositCounter), asyncTaskExecutor)
|
||||
.thenRunAsync(() -> sendNotification(accountWithChange, ministerUser, accountUsernameToUserMap, depositResults), asyncTaskExecutor)
|
||||
.exceptionally(ex -> {
|
||||
log.error("Error processing account changes for agent {}: {}", accountWithChange.getAgentName(), ex
|
||||
.getMessage());
|
||||
@ -169,21 +169,18 @@ public class DepositService {
|
||||
private void sendNotification(TeamAccountWithChange accountWithChange,
|
||||
UserWithRolesAndAccountsResp ministerUser,
|
||||
Map<String, UserWithRolesAndAccountsResp> accountUsernameToUserMap,
|
||||
StringBuilder depositResults,
|
||||
AtomicInteger depositCounter) {
|
||||
if (depositCounter.get() > 0) {
|
||||
String notification = telegramMessageService.buildDepositMessage(accountWithChange
|
||||
.getAgentName(), accountWithChange.getNewDepositNum(), depositResults.toString(), accountWithChange
|
||||
.getFirstDepositNum());
|
||||
var currUser = accountUsernameToUserMap.get(accountWithChange.getAgentName());
|
||||
if (currUser != null && DisEnableStatusEnum.ENABLE.equals(currUser.getNeedNotify())) {
|
||||
String botToken = StrUtil.isEmpty(currUser.getBotToken())
|
||||
? ministerUser.getBotToken()
|
||||
: currUser.getBotToken();
|
||||
telegramMessageService.sendMessage(botToken, currUser.getRegAndDepIds(), notification);
|
||||
}
|
||||
telegramMessageService.sendMessage(BOT_TOKEN, TELEGRAM_CHAT_ID, notification);
|
||||
StringBuilder depositResults) {
|
||||
String notification = telegramMessageService.buildDepositMessage(accountWithChange
|
||||
.getAgentName(), accountWithChange.getNewDepositNum(), depositResults.toString(), accountWithChange
|
||||
.getFirstDepositNum());
|
||||
var currUser = accountUsernameToUserMap.get(accountWithChange.getAgentName());
|
||||
if (currUser != null && DisEnableStatusEnum.ENABLE.equals(currUser.getNeedNotify())) {
|
||||
String botToken = StrUtil.isEmpty(currUser.getBotToken())
|
||||
? ministerUser.getBotToken()
|
||||
: currUser.getBotToken();
|
||||
telegramMessageService.sendMessage(botToken, currUser.getRegAndDepIds(), notification);
|
||||
}
|
||||
telegramMessageService.sendMessage(BOT_TOKEN, TELEGRAM_CHAT_ID, notification);
|
||||
}
|
||||
|
||||
private CompletableFuture<Member> fetchMemberDetails(AccountResp account,
|
||||
|
@ -79,7 +79,7 @@ public class RegistrationService {
|
||||
.collect(Collectors.groupingBy(TeamMember::getTopAgentName));
|
||||
groupByTopAgentName.forEach((accountName, accountMembers) -> {
|
||||
String notification = telegramMessageService
|
||||
.buildRegistrationMessage(accountName, accountMembers, teamAccountMap.get(accountName));
|
||||
.buildRegistrationMessage(accountMembers, teamAccountMap.get(accountName));
|
||||
var currUser = accountUsernameToUserMap.get(accountName);
|
||||
if (currUser != null && DisEnableStatusEnum.ENABLE.equals(currUser.getNeedNotify())) {
|
||||
String botToken = StrUtil.isEmpty(currUser.getBotToken())
|
||||
|
@ -19,9 +19,11 @@ package com.zayac.admin.service;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.text.CharPool;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.zayac.admin.agent.model.entity.FinanceDO;
|
||||
import com.zayac.admin.resp.Statics;
|
||||
import com.zayac.admin.resp.team.TeamAccount;
|
||||
import com.zayac.admin.resp.team.TeamMember;
|
||||
import com.zayac.admin.system.model.resp.UserWithRolesAndAccountsResp;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -81,11 +83,23 @@ public class TelegramMessageService {
|
||||
return htmlTags.stream().anyMatch(text::contains);
|
||||
}
|
||||
|
||||
public String buildRegistrationMessage(String accountName,
|
||||
public String buildRegistrationMessage(UserWithRolesAndAccountsResp currUser,
|
||||
List<TeamMember> accountMembers,
|
||||
TeamAccount teamAccount) {
|
||||
|
||||
String memberNames = accountMembers.stream().map(TeamMember::getName).collect(Collectors.joining(", "));
|
||||
return String.format("👏 %s 注册: %d 用户: `%s` 总数:*%d*", accountName, accountMembers
|
||||
if (currUser != null) {
|
||||
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
|
||||
.size(), memberNames, teamAccount.getSubMemberNum());
|
||||
}
|
||||
|
||||
public String buildRegistrationMessage(List<TeamMember> accountMembers, TeamAccount teamAccount) {
|
||||
|
||||
String memberNames = accountMembers.stream().map(TeamMember::getName).collect(Collectors.joining(", "));
|
||||
return String.format("👏 %s 注册: %d 会员: `%s` 总数:*%d*", teamAccount.getAgentName(), accountMembers
|
||||
.size(), memberNames, teamAccount.getSubMemberNum());
|
||||
}
|
||||
|
||||
@ -94,7 +108,7 @@ public class TelegramMessageService {
|
||||
}
|
||||
|
||||
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<TeamMember> accountMembers) {
|
||||
@ -111,4 +125,14 @@ public class TelegramMessageService {
|
||||
});
|
||||
return message.toString();
|
||||
}
|
||||
|
||||
public String buildFinanceMessage(List<FinanceDO> userFinancesList) {
|
||||
StringBuilder message = new StringBuilder();
|
||||
userFinancesList.forEach(financeDO -> {
|
||||
String formattedFinance = String.format("%s: *%s*\n", financeDO.getAgentName(), financeDO.getNetProfit()
|
||||
.toPlainString());
|
||||
message.append(formattedFinance);
|
||||
});
|
||||
return message.toString();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user