From 3a5882268d70d48a623eba052ed4dfdfcfeee79f Mon Sep 17 00:00:00 2001
From: JIAN
Date: Mon, 23 Sep 2024 22:06:35 +0800
Subject: [PATCH] =?UTF-8?q?feat(market):=E6=96=B0=E5=A2=9E=E6=9F=A5?=
=?UTF-8?q?=E8=AF=A2=E4=BC=98=E6=83=A0=E5=8D=B7=E4=BF=A1=E6=81=AF=E7=9A=84?=
=?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../controller/consumer/CouponController.java | 38 +++++++
.../operation/CouponController.java | 29 ++++++
.../jzo2o/market/enums/CouponStatusEnum.java | 33 ++++++-
.../com/jzo2o/market/model/domain/Coupon.java | 24 +++--
...eryReqDTO.java => CouponPageQueryDTO.java} | 8 +-
.../model/dto/response/CouponInfoResDTO.java | 99 -------------------
.../dto/response/CouponPageInfoResDTO.java | 57 +++++++++++
.../dto/response/CouponSimpleInfoResDTO.java | 47 +++++++++
.../jzo2o/market/service/ICouponService.java | 27 ++---
.../service/impl/CouponServiceImpl.java | 82 +++++++--------
10 files changed, 270 insertions(+), 174 deletions(-)
create mode 100644 jzo2o-market/src/main/java/com/jzo2o/market/controller/consumer/CouponController.java
create mode 100644 jzo2o-market/src/main/java/com/jzo2o/market/controller/operation/CouponController.java
rename jzo2o-market/src/main/java/com/jzo2o/market/model/dto/request/{CouponOperationPageQueryReqDTO.java => CouponPageQueryDTO.java} (68%)
delete mode 100644 jzo2o-market/src/main/java/com/jzo2o/market/model/dto/response/CouponInfoResDTO.java
create mode 100644 jzo2o-market/src/main/java/com/jzo2o/market/model/dto/response/CouponPageInfoResDTO.java
create mode 100644 jzo2o-market/src/main/java/com/jzo2o/market/model/dto/response/CouponSimpleInfoResDTO.java
diff --git a/jzo2o-market/src/main/java/com/jzo2o/market/controller/consumer/CouponController.java b/jzo2o-market/src/main/java/com/jzo2o/market/controller/consumer/CouponController.java
new file mode 100644
index 0000000..8e18b7d
--- /dev/null
+++ b/jzo2o-market/src/main/java/com/jzo2o/market/controller/consumer/CouponController.java
@@ -0,0 +1,38 @@
+package com.jzo2o.market.controller.consumer;
+
+import com.jzo2o.common.expcetions.BadRequestException;
+import com.jzo2o.common.utils.ObjectUtils;
+import com.jzo2o.market.enums.CouponStatusEnum;
+import com.jzo2o.market.model.dto.response.CouponSimpleInfoResDTO;
+import com.jzo2o.market.service.ICouponService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 运营端 - 优惠卷管理控制器
+ * @author JIAN
+ */
+@Slf4j
+@RestController("consumerCouponController")
+@RequestMapping("/consumer/coupon")
+public class CouponController {
+ @Resource
+ private ICouponService couponService;
+
+ @GetMapping("/my")
+ public List currentUserCoupon(@RequestParam Integer status,
+ @RequestParam(required = false) Integer lastId) {
+ CouponStatusEnum couponStatusEnum = CouponStatusEnum.statusOf(status);
+ if (ObjectUtils.isEmpty(couponStatusEnum)) {
+ throw new BadRequestException("优惠卷状态出错");
+ }
+
+ return couponService.getCurrentUserCoupon(couponStatusEnum, lastId);
+ }
+}
\ No newline at end of file
diff --git a/jzo2o-market/src/main/java/com/jzo2o/market/controller/operation/CouponController.java b/jzo2o-market/src/main/java/com/jzo2o/market/controller/operation/CouponController.java
new file mode 100644
index 0000000..d9664da
--- /dev/null
+++ b/jzo2o-market/src/main/java/com/jzo2o/market/controller/operation/CouponController.java
@@ -0,0 +1,29 @@
+package com.jzo2o.market.controller.operation;
+
+import com.jzo2o.common.model.PageResult;
+import com.jzo2o.market.model.dto.request.CouponPageQueryDTO;
+import com.jzo2o.market.model.dto.response.CouponPageInfoResDTO;
+import com.jzo2o.market.service.ICouponService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * 运营端 - 优惠卷管理控制器
+ * @author JIAN
+ */
+@Slf4j
+@RestController("operationCouponController")
+@RequestMapping("/operation/coupon")
+public class CouponController {
+ @Resource
+ private ICouponService couponService;
+
+ @GetMapping("/page")
+ public PageResult pageCoupon(CouponPageQueryDTO couponPageQueryDTO) {
+ return couponService.page(couponPageQueryDTO);
+ }
+}
\ No newline at end of file
diff --git a/jzo2o-market/src/main/java/com/jzo2o/market/enums/CouponStatusEnum.java b/jzo2o-market/src/main/java/com/jzo2o/market/enums/CouponStatusEnum.java
index 0f280f9..5a65809 100644
--- a/jzo2o-market/src/main/java/com/jzo2o/market/enums/CouponStatusEnum.java
+++ b/jzo2o-market/src/main/java/com/jzo2o/market/enums/CouponStatusEnum.java
@@ -1,12 +1,39 @@
package com.jzo2o.market.enums;
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
-@AllArgsConstructor
+/**
+ * 优惠卷状态枚举类
+ * @author JIAN
+ */
@Getter
+@AllArgsConstructor
public enum CouponStatusEnum {
- NO_USE(1, "未使用"), USED(2, "已使用"), INVALID(3, "已失效"),VOIDED(4,"已作废");
+ NO_USE(1, "未使用"),
+ USED(2, "已使用"),
+ INVALID(3, "已失效"),
+ VOIDED(4, "已作废");
+
+ @EnumValue
+ @JsonValue
private int status;
private String name;
-}
+
+ public static CouponStatusEnum statusOf(Integer status) {
+ if (status == null) {
+ return null;
+ }
+
+ for (CouponStatusEnum couponStatusEnum : CouponStatusEnum.values()) {
+ if (couponStatusEnum.getStatus() == status) {
+ return couponStatusEnum;
+ }
+ }
+
+ // not found
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/jzo2o-market/src/main/java/com/jzo2o/market/model/domain/Coupon.java b/jzo2o-market/src/main/java/com/jzo2o/market/model/domain/Coupon.java
index dfb8c12..42b2d1b 100644
--- a/jzo2o-market/src/main/java/com/jzo2o/market/model/domain/Coupon.java
+++ b/jzo2o-market/src/main/java/com/jzo2o/market/model/domain/Coupon.java
@@ -1,22 +1,21 @@
package com.jzo2o.market.model.domain;
-import java.math.BigDecimal;
-
import com.baomidou.mybatisplus.annotation.IdType;
-import java.time.LocalDateTime;
-
-import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
+import com.jzo2o.market.enums.CouponTypeEnum;
+import com.jzo2o.market.enums.CouponStatusEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
/**
*
- *
- *
*
+ *
* @author itcast
* @since 2023-09-16
*/
@@ -61,7 +60,7 @@ public class Coupon implements Serializable {
/**
* 使用类型,1:满减,2:折扣
*/
- private Integer type;
+ private CouponTypeEnum type;
/**
* 折扣
@@ -87,10 +86,11 @@ public class Coupon implements Serializable {
* 使用时间
*/
private LocalDateTime useTime;
+
/**
* 优惠券状态,1:未使用,2:已使用,3:已过期
*/
- private Integer status;
+ private CouponStatusEnum status;
/**
* 订单id
@@ -111,6 +111,4 @@ public class Coupon implements Serializable {
* 逻辑删除
*/
private Integer isDeleted;
-
-
-}
+}
\ No newline at end of file
diff --git a/jzo2o-market/src/main/java/com/jzo2o/market/model/dto/request/CouponOperationPageQueryReqDTO.java b/jzo2o-market/src/main/java/com/jzo2o/market/model/dto/request/CouponPageQueryDTO.java
similarity index 68%
rename from jzo2o-market/src/main/java/com/jzo2o/market/model/dto/request/CouponOperationPageQueryReqDTO.java
rename to jzo2o-market/src/main/java/com/jzo2o/market/model/dto/request/CouponPageQueryDTO.java
index 4135d4c..9639b56 100644
--- a/jzo2o-market/src/main/java/com/jzo2o/market/model/dto/request/CouponOperationPageQueryReqDTO.java
+++ b/jzo2o-market/src/main/java/com/jzo2o/market/model/dto/request/CouponPageQueryDTO.java
@@ -4,13 +4,17 @@ import com.jzo2o.common.model.dto.PageQueryDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.Null;
@Data
+@EqualsAndHashCode(callSuper = true)
+@Validated
@ApiModel("运营端优惠券查询模型")
-public class CouponOperationPageQueryReqDTO extends PageQueryDTO {
+public class CouponPageQueryDTO extends PageQueryDTO {
@ApiModelProperty(value = "活动id",required = true)
@Null(message = "请先选择活动")
private Long activityId;
-}
+}
\ No newline at end of file
diff --git a/jzo2o-market/src/main/java/com/jzo2o/market/model/dto/response/CouponInfoResDTO.java b/jzo2o-market/src/main/java/com/jzo2o/market/model/dto/response/CouponInfoResDTO.java
deleted file mode 100644
index ee23cb7..0000000
--- a/jzo2o-market/src/main/java/com/jzo2o/market/model/dto/response/CouponInfoResDTO.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package com.jzo2o.market.model.dto.response;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- *
- *
- *
- *
- * @author itcast
- * @since 2023-09-16
- */
-@Data
-public class CouponInfoResDTO implements Serializable {
-
- @ApiModelProperty(value = "优惠券id",required = true)
- private Long id;
-
- /**
- * 优惠券名称
- */
- @ApiModelProperty(value = "活动名称",required = true)
- private String name;
-
- @ApiModelProperty("用户姓名")
- private String userName;
-
- @ApiModelProperty("用户手机号")
- private String userPhone;
-
- /**
- * 活动id
- */
- @ApiModelProperty(value = "活动id",required = true)
- private Long activityId;
-
- @ApiModelProperty(value = "使用类型,1:满减,2:折扣",required = true)
- private Integer type;
-
- /**
- * 折扣
- */
- @ApiModelProperty(value = "折扣",required = false)
- private Integer discountRate;
-
- /**
- * 优惠金额
- */
- @ApiModelProperty(value = "优惠金额",required = false)
- private BigDecimal discountAmount;
-
- /**
- * 满减金额
- */
- @ApiModelProperty(value = "满减条件,0:表示无门槛",required = true)
- private BigDecimal amountCondition;
-
- /**
- * 有效期
- */
- @ApiModelProperty("优惠券过期时间")
- private LocalDateTime validityTime;
-
- @ApiModelProperty("使用时间")
- private LocalDateTime useTime;
-
- /**
- * 优惠券状态,1:未使用,2:已使用,3:已过期
- */
- @ApiModelProperty("优惠券状态,1:未使用,2:已使用,3:已过期")
- private Integer status;
-
- /**
- * 订单id
- */
- private String ordersId;
-
- /**
- * 创建时间
- */
- @ApiModelProperty(value = "创建时间",required = true)
- private LocalDateTime createTime;
-
- /**
- * 更新时间
- */
- @ApiModelProperty(value = "更新时间",required = true)
- private LocalDateTime updateTime;
-
-}
diff --git a/jzo2o-market/src/main/java/com/jzo2o/market/model/dto/response/CouponPageInfoResDTO.java b/jzo2o-market/src/main/java/com/jzo2o/market/model/dto/response/CouponPageInfoResDTO.java
new file mode 100644
index 0000000..da5262c
--- /dev/null
+++ b/jzo2o-market/src/main/java/com/jzo2o/market/model/dto/response/CouponPageInfoResDTO.java
@@ -0,0 +1,57 @@
+package com.jzo2o.market.model.dto.response;
+
+import com.jzo2o.market.enums.CouponStatusEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 优惠卷分页模型
+ * @author itcast
+ * @since 2023-09-16
+ */
+@Data
+public class CouponPageInfoResDTO implements Serializable {
+ @ApiModelProperty(value = "优惠券id", required = true)
+ private Long id;
+
+ @ApiModelProperty("用户姓名")
+ private String userName;
+
+ @ApiModelProperty("用户手机号")
+ private String userPhone;
+
+ /**
+ * 活动id
+ */
+ @ApiModelProperty(value = "活动id", required = true)
+ private Long activityId;
+
+ @ApiModelProperty("使用时间")
+ private LocalDateTime useTime;
+
+ /**
+ * 优惠券状态,1:未使用,2:已使用,3:已过期
+ */
+ @ApiModelProperty("优惠券状态,1:未使用,2:已使用,3:已过期")
+ private CouponStatusEnum status;
+
+ /**
+ * 订单id
+ */
+ private String ordersId;
+
+ /**
+ * 创建时间
+ */
+ @ApiModelProperty(value = "创建时间", required = true)
+ private LocalDateTime createTime;
+
+ /**
+ * 更新时间
+ */
+ @ApiModelProperty(value = "更新时间", required = true)
+ private LocalDateTime updateTime;
+}
\ No newline at end of file
diff --git a/jzo2o-market/src/main/java/com/jzo2o/market/model/dto/response/CouponSimpleInfoResDTO.java b/jzo2o-market/src/main/java/com/jzo2o/market/model/dto/response/CouponSimpleInfoResDTO.java
new file mode 100644
index 0000000..c67bb8a
--- /dev/null
+++ b/jzo2o-market/src/main/java/com/jzo2o/market/model/dto/response/CouponSimpleInfoResDTO.java
@@ -0,0 +1,47 @@
+package com.jzo2o.market.model.dto.response;
+
+import com.jzo2o.market.enums.CouponStatusEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 优惠卷用户查询模型
+ * @author itcast
+ * @since 2023-09-16
+ */
+@Data
+public class CouponSimpleInfoResDTO implements Serializable {
+ @ApiModelProperty(value = "优惠券id", required = true)
+ private Long id;
+
+ @ApiModelProperty(value = "活动名称", required = true)
+ private String name;
+
+ @ApiModelProperty(value = "活动id", required = true)
+ private Long activityId;
+
+ @ApiModelProperty(value = "使用类型,1:满减,2:折扣", required = true)
+ private Integer type;
+
+ @ApiModelProperty(value = "折扣")
+ private Integer discountRate;
+
+ @ApiModelProperty(value = "优惠金额")
+ private BigDecimal discountAmount;
+
+ @ApiModelProperty(value = "满减条件,0:表示无门槛", required = true)
+ private BigDecimal amountCondition;
+
+ @ApiModelProperty("优惠券过期时间")
+ private LocalDateTime validityTime;
+
+ @ApiModelProperty("使用时间")
+ private LocalDateTime useTime;
+
+ @ApiModelProperty("优惠券状态,1:未使用,2:已使用,3:已过期")
+ private CouponStatusEnum status;
+}
\ No newline at end of file
diff --git a/jzo2o-market/src/main/java/com/jzo2o/market/service/ICouponService.java b/jzo2o-market/src/main/java/com/jzo2o/market/service/ICouponService.java
index 2090bc4..72c5348 100644
--- a/jzo2o-market/src/main/java/com/jzo2o/market/service/ICouponService.java
+++ b/jzo2o-market/src/main/java/com/jzo2o/market/service/ICouponService.java
@@ -1,17 +1,13 @@
package com.jzo2o.market.service;
-import com.jzo2o.api.market.dto.request.CouponUseBackReqDTO;
-import com.jzo2o.api.market.dto.request.CouponUseReqDTO;
-import com.jzo2o.api.market.dto.response.AvailableCouponsResDTO;
-import com.jzo2o.api.market.dto.response.CouponUseResDTO;
-import com.jzo2o.common.model.PageResult;
-import com.jzo2o.market.model.domain.Coupon;
import com.baomidou.mybatisplus.extension.service.IService;
-import com.jzo2o.market.model.dto.request.CouponOperationPageQueryReqDTO;
-import com.jzo2o.market.model.dto.request.SeizeCouponReqDTO;
-import com.jzo2o.market.model.dto.response.CouponInfoResDTO;
+import com.jzo2o.common.model.PageResult;
+import com.jzo2o.market.enums.CouponStatusEnum;
+import com.jzo2o.market.model.domain.Coupon;
+import com.jzo2o.market.model.dto.request.CouponPageQueryDTO;
+import com.jzo2o.market.model.dto.response.CouponPageInfoResDTO;
+import com.jzo2o.market.model.dto.response.CouponSimpleInfoResDTO;
-import java.math.BigDecimal;
import java.util.List;
/**
@@ -23,6 +19,13 @@ import java.util.List;
* @since 2023-09-16
*/
public interface ICouponService extends IService {
+ /**
+ * 分页查询优惠卷信息(通过活动id)
+ */
+ PageResult page(CouponPageQueryDTO couponPageQueryDTO);
-
-}
+ /**
+ * 用户端滚动查询(抢卷时间降序)
+ */
+ List getCurrentUserCoupon(CouponStatusEnum status, Integer lastId);
+}
\ No newline at end of file
diff --git a/jzo2o-market/src/main/java/com/jzo2o/market/service/impl/CouponServiceImpl.java b/jzo2o-market/src/main/java/com/jzo2o/market/service/impl/CouponServiceImpl.java
index 4435ed1..c82151e 100644
--- a/jzo2o-market/src/main/java/com/jzo2o/market/service/impl/CouponServiceImpl.java
+++ b/jzo2o-market/src/main/java/com/jzo2o/market/service/impl/CouponServiceImpl.java
@@ -1,80 +1,72 @@
package com.jzo2o.market.service.impl;
-import cn.hutool.db.DbRuntimeException;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.jzo2o.api.market.dto.request.CouponUseBackReqDTO;
-import com.jzo2o.api.market.dto.request.CouponUseReqDTO;
-import com.jzo2o.api.market.dto.response.AvailableCouponsResDTO;
-import com.jzo2o.api.market.dto.response.CouponUseResDTO;
import com.jzo2o.common.expcetions.BadRequestException;
-import com.jzo2o.common.expcetions.CommonException;
-import com.jzo2o.common.expcetions.DBException;
import com.jzo2o.common.model.PageResult;
-import com.jzo2o.common.utils.*;
-import com.jzo2o.market.enums.ActivityStatusEnum;
+import com.jzo2o.common.utils.BeanUtils;
+import com.jzo2o.common.utils.CollUtils;
import com.jzo2o.market.enums.CouponStatusEnum;
import com.jzo2o.market.mapper.CouponMapper;
-import com.jzo2o.market.model.domain.Activity;
import com.jzo2o.market.model.domain.Coupon;
-import com.jzo2o.market.model.domain.CouponWriteOff;
-import com.jzo2o.market.model.dto.request.CouponOperationPageQueryReqDTO;
-import com.jzo2o.market.model.dto.request.SeizeCouponReqDTO;
-import com.jzo2o.market.model.dto.response.ActivityInfoResDTO;
-import com.jzo2o.market.model.dto.response.CouponInfoResDTO;
-import com.jzo2o.market.service.IActivityService;
+import com.jzo2o.market.model.dto.request.CouponPageQueryDTO;
+import com.jzo2o.market.model.dto.response.CouponPageInfoResDTO;
+import com.jzo2o.market.model.dto.response.CouponSimpleInfoResDTO;
import com.jzo2o.market.service.ICouponService;
-import com.jzo2o.market.service.ICouponUseBackService;
-import com.jzo2o.market.service.ICouponWriteOffService;
-import com.jzo2o.market.utils.CouponUtils;
import com.jzo2o.mvc.utils.UserContext;
import com.jzo2o.mysql.utils.PageUtils;
-import com.jzo2o.redis.utils.RedisSyncQueueUtils;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import javax.annotation.Resource;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
-import static com.jzo2o.common.constants.ErrorInfo.Code.SEIZE_COUPON_FAILD;
-import static com.jzo2o.market.constants.RedisConstants.RedisKey.*;
-
/**
*
* 服务实现类
*
- *
* @author itcast
* @since 2023-09-16
*/
@Service
@Slf4j
public class CouponServiceImpl extends ServiceImpl implements ICouponService {
+ @Override
+ public PageResult page(CouponPageQueryDTO couponPageQueryDTO) {
+ if (ObjectUtils.isEmpty(couponPageQueryDTO.getActivityId())) {
+ return new PageResult<>(0L, 0L, new ArrayList<>());
+ }
- @Resource(name = "seizeCouponScript")
- private DefaultRedisScript seizeCouponScript;
+ Page couponPage = PageUtils.parsePageQuery(couponPageQueryDTO, Coupon.class);
+ LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery()
+ .eq(Coupon::getActivityId, couponPageQueryDTO.getActivityId());
- @Resource
- private RedisTemplate redisTemplate;
+ return PageUtils.toPage(baseMapper.selectPage(couponPage, queryWrapper), CouponPageInfoResDTO.class);
+ }
- @Resource
- private IActivityService activityService;
+ @Override
+ @SuppressWarnings("unchecked")
+ public List getCurrentUserCoupon(CouponStatusEnum status, Integer lastId) {
+ Long userId = UserContext.currentUserId();
+ if (ObjectUtils.isEmpty(userId)) {
+ throw new BadRequestException("用户未授权");
+ }
- @Resource
- private ICouponUseBackService couponUseBackService;
+ List coupons = lambdaQuery()
+ .eq(Coupon::getUserId, userId)
+ .eq(Coupon::getStatus, status)
+ .lt(ObjectUtils.isNotEmpty(lastId), Coupon::getId, lastId)
+ .orderByDesc(Coupon::getCreateTime)
+ .last("LIMIT 10")
+ .list();
- @Resource
- private ICouponWriteOffService couponWriteOffService;
-
-
-}
+ return CollUtils.isEmpty(coupons) ? new ArrayList<>() :
+ coupons.stream()
+ .map(coupon -> BeanUtils.toBean(coupon, CouponSimpleInfoResDTO.class))
+ .collect(Collectors.toList());
+ }
+}
\ No newline at end of file