From b51efff51013942c3519e8bf44ce7bf665fc2682 Mon Sep 17 00:00:00 2001 From: Derran Date: Thu, 5 Dec 2024 16:28:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B6=E7=9B=8A=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RevenueRewardUserQueryController.java | 8 +++ .../response/RevenueRewardRecordExportVo.java | 64 ++++++++++++++++++ .../RevenueRewardQueryService.java | 2 + .../impl/RevenueRewardQueryServiceImpl.java | 46 +++++++++++++ .../templates/revenueRewardRecordExport.xlsx | Bin 0 -> 10746 bytes 5 files changed, 120 insertions(+) create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/response/RevenueRewardRecordExportVo.java create mode 100644 dating-agency-mall-server/src/main/resources/templates/revenueRewardRecordExport.xlsx 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 ea4151f..3bad193 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 @@ -10,9 +10,11 @@ import com.qniao.dam.api.query.revenuereward.user.response.UsePageRevenueRewardR import com.qniao.dam.query.revenuereward.RevenueRewardQueryService; import com.qniao.dau.infrastructure.constant.RequestHeaderFields; import com.qniao.domain.QnPage; +import com.qniao.framework.constants.HeaderFields; import com.qniao.framework.utils.PageUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -70,4 +72,10 @@ public class RevenueRewardUserQueryController { public UseGetRevenueRewardAbstractByOperatorVo useGetRevenueRewardAbstractByOperator(UsePageRevenueRewardRecordByOperatorQueryParams queryParams) { return revenueRewardQueryService.getRevenueRewardAbstractByOperator(queryParams); } + + @ApiOperation("运营端导出用户收益记录分页") + @GetMapping("/export/revenue-reward-record/by/operator") + public String userExportRevenueRewardRecordByOperator(UsePageRevenueRewardRecordByOperatorQueryParams queryParams) { + return revenueRewardQueryService.exportData(queryParams); + } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/response/RevenueRewardRecordExportVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/response/RevenueRewardRecordExportVo.java new file mode 100644 index 0000000..9a453e9 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/response/RevenueRewardRecordExportVo.java @@ -0,0 +1,64 @@ +package com.qniao.dam.api.query.revenuereward.user.response; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class RevenueRewardRecordExportVo { + + @ApiModelProperty("收益记录标识") + private Long revenueRewardRecordId; + + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + + @ApiModelProperty("收益者名称") + private String revenueOwnerName; + + @ApiModelProperty("收益者手机") + private String revenueOwnerPhone; + + @ApiModelProperty("红娘用户ID") + private Long matchmakerUserId; + + @ApiModelProperty("红娘等级") + private String matchmakerLevelVal; + + @ApiModelProperty("交易类型") + private String tradeTypeVal; + + @ApiModelProperty("订单金额") + private BigDecimal totalAssociateOrderAmount; + + @ApiModelProperty("营收额百分比 收入占比") + private BigDecimal revenuePct; + + @ApiModelProperty("营收额 营收金额") + private BigDecimal revenue; + + @ApiModelProperty("服务费百分比 抽佣占比") + private BigDecimal servicePct; + + @ApiModelProperty("收益额 实收金额") + private BigDecimal earnings; + + + + @ApiModelProperty("订单号") + private String orderCode; + + @ApiModelProperty("订单时间") + private String orderTimeVal; + + @ApiModelProperty("微信支付单号") + private String wechatOrderNo; + + @ApiModelProperty("服务用户名称") + private String serviceUserName; + + @ApiModelProperty("服务用户手机") + private String serviceUserPhone; +} 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 1d6b9bf..5e032ed 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 @@ -26,4 +26,6 @@ public interface RevenueRewardQueryService { IPage pageRevenueRewardRecordByOperator(PageUtil pageUtil, UsePageRevenueRewardRecordByOperatorQueryParams queryParams); UseGetRevenueRewardAbstractByOperatorVo getRevenueRewardAbstractByOperator(UsePageRevenueRewardRecordByOperatorQueryParams queryParams); + + String exportData(UsePageRevenueRewardRecordByOperatorQueryParams 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 467899f..4045657 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 @@ -1,5 +1,6 @@ package com.qniao.dam.query.revenuereward.impl; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.qniao.dam.api.query.revenuereward.user.request.UseGetRevenueRewardAbstractQueryParams; @@ -8,15 +9,19 @@ import com.qniao.dam.api.query.revenuereward.user.request.UsePageRevenueRewardRe 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.dam.infrastructure.easyexcel.EasyExcelUtil; import com.qniao.dam.infrastructure.persistent.dao.domain.RevenueRewardDao; import com.qniao.dam.infrastructure.persistent.dao.view.RevenueRewardViewDao; import com.qniao.dam.query.matchmaker.MatchmakerQueryService; import com.qniao.dam.query.revenuereward.RevenueRewardQueryService; import com.qniao.domain.QnPage; 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; @@ -31,6 +36,8 @@ public class RevenueRewardQueryServiceImpl implements RevenueRewardQueryService private RevenueRewardViewDao revenueRewardViewDao; @Resource private MatchmakerQueryService matchmakerQueryService; + @Resource + private EasyExcelUtil easyExcelUtil; @Override public RevenueReward queryByUserId(Long userId) { @@ -93,6 +100,45 @@ public class RevenueRewardQueryServiceImpl implements RevenueRewardQueryService return revenueRewardViewDao.getRevenueRewardAbstractByOperator(queryParams); } + @Override + public String exportData(UsePageRevenueRewardRecordByOperatorQueryParams queryParams) { + PageUtil pageUtil = new PageUtil(); + pageUtil.setOrders(null); + pageUtil.setPageNum(1); + pageUtil.setPageSize(-1); + IPage page = pageRevenueRewardRecordByOperator(pageUtil, queryParams); + List list = transformExport(page.getRecords()); + return easyExcelUtil.writeToFilePath( + easyExcelUtil.getTemplateFileAsStream("revenueRewardRecordExport"), + list + ); + } + + private List transformExport(List recordList) { + List list = new ArrayList<>(); + for (UsePageRevenueRewardRecordByOperatorVo record : recordList) { + RevenueRewardRecordExportVo exportVo = TypeConvertUtils.convert(record, RevenueRewardRecordExportVo.class, (rVo, eVo) -> { + eVo.setMatchmakerLevelVal(rVo.getMatchmakerLevel().getDesc()); + eVo.setTradeTypeVal(rVo.getTradeType().getDesc()); + if (CollUtil.isNotEmpty(rVo.getAssociateOrderRecordList())) { + eVo.setOrderCode(rVo.getAssociateOrderRecordList().stream().map(RevenueRewardAssociateOrderRecordVo::getOrderCode) + .collect(Collectors.joining(","))); + eVo.setOrderTimeVal(rVo.getAssociateOrderRecordList().stream().map(RevenueRewardAssociateOrderRecordVo::getOrderTime) + .map(LocalDateTime::toString) + .collect(Collectors.joining(","))); + eVo.setWechatOrderNo(rVo.getAssociateOrderRecordList().stream().map(RevenueRewardAssociateOrderRecordVo::getWechatOrderNo) + .collect(Collectors.joining(","))); + eVo.setServiceUserName(rVo.getAssociateOrderRecordList().stream().map(RevenueRewardAssociateOrderRecordVo::getServiceUserName) + .collect(Collectors.joining(","))); + eVo.setServiceUserPhone(rVo.getAssociateOrderRecordList().stream().map(RevenueRewardAssociateOrderRecordVo::getServiceUserPhone) + .collect(Collectors.joining(","))); + } + }); + list.add(exportVo); + } + return list; + } + @Override public UseGetRevenueRewardAbstractVo getRevenueRewardAbstract(UseGetRevenueRewardAbstractQueryParams queryParams) { return revenueRewardViewDao.getRevenueRewardAbstract(queryParams); diff --git a/dating-agency-mall-server/src/main/resources/templates/revenueRewardRecordExport.xlsx b/dating-agency-mall-server/src/main/resources/templates/revenueRewardRecordExport.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..6d97182929871eb075df1287a878b942ee7b29b5 GIT binary patch literal 10746 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 literal 0 HcmV?d00001