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 0000000..6d97182 Binary files /dev/null and b/dating-agency-mall-server/src/main/resources/templates/revenueRewardRecordExport.xlsx differ