feat 充值记录增加导出Excel功能

This commit is contained in:
damonyuan 2024-10-26 10:56:17 +08:00
parent 9ab3d7e624
commit bc2352b3de
6 changed files with 225 additions and 9 deletions

View File

@ -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,11 +29,21 @@ public class FinanceRechargerController {
@GetMapping("/lists")
@ApiOperation("充值记录")
public AjaxResult<PageResult<FinanceRechargeListVo>> list(@Validated PageValidate pageValidate,
public AjaxResult<Object> list(@Validated PageValidate pageValidate,
@Validated FinanceRechargeSearchValidate searchValidate) {
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<FinanceRechargeListVo> list = iFinanceRechargerService.list(pageValidate, searchValidate);
return AjaxResult.success(list);
}
}
@PostMapping("/refund")
@ApiOperation("发起退款")

View File

@ -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);
}

View File

@ -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<FinanceRechargeListVo> 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<FinanceRechargeListExportVo> 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<FinanceRechargeListExportVo> getExcellist(boolean isAll, PageValidate pageValidate, FinanceRechargeSearchValidate searchValidate) {
Integer pageNo = pageValidate.getPage_no();
Integer pageSize = pageValidate.getPage_size();
MPJQueryWrapper<RechargeOrder> 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<FinanceRechargeListExportVo> retList = new ArrayList<>();
if (isAll) {
retList = rechargeOrderMapper.selectJoinList(FinanceRechargeListExportVo.class, mpjQueryWrapper);
} else {
IPage<FinanceRechargeListExportVo> 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;
}
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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;
}