邀请用户后台数据源修改

This commit is contained in:
tianfeng 2025-10-30 16:15:31 +08:00
parent 2f2e387c0d
commit a59a4f9561
5 changed files with 109 additions and 4 deletions

View File

@ -1,9 +1,14 @@
package com.red.circle.other.inner.endpoint.user.user.api;
import com.red.circle.framework.dto.PageResult;
import com.red.circle.framework.dto.ResultResponse;
import com.red.circle.other.inner.model.cmd.user.InviteStatisticsQryCmd;
import com.red.circle.other.inner.model.cmd.user.InviteUserQryCmd;
import com.red.circle.other.inner.model.dto.user.PageInviteUserRegisterDTO;
import com.red.circle.other.inner.model.dto.user.UserInviteUserCountDTO;
import java.util.Map;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@ -25,4 +30,7 @@ public interface UserInviteUserClientApi {
@PostMapping("/mapInviteStatisticsByUserIds")
ResultResponse<Map<Long, UserInviteUserCountDTO>> mapInviteStatisticsByUserIds(@RequestBody
InviteStatisticsQryCmd qryCmd);
@PostMapping("/page")
ResultResponse<PageResult<PageInviteUserRegisterDTO>> pageQuery(@RequestBody InviteUserQryCmd query);
}

View File

@ -4,6 +4,7 @@ package com.red.circle.console.adapter.app.user;
import com.red.circle.console.app.service.app.user.UserInviteUserRegisterService;
import com.red.circle.framework.dto.PageResult;
import com.red.circle.framework.web.controller.BaseController;
import com.red.circle.other.inner.endpoint.user.user.api.UserInviteUserClientApi;
import com.red.circle.other.inner.model.cmd.user.InviteUserQryCmd;
import com.red.circle.other.inner.model.dto.user.PageInviteUserRegisterDTO;
import lombok.RequiredArgsConstructor;
@ -25,10 +26,19 @@ import org.springframework.web.bind.annotation.RestController;
public class UserInviteUserRegisterRestController extends BaseController {
private final UserInviteUserRegisterService userInviteUserRegisterService;
private final UserInviteUserClientApi userInviteUserClientApi;
@GetMapping("/page")
// @GetMapping("/page")
public PageResult<PageInviteUserRegisterDTO> getInviteUser(InviteUserQryCmd query) {
return userInviteUserRegisterService.pageQuery(query);
}
/**
* 分页查询用户邀请记录新数据源
*/
@GetMapping("/page")
public PageResult<PageInviteUserRegisterDTO> getInviteUserV2(InviteUserQryCmd query) {
return userInviteUserClientApi.pageQuery(query).getBody();
}
}

View File

@ -1,9 +1,12 @@
package com.red.circle.other.app.inner.endpoint.user.user;
import com.red.circle.framework.dto.PageResult;
import com.red.circle.framework.dto.ResultResponse;
import com.red.circle.other.app.inner.service.user.user.UserInviteUserClientService;
import com.red.circle.other.inner.endpoint.user.user.api.UserInviteUserClientApi;
import com.red.circle.other.inner.model.cmd.user.InviteStatisticsQryCmd;
import com.red.circle.other.inner.model.cmd.user.InviteUserQryCmd;
import com.red.circle.other.inner.model.dto.user.PageInviteUserRegisterDTO;
import com.red.circle.other.inner.model.dto.user.UserInviteUserCountDTO;
import java.util.Map;
import lombok.RequiredArgsConstructor;
@ -29,4 +32,9 @@ public class UserInviteUserClientEndpoint implements UserInviteUserClientApi {
InviteStatisticsQryCmd qryCmd) {
return ResultResponse.success(userInviteUserClientService.mapInviteStatisticsByUserIds(qryCmd));
}
@Override
public ResultResponse<PageResult<PageInviteUserRegisterDTO>> pageQuery(InviteUserQryCmd query) {
return ResultResponse.success(userInviteUserClientService.pageQuery(query));
}
}

View File

@ -1,6 +1,9 @@
package com.red.circle.other.app.inner.service.user.user;
import com.red.circle.framework.dto.PageResult;
import com.red.circle.other.inner.model.cmd.user.InviteStatisticsQryCmd;
import com.red.circle.other.inner.model.cmd.user.InviteUserQryCmd;
import com.red.circle.other.inner.model.dto.user.PageInviteUserRegisterDTO;
import com.red.circle.other.inner.model.dto.user.UserInviteUserCountDTO;
import java.util.Map;
@ -10,4 +13,9 @@ import java.util.Map;
public interface UserInviteUserClientService {
Map<Long, UserInviteUserCountDTO> mapInviteStatisticsByUserIds(InviteStatisticsQryCmd qryCmd);
/**
* 分页查询用户邀请记录
*/
PageResult<PageInviteUserRegisterDTO> pageQuery(InviteUserQryCmd query);
}

