diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/RevenueRewardUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/RevenueRewardUserQueryController.java index 126f3b0..cc81f51 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/RevenueRewardUserQueryController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/RevenueRewardUserQueryController.java @@ -2,12 +2,10 @@ package com.qniao.dam.api.query.revenuereward.user; import com.qniao.dam.api.command.revenuereward.user.response.UserGetRevenueRewardRecordByOperatorVo; import com.qniao.dam.api.query.revenuereward.user.request.UseGetRevenueRewardAbstractQueryParams; +import com.qniao.dam.api.query.revenuereward.user.request.UserListMatchmakerRevenueRewardStatisticsQueryParams; import com.qniao.dam.api.query.revenuereward.user.request.UserPageRevenueRewardRecordByOperatorQueryParams; import com.qniao.dam.api.query.revenuereward.user.request.UsePageRevenueRewardRecordQueryParams; -import com.qniao.dam.api.query.revenuereward.user.response.UserGetRevenueRewardAbstractByOperatorVo; -import com.qniao.dam.api.query.revenuereward.user.response.UseGetRevenueRewardAbstractVo; -import com.qniao.dam.api.query.revenuereward.user.response.UseGetRevenueRewardRecordVo; -import com.qniao.dam.api.query.revenuereward.user.response.UserPageRevenueRewardRecordByOperatorVo; +import com.qniao.dam.api.query.revenuereward.user.response.*; import com.qniao.dam.query.revenuereward.RevenueRewardQueryService; import com.qniao.dau.infrastructure.constant.RequestHeaderFields; import com.qniao.domain.QnPage; @@ -17,6 +15,7 @@ import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.List; import java.util.Objects; @RestController @@ -83,4 +82,13 @@ public class RevenueRewardUserQueryController { public UserGetRevenueRewardRecordByOperatorVo userGetRevenueRewardRecordByOperator(@RequestParam("revenueRewardRecordId") Long revenueRewardRecordId) { return revenueRewardQueryService.getRevenueRewardRecordByOperator(revenueRewardRecordId); } + + @GetMapping("list/matchmaker-revenue-reward-statistics") + @ApiOperation("获取红娘收益数据记录") + public List userListMatchmakerRevenueRewardStatistics(UserListMatchmakerRevenueRewardStatisticsQueryParams queryParams, + @RequestParam("userId") Long userId, + @RequestHeader(name = RequestHeaderFields.FIELD_ORGANIZATION_ID, required = false) Long orgId) { + queryParams.setQueryOrgId(orgId); + return revenueRewardQueryService.listMatchmakerRevenueRewardStatistics(queryParams); + } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/request/UserListMatchmakerRevenueRewardStatisticsQueryParams.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/request/UserListMatchmakerRevenueRewardStatisticsQueryParams.java new file mode 100644 index 0000000..f6eee3b --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/request/UserListMatchmakerRevenueRewardStatisticsQueryParams.java @@ -0,0 +1,23 @@ +package com.qniao.dam.api.query.revenuereward.user.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +@Data +public class UserListMatchmakerRevenueRewardStatisticsQueryParams { + + @ApiModelProperty("查询组织标识") + private Long queryOrgId; + + @ApiModelProperty("收益开始时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime revenueTimeFrom; + + @ApiModelProperty("收益结束时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime revenueTimeTo; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/response/UserListMatchmakerRevenueRewardStatisticsVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/response/UserListMatchmakerRevenueRewardStatisticsVo.java new file mode 100644 index 0000000..52b0b28 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/response/UserListMatchmakerRevenueRewardStatisticsVo.java @@ -0,0 +1,22 @@ +package com.qniao.dam.api.query.revenuereward.user.response; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class UserListMatchmakerRevenueRewardStatisticsVo { + + @ApiModelProperty("红娘标识") + private Long matchmakerId; + + @ApiModelProperty("红娘名称") + private String matchmakerName; + + @ApiModelProperty("营收额元") + private BigDecimal revenue; + + @ApiModelProperty("邀请红娘数量") + private Integer inviteMatchmakerNum; +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/org/OrganizationDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/org/OrganizationDao.java new file mode 100644 index 0000000..d58c113 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/org/OrganizationDao.java @@ -0,0 +1,7 @@ +package com.qniao.dam.infrastructure.persistent.dao.org; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qniao.dau.domain.aggregate.organization.entity.Organization; + +public interface OrganizationDao extends BaseMapper { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/RevenueRewardViewDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/RevenueRewardViewDao.java index bf81fef..eef3fe8 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/RevenueRewardViewDao.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/RevenueRewardViewDao.java @@ -3,6 +3,7 @@ package com.qniao.dam.infrastructure.persistent.dao.view; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.qniao.dam.api.query.revenuereward.user.request.UseGetRevenueRewardAbstractQueryParams; +import com.qniao.dam.api.query.revenuereward.user.request.UserListMatchmakerRevenueRewardStatisticsQueryParams; import com.qniao.dam.api.query.revenuereward.user.request.UserPageRevenueRewardRecordByOperatorQueryParams; import com.qniao.dam.api.query.revenuereward.user.request.UsePageRevenueRewardRecordQueryParams; import com.qniao.dam.api.query.revenuereward.user.response.*; @@ -24,4 +25,7 @@ public interface RevenueRewardViewDao { List listAssociateOrderRecord(@Param("revenueRewardRecordIdList") List revenueRewardRecordIdList); UserGetRevenueRewardAbstractByOperatorVo getRevenueRewardAbstractByOperator(@Param("queryParams") UserPageRevenueRewardRecordByOperatorQueryParams queryParams); + + List listMatchmakerRevenueRewardStatistics(@Param("queryParams") UserListMatchmakerRevenueRewardStatisticsQueryParams queryParams, + @Param("storeIdList") List storeIdList); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/operationcenter/OperationCenterQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/operationcenter/OperationCenterQueryService.java index bac66e4..2f9f8d8 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/operationcenter/OperationCenterQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/operationcenter/OperationCenterQueryService.java @@ -1,5 +1,9 @@ package com.qniao.dam.query.operationcenter; +import com.qniao.dau.domain.aggregate.operationcenter.entity.OperationCenter; + public interface OperationCenterQueryService { boolean hasByUserId(Long userId); + + OperationCenter queryByOrg(Long orgId); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/operationcenter/impl/OperationCenterQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/operationcenter/impl/OperationCenterQueryServiceImpl.java index 261924b..ab33906 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/operationcenter/impl/OperationCenterQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/operationcenter/impl/OperationCenterQueryServiceImpl.java @@ -19,4 +19,11 @@ public class OperationCenterQueryServiceImpl implements OperationCenterQueryServ return operationCenterDao.selectCount(new LambdaQueryWrapper() .eq(OperationCenter::getAdministratorId, userId)) > 0; } + + @Override + public OperationCenter queryByOrg(Long orgId) { + return operationCenterDao.selectOne(new LambdaQueryWrapper() + .eq(OperationCenter::getOrgId, orgId) + .last("limit 1")); + } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/org/OrganizationQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/org/OrganizationQueryService.java new file mode 100644 index 0000000..f6f4560 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/org/OrganizationQueryService.java @@ -0,0 +1,4 @@ +package com.qniao.dam.query.org; + +public interface OrganizationQueryService { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/org/impl/OrganizationQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/org/impl/OrganizationQueryServiceImpl.java new file mode 100644 index 0000000..23a67a6 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/org/impl/OrganizationQueryServiceImpl.java @@ -0,0 +1,8 @@ +package com.qniao.dam.query.org.impl; + +import com.qniao.dam.query.org.OrganizationQueryService; +import org.springframework.stereotype.Service; + +@Service +public class OrganizationQueryServiceImpl implements OrganizationQueryService { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java index 7ab56d5..119b7f2 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java @@ -3,16 +3,16 @@ package com.qniao.dam.query.revenuereward; import com.baomidou.mybatisplus.core.metadata.IPage; import com.qniao.dam.api.command.revenuereward.user.response.UserGetRevenueRewardRecordByOperatorVo; import com.qniao.dam.api.query.revenuereward.user.request.UseGetRevenueRewardAbstractQueryParams; +import com.qniao.dam.api.query.revenuereward.user.request.UserListMatchmakerRevenueRewardStatisticsQueryParams; import com.qniao.dam.api.query.revenuereward.user.request.UserPageRevenueRewardRecordByOperatorQueryParams; import com.qniao.dam.api.query.revenuereward.user.request.UsePageRevenueRewardRecordQueryParams; -import com.qniao.dam.api.query.revenuereward.user.response.UserGetRevenueRewardAbstractByOperatorVo; -import com.qniao.dam.api.query.revenuereward.user.response.UseGetRevenueRewardAbstractVo; -import com.qniao.dam.api.query.revenuereward.user.response.UseGetRevenueRewardRecordVo; -import com.qniao.dam.api.query.revenuereward.user.response.UserPageRevenueRewardRecordByOperatorVo; +import com.qniao.dam.api.query.revenuereward.user.response.*; import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward; import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; import com.qniao.framework.utils.PageUtil; +import java.util.List; + public interface RevenueRewardQueryService { RevenueReward queryByUserId(Long userId); @@ -31,4 +31,6 @@ public interface RevenueRewardQueryService { String exportData(UserPageRevenueRewardRecordByOperatorQueryParams queryParams); UserGetRevenueRewardRecordByOperatorVo getRevenueRewardRecordByOperator(Long revenueRewardRecordId); + + List listMatchmakerRevenueRewardStatistics(UserListMatchmakerRevenueRewardStatisticsQueryParams queryParams); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java index 04f18ef..11dc151 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.qniao.dam.api.command.revenuereward.user.response.UserGetRevenueRewardRecordByOperatorVo; import com.qniao.dam.api.query.revenuereward.user.request.UseGetRevenueRewardAbstractQueryParams; +import com.qniao.dam.api.query.revenuereward.user.request.UserListMatchmakerRevenueRewardStatisticsQueryParams; import com.qniao.dam.api.query.revenuereward.user.request.UserPageRevenueRewardRecordByOperatorQueryParams; import com.qniao.dam.api.query.revenuereward.user.request.UsePageRevenueRewardRecordQueryParams; import com.qniao.dam.api.query.revenuereward.user.response.*; @@ -14,20 +15,25 @@ import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; import com.qniao.dam.infrastructure.easyexcel.EasyExcelUtil; import com.qniao.dam.infrastructure.persistent.dao.domain.RevenueRewardDao; import com.qniao.dam.infrastructure.persistent.dao.domain.RevenueRewardRecordDao; +import com.qniao.dam.infrastructure.persistent.dao.org.OrganizationDao; import com.qniao.dam.infrastructure.persistent.dao.view.RevenueRewardViewDao; import com.qniao.dam.query.matchmaker.MatchmakerQueryService; +import com.qniao.dam.query.operationcenter.OperationCenterQueryService; +import com.qniao.dam.query.org.OrganizationQueryService; import com.qniao.dam.query.revenuereward.RevenueRewardQueryService; +import com.qniao.dam.query.store.StoreQueryService; import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker; +import com.qniao.dau.domain.aggregate.operationcenter.entity.OperationCenter; +import com.qniao.dau.domain.aggregate.organization.entity.Organization; +import com.qniao.dau.domain.aggregate.store.entity.Store; +import com.qniao.dau.domian.aggregate.organization.constant.OrganizationTypeEnum; import com.qniao.framework.utils.PageUtil; import com.qniao.framework.utils.TypeConvertUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; @Service @@ -43,6 +49,10 @@ public class RevenueRewardQueryServiceImpl implements RevenueRewardQueryService private EasyExcelUtil easyExcelUtil; @Resource private RevenueRewardRecordDao revenueRewardRecordDao; + @Resource + private OrganizationDao organizationDao; + @Resource + private StoreQueryService storeQueryService; @Override public RevenueReward queryByUserId(Long userId) { @@ -134,6 +144,29 @@ public class RevenueRewardQueryServiceImpl implements RevenueRewardQueryService return vo; } + @Override + public List listMatchmakerRevenueRewardStatistics(UserListMatchmakerRevenueRewardStatisticsQueryParams queryParams) { + List list = new ArrayList<>(); + Organization organization = organizationDao.selectById(queryParams.getQueryOrgId()); + if (Objects.nonNull(organization)) { + List storeIdList = new ArrayList<>(); + if (OrganizationTypeEnum.OPERATION_CENTER.equals(organization.getType())) { + storeIdList = storeQueryService.listByOperationCenterOrgId(queryParams.getQueryOrgId()) + .stream().map(Store::getId).collect(Collectors.toList()); + } else if (OrganizationTypeEnum.STORE.equals(organization.getType())) { + Store store = storeQueryService.queryByOrg(queryParams.getQueryOrgId()); + if (Objects.nonNull(store)) { + storeIdList = Collections.singletonList(store.getId()); + } + } + if (CollUtil.isNotEmpty(storeIdList)) { + //查询 + list = revenueRewardViewDao.listMatchmakerRevenueRewardStatistics(queryParams, storeIdList); + } + } + return list; + } + private List transformExport(List recordList) { List list = new ArrayList<>(); for (UserPageRevenueRewardRecordByOperatorVo record : recordList) { diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/store/StoreQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/store/StoreQueryService.java index b99f5f7..bdaee5e 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/store/StoreQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/store/StoreQueryService.java @@ -2,8 +2,14 @@ package com.qniao.dam.query.store; import com.qniao.dau.domain.aggregate.store.entity.Store; +import java.util.List; + public interface StoreQueryService { Store queryById(Long id); boolean hasByUserId(Long userId); + + Store queryByOrg(Long orgId); + + List listByOperationCenterOrgId(Long operationCenterOrgId); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/store/impl/StoreQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/store/impl/StoreQueryServiceImpl.java index 3a1bdd2..6e67287 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/store/impl/StoreQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/store/impl/StoreQueryServiceImpl.java @@ -7,6 +7,7 @@ import com.qniao.dau.domain.aggregate.store.entity.Store; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.List; @Service public class StoreQueryServiceImpl implements StoreQueryService { @@ -24,4 +25,17 @@ public class StoreQueryServiceImpl implements StoreQueryService { return storeDao.selectCount(new LambdaQueryWrapper() .eq(Store::getAdministratorId, userId)) > 0; } + + @Override + public Store queryByOrg(Long orgId) { + return storeDao.selectOne(new LambdaQueryWrapper() + .eq(Store::getOrgId, orgId) + .last("limit 1")); + } + + @Override + public List listByOperationCenterOrgId(Long operationCenterOrgId) { + return storeDao.selectList(new LambdaQueryWrapper() + .eq(Store::getOperationCenterOrgId, operationCenterOrgId)); + } } diff --git a/dating-agency-mall-server/src/main/resources/mapper/revenuereward/RevenueRewardViewMapper.xml b/dating-agency-mall-server/src/main/resources/mapper/revenuereward/RevenueRewardViewMapper.xml index b389ca0..6c91300 100644 --- a/dating-agency-mall-server/src/main/resources/mapper/revenuereward/RevenueRewardViewMapper.xml +++ b/dating-agency-mall-server/src/main/resources/mapper/revenuereward/RevenueRewardViewMapper.xml @@ -159,4 +159,20 @@ and darrr.create_time BETWEEN #{queryParams.createTimeFrom} and #{queryParams.createTimeTo} + +