From fc15ffa30d156b15f5c0054c057cbba7109a4c7a Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Thu, 18 Sep 2025 15:25:26 +0800 Subject: [PATCH] =?UTF-8?q?vip=E6=98=8E=E7=BB=86=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E3=80=81=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/common/dao/UserVipLogDao.java | 8 ++ .../common/service/UserVipLogService.java | 5 + .../service/impl/UserVipLogServiceImpl.java | 13 ++- .../master/controller/UserVipController.java | 93 +++++++++++++++++++ .../resources/mapper/master/UserVipLogDao.xml | 42 +++++++++ 5 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/mapper/master/UserVipLogDao.xml diff --git a/src/main/java/com/peanut/modules/common/dao/UserVipLogDao.java b/src/main/java/com/peanut/modules/common/dao/UserVipLogDao.java index db9f78d1..adcaa6ee 100644 --- a/src/main/java/com/peanut/modules/common/dao/UserVipLogDao.java +++ b/src/main/java/com/peanut/modules/common/dao/UserVipLogDao.java @@ -3,7 +3,15 @@ package com.peanut.modules.common.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.peanut.modules.common.entity.UserVipLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; @Mapper public interface UserVipLogDao extends BaseMapper { + + List> getUserVipLogInfoList(@Param("date") String date); + + Map getUserVipLogInfoTotal(@Param("date") String date); } diff --git a/src/main/java/com/peanut/modules/common/service/UserVipLogService.java b/src/main/java/com/peanut/modules/common/service/UserVipLogService.java index dfb34be9..b91d5f69 100644 --- a/src/main/java/com/peanut/modules/common/service/UserVipLogService.java +++ b/src/main/java/com/peanut/modules/common/service/UserVipLogService.java @@ -5,6 +5,7 @@ import com.peanut.modules.common.entity.UserVip; import com.peanut.modules.common.entity.UserVipLog; import java.math.BigDecimal; +import java.util.List; import java.util.Map; public interface UserVipLogService extends IService { @@ -15,4 +16,8 @@ public interface UserVipLogService extends IService { BigDecimal countDayAmount(UserVipLog userVipLog); + List> getUserVipLogInfoList(String date); + + Map getUserVipLogInfoTotal(String date); + } diff --git a/src/main/java/com/peanut/modules/common/service/impl/UserVipLogServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/UserVipLogServiceImpl.java index 559fbf55..0519b622 100644 --- a/src/main/java/com/peanut/modules/common/service/impl/UserVipLogServiceImpl.java +++ b/src/main/java/com/peanut/modules/common/service/impl/UserVipLogServiceImpl.java @@ -8,8 +8,8 @@ import com.peanut.modules.common.service.UserVipLogService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; - import java.math.BigDecimal; +import java.util.List; import java.util.Map; @Slf4j @@ -45,7 +45,18 @@ public class UserVipLogServiceImpl extends ServiceImpl> getUserVipLogInfoList(String date) { + return this.baseMapper.getUserVipLogInfoList(date); + } + + @Override + public Map getUserVipLogInfoTotal(String date) { + return this.baseMapper.getUserVipLogInfoTotal(date); + } } diff --git a/src/main/java/com/peanut/modules/master/controller/UserVipController.java b/src/main/java/com/peanut/modules/master/controller/UserVipController.java index a1d70139..f11d007e 100644 --- a/src/main/java/com/peanut/modules/master/controller/UserVipController.java +++ b/src/main/java/com/peanut/modules/master/controller/UserVipController.java @@ -11,14 +11,21 @@ import com.peanut.modules.common.service.JfTransactionDetailsService; import com.peanut.modules.common.service.UserVipLogService; import com.peanut.modules.master.service.MyUserService; import com.peanut.modules.master.service.UserVipService; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import jakarta.transaction.Transactional; +import java.io.IOException; +import java.io.OutputStream; import java.math.BigDecimal; +import java.net.URLEncoder; import java.util.*; /** @@ -40,6 +47,92 @@ public class UserVipController { @Autowired private JfTransactionDetailsService jfTransactionDetailsService; + @RequestMapping("/getUserVipLogInfoTotal") + public R getUserVipLogInfoTotal(@RequestBody Map params) { + Map map = userVipLogService.getUserVipLogInfoTotal(params.get("date").toString()); + return R.ok().put("total", map); + } + + @RequestMapping("/getUserVipLogInfoList") + public R getUserVipLogInfoList(@RequestBody Map params) { + List> maps = userVipLogService.getUserVipLogInfoList(params.get("date").toString()); + return R.ok().put("list", maps); + } + + //导出vip记录明细 + @RequestMapping("/exportUserVipLogInfo") + public void exportUserVipLogInfo(HttpServletResponse response, @RequestBody Map params){ + List> maps = userVipLogService.getUserVipLogInfoList(params.get("date").toString()); + XSSFWorkbook wb = new XSSFWorkbook(); + //创建一张表 + Sheet sheet = wb.createSheet("vip记录明细"); + //创建第一行,起始为0 + Row titleRow = sheet.createRow(0); + titleRow.createCell(0).setCellValue("姓名"); + titleRow.createCell(1).setCellValue("电话"); + titleRow.createCell(2).setCellValue("VIP类型"); + titleRow.createCell(3).setCellValue("开始时间"); + titleRow.createCell(4).setCellValue("结束时间"); + titleRow.createCell(5).setCellValue("订单号"); + titleRow.createCell(6).setCellValue("支付方式"); + titleRow.createCell(7).setCellValue("备注"); + titleRow.createCell(8).setCellValue("金额"); + titleRow.createCell(9).setCellValue("总天数"); + titleRow.createCell(10).setCellValue("每日摊销"); + titleRow.createCell(11).setCellValue("已摊销天数"); + titleRow.createCell(12).setCellValue("当月摊销天数"); + titleRow.createCell(13).setCellValue("未摊销天数"); + titleRow.createCell(14).setCellValue("已摊销金额"); + titleRow.createCell(15).setCellValue("当月摊销金额"); + titleRow.createCell(16).setCellValue("剩余摊销金额"); + //序号,默认为1 + int cell = 1; + //遍历 + for (Map map : maps) { + Row row = sheet.createRow(cell); + row.createCell(0).setCellValue(map.get("name").toString()); + row.createCell(1).setCellValue(map.get("tel").toString()); + row.createCell(2).setCellValue(map.get("type").toString()); + row.createCell(3).setCellValue(map.get("startTime").toString()); + row.createCell(4).setCellValue(map.get("endTime").toString()); + row.createCell(5).setCellValue(map.get("orderSn").toString()); + row.createCell(6).setCellValue(map.get("payType").toString()); + row.createCell(7).setCellValue(map.get("remark").toString()); + row.createCell(8).setCellValue(map.get("fee").toString()); + row.createCell(9).setCellValue(map.get("totalDays").toString()); + row.createCell(10).setCellValue(map.get("dayAmount").toString()); + row.createCell(11).setCellValue(map.get("alreadyDays").toString()); + row.createCell(12).setCellValue(map.get("currentDays").toString()); + row.createCell(13).setCellValue(map.get("notyetDays").toString()); + row.createCell(14).setCellValue(map.get("alreadyTanxiao").toString()); + row.createCell(15).setCellValue(map.get("currentTanxiao").toString()); + row.createCell(16).setCellValue(map.get("notyetTanxiao").toString()); + //序号自增 + cell++; + } + String fileName = "vip记录明细.xlsx"; + OutputStream outputStream =null; + try { + //文件名编码格式 + fileName = URLEncoder.encode(fileName,"UTF-8"); + //设置ContentType请求信息格式 + response.setContentType("application/vnd.ms-excel"); + //设置标头 + response.setHeader("Content-disposition", "attachment;filename=" + fileName); + outputStream = response.getOutputStream(); + wb.write(outputStream); + } catch (IOException e) { + e.printStackTrace(); + }finally { + try { + outputStream.flush(); + outputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + @RequestMapping("/getUserVipList") public R getUserVipList(@RequestBody Map params) { MPJLambdaWrapper wrapper = new MPJLambdaWrapper(); diff --git a/src/main/resources/mapper/master/UserVipLogDao.xml b/src/main/resources/mapper/master/UserVipLogDao.xml new file mode 100644 index 00000000..51ab7d50 --- /dev/null +++ b/src/main/resources/mapper/master/UserVipLogDao.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + \ No newline at end of file