View File

@ -1,15 +1,27 @@
package com.red.circle.other.app.inner.service.user.user.impl;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.google.common.collect.Maps;
import com.red.circle.framework.core.asserts.ResponseAssert;
import com.red.circle.framework.dto.PageResult;
import com.red.circle.other.app.inner.service.user.user.UserInviteUserClientService;
import com.red.circle.other.infra.database.rds.entity.user.user.InviteUserRechargeCommission;
import com.red.circle.other.infra.database.rds.entity.user.user.UserInviteUser;
import com.red.circle.other.infra.database.rds.service.user.user.InviteUserRechargeCommissionService;
import com.red.circle.other.infra.database.rds.service.user.user.UserInviteUserService;
import com.red.circle.other.inner.endpoint.user.user.UserProfileClient;
import com.red.circle.other.inner.model.cmd.team.bd.BdTeamWorkStatisticsQryCmd;
import com.red.circle.other.inner.model.cmd.user.InviteStatisticsQryCmd;
import com.red.circle.other.inner.model.cmd.user.InviteUserQryCmd;
import com.red.circle.other.inner.model.dto.user.PageInviteUserRegisterDTO;
import com.red.circle.other.inner.model.dto.user.UserInviteUserCountDTO;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import com.red.circle.other.inner.model.dto.user.UserProfileDTO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@ -24,6 +36,8 @@ import org.springframework.util.CollectionUtils;
public class UserInviteUserClientServiceImpl implements UserInviteUserClientService {
private final UserInviteUserService userInviteUserService;
private final UserProfileClient userProfileClient;
private final InviteUserRechargeCommissionService inviteUserRechargeCommissionService;
@Override
public Map<Long, UserInviteUserCountDTO> mapInviteStatisticsByUserIds(
@ -40,4 +54,61 @@ public class UserInviteUserClientServiceImpl implements UserInviteUserClientServ
return dbUserInviteList.stream()
.collect(Collectors.toMap(UserInviteUserCountDTO::getUserId, v -> v));
}
@Override
public PageResult<PageInviteUserRegisterDTO> pageQuery(InviteUserQryCmd query) {
// 1. 分页查询 user_invite_user
PageResult<UserInviteUser> pageResult = userInviteUserService.query()
.eq(StringUtils.isNotBlank(query.getSysOrigin()),
UserInviteUser::getSysOrigin, query.getSysOrigin())
.eq(Objects.nonNull(query.getUserId()),
UserInviteUser::getUserId, query.getUserId())
.eq(Objects.nonNull(query.getInviteUserId()),
UserInviteUser::getInviteUserId, query.getInviteUserId())
.ge(Objects.nonNull(query.startTimeToLocalDateTime()),
UserInviteUser::getCreateTime, query.startTimeToLocalDateTime())
.le(Objects.nonNull(query.endTimeToLocalDateTime()),
UserInviteUser::getCreateTime, query.endTimeToLocalDateTime())
.orderByDesc(UserInviteUser::getCreateTime)
.page(query.getPageQuery());
// 2. 如果没有数据直接返回
if (CollectionUtils.isEmpty(pageResult.getRecords())) {
return PageResult.newPageResult(0);
}
// 3. 收集所有用户ID
Set<Long> userIds = Stream.of(
pageResult.getRecords().stream()
.map(UserInviteUser::getUserId)
.filter(Objects::nonNull)
.collect(Collectors.toSet()),
pageResult.getRecords().stream()
.map(UserInviteUser::getInviteUserId)
.filter(Objects::nonNull)
.collect(Collectors.toSet()))
.flatMap(Collection::stream)
.collect(Collectors.toSet());
// 4. 批量查询用户信息
Map<Long, UserProfileDTO> userProfileMap = ResponseAssert.requiredSuccess(
userProfileClient.mapByUserIds(userIds));
Map<Long, BigDecimal> commissionMap = inviteUserRechargeCommissionService.query()
.in(InviteUserRechargeCommission::getUserId, userIds)
.list()
.stream().collect(Collectors.toMap(InviteUserRechargeCommission::getUserId, InviteUserRechargeCommission::getCommission, BigDecimal::add));
// 5. 转换为 DTO 并返回
return pageResult.convert(inviteUser -> new PageInviteUserRegisterDTO()
.setId(inviteUser.getId())
.setUserId(inviteUser.getUserId())
.setInviteUserId(inviteUser.getInviteUserId())
.setUserProfile(userProfileMap.get(inviteUser.getUserId()))
.setBeUserProfile(userProfileMap.get(inviteUser.getInviteUserId()))
.setCommission(commissionMap.get(inviteUser.getUserId()))
.setCreateTime(inviteUser.getCreateTime())
);
}
}