Ver código fonte

优惠券新增、修改、查询、删除接口开发

WangChanghua 1 ano atrás
pai
commit
8f8389af27

+ 2 - 2
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/constant/CouponClaimType.java

@@ -17,9 +17,9 @@ public enum CouponClaimType implements Enumeration {
     FREE("免费领取"),
 
     /**
-     * 活动领取
+     * 活动赠送
      */
-    ACTIVITY("活动领取");
+    ACTIVITY("活动赠送");
 
     /**
      * 类型描述

+ 85 - 10
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/CouponDTO.java

@@ -2,9 +2,9 @@ package com.chelvc.cloud.vehicle.api.dto;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
-import com.chelvc.cloud.vehicle.api.constant.CouponStatus;
-import com.chelvc.cloud.vehicle.api.constant.CouponType;
+import com.chelvc.cloud.vehicle.api.constant.*;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -31,6 +31,11 @@ public class CouponDTO implements Serializable {
      */
     private Long merchantId;
 
+    /**
+     * 商家名称,如果是平台,这个值为platform
+     */
+    private String merchantName;
+
     /**
      * 优惠券类型
      */
@@ -42,25 +47,20 @@ public class CouponDTO implements Serializable {
     private String name;
 
     /**
-     * 优惠金额
+     * 优惠金额
      */
     private Double amount;
 
     /**
-     * 满减金额
+     * 消费门槛
      */
-    private Double reduce;
+    private Double consumeThreshold;
 
     /**
      * 优惠折扣
      */
     private Double discount;
 
-    /**
-     * 过期时间
-     */
-    private Date expiration;
-
     /**
      * 优惠券描述
      */
@@ -80,4 +80,79 @@ public class CouponDTO implements Serializable {
      * 创建时间
      */
     private Date createTime;
+
+    /**
+     * 活动名称
+     */
+    private String promotionName;
+
+    /**
+     * 活动开始时间
+     */
+    private Date startTime;
+
+    /**
+     * 活动结束时间
+     */
+    private Date endTime;
+
+    /**
+     * 关联范围类型
+     */
+    private PromotionScopeType scopeType;
+
+    /**
+     * 范围关联的id
+     */
+    private String scopeId;
+
+    /**
+     * 是否已删除
+     */
+    private Boolean deleted;
+
+    /**
+     * 限制领取数量
+     */
+    private Integer limitNum;
+
+    /**
+     * 发行数量
+     */
+    private Integer publishNum;
+
+    /**
+     * 已被领取的数量
+     */
+    private Integer receivedNum;
+
+    /**
+     * 已被使用的数量
+     */
+    private Integer usedNum;
+
+    /**
+     * 优惠券获取方式类型
+     */
+    private CouponClaimType claimType;
+
+    /**
+     * 时间范围类型
+     */
+    private CouponRangeDay rangeDayType;
+
+    /**
+     * 有效天数
+     */
+    private Integer effectiveDays;
+
+    /**
+     * 促销状态
+     */
+    private PromotionStatus promotionStatus;
+
+    /**
+     * 优惠券关联商品集合
+     */
+    private List<PromotionGoodsDTO> promotionGoodsList;
 }

+ 129 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/PromotionGoodsDTO.java

@@ -0,0 +1,129 @@
+package com.chelvc.cloud.vehicle.api.dto;
+
+import com.chelvc.cloud.vehicle.api.constant.GoodsType;
+import com.chelvc.cloud.vehicle.api.constant.PromotionScopeType;
+import com.chelvc.cloud.vehicle.api.constant.PromotionType;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.util.Date;
+
+/**
+ * 促销活动商品信息
+ *
+ * @author qizai
+ * @date 2023/11/15
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PromotionGoodsDTO {
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 商家ID
+     */
+    private Long merchantId;
+
+    /**
+     * 商家名称
+     */
+    private String merchantName;
+
+    /**
+     * 商品ID
+     */
+    private Long goodsId;
+
+    /**
+     * 商品名称
+     */
+    private String goodsName;
+
+    /**
+     * 缩略图
+     */
+    private String thumbnail;
+
+    /**
+     * 活动开始时间
+     */
+    private Date startTime;
+
+    /**
+     * 活动结束时间
+     */
+    private Date endTime;
+
+    /**
+     * 活动ID
+     */
+    private Long promotionId;
+
+    /**
+     * 促销类型
+     */
+    private PromotionType promotionType;
+
+    /**
+     * 商品类型
+     */
+    private GoodsType goodsType;
+
+    /**
+     * 活动标题
+     */
+    private String title;
+
+    /**
+     * 卖出的商品数量
+     */
+    private Integer num;
+
+    /**
+     * 原价
+     */
+    private Double originalPrice;
+
+    /**
+     * 促销价格
+     */
+    private Double price;
+
+    /**
+     * 兑换积分
+     */
+    private Long points;
+
+    /**
+     * 限购数量
+     */
+    private Integer limitNum;
+
+    /**
+     * 促销库存
+     */
+    private Integer quantity;
+
+    /**
+     * 分类path
+     */
+    private String categoryPath;
+
+    /**
+     * 关联范围类型
+     */
+    private PromotionScopeType scopeType;
+
+    /**
+     * 范围关联的ID
+     */
+    private String scopeId;
+}

+ 40 - 18
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/CouponModifyParam.java

@@ -1,20 +1,15 @@
 package com.chelvc.cloud.vehicle.api.param;
 
-import com.chelvc.cloud.vehicle.api.constant.CouponStatus;
-import com.chelvc.cloud.vehicle.api.constant.CouponType;
-import lombok.*;
+import com.chelvc.cloud.vehicle.api.constant.*;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
 import lombok.experimental.SuperBuilder;
 
-import javax.validation.constraints.DecimalMin;
-import javax.validation.constraints.Min;
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
+import javax.validation.constraints.*;
 import java.io.Serializable;
-import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
-import java.util.Set;
 
 /**
  * 优惠券信息更新参数
@@ -56,9 +51,9 @@ public class CouponModifyParam implements Serializable {
     /**
      * 满减金额
      */
-    @NotNull(message = "满减金额不能为空")
-    @DecimalMin(value = "0.00", message = "满减金额不能小于0")
-    private Double reduce;
+    @NotNull(message = "消费门槛不能为空")
+    @DecimalMin(value = "0.00", message = "消费门槛不能小于0")
+    private Double consumeThreshold;
 
     /**
      * 优惠折扣
@@ -67,11 +62,6 @@ public class CouponModifyParam implements Serializable {
     @DecimalMin(value = "0.00", message = "优惠折扣不能小于0")
     private Double discount;
 
-    /**
-     * 过期时间
-     */
-    private Date expiration;
-
     /**
      * 优惠券描述
      */
@@ -92,6 +82,13 @@ public class CouponModifyParam implements Serializable {
     @Min(value = 0, message = "限制领取数量不能小于0")
     private Integer limitNum;
 
+    /**
+     * 发行数量
+     */
+    @NotNull(message = "发行数量不能为空")
+    @Min(value = 0, message = "发行数量不能小于0")
+    private Integer publishNum;
+
     /**
      * 优惠券ID列表
      */
@@ -100,10 +97,35 @@ public class CouponModifyParam implements Serializable {
     /**
      * 活动开始时间
      */
+    @NotNull(message = "活动开始时间不能为空")
     private Date startTime;
 
     /**
      * 活动结束时间
      */
+    @NotNull(message = "活动结束时间不能为空")
     private Date endTime;
+
+    /**
+     * 优惠券领取方式
+     */
+    @NotNull(message = "优惠券领取方式不能为空")
+    private CouponClaimType claimType;
+
+    /**
+     * 范围关联的id
+     */
+    private String scopeId;
+
+    /**
+     * 优惠券使用范围
+     */
+    @NotNull(message = "优惠券使用范围不能为空")
+    private PromotionScopeType scopeType;
+
+    /**
+     * 时间范围类型
+     */
+    @NotNull(message = "间范围类型不能为空")
+    private CouponRangeDay rangeDayType;
 }

+ 7 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/CouponMapper.java

@@ -36,4 +36,11 @@ public interface CouponMapper extends BaseMapper<Coupon> {
      */
     int updateCouponReceivedNum(@Param("id") Long id, @Param("receiveNum") Integer receiveNum,
                                  @Param("publishNum") Integer publishNum);
+
+    /**
+     * 删除优惠券
+     *
+     * @param id   优惠券ID
+     */
+    int logicDelete(@Param("id") Long id);
 }

+ 1 - 1
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/BasePromotion.java

@@ -30,7 +30,7 @@ public class BasePromotion extends ModifyEntity<Long> implements Deletable<Long>
     /**
      * 主键
      */
-    @TableId(type = IdType.ASSIGN_ID)
+    @TableId(type = IdType.AUTO)
     private Long id;
 
     /**

+ 4 - 17
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/Coupon.java

@@ -1,26 +1,13 @@
 package com.chelvc.cloud.vehicle.server.entity;
 
-import java.util.Date;
-import java.util.List;
-
-import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.chelvc.cloud.vehicle.api.constant.CouponClaimType;
-import com.chelvc.cloud.vehicle.api.constant.CouponRangeDay;
-import com.chelvc.cloud.vehicle.api.constant.CouponStatus;
-import com.chelvc.cloud.vehicle.api.constant.CouponType;
-import com.chelvc.cloud.vehicle.api.constant.PromotionScopeType;
-import com.chelvc.cloud.vehicle.api.constant.PromotionStatus;
-import com.chelvc.framework.database.entity.ModifyEntity;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
-import lombok.ToString;
+import com.chelvc.cloud.vehicle.api.constant.*;
+import lombok.*;
 import lombok.experimental.SuperBuilder;
 
+import java.util.List;
+
 /**
  * 优惠券数据模型
  *

+ 5 - 7
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/CouponServiceImpl.java

@@ -44,8 +44,6 @@ import java.util.stream.Collectors;
 public class CouponServiceImpl extends AbstractPromotionServiceImpl<CouponMapper, Coupon> implements CouponService,
         com.chelvc.cloud.vehicle.api.service.CouponService {
 
-    private final GoodsService goodsService;
-    private final UserCouponService userCouponService;
     private final CouponActivityItemService couponActivityItemService;
     private final PromotionGoodsService promotionGoodsService;
     private final FullDiscountService fullDiscountService;
@@ -78,8 +76,8 @@ public class CouponServiceImpl extends AbstractPromotionServiceImpl<CouponMapper
 
     @Override
     public void deleteCoupon(@NonNull Long id) {
-        ResourceUtils.required(this.getById(id), "商品优惠不存在");
-        this.baseMapper.deleteById(id);
+        ResourceUtils.required(this.getById(id), "商品优惠不存在");
+        this.baseMapper.logicDelete(id);
     }
 
     @Override
@@ -138,7 +136,7 @@ public class CouponServiceImpl extends AbstractPromotionServiceImpl<CouponMapper
     @Override
     public void batchDeleteCoupon(@NonNull List<Long> ids) {
         // 关闭用户优惠券信息
-        this.userCouponService.closeUserCoupon(ids);
+//        this.userCouponService.closeUserCoupon(ids);
         // 删除优惠券关联优惠券活动
         this.couponActivityItemService.removeByCouponId(ids);
         super.removePromotion(ids);
@@ -188,7 +186,7 @@ public class CouponServiceImpl extends AbstractPromotionServiceImpl<CouponMapper
         // 关闭优惠券,删除相关会员优惠券和券活动
         if (startTime == null && endTime == null) {
             //关闭用户优惠券信息
-            this.userCouponService.closeUserCoupon(ids);
+//            this.userCouponService.closeUserCoupon(ids);
             //删除优惠券关联优惠券活动
             this.couponActivityItemService.removeByCouponId(ids);
         }
@@ -314,7 +312,7 @@ public class CouponServiceImpl extends AbstractPromotionServiceImpl<CouponMapper
             throw new ResourceUnavailableException("指定商品范围关联id不能为空");
         }
         for (String id : split) {
-            Goods goods = goodsService.getById(id);
+            Goods goods = null;
             if (goods == null) {
                 throw new ResourceUnavailableException("商品不存在");
             }

+ 4 - 0
vehicle-server/src/main/resources/mapper/CouponMapper.xml

@@ -27,4 +27,8 @@
             and cn.publish_num >= cn.received_num + #{receiveNum}
         </if>
     </update>
+
+    <update id="logicDelete">
+        update coupon cn set cn.deleted = 1 where cn.id = #{id}
+    </update>
 </mapper>