Jelajahi Sumber

修复优惠券发放已使用状态;优惠券查询条件拓展

Eric 3 tahun lalu
induk
melakukan
273f41d445

+ 32 - 3
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/io/request/coupon/CouponInfoVO.java

@@ -40,6 +40,9 @@ public class CouponInfoVO {
     @ApiModel("优惠券信息分页请求信息")
     public static class PageRequest extends QueryInfo {
 
+        @ApiModelProperty(value = "优惠券ID", hidden = true)
+        private Long couponId;
+
         @ApiModelProperty("优惠券名称")
         private String name;
 
@@ -52,16 +55,42 @@ public class CouponInfoVO {
         @ApiModelProperty("可用品类")
         private CouponCategoryEnum category;
 
+        @ApiModelProperty("优惠券状态")
+        private Integer status;
+
+        @ApiModelProperty(value = "当前时间", hidden = true)
+        private Long timestamp;
+
+        @ApiModelProperty(value = "优惠券时间类型", hidden = true)
+        private CouponValidTypeEnum validType;
+
         public String jsonString() {
             return JSON.toJSONString(this);
         }
 
         public String getName() {
 
-            if (StringUtils.isEmpty(this.name)) {
-                return null;
+            return Optional.ofNullable(this.name).filter(x -> !x.matches(MK.EXP_INT)).orElse(null);
+        }
+
+        public Long getCouponId() {
+            if (StringUtils.isNotEmpty(this.name) && this.name.matches(MK.EXP_INT)) {
+                return Long.parseLong(this.name);
             }
-            return name;
+            return couponId;
+        }
+
+        public void setStatus(Integer status) {
+
+            if (EStatus.ENABLE.match(status)) {
+                this.timestamp(DateTime.now().getMillis()).setValidType(CouponValidTypeEnum.DAY);
+            }
+            this.status = status;
+        }
+
+        public PageRequest timestamp(Long timestamp) {
+            this.timestamp = timestamp;
+            return this;
         }
     }
 

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/queryInfo/CouponInfoQuery.java

@@ -5,6 +5,7 @@ import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponCategoryEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponUseStateEnum;
+import com.yonge.cooleshow.biz.dal.enums.coupon.CouponValidTypeEnum;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -28,6 +29,8 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 public class CouponInfoQuery implements Serializable {
 
+    // 优惠券ID
+    private Long couponId;
     // 优惠券名称
     private String name;
     // 客户端类型
@@ -36,6 +39,12 @@ public class CouponInfoQuery implements Serializable {
     private CouponTypeEnum couponType;
     // 可用品类
     private CouponCategoryEnum category;
+    // 优惠券状态
+    private Integer status;
+    // 当前时间
+    private Long timestamp;
+    // 优惠券时间类型
+    private CouponValidTypeEnum validType;
 
     public static CouponInfoQuery from(String recv) {
 

+ 3 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CouponIssueServiceImp.java

@@ -28,6 +28,7 @@ import com.yonge.cooleshow.common.enums.EStatus;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -78,7 +79,8 @@ public class CouponIssueServiceImp extends ServiceImpl<CouponIssueMapper, Coupon
         // 优惠券过期状态
         couponIssueWrappers = couponIssueWrappers.stream()
                 .peek(couponIssueWrapper -> {
-                    if (couponIssueWrapper.getEndTime().compareTo(query.getExpiredTime()) <0) {
+                    if (StringUtils.isEmpty(couponIssueWrapper.getOrderNo())
+                            && couponIssueWrapper.getEndTime().compareTo(query.getExpiredTime()) < 0) {
                         couponIssueWrapper.setUseState(CouponUseStateEnum.EXPIRED);
                     }
                 }).collect(Collectors.toList());

+ 9 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CouponInfoMapper.xml

@@ -34,6 +34,9 @@
     <select id="selectCouponPageInfo" resultType="com.yonge.cooleshow.biz.dal.vo.coupon.CouponInfoWrapper">
         SELECT t1.id_, t1.name_, t1.client_type_, t1.category_, t1.coupon_type_, t1.inventory_, t1.status_, t1.updated_by_, t1.update_time_, t1.created_time_, t1.valid_type_, t1.end_time_ FROM coupon_info t1
         <where>
+            <if test="record.couponId != null">
+                AND t1.id_ = #{record.couponId}
+            </if>
             <if test="record.name != null">
                 AND t1.name_ LIKE '%${record.name}%'
             </if>
@@ -46,6 +49,12 @@
             <if test="record.category != null">
                 AND t1.category_ = #{record.category}
             </if>
+            <if test="record.status">
+                AND t1.status_ = #{record.status}
+            </if>
+            <if test="record.timestamp != null">
+                AND (#{record.timestamp} &lt;= t1.end_time_ <if test="record.validType != null"> OR t1.valid_type_ = #{record.validType}</if>)
+            </if>
         </where>
         ORDER BY t1.id_ DESC
     </select>