我是一段不羁的公告!
记得给艿艿这 3 个项目加油,添加一个 STAR 噢。
https://github.com/YunaiV/SpringBoot-Labs
https://github.com/YunaiV/onemall
https://github.com/YunaiV/ruoyi-vue-pro

数据库实体设计 —— 营销(4.4)之满减送

艿艿目前正在做一个开源的电商项目,胖友可以 star 下。https://gitee.com/zhijiantianya/onemall

1. 概述

本文主要分享营销模块的 满减送 的数据库实体设计

基于如下信息,逆向猜测数据库实体:

【护脸旁白】
笔者非电商行业出身 && 非有赞工程师,所以有错误或不合理的地方,烦请斧正和探讨。
有赞是个各方面都很 NICE 的公司,推荐

2. 背景了解

参见 《满减送使用教程》 文档。

我们可以看到,满减送功能是一个综合性的促销功能,如下图所示:

3. 数据库实体

MeetReduceActivity ,满减送活动。

下面我们分块分享每个字段。

3.1 基本信息

《数据库实体设计 —— 营销(4.2)之限制折扣》「3.1 基本信息」 一致。

/**
* 编号,自增唯一
*/
private Integer id;
/**
* 店铺编号
*/
private Integer shopId;
/**
* 名称
*/
private String name;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;

3.2 状态信息

《数据库实体设计 —— 营销(4.2)之限制折扣》「3.2 状态信息」 一致。

/**
* 状态
*
* 1-未开始
* 2-进行中
* 3-已结束
* 4-已删除
*/
private Integer status;
/**
* 结束类型
*
* 1-活动到期
* 2-手动删除
* 3-手动失效
*/
private Integer endType;
/**
* 活动到期时间
*/
private Date expireTime;
/**
* 设置为失效时间
*/
private Date invalidTime;
/**
* 删除时间
*/
private Date deleteTime;
  • status ,状态。迁移过程如下图:
  • endType ,结束类型。
  • 因为迁移状态比较灵活,所以用多个字段记录时间。
    • expireTime ,活动到期时间。
    • invalidTime ,设置为失效时间。
    • deleteTime ,删除时间。

3.3 时间信息

/**
* 开始时间
*/
private Date startTime;
/**
* 结束时间
*/
private Date endTime;

3.4 商品优惠信息

/**
* 优惠数组
*
* JSON 格式,数组,每个元素为 {@link PreferentialVO}
*/
private String preferentials;
/**
* 可用范围的类型
*
* 1-部分(ALL):全部商品可用
* 2-全部(PART):部分商品可用,或指定商品可用
*/
private Integer rangeType;
/**
* 指定可用商品列表,使用逗号分隔商品编号 {@link cn.iocoder.doraemon.itemgroup.item.entity.Item#id}
*/
private String rangeValues;
  • 商品维度 :rangeType / rangeValues
  • preferentials ,优惠数组(最多 5 个元素)。JSON 格式,每个元素为 PreferentialVO ,代码如下:

    /**
    * 满足金额,单位:分
    */
    private Integer meet;
    /**
    * 是否减现金,和 {@link #isDiscountRequired} 互斥
    */
    private Boolean isCashRequired;
    /**
    * 减现金,单位:分
    */
    private Integer cash;
    /**
    * 是否打折,和 {@link #isCashRequired} 互斥
    */
    private Boolean isDiscountRequired;
    /**
    * 折扣,百分比。例如:75 折为 75 。
    */
    private Integer discount;
    /**
    * 是否包邮
    */
    private Boolean isPostage;
    /**
    * 是否送积分
    */
    private Boolean isScoreRequired;
    /**
    * 积分
    */
    private Integer score;
    /**
    * 是否送优惠劵(码)
    */
    private Boolean isCouponRequired;
    /**
    * 优惠劵(码)分组编号
    */
    private Integer couponGroupId;
    /**
    * 优惠劵(码)数量
    */
    private Integer couponNum;
    /**
    * 是否送赠品
    */
    private Boolean isPresentRequired;
    /**
    * 赠品编号
    */
    private Integer presentId;

4. API

有赞云暂未提供相关 API ,因此本小节省略。

666. 彩蛋

小文一篇,涉及到交易价格计算的部分,在后续文章分享。

总访客数 && 总访问量