团购设计

说明:任何一个电商系统中,对于促销这块是必不可少的,毕竟这块是最吸引用户的,用户也是最爱的模块之一,理由很简单,便宜。

           我的经验是无论是大的餐饮点还是小的餐饮店,优惠与折扣永远是说福他们进入平台的最好的手段之一。(大企业叫做节约成本,小企业叫做贪便宜.)

 

 

1.Java开源生鲜电商平台中,团购模块,我们采用以下几种维度思考。

     1.1  针对的是生鲜中的标品。(米面粮油,我们要求买家可以自己发送团购,但是团购有次数,与时间以及买家起团金额和最低开团金额几个维度)

因此,需要有一个团购基础信息表:

 

 
  1. CREATE TABLE `groups` (

  2. `group_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',

  3. `group_no` varchar(32) DEFAULT NULL COMMENT '团号',

  4. `group_title` varchar(128) DEFAULT NULL COMMENT '团购标题',

  5. `group_logo` varchar(128) DEFAULT NULL COMMENT '团购logo',

  6. `group_area` varchar(128) DEFAULT NULL COMMENT '团购区域(区域ID集合)',

  7. `begin_time` datetime DEFAULT NULL COMMENT '开始时间',

  8. `end_time` datetime DEFAULT NULL COMMENT '结束时间',

  9. `max_num` int(11) DEFAULT NULL COMMENT '最大买家数',

  10. `buyer_amt` decimal(12,2) DEFAULT NULL COMMENT '买家起团金额',

  11. `min_amt` decimal(12,2) DEFAULT NULL COMMENT '最低开团金额',

  12. `group_status` tinyint(4) DEFAULT NULL COMMENT '状态(1发布 -1未发布 2团成 3未团成)',

  13. `remarks` varchar(256) DEFAULT NULL,

  14. `create_user_id` bigint(20) DEFAULT NULL COMMENT '创建人',

  15. `create_time` datetime DEFAULT NULL COMMENT '创建时间',

  16. PRIMARY KEY (`group_id`)

  17. ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='团购主表';

说明:这里面有一个团购的状态需要指明下,买家用户选择好几样商品后发起了团购,然后默认状态为-1,表示不可用,等组成了团购,最终状态会有团成的状态。

2. 对于团购而言,系统肯定需要记录,那些买家参与了那些团购,因此有以下的一张表记录

 
  1. CREATE TABLE `groups_buyer` (

  2. `gb_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',

  3. `buyer_id` bigint(20) DEFAULT NULL COMMENT '买家ID',

  4. `group_id` bigint(20) DEFAULT NULL COMMENT '团购ID',

  5. `item_id` bigint(20) DEFAULT NULL COMMENT '团购明细ID',

  6. `order_id` bigint(20) DEFAULT NULL COMMENT '订单ID',

  7. `gb_num` int(11) DEFAULT NULL COMMENT '团购数量',

  8. `gb_price` decimal(12,2) DEFAULT NULL COMMENT '团购价格',

  9. `gb_amt` decimal(12,2) DEFAULT NULL COMMENT '团购金额',

  10. `gb_status` tinyint(4) DEFAULT NULL COMMENT '状态(1完成 -1取消)',

  11. `gb_time` datetime DEFAULT NULL COMMENT '团购时间',

  12. PRIMARY KEY (`gb_id`)

  13. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='团购买家表';

说明:团购买家表,记录那个买家,那个团购,团购的最终数量以及团购的价格等等,最终是否有买家在规定的时间内推出了团购,或者团购未形成等等。

 

 

3. 团购最终是对商品的规格进行团购。

   谈谈商品的规格系数,我们知道蔬菜中有西红柿对吧,那么西红柿分为两种,一种是大红的,一种是粉红,这两种颜色都是西红柿,那么系统会认为这个是两个产品,而不是两个规格,规格到底是说的什么呢?

   对于平台而言,规格就是一种商品的几种售卖方式。

  最终根据业务分析,我们需要记录团购是由那些明细组成.(商品规格组成)

 

因此,最终系统架构如下:

 

 
  1. CREATE TABLE `groups_item` (

  2. `item_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',

  3. `group_id` bigint(20) DEFAULT NULL COMMENT '团购ID',

  4. `goods_id` bigint(20) DEFAULT NULL COMMENT '商品ID',

  5. `format_id` bigint(20) DEFAULT NULL COMMENT '商品规格ID',

  6. `group_price` decimal(12,2) DEFAULT NULL COMMENT '团购价格',

  7. `group_num` int(11) DEFAULT NULL COMMENT '团购数量',

  8. `item_status` tinyint(4) DEFAULT NULL COMMENT '状态(1在用 -1停用)',

  9. `create_user_id` bigint(20) DEFAULT NULL COMMENT '创建人',

  10. `create_time` datetime DEFAULT NULL COMMENT '创建时间',

  11. PRIMARY KEY (`item_id`)

  12. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='团购明细表';

业务总结:

           1. 存在 一个买家发起的团购申请记录表。

           2. 后端会有一个审核机制,默认1个小时内审核通过。

           3. 团购会有商品的明细组成。也有时间段的范围与有消息。

           4. 团购最终需要记录那些人参与了,然后交费完成等等。

 

补充说明:业务代码级别,无外乎提供给APP接口。以下几种功能:

              1.  团购列表。

              2. 团购明细。

              3. 我的团购。

              4,我的取消团购等

 
  1. /**

  2. * 团购Controller

  3. */

  4. @RestController

  5. @RequestMapping("/buyer")

  6. public class GroupsController extends BaseController {

  7.  
  8. private static final Logger logger = LoggerFactory.getLogger(GroupsController.class);

  9. @Autowired

  10. private GroupsService groupsService;

  11.  
  12. /**

  13. * 团购活动列表

  14. * @param request

  15. * @param response

  16. */

  17. @RequestMapping(value = "/groups/list", method = { RequestMethod.GET})

  18. public JsonResult groupsList(HttpServletRequest request, HttpServletResponse response,Long regionId) {

  19. try{

  20. if(null == regionId || 0 == regionId){

  21. return new JsonResult(JsonResultCode.FAILURE, "参数错误,请检查regionId是否有传","");

  22. }

  23. List<GroupsVo> cgList = groupsService.getGroupsList(regionId);

  24. return new JsonResult(JsonResultCode.SUCCESS, "查询信息成功", cgList);

  25. }catch(Exception ex){

  26. logger.error("[GroupsController][groupsList] exception :",ex);

  27. return new JsonResult(JsonResultCode.FAILURE, "系统错误,请稍后重试","");

  28. }

  29. }

  30.  
  31. /*

  32. * 团购活动详情

  33. */

  34. @RequestMapping(value = "/groups/detail", method = { RequestMethod.GET })

  35. public JsonResult detailGroups(HttpServletRequest request, HttpServletResponse response,Long groupId) {

  36. try{

  37. if(null == groupId || 0 == groupId){

  38. return new JsonResult(JsonResultCode.FAILURE, "参数错误,请检查groupId是否有传","");

  39. }

  40. GroupsVo groupsVo = groupsService.getGroupsInfo(groupId);

  41. if(groupsVo == null){

  42. groupsVo = new GroupsVo();

  43. }

  44. return new JsonResult(JsonResultCode.SUCCESS, "查询信息成功", groupsVo);

  45. }catch(Exception ex){

  46. logger.error("[GroupsController][detailGroups] exception :",ex);

  47. return new JsonResult(JsonResultCode.FAILURE, "系统错误,请稍后重试","");

  48. }

  49. }

  50.  
  51. /**

  52. * 团购下单

  53. * @param request

  54. * @param response

  55. */

  56. @RequestMapping(value = "/groups/createOrder", method = { RequestMethod.POST })

  57. public JsonResult createOrder(HttpServletRequest request, HttpServletResponse response,

  58. @RequestBody GroupOrder groupOrder) {

  59. try {

  60. String time = groupOrder.getBestTime();

  61. if (StringUtils.isBlank(time)) {

  62. return new JsonResult(JsonResultCode.FAILURE, "订单创建失败,收货时间不允许为空", "");

  63. }

  64.  
  65. OrderInfo addOrderInfo = groupsService.addOrderInfo(groupOrder);

  66. if (addOrderInfo == null) {

  67. return new JsonResult(JsonResultCode.FAILURE, "创建订单失败,订单金额小于起送价", "");

  68. }

  69. return new JsonResult(JsonResultCode.SUCCESS, "创建订单成功", addOrderInfo);

  70. } catch (Exception ex) {

  71. logger.error("[GroupsController][createOrder] exception :", ex);

  72. return new JsonResult(JsonResultCode.FAILURE, "系统错误,请稍后重试", "");

  73. }

  74. }

  75. }

总结:目前Java开源生鲜电商平台-团购模块设计与架构只是针对的是很普通的一些团购手段,当然对于拼多多而言,差距还是很大的。

           这个也是跟业务形态有关,非技术有关,每一种促销方案并不是适合左右的买家用户或者说系统平台本身的。

           由于时间关系或者说有关规定, APP运营截图相对而言比较简单,我这边就不贴出来了。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值