邀请用户后台数据源修改
This commit is contained in:
parent
2f2e387c0d
commit
a59a4f9561
@ -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);
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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())
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user