From 9b9e43adee86384abdcbc50af29c7ba68b818fb7 Mon Sep 17 00:00:00 2001 From: peng <peng.com> Date: 星期日, 28 九月 2025 09:34:22 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/send_coupon' into send_coupon --- 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 4804fe3..ddcc7c1 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