在商城的首页中,用户可以通过领优惠券进入到商城的领券中心。
或者可以通过用户中心可进入查看到用户所领取的优惠券列表。
用户在提交订单时候,可以对领取可用的优惠劵进行使用
在后台中,商家可以操作优惠券活动
整体实体类关系如下图:
Model 实体类
优惠券表中:
@Data
@TableName("tz_coupon")
public class Coupon implements Serializable {
private static final long serialVersionUID = 8018312153820119913L;
/**
* 优惠券ID
*/
@TableId
private Long couponId;
/**
* 店铺ID
*/
private Long shopId;
/**
* 优惠券名称
*/
private String couponName;
/**
* 副标题
*/
private String subTitle;
/**
* 优惠类型 1:代金券 2:折扣券
*/
private Integer couponType;
/**
* 使用条件
*/
private Double cashCondition;
/**
* 减免金额
*/
private Double reduceAmount;
/**
* 折扣额度
*/
private Double couponDiscount;
/**
* 生效时间 1:固定时间 2:领取后生效
*/
private Integer validTimeType;
/**
* 开始时间
*/
private Date startTime;
/**
* 结束时间
*/
private Date endTime;
/**
* 领券后X天起生效
*/
private Integer afterReceiveDays;
/**
* 有效天数
*/
private Integer validDays;
/**
* 库存
*/
private Integer stocks;
/**
* 适用商品类型 0全部商品参与 1指定商品参与 2指定商品不参与
*/
private Integer suitableProdType;
/**
* 每个用户领券上限,如不填则默认为1
*/
private Integer limitNum;
/**
* 版本号
*/
private Integer version;
/**
* 优惠券过期状态 0:过期 1:未过期
*/
private Integer overdueStatus;
/**
* 优惠券投放状态 0:未投放 1:投放
*/
private Integer putonStatus;
}
couponId ,分组编号,自增唯一
shopId ,店铺id
couponName ,优惠券名称
subTitle,优惠券副标题
couponType,优惠券类型,优惠券类型分为两种类型,代金券和折扣券
reduceAmount 减免金额,会根据优惠券的类型发生改变,如果为代金券则为减免的金额,如果是折扣券则为商品的折扣。
cashCondition ,使用条件,满多少金额优惠券可用
validTimeType , 生效类型,可分为固定时间生效或者在用户领取后生效
固定时间生效
领取后生效
stocks ,投放优惠券数量suitableProdType ,适用商品类型分为全部商品参与 、指定商品参与 、指定商品不参与limitNum ,限制每个用户可以领取的个数version,版本号,用于乐观锁,在高并发的时候防止冲突
overdueStatus,优惠券过期状态分为过期和未过期
putonStatus,优惠券投放状态可分为未投放和投放
绑定优惠券商品表
@Data
@TableName("tz_coupon_prod")
public class CouponProd implements Serializable {
/**
* 优惠券商品ID
*/
@TableId
private Long couponProdId;
/**
* 优惠券ID
*/
private Long couponId;
/**
* 商品ID
*/
private Long prodId;
}
couponProdId ,优惠券商品ID
couponId,优惠券商品ID
prodId,商品ID
用户优惠券领取表
@Data
@TableName("tz_coupon_user")
public class CouponUser implements Serializable {
private static final long serialVersionUID = 129965893236674626L;
/**
* 优惠券用户ID
*/
@TableId
private Long couponUserId;
/**
* 优惠券ID
*/
private Long couponId;
/**
* 用户ID
*/
private String userId;
/**
* 领券时间
*/
private Date receiveTime;
/**
* 优惠券状态 1:未使用 2:使用过 3:已失效
*/
private Integer status;
/**
* 开始时间
*/
private Date userStartTime;
/**
* 结束时间
*/
private Date userEndTime;
/**
* 是否删除
*/
private Integer isDelete;
}
couponUserId ,唯一自增couponId,优惠券iduserId,用户IDreceiveTime , 领取时间status,优惠券的状态(0:失效 1:有效 2:使用过 3:已失效)userStartTime,用户可以使用该券的开始时间userEndTime ,用户可以使用该券的结束时间isDelete 用户是否对优惠券进行删除用户优惠券使用记录
@Data
@TableName("tz_coupon_use_record")
public class CouponUseRecord implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 优惠券使用id
*/
@TableId
private Long couponUseRecordId;
/**
* 用户优惠券id
*/
private Long couponUserId;
/**
* 用户id
*/
private String userId;
/**
* 订单编号
*/
private String orderNumber;
/**
* 金额
*/
private Double amount;
/**
* 使用时间
*/
private Date useTime;
/**
* 使用状态
*/
private Integer status;
}
couponUseRecordId ,优惠券使用idcouponUserId ,用户优惠券idorderNumber, 订单编号amount,优惠券金额status 状态