From 5251195e7f8273dd9ad70193e2441c4fcf88b8d7 Mon Sep 17 00:00:00 2001 From: Derran Date: Fri, 7 Feb 2025 10:39:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=93=E7=8E=B0=E5=AE=A1=E6=A0=B8=E5=AF=BC?= =?UTF-8?q?=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WithdrawAuditUserQueryController.java | 10 ++- .../user/response/WithdrawAuditExportVo.java | 59 ++++++++++++++++++ .../WithdrawAuditQueryService.java | 2 + .../impl/WithdrawAuditQueryServiceImpl.java | 43 +++++++++++++ .../templates/withdrawAuditExport.xlsx | Bin 0 -> 10746 bytes 5 files changed, 112 insertions(+), 2 deletions(-) create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/response/WithdrawAuditExportVo.java create mode 100644 dating-agency-mall-server/src/main/resources/templates/withdrawAuditExport.xlsx diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/WithdrawAuditUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/WithdrawAuditUserQueryController.java index 6d58edb..a6e46ed 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/WithdrawAuditUserQueryController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/WithdrawAuditUserQueryController.java @@ -1,5 +1,6 @@ package com.qniao.dam.api.query.withdrawaudit.user; +import com.qniao.dam.api.query.walletaccount.user.request.UsePageWalletAccountRecordByOperatorQueryParams; import com.qniao.dam.api.query.withdrawaudit.user.request.UserPageWithdrawAuditQueryParams; import com.qniao.dam.api.query.withdrawaudit.user.response.UserPageWithdrawAuditVo; import com.qniao.dam.query.withdrawaudit.WithdrawAuditQueryService; @@ -36,13 +37,18 @@ public class WithdrawAuditUserQueryController { PageUtil pageUtil, UserPageWithdrawAuditQueryParams queryParams) { if (Objects.isNull(queryParams.getQueryOrgId()) && Objects.isNull(queryParams.getQueryUserId())) { - if (Objects.nonNull(orgId)){ + if (Objects.nonNull(orgId)) { queryParams.setQueryOrgId(orgId); - }else{ + } else { queryParams.setQueryUserId(userId); } } return PageUtil.convert(withdrawAuditQueryService.pageWithdrawAudit(queryParams, pageUtil), UserPageWithdrawAuditVo.class); } + @ApiOperation("运营导出提现审核记录") + @GetMapping("/export/withdraw-audit") + public String userExportWithdrawAudit(UserPageWithdrawAuditQueryParams queryParams) { + return withdrawAuditQueryService.exportData(queryParams); + } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/response/WithdrawAuditExportVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/response/WithdrawAuditExportVo.java new file mode 100644 index 0000000..7152ae3 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/response/WithdrawAuditExportVo.java @@ -0,0 +1,59 @@ +package com.qniao.dam.api.query.withdrawaudit.user.response; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class WithdrawAuditExportVo { + + @ApiModelProperty("唯一标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @ApiModelProperty("钱包用户名称") + private String walletAccountUserName; + + @ApiModelProperty("提现金额") + private BigDecimal withdrawAmount; + + @ApiModelProperty("提现服务费") + private BigDecimal withdrawServiceFee; + + @ApiModelProperty("到账金额") + private BigDecimal arrivalAmount; + + @ApiModelProperty("审核状态") + private String status; + + @ApiModelProperty("汇款状态") + private String remitStatus; + + @ApiModelProperty("汇款凭证") + private String remitUrl; + + @ApiModelProperty("汇款时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime remitDateTime; + + @ApiModelProperty("申请时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime applyTime; + + @ApiModelProperty("提现类型") + private String withdrawType; + + @ApiModelProperty("第三方账号的信息") + private String extDetailsInfo; + + @ApiModelProperty("审批备注") + private String auditRemark; + + @ApiModelProperty("汇款备注") + private String remitRemark; +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/withdrawaudit/WithdrawAuditQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/withdrawaudit/WithdrawAuditQueryService.java index 222435f..0e8f3f4 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/withdrawaudit/WithdrawAuditQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/withdrawaudit/WithdrawAuditQueryService.java @@ -7,4 +7,6 @@ import com.qniao.framework.utils.PageUtil; public interface WithdrawAuditQueryService { IPage pageWithdrawAudit(UserPageWithdrawAuditQueryParams queryParams, PageUtil pageUtil); + + String exportData(UserPageWithdrawAuditQueryParams queryParams); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/withdrawaudit/impl/WithdrawAuditQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/withdrawaudit/impl/WithdrawAuditQueryServiceImpl.java index cec1376..9df3471 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/withdrawaudit/impl/WithdrawAuditQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/withdrawaudit/impl/WithdrawAuditQueryServiceImpl.java @@ -1,24 +1,67 @@ package com.qniao.dam.query.withdrawaudit.impl; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.qniao.dam.api.command.paymentchannelorder.user.request.ThirdPartyField; +import com.qniao.dam.api.query.walletaccount.user.response.UsePageWalletAccountRecordByOperatorVo; +import com.qniao.dam.api.query.walletaccount.user.response.WalletAccountRecordExportVo; import com.qniao.dam.api.query.withdrawaudit.user.request.UserPageWithdrawAuditQueryParams; import com.qniao.dam.api.query.withdrawaudit.user.response.UserPageWithdrawAuditVo; +import com.qniao.dam.api.query.withdrawaudit.user.response.WithdrawAuditExportVo; +import com.qniao.dam.infrastructure.easyexcel.EasyExcelUtil; import com.qniao.dam.infrastructure.persistent.dao.domain.WithdrawAuditDao; import com.qniao.dam.infrastructure.persistent.dao.view.WithdrawAuditViewDao; import com.qniao.dam.query.withdrawaudit.WithdrawAuditQueryService; import com.qniao.framework.utils.PageUtil; +import com.qniao.framework.utils.TypeConvertUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; @Service public class WithdrawAuditQueryServiceImpl implements WithdrawAuditQueryService { @Resource private WithdrawAuditViewDao withdrawAuditViewDao; + @Resource + private EasyExcelUtil easyExcelUtil; @Override public IPage pageWithdrawAudit(UserPageWithdrawAuditQueryParams queryParams, PageUtil pageUtil) { return withdrawAuditViewDao.pageWithdrawAudit(queryParams, pageUtil.toPageWithoutOrders()); } + + @Override + public String exportData(UserPageWithdrawAuditQueryParams queryParams) { + PageUtil pageUtil = new PageUtil(); + pageUtil.setOrders(null); + pageUtil.setPageNum(1); + pageUtil.setPageSize(-1); + IPage page = pageWithdrawAudit(queryParams, pageUtil); + List list = transformExport(page.getRecords()); + return easyExcelUtil.writeToFilePath( + easyExcelUtil.getTemplateFileAsStream("withdrawAuditExport"), + list + ); + } + + private List transformExport(List records) { + List list = new ArrayList<>(); + if (CollUtil.isNotEmpty(records)) { + list = TypeConvertUtils.convertList(records, WithdrawAuditExportVo.class, (vo, export) -> { + export.setStatus(vo.getStatus().getDesc()); + export.setRemitStatus(vo.getRemitStatus() ? "是" : "否"); + export.setWithdrawType(vo.getWithdrawType().getDesc()); + Map extDetailsInfo = vo.getExtDetailsInfo(); + export.setExtDetailsInfo("银行卡号:" + extDetailsInfo.get(ThirdPartyField.CARD_NUM) + ";" + + "持卡人姓名:" + extDetailsInfo.get(ThirdPartyField.OWNER_NAME) + ";" + + "所属银行:" + extDetailsInfo.get(ThirdPartyField.BANK_NAME) + ";" + + "开户行:" + extDetailsInfo.get(ThirdPartyField.OPENING_BANK)); + }); + } + return list; + } } diff --git a/dating-agency-mall-server/src/main/resources/templates/withdrawAuditExport.xlsx b/dating-agency-mall-server/src/main/resources/templates/withdrawAuditExport.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..0c92f28bf31e9abf7885a5f47556140b8ca76089 GIT binary patch literal 10746 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