浅谈一下拼团活动前后端的设计思路
一个完整的拼团活动设计,基本包括前端、后端两大部分。前端处理交互、后端设计数据表并处理业务逻辑。其中后端的活动设计以及业务处理相对可能复杂一下。整体的设计流程可以简单概括下:
1、后端根据业务需求,合理设计数据表。
2、通过在后台创建拼团活动。
3、前端对接拼团活动,发起拼团活动。
一、后端设计拼团活动
拼团活动基本要素
通常一个成熟的拼团活动主要包含以下四个要素:
1、拼团成团商品
拼团的最基本对象就是商品,必须为平团活动绑定或者关联商品,既然是商品,拼团也需要设置价格,拼团价格要低于原销售价格吧?不然怎么叫拼团,具有竞争力的价格才能吸引更多人拼团。
2、拼团人数
拼团字面意思就是要成团,因此拼团人数不能低于2人,否则无法成团。
3、拼团活动有效时间
拼团也是促销活动的一种,因此一个拼团活动在开启执行到失效,需要设置有效时间,也就是什么时候开始,什么结束,这个要明确。
4、成团的有效时间
由于拼团不能百分百拼成团,所以拼团不能再"一直拼",达到一定时间没有成团应结束此次拼团,也就是拼团失败,系统会自动退款。实际拼团结束时间=发起拼团时间+成团有效时间(发起拼团时间=发起拼团人的支付时间)
以上要素基本是拼团活动中要具备的。而其他的比如:拼团类型,拼团渠道,拼团方式,团长奖励等则根据业务需求来决定。
拼团创建成功后,拼团活动相应地在数据表中写入一条记录。拼团活动有各种状态,这里根据活动时间,比如:
拼团活动未开始(设置的时间大于现在的时间)
活动中:拼团活动开始时间大于当前时间且拼团活动结束时间大于当前时间;
已结束:拼团活动结束时间大于当前时间;
拼团的有效与否,这里需根据上下架状态来判断。如果活动未上架,不管活动有没有开始,还是活动中,都是不可开团的。
二、前端发起拼团
从商品详情拼团,这是一个入口。开团后就有不同的拼团状态,订单ID个数和已参团人数不同,假设成团人数为2人。
1 待成团:发起者(团长)发起拼团但未支付,订单ID有该用户的下单数据,但是是未支付,表示拼团不成功的。
2 拼团中:发起者支付成功,开团成功,已参团人数为1。“拼团中”状态的订单不可取消,需拼团成功后才可取消。
3 拼团成功:成团人满且都支付成功,此时一个团购ID对应2个订单ID。
4 拼团失败:成团有效时间内,成团人数未满,拼团失败,系统自动退款。
开团后,则就有了拼团订单表,拼团订单有拼团失败,拼团成功的状态来断定这个拼团是否成功。
拼团设计主要还是具体问题具体分析,但是一定要具备以上4个要素。理解基本需求后,实际编码过程中就不会大问题乐。其中比较重要的还是数据表的设计,这里贴上数据表,仅供参考。
三、相关数据表
数据表仅供参考,数据表设计要根据自己实际的业务需求来。
1、拼团活动表
CREATE TABLE `pintuan_activities` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`activity_title` varchar(255) NOT NULL COMMENT '活动标题',
`activity_cover` varchar(255) NOT NULL COMMENT '活动封面',
`share_title` varchar(255) NOT NULL COMMENT '分享标题',
`share_desc` varchar(255) NOT NULL COMMENT '分享描述',
`share_cover` varchar(255) NOT NULL COMMENT '分享封面',
`start_time` datetime DEFAULT NULL COMMENT '活动开始时间',
`end_time` datetime DEFAULT NULL COMMENT '活动结束时间',
`expire_hour` tinyint(3) unsigned NOT NULL DEFAULT '24' COMMENT '成团有效时间',
`is_on_sale` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '是否上架 1:上架 0:下架',
`sort` tinyint(3) unsigned NOT NULL COMMENT '排序',
`mode` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '拼团方式:1. 老带新 2. 所有用户',
`type` tinyint(3) unsigned NOT NULL COMMENT '拼团类型:1. 普通拼团 2. 阶梯拼团 3. 加价拼团 4. 返现拼团',
`range` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '拼团位置:1. 线上拼团 2. 线下拼团',
`recommend` tinyint(3) NOT NULL DEFAULT '0' COMMENT '推荐',
`goods_package_id` int(10) unsigned NOT NULL COMMENT '商品套餐ID',
`original_price` decimal(10,2) unsigned NOT NULL COMMENT '原价',
`active_rule` text COMMENT '拼团规则JSON格式',
`is_help` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否助力0否,1是',
`help_user_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '助力用户类型 1 老用户 2所有用户',
`help_people_num` tinyint(4) unsigned NOT NULL DEFAULT '1' COMMENT '助力人数',
`success_reward_rule` text COMMENT '成功奖励规则JSON格式 \r\nreward_type:奖励类型\r\n1:实物奖励-充值到账户\r\n2:实物奖励-直接发货\r\n3:优惠券奖励\r\n4:积分奖励\r\n5:现金返利\r\nreward_value:奖励物品\r\nreward_send_type:发放时间类型\r\n1:成团立即发放\r\n2:下一次配送完成后15天\r\n3:订单完成后7天',
`failure_reward_rule` text COMMENT '失败奖励规则JSON格式 \r\nreward_type:奖励类型\r\n1:实物奖励-充值到账户\r\n2:实物奖励-直接发货\r\n3:优惠券奖励\r\n4:积分奖励\r\n5:现金返利\r\nreward_value:奖励物品\r\nreward_send_type:发放时间类型\r\n1:失败立即发放\r\n2:退款审核后发放',
`return_money_rule` text COMMENT '返现规则',
`created_at` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=128 DEFAULT CHARSET=utf8 COMMENT='拼团活动表';
2、拼团订单表
CREATE TABLE `pintuan_activity_orders` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`order_sn` varchar(255) NOT NULL DEFAULT '' COMMENT '拼团订单SN',
`business_id` int(10) NOT NULL COMMENT '商家ID',
`user_id` int(10) unsigned NOT NULL COMMENT '拼主',
`group_activity_id` int(10) unsigned NOT NULL COMMENT '拼团活动ID',
`success_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
`goods_package_id` int(10) unsigned NOT NULL COMMENT '拼团套餐ID',
`status` int(10) unsigned NOT NULL DEFAULT '1' COMMENT '状态:1. 未支付 2.拼团中 3. 拼团成功 4. 拼团失败',
`range` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '拼团位置:1. 线上拼团 2. 线下拼团',
`people_number` int(10) unsigned NOT NULL COMMENT '成团人数',
`remaining_people_number` int(10) unsigned NOT NULL COMMENT '剩余人数',
`expire_hour` tinyint(3) unsigned NOT NULL COMMENT '成团有效时间',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1127 DEFAULT CHARSET=utf8 COMMENT='拼团订单表';
3、如果拼团有设置,比如拼团成功,团长有啥奖励,则就有拼团奖励表
CREATE TABLE `pintuan_activity_rewards` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(10) unsigned NOT NULL COMMENT '用户ID',
`range` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '拼团位置:1. 线上拼团 2. 线下拼团',
`group_activity_order_id` int(10) unsigned NOT NULL COMMENT '拼团订单ID',
`order_id` int(10) NOT NULL COMMENT '销售单id',
`order_status` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '奖励人:1, 团长奖励 2. 失败奖励 3. 返现拼团',
`send_time` datetime DEFAULT NULL COMMENT '发放时间',
`reward_type` tinyint(3) unsigned NOT NULL COMMENT '奖励类型\r\n1:实物奖励-充值到账户\r\n2:实物奖励-直接发货\r\n3:优惠券奖励\r\n4:积分奖励\r\n5:现金返利\r\n6.返利拼团',
`reward_value` varchar(255) NOT NULL COMMENT '奖励 (reward_type=6时为返现金额)',
`reward_send_type` tinyint(3) unsigned DEFAULT NULL COMMENT '奖励发放类型: 1=成团立即发送 2=配送单完成之后15天 3=订单完成后七天',
`reward_expect_time` datetime DEFAULT NULL COMMENT '奖励预计发送时间',
`status` tinyint(3) DEFAULT '1' COMMENT '发放状态 1.待发放 2.已发放 3.待审核',
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=855 DEFAULT CHARSET=utf8 COMMENT='拼团奖励表';
四、总结
拼团活动的设计基本上就是围绕以上基本要素展开,再根据具体的实际业务需求进行整合、调整,最终形成一个成熟的拼团活动系统。没有一模一样的拼团活动设计原则,都是具体问题具体分析。