From e00e10418b01eb0ee442b2dc4029925fba7ae33b Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期四, 20 十一月 2025 09:16:24 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/user_action' into user_action
---
framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java | 148 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 144 insertions(+), 4 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..bcee9f6 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;
/**
* 缂撳瓨
*/
@@ -99,10 +116,10 @@
@Override
@CacheEvict(key = "#memberId")
@Transactional(rollbackFor = Exception.class)
- public void receiveCoupon(String couponId, String memberId, String memberName) {
+ public MemberCoupon receiveCoupon(String couponId, String memberId, String memberName) {
Coupon coupon = couponService.getById(couponId);
if (coupon != null) {
- this.receiverCoupon(couponId, memberId, memberName, coupon);
+ return this.receiverCoupon(couponId, memberId, memberName, coupon);
} else {
throw new ServiceException(ResultCode.COUPON_NOT_EXIST);
}
@@ -144,7 +161,7 @@
* @return 浼氬憳浼樻儬鍒稿垪琛�
*/
@Override
- @Cacheable(key = "#memberId")
+// @Cacheable(key = "#memberId")
public List<MemberCoupon> getMemberCoupons(String memberId) {
MemberCouponSearchParams searchParams = new MemberCouponSearchParams();
searchParams.setMemberId(Objects.requireNonNull(UserContext.getCurrentUser()).getId());
@@ -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<>();
@@ -334,6 +471,8 @@
queryWrapper.eq(MemberCoupon::getCouponId, couponId);
return this.count(queryWrapper);
}
+
+
/**
* 娓呴櫎鏃犳晥鐨勪細鍛樹紭鎯犲埜
@@ -352,7 +491,7 @@
return this.update(updateWrapper);
}
- private void receiverCoupon(String couponId, String memberId, String memberName, Coupon coupon) {
+ private MemberCoupon receiverCoupon(String couponId, String memberId, String memberName, Coupon coupon) {
this.checkCouponLimit(couponId, memberId);
MemberCoupon memberCoupon = new MemberCoupon(coupon);
memberCoupon.setMemberId(memberId);
@@ -361,5 +500,6 @@
memberCoupon.setPlatformFlag((PromotionTools.PLATFORM_ID).equals(coupon.getStoreId()));
this.save(memberCoupon);
couponService.receiveCoupon(couponId, 1);
+ return memberCoupon;
}
}
\ No newline at end of file
--
Gitblit v1.8.0