From f842d7d4d08ab84137ad6e701d790b75797ea5c4 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期日, 28 九月 2025 09:19:33 +0800
Subject: [PATCH] 店铺绑优惠劵领取记录
---
manager-api/src/main/java/cn/lili/controller/lmk/StoreCouponController.java | 19 +
framework/src/main/java/cn/lili/modules/lmk/mapper/StoreCouponClaimRecordMapper.java | 2
framework/src/main/java/cn/lili/modules/order/order/entity/dto/StoreCouponClaimRecordDTO.java | 96 +++++++++
framework/src/main/resources/mapper/lmk/StoreCouponClaimRecordMapper.xml | 177 ++++++++++++++++-
framework/src/main/java/cn/lili/modules/lmk/domain/vo/StoreCouponClaimRecordVO.java | 72 ++++++
framework/src/main/java/cn/lili/modules/lmk/service/impl/StoreCouponClaimRecordServiceImpl.java | 164 ++++++++++++++++
framework/src/main/java/cn/lili/modules/lmk/service/StoreCouponClaimRecordService.java | 4
framework/src/main/java/cn/lili/modules/lmk/domain/query/StoreCouponClaimRecordQuery.java | 16 +
8 files changed, 533 insertions(+), 17 deletions(-)
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/StoreCouponClaimRecordQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/StoreCouponClaimRecordQuery.java
index 66aa620..271ee7f 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/domain/query/StoreCouponClaimRecordQuery.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/StoreCouponClaimRecordQuery.java
@@ -18,5 +18,21 @@
@Data
@ApiModel(value = "StoreCouponClaimRecord鏌ヨ鍙傛暟", description = "搴楅摵浼樻儬鍗烽鍙栬褰曟煡璇㈠弬鏁�")
public class StoreCouponClaimRecordQuery extends AbsQuery {
+
+ private String sort;
+
+ private String order;
+
+ private String getType;
+
+ private Long startTime;
+
+ private Long endTime;
+
+ private String memberCouponStatus;
+
+ private String memberName;
+
+ private String couponName;
}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/StoreCouponClaimRecordVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/StoreCouponClaimRecordVO.java
index 0e77ba3..26ea72f 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/StoreCouponClaimRecordVO.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/StoreCouponClaimRecordVO.java
@@ -2,12 +2,15 @@
import cn.lili.base.AbsVo;
import cn.lili.modules.lmk.domain.entity.StoreCouponClaimRecord;
-import java.util.List;
-import org.springframework.lang.NonNull;
-import org.springframework.beans.BeanUtils;
+import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.lang.NonNull;
+import org.springframework.beans.BeanUtils;
+
+import java.math.BigDecimal;
import java.util.Date;
/**
@@ -34,11 +37,68 @@
/** 搴楅摵id */
@ApiModelProperty("搴楅摵id")
- private Long storeId;
+ private String storeId;
/** 鐢ㄦ埛id */
@ApiModelProperty("鐢ㄦ埛id")
- private Long userId;
+ private String userId;
+
+
+ @ApiModelProperty("搴楅摵浼樻儬鍒稿叧鑱擨D")
+ private String storeCouponId;
+
+ @ApiModelProperty("鍒涘缓鑰�")
+ private String createBy;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ private Date createTime;
+
+ @ApiModelProperty("淇敼鑰�")
+ private String updateBy;
+
+ @ApiModelProperty("鏇存柊鏃堕棿")
+ private Date updateTime;
+
+ @ApiModelProperty("鍒犻櫎鏍囧織")
+ private Boolean deleteFlag;
+
+ // 琛ュ厖浼氬憳浼樻儬鍒歌〃鍏宠仈瀛楁
+ @ApiModelProperty("浼氬憳ID")
+ private String memberId;
+
+ @ApiModelProperty("浼氬憳鍚嶇О")
+ private String memberName;
+
+ @ApiModelProperty("浼樻儬鍒搁潰棰�")
+ private BigDecimal price;
+
+ @ApiModelProperty("浣跨敤璧峰鏃堕棿")
+ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date startTime;
+
+ @ApiModelProperty("浣跨敤鎴鏃堕棿")
+ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endTime;
+
+ @ApiModelProperty("浼氬憳浼樻儬鍒哥姸鎬�")
+ private String memberCouponStatus;
+
+ @ApiModelProperty("鍟嗗搧浣跨敤闄愬埗娆℃暟")
+ private Integer goodsUseLimitNum;
+
+ @ApiModelProperty("鏄惁鏄钩鍙颁紭鎯犲埜")
+ private Boolean platformFlag;
+
+ @ApiModelProperty("浼樻儬鍒哥被鍨�")
+ private String getType;
+
+ @ApiModelProperty("鎶樻墸")
+ private BigDecimal discount;
+
+ @ApiModelProperty("娲诲姩绫诲瀷")
+ private String couponType;
public static StoreCouponClaimRecordVO getVoByEntity(@NonNull StoreCouponClaimRecord entity, StoreCouponClaimRecordVO vo) {
if(vo == null) {
@@ -48,4 +108,4 @@
return vo;
}
-}
+}
\ No newline at end of file
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/StoreCouponClaimRecordMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/StoreCouponClaimRecordMapper.java
index 7c1843b..0dfb311 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/mapper/StoreCouponClaimRecordMapper.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/StoreCouponClaimRecordMapper.java
@@ -30,5 +30,5 @@
* 鍒嗛〉
*/
IPage getPage(IPage page, @Param("query") StoreCouponClaimRecordQuery query);
-
+ List<StoreCouponClaimRecordVO> getExportData(@Param("query") StoreCouponClaimRecordQuery query);
}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/StoreCouponClaimRecordService.java b/framework/src/main/java/cn/lili/modules/lmk/service/StoreCouponClaimRecordService.java
index fbf3951..f2450c6 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/StoreCouponClaimRecordService.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/StoreCouponClaimRecordService.java
@@ -1,12 +1,14 @@
package cn.lili.modules.lmk.service;
import cn.lili.modules.lmk.domain.entity.StoreCouponClaimRecord;
+import cn.lili.modules.promotion.entity.dto.search.MemberCouponSearchParams;
import com.baomidou.mybatisplus.extension.service.IService;
import cn.lili.base.Result;
import cn.lili.modules.lmk.domain.form.StoreCouponClaimRecordForm;
import cn.lili.modules.lmk.domain.query.StoreCouponClaimRecordQuery;
import org.springframework.web.bind.annotation.PathVariable;
+import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
@@ -66,4 +68,6 @@
Result all();
Result claimCoupon(String id);
+
+ void queryExportCoupon(HttpServletResponse response, StoreCouponClaimRecordQuery query);
}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/StoreCouponClaimRecordServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/StoreCouponClaimRecordServiceImpl.java
index 3b40116..08971a4 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/impl/StoreCouponClaimRecordServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/StoreCouponClaimRecordServiceImpl.java
@@ -1,5 +1,7 @@
package cn.lili.modules.lmk.service.impl;
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUtil;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.security.AuthUser;
import cn.lili.common.security.context.UserContext;
@@ -9,8 +11,12 @@
import cn.lili.modules.lmk.enums.general.StoreCouponStausEnum;
import cn.lili.modules.lmk.service.StoreCouponService;
import cn.lili.modules.lmk.service.StoreCouponSingleService;
+import cn.lili.modules.order.order.entity.dto.CouponExportDetailDTO;
+import cn.lili.modules.order.order.entity.dto.StoreCouponClaimRecordDTO;
import cn.lili.modules.order.order.entity.enums.ClaimStatusEnum;
import cn.lili.modules.promotion.entity.dos.MemberCoupon;
+import cn.lili.modules.promotion.entity.dto.search.MemberCouponSearchParams;
+import cn.lili.modules.promotion.entity.vos.MemberCouponVO;
import cn.lili.modules.promotion.service.MemberCouponService;
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
import com.alibaba.fastjson.JSON;
@@ -26,6 +32,10 @@
import cn.lili.modules.lmk.domain.form.StoreCouponClaimRecordForm;
import cn.lili.modules.lmk.domain.vo.StoreCouponClaimRecordVO;
import cn.lili.modules.lmk.domain.query.StoreCouponClaimRecordQuery;
+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.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.stereotype.Service;
@@ -37,7 +47,12 @@
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.util.Assert;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.net.URLEncoder;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -232,6 +247,155 @@
}
}
+ private XSSFWorkbook initCouponExportData(List<StoreCouponClaimRecordVO> list) {
+ // 杞崲VO涓篋TO锛堝鏋淒TO涓嶸O瀛楁涓�鑷达紝鍙洿鎺ヤ娇鐢╒O绠�鍖栦唬鐮侊級
+ List<StoreCouponClaimRecordDTO> dtos = new ArrayList<>();
+ for (StoreCouponClaimRecordVO vo : list) {
+ StoreCouponClaimRecordDTO dto = new StoreCouponClaimRecordDTO();
+ BeanUtil.copyProperties(vo, dto);
+ dtos.add(dto);
+ }
+ System.out.println("-----------------------");
+ System.out.println(dtos);
+ 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]);
+ }
+
+ // 濉厖鏁版嵁锛堝鍔犵┖鍊煎鐞嗭紝閬垮厤NPE锛�
+ for (int i = 0; i < dtos.size(); i++) {
+ StoreCouponClaimRecordDTO dto = dtos.get(i);
+ Row row = sheet.createRow(i + 1);
+
+ // 1. 浼氬憳鍚嶇О锛堝彲鑳戒负null锛�
+ row.createCell(0).setCellValue(Objects.nonNull(dto.getMemberName()) ? dto.getMemberName() : "");
+
+ // 2. 浼樻儬鍒稿悕绉帮紙鍙兘涓簄ull锛�
+ row.createCell(1).setCellValue(Objects.nonNull(dto.getCouponName()) ? dto.getCouponName() : "");
+
+ // 3. 鍙戝竷搴楅摵锛堝鐞唒latform鐗规畩鍊硷紝榛樿绌哄瓧绗︿覆锛�
+ String storeName = dto.getStoreName();
+ if ("platform".equals(storeName)) {
+ row.createCell(2).setCellValue("骞冲彴");
+ } else {
+ row.createCell(2).setCellValue(Objects.nonNull(storeName) ? storeName : "");
+ }
+
+ // 4. 闈㈤/鎶樻墸锛堜紭鍏堟樉绀烘姌鎵o紝鍏舵鏄剧ず闈㈤锛岄伩鍏嶈鐩栵級
+ Cell amountCell = row.createCell(3);
+ if (Objects.nonNull(dto.getDiscount())) {
+ amountCell.setCellValue(dto.getDiscount() + "鎶�");
+ } else if (Objects.nonNull(dto.getPrice())) {
+ amountCell.setCellValue(dto.getPrice() + "鍏�"); // 缁熶竴鐢�"鍏�"鏇磋鑼�
+ } else {
+ amountCell.setCellValue(""); // 鍧囦负绌烘椂鏄剧ず绌�
+ }
+
+
+ // 4. 鑾峰彇鏂瑰紡锛堣ˉ鍏呴粯璁ゆ湭鐭ョ姸鎬侊紝瑕嗙洊鎵�鏈夋灇涓惧�硷級
+ String getType = dto.getGetType();
+ String getTypeDesc;
+ switch (getType) {
+ case "FREE":
+ getTypeDesc = "鍏嶈垂鑾峰彇";
+ break;
+ case "ACTIVITY":
+ getTypeDesc = "娲诲姩鑾峰彇";
+ break;
+ case "INSIDE": // 娉ㄦ剰锛氬師浠g爜lime鏄鑹诧紝瀹為檯鏋氫妇搴斾负INSIDE
+ getTypeDesc = "鍐呰喘";
+ break;
+ default:
+ getTypeDesc = "鏈煡";
+ }
+ row.createCell(4).setCellValue(getTypeDesc);
+
+ // 5. 浼氬憳浼樻儬鍒哥姸鎬侊紙瑕嗙洊鎵�鏈夊彲鑳界姸鎬侊級
+ String status = dto.getMemberCouponStatus();
+ String statusDesc;
+ switch (status) {
+ case "NEW":
+ statusDesc = "宸查鍙�";
+ break;
+ case "USED":
+ statusDesc = "宸蹭娇鐢�";
+ break;
+ case "EXPIRE":
+ statusDesc = "宸茶繃鏈�";
+ break;
+ case "CLOSED":
+ statusDesc = "宸蹭綔搴�";
+ break;
+ default:
+ statusDesc = "鏈煡鐘舵��";
+ }
+ row.createCell(5).setCellValue(statusDesc);
+
+ // 6. 浼樻儬鍒哥被鍨嬶紙琛ュ厖榛樿澶勭悊锛�
+ String couponType = dto.getCouponType();
+ String couponTypeDesc;
+ if ("DISCOUNT".equals(couponType)) {
+ couponTypeDesc = "鎵撴姌";
+ } else if ("PRICE".equals(couponType)) {
+ couponTypeDesc = "鍑忓厤鐜伴噾";
+ } else {
+ couponTypeDesc = "鏈煡绫诲瀷";
+ }
+ row.createCell(6).setCellValue(couponTypeDesc);
+
+
+ // 10. 浣跨敤璧峰鏃堕棿锛堝鐞唍ull锛屾牸寮忓寲鏃堕棿锛�
+ Cell startTimeCell = row.createCell(7);
+ if (Objects.nonNull(dto.getStartTime())) {
+ startTimeCell.setCellValue(DateUtil.formatDateTime(dto.getStartTime()));
+ } else {
+ startTimeCell.setCellValue("");
+ }
+
+ // 11. 鎴鏃堕棿锛堝悓涓婏級
+ Cell endTimeCell = row.createCell(8);
+ if (Objects.nonNull(dto.getEndTime())) {
+ endTimeCell.setCellValue(DateUtil.formatDateTime(dto.getEndTime()));
+ } else {
+ endTimeCell.setCellValue("");
+ }
+ }
+
+ return workbook;
+ }
+
+ @Override
+ public void queryExportCoupon(HttpServletResponse response, StoreCouponClaimRecordQuery query) {
+ List<StoreCouponClaimRecordVO> exportData = baseMapper.getExportData(query);
+ XSSFWorkbook workbook = initCouponExportData(exportData);
+
+ 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 static StoreCouponClaimRecord getStoreCouponClaimRecord(StoreCouponSingle storeCouponSingle, String userId) {
StoreCouponClaimRecord storeCouponClaimRecord = new StoreCouponClaimRecord();
diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/StoreCouponClaimRecordDTO.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/StoreCouponClaimRecordDTO.java
new file mode 100644
index 0000000..9bec5c0
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/StoreCouponClaimRecordDTO.java
@@ -0,0 +1,96 @@
+package cn.lili.modules.order.order.entity.dto;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * lmk-shop-java
+ *
+ * @author : zxl
+ * @date : 2025-09-27 21:40
+ **/
+@Data
+public class StoreCouponClaimRecordDTO {
+ /** 搴楅摵鍚嶇О */
+ @ApiModelProperty("搴楅摵鍚嶇О")
+ private String storeName;
+
+ /** 浼樻儬鍗穒d */
+ @ApiModelProperty("浼樻儬鍗穒d")
+ private Long couponId;
+
+ /** 浼樻儬鍗峰悕绉� */
+ @ApiModelProperty("浼樻儬鍗峰悕绉�")
+ private String couponName;
+
+ /** 搴楅摵id */
+ @ApiModelProperty("搴楅摵id")
+ private String storeId;
+
+ /** 鐢ㄦ埛id */
+ @ApiModelProperty("鐢ㄦ埛id")
+ private String userId;
+
+
+ @ApiModelProperty("搴楅摵浼樻儬鍒稿叧鑱擨D")
+ private String storeCouponId;
+
+ @ApiModelProperty("鍒涘缓鑰�")
+ private String createBy;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ private Date createTime;
+
+ @ApiModelProperty("淇敼鑰�")
+ private String updateBy;
+
+ @ApiModelProperty("鏇存柊鏃堕棿")
+ private Date updateTime;
+
+ @ApiModelProperty("鍒犻櫎鏍囧織")
+ private Boolean deleteFlag;
+
+ // 琛ュ厖浼氬憳浼樻儬鍒歌〃鍏宠仈瀛楁
+ @ApiModelProperty("浼氬憳ID")
+ private String memberId;
+
+ @ApiModelProperty("浼氬憳鍚嶇О")
+ private String memberName;
+
+ @ApiModelProperty("浼樻儬鍒搁潰棰�")
+ private BigDecimal price;
+
+ @ApiModelProperty("浣跨敤璧峰鏃堕棿")
+ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date startTime;
+
+ @ApiModelProperty("浣跨敤鎴鏃堕棿")
+ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endTime;
+
+ @ApiModelProperty("浼氬憳浼樻儬鍒哥姸鎬�")
+ private String memberCouponStatus;
+
+ @ApiModelProperty("鍟嗗搧浣跨敤闄愬埗娆℃暟")
+ private Integer goodsUseLimitNum;
+
+ @ApiModelProperty("鏄惁鏄钩鍙颁紭鎯犲埜")
+ private Boolean platformFlag;
+
+ @ApiModelProperty("浼樻儬鍒哥被鍨�")
+ private String getType;
+
+ @ApiModelProperty("鎶樻墸")
+ private BigDecimal discount;
+
+ @ApiModelProperty("娲诲姩绫诲瀷")
+ private String couponType;
+}
diff --git a/framework/src/main/resources/mapper/lmk/StoreCouponClaimRecordMapper.xml b/framework/src/main/resources/mapper/lmk/StoreCouponClaimRecordMapper.xml
index 3083ba5..63b144e 100644
--- a/framework/src/main/resources/mapper/lmk/StoreCouponClaimRecordMapper.xml
+++ b/framework/src/main/resources/mapper/lmk/StoreCouponClaimRecordMapper.xml
@@ -31,20 +31,177 @@
WHERE
LSCCR.id = #{id} AND LSCCR.delete_flag = 0
</select>
+ <resultMap id="BaseResultMapByManager" type="cn.lili.modules.lmk.domain.vo.StoreCouponClaimRecordVO">
+ <!-- 浼氬憳浼樻儬鍒歌〃(li_member_coupon)瀛楁鏄犲皠 -->
+ <result column="member_id" property="memberId"/>
+ <result column="member_name" property="memberName"/>
+ <result column="price" property="price"/>
+ <result column="start_time" property="startTime"/>
+ <result column="end_time" property="endTime"/>
+ <result column="member_coupon_status" property="memberCouponStatus"/>
+ <result column="goods_use_limit_num" property="goodsUseLimitNum"/>
+ <result column="platform_flag" property="platformFlag"/>
+ <result column="get_type" property="getType"/>
+ <result column="discount" property="discount"/>
+ <result column="coupon_type" property="couponType"/>
+ <result column="coupon_id" property="couponId" />
+ <!-- 搴楅摵浼樻儬鍒搁鍙栬褰曡〃(lmk_store_coupon_claim_record)瀛楁鏄犲皠 -->
+ <result column="id" property="id"/>
+ <result column="store_name" property="storeName"/>
+ <result column="store_coupon_id" property="storeCouponId"/>
+ <result column="store_id" property="storeId"/>
+ <result column="user_id" property="userId"/>
+ <result column="coupon_name" property="couponName"/>
+ </resultMap>
-
- <select id="getPage" resultMap="BaseResultMap">
+ <select id="getPage" resultMap="BaseResultMapByManager">
SELECT
- LSCCR.store_name,
- LSCCR.coupon_id,
- LSCCR.coupon_name,
- LSCCR.store_id,
- LSCCR.user_id,
- LSCCR.id
+ lmc.member_id,
+ lmc.member_name,
+ lmc.price,
+ lmc.start_time,
+ lmc.end_time,
+ lmc.member_coupon_status,
+ lmc.goods_use_limit_num,
+ lmc.platform_flag,
+ lmc.get_type,
+ lmc.discount,
+ lmc.coupon_type,
+ lsccr.id,
+ lsccr.store_name,
+ lsccr.store_coupon_id,
+ lsccr.store_id,
+ lsccr.user_id,
+ lsccr.coupon_name,
+ lsccr.create_time,
+ lsccr.coupon_id
FROM
- lmk_store_coupon_claim_record LSCCR
+ lmk_store_coupon_claim_record lsccr
+ INNER JOIN
+ li_member_coupon lmc ON lmc.coupon_id = lsccr.coupon_id
WHERE
- LSCCR.delete_flag = 0
+ lmc.delete_flag = 0
+ AND lsccr.delete_flag = 0
+ <!-- 1. 浼氬憳鍚嶇О妯$硦鏌ヨ锛堝叧鑱攍i_member_coupon琛級 -->
+ <if test="query.memberName != null and query.memberName != ''">
+ AND lmc.member_name LIKE CONCAT('%', #{query.memberName}, '%')
+ </if>
+ <!-- 2. 浼樻儬鍒稿悕绉版ā绯婃煡璇紙鍏宠仈lmk_store_coupon_claim_record琛級 -->
+ <if test="query.couponName != null and query.couponName != ''">
+ AND lsccr.coupon_name LIKE CONCAT('%', #{query.couponName}, '%')
+ </if>
+ <!-- 3. 浼樻儬鍒歌幏鍙栨柟寮忥紙绮剧‘鍖归厤锛屽叧鑱攍i_member_coupon琛級 -->
+ <if test="query.getType != null and query.getType != ''">
+ AND lmc.get_type = #{query.getType}
+ </if>
+ <!-- 4. 浼氬憳浼樻儬鍒哥姸鎬侊紙绮剧‘鍖归厤锛屽叧鑱攍i_member_coupon琛級 -->
+ <if test="query.memberCouponStatus != null and query.memberCouponStatus != ''">
+ AND lmc.member_coupon_status = #{query.memberCouponStatus}
+ </if>
+ <!-- 5. 鏃堕棿鑼冨洿绛涢�夛細鐢˙ETWEEN鍖归厤start_time鍜宔nd_time锛堥渶鍚屾椂浼犲叆寮�濮嬪拰缁撴潫鏃堕棿锛� -->
+ <if test="query.startTime != null and query.endTime != null">
+ AND lmc.start_time BETWEEN FROM_UNIXTIME(#{query.startTime}/1000)
+ AND FROM_UNIXTIME(#{query.endTime}/1000)
+ </if>
+ <!-- 6. 鎺掑簭閫昏緫锛堟牴鎹墠绔紶鍏ョ殑sort瀛楁鍜宱rder鎺掑簭鏂瑰悜锛� -->
+ <if test="query.sort != null and query.sort != '' and query.order != null and query.order != ''">
+ ORDER BY
+ <choose>
+ <!-- li_member_coupon琛ㄥ瓧娈� -->
+ <when test="query.sort == 'memberName'">lmc.member_name #{query.order},</when>
+ <when test="query.sort == 'price'">lmc.price #{query.order},</when>
+ <when test="query.sort == 'startTime'">lmc.start_time #{query.order},</when>
+ <when test="query.sort == 'endTime'">lmc.end_time #{query.order},</when>
+ <when test="query.sort == 'memberCouponStatus'">lmc.member_coupon_status #{query.order},</when>
+ <when test="query.sort == 'getType'">lmc.get_type #{query.order},</when>
+
+ <when test="query.sort == 'couponName'">lsccr.coupon_name #{query.order},</when>
+ <when test="query.sort == 'storeName'">lsccr.store_name #{query.order},</when>
+ <when test="query.sort == 'createTime'">lsccr.create_time #{query.order},</when>
+ <!-- 榛樿鎺掑簭 -->
+ <otherwise>lsccr.create_time DESC,</otherwise>
+ </choose>
+ lsccr.create_time DESC <!-- 鍏滃簳鎺掑簭锛岄伩鍏嶈娉曢敊璇� -->
+ </if>
+ <!-- 鏈紶鎺掑簭鍙傛暟鏃讹紝榛樿鎸夐鍙栨椂闂村�掑簭 -->
+ <if test="(query.sort == null or query.sort == '') or (query.order == null or query.order == '')">
+ ORDER BY lsccr.create_time DESC
+ </if>
+ </select>
+
+ <select id="getExportData" resultMap="BaseResultMapByManager">
+ SELECT
+ lmc.member_id,
+ lmc.member_name,
+ lmc.price,
+ lmc.start_time,
+ lmc.end_time,
+ lmc.member_coupon_status,
+ lmc.goods_use_limit_num,
+ lmc.platform_flag,
+ lmc.get_type,
+ lmc.discount,
+ lmc.coupon_type,
+ lsccr.id,
+ lsccr.store_name,
+ lsccr.store_coupon_id,
+ lsccr.store_id,
+ lsccr.user_id,
+ lsccr.coupon_name,
+ lsccr.create_time,
+ lsccr.coupon_id
+ FROM
+ lmk_store_coupon_claim_record lsccr
+ INNER JOIN
+ li_member_coupon lmc ON lmc.coupon_id = lsccr.coupon_id
+ WHERE
+ lmc.delete_flag = 0
+ AND lsccr.delete_flag = 0
+ <!-- 1. 浼氬憳鍚嶇О妯$硦鏌ヨ锛堝叧鑱攍i_member_coupon琛級 -->
+ <if test="query.memberName != null and query.memberName != ''">
+ AND lmc.member_name LIKE CONCAT('%', #{query.memberName}, '%')
+ </if>
+ <!-- 2. 浼樻儬鍒稿悕绉版ā绯婃煡璇紙鍏宠仈lmk_store_coupon_claim_record琛級 -->
+ <if test="query.couponName != null and query.couponName != ''">
+ AND lsccr.coupon_name LIKE CONCAT('%', #{query.couponName}, '%')
+ </if>
+ <!-- 3. 浼樻儬鍒歌幏鍙栨柟寮忥紙绮剧‘鍖归厤锛屽叧鑱攍i_member_coupon琛級 -->
+ <if test="query.getType != null and query.getType != ''">
+ AND lmc.get_type = #{query.getType}
+ </if>
+ <!-- 4. 浼氬憳浼樻儬鍒哥姸鎬侊紙绮剧‘鍖归厤锛屽叧鑱攍i_member_coupon琛級 -->
+ <if test="query.memberCouponStatus != null and query.memberCouponStatus != ''">
+ AND lmc.member_coupon_status = #{query.memberCouponStatus}
+ </if>
+ <!-- 5. 鏃堕棿鑼冨洿绛涢�夛細鐢˙ETWEEN鍖归厤start_time鍜宔nd_time锛堥渶鍚屾椂浼犲叆寮�濮嬪拰缁撴潫鏃堕棿锛� -->
+ <if test="query.startTime != null and query.endTime != null">
+ AND lmc.start_time BETWEEN FROM_UNIXTIME(#{query.startTime}/1000)
+ AND FROM_UNIXTIME(#{query.endTime}/1000)
+ </if>
+ <!-- 6. 鎺掑簭閫昏緫锛堟牴鎹墠绔紶鍏ョ殑sort瀛楁鍜宱rder鎺掑簭鏂瑰悜锛� -->
+ <if test="query.sort != null and query.sort != '' and query.order != null and query.order != ''">
+ ORDER BY
+ <choose>
+ <!-- li_member_coupon琛ㄥ瓧娈� -->
+ <when test="query.sort == 'memberName'">lmc.member_name #{query.order},</when>
+ <when test="query.sort == 'price'">lmc.price #{query.order},</when>
+ <when test="query.sort == 'startTime'">lmc.start_time #{query.order},</when>
+ <when test="query.sort == 'endTime'">lmc.end_time #{query.order},</when>
+ <when test="query.sort == 'memberCouponStatus'">lmc.member_coupon_status #{query.order},</when>
+ <when test="query.sort == 'getType'">lmc.get_type #{query.order},</when>
+
+ <when test="query.sort == 'couponName'">lsccr.coupon_name #{query.order},</when>
+ <when test="query.sort == 'storeName'">lsccr.store_name #{query.order},</when>
+ <when test="query.sort == 'createTime'">lsccr.create_time #{query.order},</when>
+ <!-- 榛樿鎺掑簭 -->
+ <otherwise>lsccr.create_time DESC,</otherwise>
+ </choose>
+ lsccr.create_time DESC <!-- 鍏滃簳鎺掑簭锛岄伩鍏嶈娉曢敊璇� -->
+ </if>
+ <!-- 鏈紶鎺掑簭鍙傛暟鏃讹紝榛樿鎸夐鍙栨椂闂村�掑簭 -->
+ <if test="(query.sort == null or query.sort == '') or (query.order == null or query.order == '')">
+ ORDER BY lsccr.create_time DESC
+ </if>
</select>
</mapper>
diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/StoreCouponController.java b/manager-api/src/main/java/cn/lili/controller/lmk/StoreCouponController.java
index a0b56ce..5d5b6c2 100644
--- a/manager-api/src/main/java/cn/lili/controller/lmk/StoreCouponController.java
+++ b/manager-api/src/main/java/cn/lili/controller/lmk/StoreCouponController.java
@@ -1,13 +1,20 @@
package cn.lili.controller.lmk;
import cn.lili.base.Result;
+import cn.lili.common.context.ThreadContextHolder;
import cn.lili.modules.lmk.domain.form.StoreCouponForm;
+import cn.lili.modules.lmk.domain.query.StoreCouponClaimRecordQuery;
import cn.lili.modules.lmk.domain.query.StoreCouponQuery;
import cn.lili.modules.lmk.domain.query.StoreCouponSingleQuery;
+import cn.lili.modules.lmk.service.StoreCouponClaimRecordService;
import cn.lili.modules.lmk.service.StoreCouponService;
+import cn.lili.modules.promotion.entity.dto.search.MemberCouponSearchParams;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
/**
* 鍟嗗绔敓鎴愬簵閾轰紭鎯犲嵎淇℃伅
@@ -22,6 +29,7 @@
private final StoreCouponService storeCouponService;
+ private final StoreCouponClaimRecordService storeCouponClaimRecordService;
/**
* 鍒涘缓搴楅摵涓庝紭鎯犲嵎鍏宠仈鍏崇郴
* @param storeCoupon
@@ -65,4 +73,15 @@
public Result getPageByStoreCoupon(StoreCouponSingleQuery query){
return storeCouponService.getPageByStoreCoupon(query);
}
+
+ @GetMapping("/getPageByStoreCouponClaimRecord")
+ public Result getPageByStoreCouponClaimRecord(StoreCouponClaimRecordQuery query){
+ return storeCouponClaimRecordService.page(query);
+ }
+
+ @ApiOperation(value = "鏌ヨ浼樻儬鍗峰鍑哄垪琛�")
+ @GetMapping("/queryExportCoupon")
+ public void queryExportCoupon(StoreCouponClaimRecordQuery query) {
+ HttpServletResponse response = ThreadContextHolder.getHttpResponse();
+ storeCouponClaimRecordService.queryExportCoupon(response,query);}
}
--
Gitblit v1.8.0