diff --git a/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/lucky/Lucky24RecordAdminService.java b/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/lucky/Lucky24RecordAdminService.java index 6a247f7aa..8e11ff940 100644 --- a/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/lucky/Lucky24RecordAdminService.java +++ b/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/lucky/Lucky24RecordAdminService.java @@ -218,7 +218,9 @@ public class Lucky24RecordAdminService { } // 如果列表为空或起始索引超出范围,则创建空的子列表 - List subList = (list.isEmpty() || startIndex >= list.size()) + List subList = pageNo <= 0 || pageSize <= 0? + list: + (list.isEmpty() || startIndex >= list.size()) ? Collections.emptyList() : list.subList(startIndex, endIndex); @@ -318,8 +320,8 @@ public class Lucky24RecordAdminService { dateStrList.sort(Comparator.reverseOrder()); // 按大到小排序 - int startIndex = (pageNo -1) * pageSize; - int endIndex = Math.min(startIndex + pageSize, dateStrList.size()); + int startIndex = pageNo <= 0 || pageSize <= 0? 0: (pageNo -1) * pageSize; + int endIndex = pageNo <= 0 || pageSize <= 0? dateStrList.size(): Math.min(startIndex + pageSize, dateStrList.size()); page.setTotal(dateStrList.size()); List subDateStrList = dateStrList.subList(startIndex, endIndex); diff --git a/accompany-admin/accompany-admin-web/src/main/java/com/accompany/admin/controller/lucky/Lucky24RecordAdminController.java b/accompany-admin/accompany-admin-web/src/main/java/com/accompany/admin/controller/lucky/Lucky24RecordAdminController.java index 5a3c69fdf..c3a0405e9 100644 --- a/accompany-admin/accompany-admin-web/src/main/java/com/accompany/admin/controller/lucky/Lucky24RecordAdminController.java +++ b/accompany-admin/accompany-admin-web/src/main/java/com/accompany/admin/controller/lucky/Lucky24RecordAdminController.java @@ -10,6 +10,7 @@ import com.accompany.common.result.BusiResult; import com.accompany.common.result.PageResult; import com.accompany.common.status.BusiStatus; import com.accompany.core.exception.ServiceException; +import com.accompany.sharding.vo.Lucky24PersonalStat; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.support.ExcelTypeEnum; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -17,6 +18,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import lombok.SneakyThrows; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.GetMapping; @@ -74,6 +76,34 @@ public class Lucky24RecordAdminController extends BaseController { return BusiResult.success(vo); } + @SneakyThrows + @ApiOperation("导出个人数据") + @ApiImplicitParams({ + @ApiImplicitParam(value = "partitionId", name = "分区ID", required = true), + @ApiImplicitParam(value = "erbanNo", name = "用户ID"), + @ApiImplicitParam(value = "date", name = "开始日期", required = true), + @ApiImplicitParam(value = "userRechargeLevel", name = "用户充值等级", required = false), + @ApiImplicitParam(value = "poolType", name = "数组类型", required = true), + @ApiImplicitParam(value = "sortCol", name = "排序列", required = true), + @ApiImplicitParam(value = "sortOrder", name = "排序方式", required = true) + }) + @GetMapping("/personal/export") + public void exportPersonal(HttpServletResponse response, + Integer partitionId, Long erbanNo, String date, String userRechargeLevel, Integer poolType, + String sortCol, String sortOrder) { + if (null == partitionId || (null == erbanNo && !StringUtils.hasText(date))) { + throw new ServiceException(BusiStatus.PARAMERROR); + } + Lucky24PersonalStatVo vo = service.getPersonal(partitionId, erbanNo, date, userRechargeLevel, poolType, sortCol, sortOrder, 1, -1); + + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + // 这里URLEncoder.encode可以防止中文乱码 + String excelName = URLEncoder.encode("幸运24个人数据", StandardCharsets.UTF_8); + response.setHeader("Content-disposition", "attachment;filename=" + excelName + ExcelTypeEnum.XLSX.getValue()); + EasyExcel.write(response.getOutputStream(), Lucky24PersonalStat.class).sheet("幸运24个人数据").doWrite(vo.getDataPage().getRows()); + } + @ApiOperation("运营数据") @ApiImplicitParams({ @ApiImplicitParam(value = "erbanNo", name = "用户ID", required = true), diff --git a/accompany-base/accompany-sharding/accompany-sharding-sdk/src/main/java/com/accompany/sharding/vo/Lucky24PersonalStat.java b/accompany-base/accompany-sharding/accompany-sharding-sdk/src/main/java/com/accompany/sharding/vo/Lucky24PersonalStat.java index 07f8b0155..8b47d3d1e 100644 --- a/accompany-base/accompany-sharding/accompany-sharding-sdk/src/main/java/com/accompany/sharding/vo/Lucky24PersonalStat.java +++ b/accompany-base/accompany-sharding/accompany-sharding-sdk/src/main/java/com/accompany/sharding/vo/Lucky24PersonalStat.java @@ -1,5 +1,6 @@ package com.accompany.sharding.vo; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; @@ -14,33 +15,47 @@ import java.math.BigDecimal; @ApiModel public class Lucky24PersonalStat { + @ExcelProperty("日期") @ApiModelProperty("日期") private String date; + @ExcelProperty("分区id") @ApiModelProperty("分区id") private Integer partitionId; + @ExcelProperty("分区描述") @ApiModelProperty("分区描述") private Integer poolType; + @ExcelProperty("uid") @ApiModelProperty("uid") private Long uid; + @ExcelProperty("erbanNO") @ApiModelProperty("erbanNO") private Long erbanNo; + @ExcelProperty("用户充值等级") @ApiModelProperty("用户充值等级") private String userRechargeLevel; + @ExcelProperty("送礼金币总额") @ApiModelProperty("送礼金币总额") private Long totalInput; + @ExcelProperty("送礼返币总额") @ApiModelProperty("送礼返币总额") private Long totalOutput; + @ExcelProperty("相差") @ApiModelProperty("相差") private Long production; + @ExcelProperty("投产比") @ApiModelProperty("投产比") private BigDecimal productionRatio; + @ExcelProperty("平均投入金额") @ApiModelProperty("平均投入金额") private BigDecimal avgInput; + @ExcelProperty("参与次数") @ApiModelProperty("参与次数") private Long num; + @ExcelProperty("中奖人数") @ApiModelProperty("中奖人数") private Long winNum; + @ExcelProperty("中奖率") @ApiModelProperty("中奖率") private BigDecimal winRate; @@ -59,4 +74,4 @@ public class Lucky24PersonalStat { this.winNum = 0L; this.winRate = BigDecimal.ZERO; } -} +} \ No newline at end of file