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