新增上个月代理团队目标接口

This commit is contained in:
tianfeng 2025-08-19 19:46:55 +08:00
parent a5e82b36b9
commit 57da1d71ba
6 changed files with 86 additions and 0 deletions

View File

@ -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.
*

View File

@ -45,4 +45,23 @@ public class BdAgentCountQryExe {
.setThisMonthTotalTarget(target)
.setThisMonthTotalTargetFormat(NumUtils.formatLong(target));
}
public BdAgentCountCO executeLastMonth(AppExtCommand cmd) {
List<Long> 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));
}
}

View File

@ -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<BdInviteMessageCO> listBdInviteMessage(BdInviteQryCmd cmd) {
return bdInviteMessageQryExe.execute(cmd);

View File

@ -50,6 +50,11 @@ public interface TeamBdService {
*/
BdAgentCountCO getBdAgentCount(AppExtCommand cmd);
/**
* 代理情况统计(上个月)
*/
BdAgentCountCO getBdAgentLastCount(AppExtCommand cmd);
/**
* 被邀请消息列表-邀请信息.
*/

View File

@ -173,6 +173,12 @@ public interface TeamMemberTargetService {
*/
Long countThisMonthTeamMemberTarget(List<Long> teamIds);
/**
* 统计上个月团队总目标.
*/
Long countLastMonthTeamMemberTarget(List<Long> teamIds);
/**
* 根据团队id修改本月成员目标状态.
*

View File

@ -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<Long> 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<BasicDBObject> aggregationResults = mongoTemplate.aggregate(
aggregation,
TeamMemberTarget.class,
BasicDBObject.class);
List<BasicDBObject> basicDBObjectList = aggregationResults.getMappedResults();
if (CollectionUtils.isEmpty(basicDBObjectList)) {
return 0L;
}
return basicDBObjectList.get(0).getLong("quantity");
}
@Override
public void updateStatusByTeamIds(Set<Long> teamIds, TeamMemberTargetStatus status) {