From 57da1d71ba1622473e3230f1360cde755fa27460 Mon Sep 17 00:00:00 2001 From: tianfeng <769204422@qq.com> Date: Tue, 19 Aug 2025 19:46:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=8A=E4=B8=AA=E6=9C=88?= =?UTF-8?q?=E4=BB=A3=E7=90=86=E5=9B=A2=E9=98=9F=E7=9B=AE=E6=A0=87=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/team/TeamBdRestController.java | 8 ++++ .../team/query/BdAgentCountQryExe.java | 19 ++++++++ .../app/service/team/TeamBdServiceImpl.java | 5 +++ .../other/app/service/team/TeamBdService.java | 5 +++ .../team/team/TeamMemberTargetService.java | 6 +++ .../impl/TeamMemberTargetServiceImpl.java | 43 +++++++++++++++++++ 6 files changed, 86 insertions(+) diff --git a/rc-service/rc-service-other/other-adapter/src/main/java/com/red/circle/other/adapter/app/team/TeamBdRestController.java b/rc-service/rc-service-other/other-adapter/src/main/java/com/red/circle/other/adapter/app/team/TeamBdRestController.java index 5e321efb..5d39e57f 100644 --- a/rc-service/rc-service-other/other-adapter/src/main/java/com/red/circle/other/adapter/app/team/TeamBdRestController.java +++ b/rc-service/rc-service-other/other-adapter/src/main/java/com/red/circle/other/adapter/app/team/TeamBdRestController.java @@ -109,6 +109,14 @@ public class TeamBdRestController extends BaseController { return teamBdService.getBdAgentCount(cmd); } + /** + * BD名下代理情况统计(上个月) + */ + @GetMapping("/agent-count-last") + public BdAgentCountCO agentCountLastMonth(AppExtCommand cmd) { + return teamBdService.getBdAgentLastCount(cmd); + } + /** * 是否为BD. * diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/BdAgentCountQryExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/BdAgentCountQryExe.java index 0f835c76..28cb3b42 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/BdAgentCountQryExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/query/BdAgentCountQryExe.java @@ -45,4 +45,23 @@ public class BdAgentCountQryExe { .setThisMonthTotalTarget(target) .setThisMonthTotalTargetFormat(NumUtils.formatLong(target)); } + + public BdAgentCountCO executeLastMonth(AppExtCommand cmd) { + List teamIds = Optional.ofNullable(businessDevelopmentTeamService.query() + .select(BusinessDevelopmentTeam::getTeamId) + .eq(BusinessDevelopmentTeam::getUserId, cmd.requireReqSysOriginEnum()) + .last(PageConstant.MAX_LIMIT) + .list()) + .map(teams -> teams.stream().map(BusinessDevelopmentTeam::getTeamId) + .collect(Collectors.toList())) + .orElseGet(CollectionUtils::newArrayList); + + Long target = teamMemberTargetService.countLastMonthTeamMemberTarget(teamIds); + return new BdAgentCountCO() + .setAgentQuantity( + businessDevelopmentTeamService.countTeamByBdUserId(cmd.requiredReqUserId())) + .setThisMonthTotalTarget(target) + .setThisMonthTotalTargetFormat(NumUtils.formatLong(target)); + } + } diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/team/TeamBdServiceImpl.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/team/TeamBdServiceImpl.java index 9ef562d4..1ab29e80 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/team/TeamBdServiceImpl.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/team/TeamBdServiceImpl.java @@ -77,6 +77,11 @@ public class TeamBdServiceImpl implements TeamBdService { return bdAgentCountQryExe.execute(cmd); } + @Override + public BdAgentCountCO getBdAgentLastCount(AppExtCommand cmd) { + return bdAgentCountQryExe.executeLastMonth(cmd); + } + @Override public List listBdInviteMessage(BdInviteQryCmd cmd) { return bdInviteMessageQryExe.execute(cmd); diff --git a/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/service/team/TeamBdService.java b/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/service/team/TeamBdService.java index cc0696a2..607c406a 100644 --- a/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/service/team/TeamBdService.java +++ b/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/service/team/TeamBdService.java @@ -50,6 +50,11 @@ public interface TeamBdService { */ BdAgentCountCO getBdAgentCount(AppExtCommand cmd); + /** + * 代理情况统计(上个月) + */ + BdAgentCountCO getBdAgentLastCount(AppExtCommand cmd); + /** * 被邀请消息列表-邀请信息. */ diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/TeamMemberTargetService.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/TeamMemberTargetService.java index 0621b04e..613bbf5a 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/TeamMemberTargetService.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/TeamMemberTargetService.java @@ -173,6 +173,12 @@ public interface TeamMemberTargetService { */ Long countThisMonthTeamMemberTarget(List teamIds); + + /** + * 统计上个月团队总目标. + */ + Long countLastMonthTeamMemberTarget(List teamIds); + /** * 根据团队id修改本月成员目标状态. * diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/impl/TeamMemberTargetServiceImpl.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/impl/TeamMemberTargetServiceImpl.java index b0001146..2e2f8c65 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/impl/TeamMemberTargetServiceImpl.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/team/team/impl/TeamMemberTargetServiceImpl.java @@ -16,7 +16,11 @@ import com.red.circle.other.inner.enums.team.TeamMemberTargetStatus; import com.red.circle.tool.core.collection.CollectionUtils; import com.red.circle.tool.core.date.TimestampUtils; import com.red.circle.tool.core.date.ZonedDateTimeAsiaRiyadhUtils; +import com.red.circle.tool.core.date.ZonedId; import com.red.circle.tool.core.sequence.IdWorkerUtils; + +import java.time.ZonedDateTime; +import java.time.temporal.TemporalAdjusters; import java.util.List; import java.util.Map; import java.util.Objects; @@ -490,6 +494,45 @@ public class TeamMemberTargetServiceImpl implements TeamMemberTargetService { return basicDBObjectList.get(0).getLong("quantity"); } + @Override + public Long countLastMonthTeamMemberTarget(List teamIds) { + + if (CollectionUtils.isEmpty(teamIds)) { + return 0L; + } + Aggregation aggregation = Aggregation.newAggregation( + Aggregation.match(Criteria.where("teamId").in(teamIds) + .and("history").is(Boolean.FALSE) + .and("createTime").gte( + ZonedDateTime.now(ZonedId.ASIA_RIYADH.getZonedId()) + .minusMonths(1) + .with(TemporalAdjusters.firstDayOfMonth()) + .withHour(0) + .withMinute(0) + .withSecond(0) + .withNano(0) + ) + ), + Aggregation.unwind("dailyTargets"), + Aggregation.group("sysOrigin") + .sum("dailyTargets.acceptGiftValue").as("quantity") + + ); + + AggregationResults aggregationResults = mongoTemplate.aggregate( + aggregation, + TeamMemberTarget.class, + BasicDBObject.class); + + List basicDBObjectList = aggregationResults.getMappedResults(); + + if (CollectionUtils.isEmpty(basicDBObjectList)) { + return 0L; + } + + return basicDBObjectList.get(0).getLong("quantity"); + } + @Override public void updateStatusByTeamIds(Set teamIds, TeamMemberTargetStatus status) {