## 满减满折 #### 商城应用 在mall4j商城系统里,有着很多的商城的营销活动,最常见之一的活动就有满减满折。 ![1566809957891](..\img\后台满减瞒折.png) #### 整体实体类关系如下图: ![1566810500327](..\img\满减满折数据库关系.png) #### model实体类: ##### 满减活动表(tz_discount): ```java @Data @TableName("tz_discount") public class Discount implements Serializable { private static final long serialVersionUID = -82534421471027766L; /** * 满减满折优惠id */ @TableId private Long discountId; /** * 店铺ID */ private Long shopId; /** * 活动名称 */ private String discountName; /** * 枚举DiscountRule(0 满钱减钱 1满件减钱 2 满钱打折 3:满件打折) */ private Integer discountRule; /** * 减免类型 0按满足最高层级减一次 1每满一次减一次 */ private Integer discountType; /** * 适用商品类型 0全部商品参与 1指定商品参与 2指定商品不参与 */ private Integer suitableProdType; /** * 最多减多少 */ private Double maxReduceAmount; /** * 开始时间 */ private Date startTime; /** * 结束时间 */ private Date endTime; /** * 活动状态:1 开启 0 关闭 */ private Integer status; } ``` - `discountId` , 满减满折优惠id - `shopId`,店铺ID,可扩展为B2B2C模式 - `discountName`,活动名称 - `discountRule` ,活动规则,分为满钱减钱、 满件减钱 、 满钱打折 、满件打折 ![1566810994163](..\img\后天满减瞒着活动规则.png) - `maxReduceAmount` 优惠金额上限,每个用户可以获得此活动的最大优惠金额 - `discountType` ,减免类型,分为按满足最高层级减一次或每满一次减一次 ![1566811419741](..\img\减免类型.png) 【按满足最高层级减一次】:根据活动项中满足的优惠条件经行一次计算。比如:活动的满足条件为满100元减20元、满200元减50元,优惠金额上限为200元。当我购买了总额为800元的活动商品,优惠金额只计算一次。可获的最大优惠金额为50元。 【每满一次减一次】:根据活动项中满足的优惠条件经行多次计算。比如:活动的满足条件为满100元减20元、满200元减50元,优惠金额上限为200元。当我购买了总额为800元的活动商品,优惠金额可计算多次,可获的最大优惠金额为200元,但是优惠总金额不超过优惠上限金额。 **注意**:只有在活动规则为“满钱减钱”、“满件减钱”模式下有效 - `startTime`,活动开始时间 - `endTime`,活动结束时间 - `status` 活动状态分为开启或关闭 - `suitableProdType` 适用商品类型分为全部商品参与、指定商品参与 、指定商品不参与,关联`tz_discount_prod`表 ![1566812842196](..\img\满减满折商品.png) ##### 满减商品关联表(tz_discount_prod): ```java @Data @TableName("tz_discount_prod") public class DiscountProd implements Serializable { /** * 满减 商品 联合id */ @TableId private Long discountProdId; /** * 满减id */ private Long discountId; /** * 商品id */ private Long prodId; } ``` + `discountProdId` 满减商品联合id + `discountId` 满减id + `prodId` 商品Id ##### 满减满折优惠项(tz_discount_item): ```java @Data @TableName("tz_discount_item") public class DiscountItem{ /** * 满减满折优惠项id */ @TableId private Long discountItemId; /** * 满减满折优惠id */ private Long discountId; /** * 所需金额 */ private Double needAmount; /** * 优惠(元/折) */ private Double discount; } ``` 一个满减满折活动,可以包含多个优惠项,优惠项相当于活动条件。 - `discountItemId` 满减满折优惠项id - `discountId` 满减满折活动id - `needAmount` 优惠条件金额 - `discount` 优惠金额或者优惠折扣 ![1566813723102](..\img\满减优惠项1.png)