From bc2352b3decfc614781a8aafdb40ad2f80afcc5f Mon Sep 17 00:00:00 2001 From: damonyuan <404054358@qq.com> Date: Sat, 26 Oct 2024 10:56:17 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E5=85=85=E5=80=BC=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=BC=E5=87=BAExcel=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../finance/FinanceRechargerController.java | 18 +++- .../service/IFinanceRechargerService.java | 11 ++ .../impl/FinanceRechargerServiceImpl.java | 101 +++++++++++++++++- .../admin/service/impl/UserServiceImpl.java | 4 +- .../FinanceRechargeSearchValidate.java | 17 +++ .../finance/FinanceRechargeListExportVo.java | 83 ++++++++++++++ 6 files changed, 225 insertions(+), 9 deletions(-) create mode 100644 server/like-admin/src/main/java/com/mdd/admin/vo/finance/FinanceRechargeListExportVo.java diff --git a/server/like-admin/src/main/java/com/mdd/admin/controller/finance/FinanceRechargerController.java b/server/like-admin/src/main/java/com/mdd/admin/controller/finance/FinanceRechargerController.java index ef199297..099fa110 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/controller/finance/FinanceRechargerController.java +++ b/server/like-admin/src/main/java/com/mdd/admin/controller/finance/FinanceRechargerController.java @@ -1,5 +1,6 @@ package com.mdd.admin.controller.finance; +import com.alibaba.fastjson2.JSONObject; import com.mdd.admin.LikeAdminThreadLocal; import com.mdd.admin.service.IFinanceRechargerService; import com.mdd.admin.validate.commons.IdValidate; @@ -9,6 +10,7 @@ import com.mdd.admin.validate.finance.FinanceRefundValidate; import com.mdd.admin.vo.finance.FinanceRechargeListVo; import com.mdd.common.core.AjaxResult; import com.mdd.common.core.PageResult; +import com.mdd.common.util.StringUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; @@ -27,10 +29,20 @@ public class FinanceRechargerController { @GetMapping("/lists") @ApiOperation("充值记录") - public AjaxResult> list(@Validated PageValidate pageValidate, + public AjaxResult list(@Validated PageValidate pageValidate, @Validated FinanceRechargeSearchValidate searchValidate) { - PageResult list = iFinanceRechargerService.list(pageValidate, searchValidate); - return AjaxResult.success(list); + if (StringUtils.isNotNull(searchValidate.getExport()) && searchValidate.getExport().equals(1)) { + JSONObject ret = iFinanceRechargerService.getExportData(pageValidate, searchValidate); + return AjaxResult.success(ret); + } else if (StringUtils.isNotNull(searchValidate.getExport()) && searchValidate.getExport().equals(2)) { + String path = iFinanceRechargerService.export(searchValidate); + return AjaxResult.success(new JSONObject() {{ + put("url", path); + }}); + } else { + PageResult list = iFinanceRechargerService.list(pageValidate, searchValidate); + return AjaxResult.success(list); + } } @PostMapping("/refund") diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/IFinanceRechargerService.java b/server/like-admin/src/main/java/com/mdd/admin/service/IFinanceRechargerService.java index b5aebf88..4bc83811 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/service/IFinanceRechargerService.java +++ b/server/like-admin/src/main/java/com/mdd/admin/service/IFinanceRechargerService.java @@ -1,5 +1,6 @@ package com.mdd.admin.service; +import com.alibaba.fastjson2.JSONObject; import com.mdd.admin.validate.commons.PageValidate; import com.mdd.admin.validate.finance.FinanceRechargeSearchValidate; import com.mdd.admin.vo.finance.FinanceRechargeListVo; @@ -38,4 +39,14 @@ public interface IFinanceRechargerService { */ void refundAgain(Integer recordId, Integer adminId); + /** + * 返回导出格式 + * @return + */ + JSONObject getExportData(PageValidate pageValidate, FinanceRechargeSearchValidate searchValidate); + + /** + * 导出 + */ + String export(FinanceRechargeSearchValidate searchValidate); } diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/impl/FinanceRechargerServiceImpl.java b/server/like-admin/src/main/java/com/mdd/admin/service/impl/FinanceRechargerServiceImpl.java index 455ba41d..3e9d00c3 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/service/impl/FinanceRechargerServiceImpl.java +++ b/server/like-admin/src/main/java/com/mdd/admin/service/impl/FinanceRechargerServiceImpl.java @@ -1,5 +1,8 @@ package com.mdd.admin.service.impl; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.support.ExcelTypeEnum; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -7,7 +10,10 @@ import com.github.yulichang.query.MPJQueryWrapper; import com.mdd.admin.service.IFinanceRechargerService; import com.mdd.admin.validate.commons.PageValidate; import com.mdd.admin.validate.finance.FinanceRechargeSearchValidate; +import com.mdd.admin.vo.finance.FinanceRechargeListExportVo; import com.mdd.admin.vo.finance.FinanceRechargeListVo; +import com.mdd.admin.vo.user.UserListExportVo; +import com.mdd.admin.vo.user.UserVo; import com.mdd.common.config.GlobalConfig; import com.mdd.common.core.PageResult; import com.mdd.common.entity.RechargeOrder; @@ -25,10 +31,7 @@ import com.mdd.common.mapper.log.UserAccountLogMapper; import com.mdd.common.mapper.user.UserMapper; import com.mdd.common.plugin.wechat.WxPayDriver; import com.mdd.common.plugin.wechat.request.RefundRequestV3; -import com.mdd.common.util.AmountUtil; -import com.mdd.common.util.StringUtils; -import com.mdd.common.util.TimeUtils; -import com.mdd.common.util.UrlUtils; +import com.mdd.common.util.*; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.stereotype.Service; import org.springframework.transaction.TransactionDefinition; @@ -36,6 +39,9 @@ import org.springframework.transaction.TransactionStatus; import org.springframework.util.Assert; import javax.annotation.Resource; +import java.io.File; +import java.util.ArrayList; +import java.util.List; /** * 充值记录服务实现类 @@ -273,4 +279,91 @@ public class FinanceRechargerServiceImpl implements IFinanceRechargerService { } } + @Override + public JSONObject getExportData(PageValidate pageValidate, FinanceRechargeSearchValidate searchValidate) { + Integer page = pageValidate.getPage_no(); + Integer limit = pageValidate.getPage_size(); + PageResult userVoPageResult = this.list(pageValidate, searchValidate); + JSONObject ret = ToolUtils.getExportData(userVoPageResult.getCount(), limit, searchValidate.getPage_start(), searchValidate.getPage_end(),"充值列表"); + return ret; + } + + @Override + public String export(FinanceRechargeSearchValidate searchValidate) { + PageValidate pageValidate = new PageValidate(); + if (StringUtils.isNotNull(searchValidate.getPage_start())) { + pageValidate.setPage_no(searchValidate.getPage_start()); + } else { + pageValidate.setPage_no(1); + } + + if (StringUtils.isNotNull(searchValidate.getPage_end()) && StringUtils.isNotNull(searchValidate.getPage_size())) { + pageValidate.setPage_size(searchValidate.getPage_end() * searchValidate.getPage_size()); + } else { + pageValidate.setPage_size(20); + } + Boolean isAll = StringUtils.isNull(searchValidate.getPage_type()) || searchValidate.getPage_type().equals(0) ? true : false; + List excellist = this.getExcellist(isAll, pageValidate, searchValidate); + String fileName = StringUtils.isNull(searchValidate.getFile_name()) ? ToolUtils.makeUUID() : searchValidate.getFile_name(); + String folderPath = "/excel/export/"+ TimeUtils.timestampToDay(System.currentTimeMillis() / 1000) +"/" ; + String path = folderPath + fileName +".xlsx"; + String filePath = YmlUtils.get("like.upload-directory") + path; + File folder = new File(YmlUtils.get("like.upload-directory") + folderPath); + if (!folder.exists()) { + if (!folder.mkdirs()) { + throw new OperateException("创建文件夹失败"); + } + } + EasyExcel.write(filePath) + .head(FinanceRechargeListExportVo.class) + .excelType(ExcelTypeEnum.XLSX) + .sheet("充值记录") + .doWrite(excellist); + return UrlUtils.toAbsoluteUrl(path); + } + + private List getExcellist(boolean isAll, PageValidate pageValidate, FinanceRechargeSearchValidate searchValidate) { + Integer pageNo = pageValidate.getPage_no(); + Integer pageSize = pageValidate.getPage_size(); + + MPJQueryWrapper mpjQueryWrapper = new MPJQueryWrapper<>(); + mpjQueryWrapper.selectAll(RechargeOrder.class) + .select("U.id as user_id,U.account ,U.nickname,U.avatar, t.sn AS sn") + .leftJoin("?_user U ON U.id=t.user_id".replace("?_", GlobalConfig.tablePrefix)) + .orderByDesc("id"); + + rechargeOrderMapper.setSearch(mpjQueryWrapper, searchValidate, new String[]{ + "like:sn@t.sn:str", + "=:pay_way@t.pay_way:int", + "=:pay_status@t.pay_status:int", + "datetime:start_time-end_time@create_time:long", + }); + + if (StringUtils.isNotEmpty(searchValidate.getUser_info())) { + String keyword = searchValidate.getUser_info(); + mpjQueryWrapper.nested(wq->wq + .like("U.nickname", keyword).or() + .like("U.sn", keyword).or() + .like("U.mobile", keyword)); + } + List retList = new ArrayList<>(); + if (isAll) { + retList = rechargeOrderMapper.selectJoinList(FinanceRechargeListExportVo.class, mpjQueryWrapper); + } else { + IPage iPage = rechargeOrderMapper.selectJoinPage( + new Page<>(pageNo, pageSize), + FinanceRechargeListExportVo.class, + mpjQueryWrapper); + retList = iPage.getRecords(); + } + for (FinanceRechargeListExportVo vo : retList) { + vo.setCreateTime(TimeUtils.timestampToDate(vo.getCreateTime())); + vo.setPayTime(TimeUtils.timestampToDate(vo.getPayTime())); + vo.setAvatar(UrlUtils.toAbsoluteUrl(vo.getAvatar())); + vo.setPayWay(vo.getPayWay()); + vo.setPayWayText(PaymentEnum.getPayWayMsg(Integer.parseInt(vo.getPayWay()))); + vo.setPayStatusText(PaymentEnum.getPayStatusMsg(vo.getPayStatus())); + } + return retList; + } } diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/impl/UserServiceImpl.java b/server/like-admin/src/main/java/com/mdd/admin/service/impl/UserServiceImpl.java index 13e6da12..619deffc 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/service/impl/UserServiceImpl.java +++ b/server/like-admin/src/main/java/com/mdd/admin/service/impl/UserServiceImpl.java @@ -259,7 +259,7 @@ public class UserServiceImpl implements IUserService { } else { pageValidate.setPage_size(20); } - Boolean isAll = StringUtils.isNull(searchValidate.getPage_type()) || searchValidate.getPage_type().equals(0) ? true : false; + Boolean isAll = StringUtils.isNull(searchValidate.getPage_type()) || searchValidate.getPage_type().equals(0) ? true : false; List excellist = this.getExcellist(isAll, pageValidate, searchValidate); String fileName = StringUtils.isNull(searchValidate.getFile_name()) ? ToolUtils.makeUUID() : searchValidate.getFile_name(); String folderPath = "/excel/export/"+ TimeUtils.timestampToDay(System.currentTimeMillis() / 1000) +"/" ; @@ -274,7 +274,7 @@ public class UserServiceImpl implements IUserService { EasyExcel.write(filePath) .head(UserListExportVo.class) .excelType(ExcelTypeEnum.XLSX) - .sheet("兑换记录") + .sheet("用户记录") .doWrite(excellist); return UrlUtils.toAbsoluteUrl(path); } diff --git a/server/like-admin/src/main/java/com/mdd/admin/validate/finance/FinanceRechargeSearchValidate.java b/server/like-admin/src/main/java/com/mdd/admin/validate/finance/FinanceRechargeSearchValidate.java index 481b3475..60738f78 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/validate/finance/FinanceRechargeSearchValidate.java +++ b/server/like-admin/src/main/java/com/mdd/admin/validate/finance/FinanceRechargeSearchValidate.java @@ -30,4 +30,21 @@ public class FinanceRechargeSearchValidate implements Serializable { @ApiModelProperty(value = "结束时间") private Integer end_time; + @ApiModelProperty(value = "导出信息") + private Integer export; + @ApiModelProperty(value = "file_name") + private String file_name; + + @ApiModelProperty(value = "page_start") + private Integer page_start; + + @ApiModelProperty(value = "page_end") + private Integer page_end; + + @ApiModelProperty(value = "page_size") + private Integer page_size; + + @ApiModelProperty(value = "page_type") + private Integer page_type; + } diff --git a/server/like-admin/src/main/java/com/mdd/admin/vo/finance/FinanceRechargeListExportVo.java b/server/like-admin/src/main/java/com/mdd/admin/vo/finance/FinanceRechargeListExportVo.java new file mode 100644 index 00000000..858e65b5 --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/vo/finance/FinanceRechargeListExportVo.java @@ -0,0 +1,83 @@ +package com.mdd.admin.vo.finance; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ApiModel("导出充值记录列表Vo") +public class FinanceRechargeListExportVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("ID") + @ExcelProperty("ID") + @ColumnWidth(50) + private Integer id; + + @ApiModelProperty("用户昵称") + @ExcelProperty("用户昵称") + @ColumnWidth(50) + private String nickname; + + @ApiModelProperty("用户头像") + @ExcelProperty("用户头像") + @ColumnWidth(50) + private String avatar; + + @ApiModelProperty("账号") + @ExcelProperty("账号") + @ColumnWidth(50) + private String acount; + + @ApiModelProperty("订单编号") + @ExcelProperty("订单编号") + @ColumnWidth(50) + private String sn; + + @ApiModelProperty("支付方式: [2=微信支付, 3=支付宝支付]") + @ExcelProperty("支付方式: [2=微信支付, 3=支付宝支付]") + @ColumnWidth(50) + private String payWay; + + @ApiModelProperty("支付状态: [0=待支付, 1=已支付]") + @ExcelProperty("支付状态: [0=待支付, 1=已支付]") + @ColumnWidth(50) + private Integer payStatus; + + @ApiModelProperty("退款状态: [0=未退款 , 1=已退款]") + @ExcelProperty("退款状态: [0=未退款 , 1=已退款]") + @ColumnWidth(50) + private Integer refundStatus; + + @ApiModelProperty("支付状态: [0=待支付, 1=已支付]") + @ExcelProperty("支付状态: [0=待支付, 1=已支付]") + @ColumnWidth(50) + private String payStatusText; + + @ApiModelProperty("支付方式") + @ExcelProperty("支付方式") + @ColumnWidth(50) + private String payWayText; + + @ApiModelProperty("支付金额") + @ExcelProperty("支付金额") + @ColumnWidth(50) + private BigDecimal orderAmount; + + @ApiModelProperty("支付时间") + @ExcelProperty("支付时间") + @ColumnWidth(50) + private String payTime; + + @ApiModelProperty("创建时间") + @ExcelProperty("创建时间") + @ColumnWidth(50) + private String createTime; + +}