提起拼团,大家自然而然地想到拼多多,在流量红利已经触底的情况下,以拼团这种新模式杀出一条血路。
页面上的“发起拼团”或“去拼团”按钮大家都看的到,但是否真正思考过其背后的逻辑。
接下来我将结合最近一周做的拼团活动,细说拼团背后的逻辑,按拼团的整个流程来讲解。
一、创建拼团活动
拼多多的所有商品都有拼团模式,淘宝、京东或其他平台只有部分商品有拼团模式,两种后台设计肯定不同。我此次负责的项目是后者,故以此种类型谈如何创建拼团活动。
创建拼团活动的过程中,至少包含以下元素:拼团活动时间、成团有效时间、成团人数、每人限购、可开团商品和拼团活动状态。
1. 拼团活动时间
可开团商品的拼团活动时长,如一个商品的拼团活动时间为3月20日00:00:00至3月30日00:00:00,这个时间段内,该商品可开团,用户进入商品详情页可发起拼团或参与拼团。
2. 成团有效时间
用户开团后与其他人组团的时间,该时间内没有组团成功将拼团失败,系统自动退款。特别注意的是:因为引入了这个字段,会有某用户对某商品的实际拼团结束时间。
实际拼团结束时间=发起拼团时间+成团有效时间(发起拼团时间=发起拼团人的支付时间)
什么意思呢?
举个例子来讲:若该商品的拼团活动时间为3月20日00:00:00-3月30日00:00:00,成团有效时间为24小时,则3月30日0点以后,该商品不可再开团,但已开的团用户还可以参团,即该活动实际在3月31日00:00:00结束拼团促销。
3. 成团人数
凑够多少人满足拼团条件,限制条件为至少2人。
4. 每人限购
每人最多购买多少件,拼团商品因价格较便宜,根据预算看是否需要配置该字段。
5. 关联商品
前面四个字段都属于拼团活动的基本属性字段,我们要把这些字段关联到具体某一个商品上或多个商品上,并设置拼团价。
拼团活动商品创建成功后,商品就被分为普通商品和拼团商品(在商品表里也会有一个字段来标记和区分),拼团活动列表新增一条记录。
6. 拼团活动状态
未开始:拼团活动开始时间>当前时间;
活动中:拼团活动开始时间<当前时间且拼团活动结束时间>当前时间;
已结束:拼团活动结束时间<当前时间;
已失效:“活动中”状态的活动商品手动点击“已失效”按钮,变为已失效,活动提前结束。
“未开始”状态的活动商品可全部字段编辑,“活动中”状态的活动商品只能延长拼团活动结束时间。
值得注意的是:已结束与已失效的区别在于:已结束是活动到期后自然结束的,已失效是指商家主动提前结束。已结束和已失效的活动商品需要再次发起活动,重新新增一次。


二、用户发起拼团
用户在拼团商品详情页发起拼团活动,生成一条团单记录和订单记录,后台分别对应团单列表和订单列表。

1. 团单列表
不同的拼团状态,订单ID个数和已参团人数不同,假设成团人数为3人。
待成团:发起者发起拼团但未支付,订单ID有该用户的下单数据,发起拼团时间和拼团结束时间为空(此团未开成功,自然不存在发起拼团时间和拼团结束时间之说,发起者支付成功才意味着开团成功),已参团人数为0。
拼团中:发起者支付成功,开团成功,已参团人数为1。“拼团中”状态的订单不可取消,需拼团成功后才可取消。
拼团成功:成团人满且都支付成功,此时一个团购ID对应三个订单ID。
拼团失败:成团有效时间内,成团人数未满,拼团失败,系统自动退款。
2. 拼团订单列表
拼团商品的订单可合并在普通订单列表,增加一个“订单类型”字段用于区分,拼团订单列表有“查看同团订单”跳转链接。
三、拼团页分享
拼团的一个显著特点是通过分享进行老带新,更多利用社交关系促进订单转化。这个环节要考虑的是,分享出来的这个拼团活动状态不同,用户看到的页面也不同。
“拼团失败”和“拼团成功”分别对应活动已结束(不是商品的拼团活动结束时间,是发起人创建的这个拼团活动的结束时间)和人数已满两种情况。

△用户进入拼团分享页逻辑
到此,一个完整的拼团活动差不多结束了。文中所有的原型图仅供参看,具体视业务而定。
四、数据库重要实体类设计如下
package com.ltf.entity; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; / * 拼团产品实体类 * @author xhz * */ @Data public class Combination implements Serializable { private static final long serialVersionUID = 1L; private int id;//主键 private int courseId;//课程id(这里需关联你的商品id,我这里的商品是课程) private int people;//几人团 private BigDecimal price;//成团价格 private BigDecimal productPrice;//商品价格 private int sales;//销量 private int stock;//库存 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private Date addTime;//添加时间 private int isHost;// 是否上推荐:0.否,1:是 private int isShow; //产品状态:1.正常,2:下架 private int combination;//团类型:1.普通团,2:团长专属 private Date startTime;// 拼团开始时间 private Date stopTime;// 拼团结束时间 private int effectiveTime;// 拼团订单有效时间 private int countPeopleAll; //参与人数 private int countPeoplePink; //成团人数 private String title;//拼团产品名称 private String image;//产品图 /*辅助属性放下面*/ private Date nowTime; }
讯享网
讯享网package com.ltf.entity; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; / * 拼团详情实体类 * @author xhz * */ @Data public class Pink implements Serializable { private static final long serialVersionUID = 1L; private int id;//主键 private int userId;//用户id private int orderId;//订单id private int combinationId;//拼团产品id private int courseId;//课程id private int people;//拼团总人数 private BigDecimal price;//拼团产品单价 @JsonFormat( pattern = "yyyy年MM月dd日HH时mm分", timezone = "GMT+8" ) private Date createTime;//开团时间 private Date stopTime;//结束时间 private int kId=-1;//团长id 0为团长 private int isTpl;//是否发送模板消息0未发送1已发送 private int isRefund=-1;//是否退款 0未退款 1已退款 private int status;//状态1进行中2已完成3未完成 }
在订单表加入拼团相关字段
package com.ltf.entity; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; import lombok.Data; / * 课程订单流水实体类 * @author xhz * */ @Data public class CourseTrxorderDetail implements Serializable{ private static final long serialVersionUID = 1L; private int combinationId=-1;//拼团产品id,0一般产品,>0拼团 private int pinkId=-1;//拼团id,0没有拼团,>0拼团 }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/32937.html