From a749712eeb682285a402b563f26f7b916015b6dc Mon Sep 17 00:00:00 2001 From: peng <peng.com> Date: 星期五, 08 八月 2025 17:37:16 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java | 139 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 139 insertions(+), 0 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java index b4d643a..73325fb 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java @@ -1,5 +1,7 @@ package cn.lili.modules.promotion.serviceimpl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.cache.Cache; import cn.lili.common.enums.ResultCode; @@ -7,6 +9,11 @@ import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.PageVO; +import cn.lili.modules.lmk.enums.general.AdminRoleEnum; +import cn.lili.modules.order.order.entity.dto.CouponExportDetailDTO; +import cn.lili.modules.order.order.entity.dto.OrderExportDTO; +import cn.lili.modules.order.order.entity.dto.OrderExportDetailDTO; +import cn.lili.modules.permission.service.AdminUserService; import cn.lili.modules.promotion.entity.dos.Coupon; import cn.lili.modules.promotion.entity.dos.MemberCoupon; import cn.lili.modules.promotion.entity.dto.search.MemberCouponSearchParams; @@ -20,6 +27,7 @@ import cn.lili.modules.promotion.service.MemberCouponService; import cn.lili.modules.promotion.tools.PromotionTools; import cn.lili.mybatis.util.PageUtil; +import cn.lili.utils.CommonUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -27,6 +35,10 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.poi.ss.usermodel.Cell; +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.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; @@ -34,6 +46,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; import java.util.*; /** @@ -52,6 +67,8 @@ @Autowired private CouponService couponService; + @Autowired + private AdminUserService adminUserService; /** * 缂撳瓨 */ @@ -306,6 +323,26 @@ this.update(updateWrapper); } + public List<MemberCouponVO> getMemberCouponsPageExport(MemberCouponSearchParams param){ + QueryWrapper<MemberCouponVO> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getMemberId()), "mc.member_id", param.getMemberId()); + queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getStoreId()), "c.store_id", param.getStoreId()); + queryWrapper.like(CharSequenceUtil.isNotEmpty(param.getMemberName()), "mc.member_name", param.getMemberName()); + queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getCouponId()), "mc.coupon_id", param.getCouponId()); + queryWrapper.like(CharSequenceUtil.isNotEmpty(param.getCouponName()), "c.coupon_name", param.getCouponName()); + queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getGetType()), "mc.get_type", param.getGetType()); + queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getScopeType()), "mc.scope_type", param.getPromotionStatus()); + queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getCouponType()), "mc.coupon_type", param.getCouponType()); + queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getMemberCouponStatus()), "mc.member_coupon_status", param.getMemberCouponStatus()); + if (param.getStartTime() != null) { + queryWrapper.ge("mc.start_time", new Date(param.getStartTime())); + } + if (param.getEndTime() != null) { + queryWrapper.le("mc.end_time", new Date(param.getEndTime())); + } + return this.baseMapper.getMemberCouponsExport(queryWrapper); + } + @Override public Page<MemberCouponVO> getMemberCouponsPage(Page<MemberCoupon> page, MemberCouponSearchParams param) { QueryWrapper<MemberCouponVO> queryWrapper = new QueryWrapper<>(); @@ -326,7 +363,107 @@ } return this.baseMapper.getMemberCoupons(page, queryWrapper); } + @Override + public void queryExportCoupon(HttpServletResponse response, MemberCouponSearchParams searchParams) { + List<MemberCouponVO> records = this.getMemberCouponsPageExport(searchParams); + XSSFWorkbook workbook = initCouponExportData(records); + try { + // 璁剧疆鍝嶅簲澶� + String fileName = URLEncoder.encode("浼樻儬鍒搁鍙栬褰�", "UTF-8"); + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); + + ServletOutputStream out = response.getOutputStream(); + workbook.write(out); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + workbook.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + private XSSFWorkbook initCouponExportData(List<MemberCouponVO> list){ + List<CouponExportDetailDTO> couponExportDetailDTOS = new ArrayList<>(); + for (MemberCoupon memberCoupon : list){ + CouponExportDetailDTO dto = new CouponExportDetailDTO(); + BeanUtil.copyProperties(memberCoupon, dto); + couponExportDetailDTOS.add(dto); + } + System.out.println("-----------------------"); + System.out.println(couponExportDetailDTOS); + XSSFWorkbook workbook = new XSSFWorkbook(); + Sheet sheet = workbook.createSheet("浼樻儬鍒搁鍙栬褰�"); + Row header = sheet.createRow(0); + String[] headers = {"浼氬憳鍚嶇О","浼樻儬鍒稿悕绉�","鍙戝竷搴楅摵","闈㈤/鎶樻墸","浣跨敤闂ㄦ","鑾峰彇鏂瑰紡" + ,"浼氬憳浼樻儬鍒哥姸鎬�","浼樻儬鍒哥被鍨�","鍝佺被鎻忚堪","浣跨敤璧峰鏃堕棿","鎴鏃堕棿"}; + for(int i= 0 ;i< headers.length;i++){ + Cell cell = header.createCell(i); + cell.setCellValue(headers[i]); + } + //濉厖鏁版嵁 + for (int i =0 ;i< couponExportDetailDTOS.size();i++){ + CouponExportDetailDTO dto = couponExportDetailDTOS.get(i); + Row row = sheet.createRow(i+1); + row.createCell(0).setCellValue(dto.getMemberName()); + row.createCell(1).setCellValue(dto.getCouponName()); + if ("platform".equals(dto.getStoreName())){ + row.createCell(2).setCellValue("骞冲彴"); + }else { + row.createCell(2).setCellValue(dto.getStoreName()); + } + if (dto.getDiscount() != null){ + row.createCell(3).setCellValue(dto.getDiscount()+"鎶�"); + } + if (dto.getPrice()!=null){ + row.createCell(3).setCellValue(dto.getPrice()+"锟�"); + } + row.createCell(4).setCellValue(dto.getConsumeThreshold()); + if("FREE".equals(dto.getGetType())){ + row.createCell(5).setCellValue("鍏嶈垂鑾峰彇"); + }else if("ACTIVITY".equals(dto.getGetType())){ + row.createCell(5).setCellValue("娲诲姩鑾峰彇"); + }else if("lime".equals(dto.getGetType())){ + row.createCell(5).setCellValue("鍐呰喘"); + }else if("purple".equals(dto.getGetType())){ + row.createCell(5).setCellValue("鏈煡"); + } + + if("NEW".equals(dto.getMemberCouponStatus())){ + row.createCell(6).setCellValue("宸查鍙�"); + }else if("USED".equals(dto.getMemberCouponStatus())){ + row.createCell(6).setCellValue("宸蹭娇鐢�"); + }else if("EXPIRE".equals(dto.getMemberCouponStatus())){ + row.createCell(6).setCellValue("宸茶繃鏈�"); + }else if("CLOSED".equals(dto.getMemberCouponStatus())){ + row.createCell(6).setCellValue("宸蹭綔搴�"); + } + if("DISCOUNT".equals(dto.getCouponType())){ + row.createCell(7).setCellValue("鎵撴姌"); + }else if("PRICE".equals(dto.getCouponType())){ + row.createCell(7).setCellValue("鍑忓厤鐜伴噾"); + }else{ + row.createCell(7).setCellValue("鏈煡"); + } + if ("ALL".equals(dto.getScopeType())) { + row.createCell(8).setCellValue("鍏ㄥ搧绫�"); + }else if ("PORTION_GOODS_CATEGORY".equals(dto.getScopeType())) { + row.createCell(8).setCellValue("鍟嗗搧鍒嗙被"); + } else if ("PORTION_SHOP_CATEGORY".equals(dto.getScopeType())) { + row.createCell(8).setCellValue("搴楅摵鍒嗙被"); + } else if ("PORTION_GOODS".equals(dto.getScopeType())) { + row.createCell(8).setCellValue("鎸囧畾鍟嗗搧"); + } + + row.createCell(9).setCellValue(DateUtil.formatDateTime(dto.getStartTime())); + row.createCell(10).setCellValue(DateUtil.formatDateTime(dto.getEndTime())); + } + return workbook; + } @Override public long getMemberCouponNum(String memberId, String couponId) { LambdaQueryWrapper<MemberCoupon> queryWrapper = new LambdaQueryWrapper<>(); @@ -335,6 +472,8 @@ return this.count(queryWrapper); } + + /** * 娓呴櫎鏃犳晥鐨勪細鍛樹紭鎯犲埜 * -- Gitblit v1.8.0