Java開源生鮮電商平臺-團購模塊設計與架構(源碼可下載) 說明:任何一個電商系統中,對於促銷這塊是必不可少的,畢竟這塊是最吸引用戶的,用戶也是最愛的模塊之一,理由很簡單,便宜。 我的經驗是無論是大的餐飲點還是小的餐飲店,優惠與折扣永遠是說福他們進入平臺的最好的手段之一。(大企業叫做節約成本,小企業 ...
Java開源生鮮電商平臺-團購模塊設計與架構(源碼可下載)
說明:任何一個電商系統中,對於促銷這塊是必不可少的,畢竟這塊是最吸引用戶的,用戶也是最愛的模塊之一,理由很簡單,便宜。
我的經驗是無論是大的餐飲點還是小的餐飲店,優惠與折扣永遠是說福他們進入平臺的最好的手段之一。(大企業叫做節約成本,小企業叫做貪便宜.)
1.Java開源生鮮電商平臺中,團購模塊,我們採用以下幾種維度思考。
1.1 針對的是生鮮中的標品。(米面糧油,我們要求買家可以自己發送團購,但是團購有次數,與時間以及買家起團金額和最低開團金額幾個維度)
因此,需要有一個團購基礎信息表:
CREATE TABLE `groups` ( `group_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵', `group_no` varchar(32) DEFAULT NULL COMMENT '團號', `group_title` varchar(128) DEFAULT NULL COMMENT '團購標題', `group_logo` varchar(128) DEFAULT NULL COMMENT '團購logo', `group_area` varchar(128) DEFAULT NULL COMMENT '團購區域(區域ID集合)', `begin_time` datetime DEFAULT NULL COMMENT '開始時間', `end_time` datetime DEFAULT NULL COMMENT '結束時間', `max_num` int(11) DEFAULT NULL COMMENT '最大買家數', `buyer_amt` decimal(12,2) DEFAULT NULL COMMENT '買家起團金額', `min_amt` decimal(12,2) DEFAULT NULL COMMENT '最低開團金額', `group_status` tinyint(4) DEFAULT NULL COMMENT '狀態(1發佈 -1未發佈 2團成 3未團成)', `remarks` varchar(256) DEFAULT NULL, `create_user_id` bigint(20) DEFAULT NULL COMMENT '創建人', `create_time` datetime DEFAULT NULL COMMENT '創建時間', PRIMARY KEY (`group_id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='團購主表';
說明:這裡面有一個團購的狀態需要指明下,買家用戶選擇好幾樣商品後發起了團購,然後預設狀態為-1,表示不可用,等組成了團購,最終狀態會有團成的狀態。
2. 對於團購而言,系統肯定需要記錄,那些買家參與了那些團購,因此有以下的一張表記錄
CREATE TABLE `groups_buyer` ( `gb_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID', `buyer_id` bigint(20) DEFAULT NULL COMMENT '買家ID', `group_id` bigint(20) DEFAULT NULL COMMENT '團購ID', `item_id` bigint(20) DEFAULT NULL COMMENT '團購明細ID', `order_id` bigint(20) DEFAULT NULL COMMENT '訂單ID', `gb_num` int(11) DEFAULT NULL COMMENT '團購數量', `gb_price` decimal(12,2) DEFAULT NULL COMMENT '團購價格', `gb_amt` decimal(12,2) DEFAULT NULL COMMENT '團購金額', `gb_status` tinyint(4) DEFAULT NULL COMMENT '狀態(1完成 -1取消)', `gb_time` datetime DEFAULT NULL COMMENT '團購時間', PRIMARY KEY (`gb_id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='團購買家表';
說明:團購買家表,記錄那個買家,那個團購,團購的最終數量以及團購的價格等等,最終是否有買家在規定的時間內推出了團購,或者團購未形成等等。
3. 團購最終是對商品的規格進行團購。
談談商品的規格繫數,我們知道蔬菜中有西紅柿對吧,那麼西紅柿分為兩種,一種是大紅的,一種是粉紅,這兩種顏色都是西紅柿,那麼系統會認為這個是兩個產品,而不是兩個規格,規格到底是說的什麼呢?
對於平臺而言,規格就是一種商品的幾種售賣方式。
最終根據業務分析,我們需要記錄團購是由那些明細組成.(商品規格組成)
因此,最終系統架構如下:
CREATE TABLE `groups_item` ( `item_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID', `group_id` bigint(20) DEFAULT NULL COMMENT '團購ID', `goods_id` bigint(20) DEFAULT NULL COMMENT '商品ID', `format_id` bigint(20) DEFAULT NULL COMMENT '商品規格ID', `group_price` decimal(12,2) DEFAULT NULL COMMENT '團購價格', `group_num` int(11) DEFAULT NULL COMMENT '團購數量', `item_status` tinyint(4) DEFAULT NULL COMMENT '狀態(1在用 -1停用)', `create_user_id` bigint(20) DEFAULT NULL COMMENT '創建人', `create_time` datetime DEFAULT NULL COMMENT '創建時間', PRIMARY KEY (`item_id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='團購明細表';
業務總結:
1. 存在 一個買家發起的團購申請記錄表。
2. 後端會有一個審核機制,預設1個小時內審核通過。
3. 團購會有商品的明細組成。也有時間段的範圍與有消息。
4. 團購最終需要記錄那些人參與了,然後交費完成等等。
補充說明:業務代碼級別,無外乎提供給APP介面。以下幾種功能:
1. 團購列表。
2. 團購明細。
3. 我的團購。
4,我的取消團購等
/** * 團購Controller */ @RestController @RequestMapping("/buyer") public class GroupsController extends BaseController { private static final Logger logger = LoggerFactory.getLogger(GroupsController.class); @Autowired private GroupsService groupsService; /** * 團購活動列表 * @param request * @param response */ @RequestMapping(value = "/groups/list", method = { RequestMethod.GET}) public JsonResult groupsList(HttpServletRequest request, HttpServletResponse response,Long regionId) { try{ if(null == regionId || 0 == regionId){ return new JsonResult(JsonResultCode.FAILURE, "參數錯誤,請檢查regionId是否有傳",""); } List<GroupsVo> cgList = groupsService.getGroupsList(regionId); return new JsonResult(JsonResultCode.SUCCESS, "查詢信息成功", cgList); }catch(Exception ex){ logger.error("[GroupsController][groupsList] exception :",ex); return new JsonResult(JsonResultCode.FAILURE, "系統錯誤,請稍後重試",""); } } /* * 團購活動詳情 */ @RequestMapping(value = "/groups/detail", method = { RequestMethod.GET }) public JsonResult detailGroups(HttpServletRequest request, HttpServletResponse response,Long groupId) { try{ if(null == groupId || 0 == groupId){ return new JsonResult(JsonResultCode.FAILURE, "參數錯誤,請檢查groupId是否有傳",""); } GroupsVo groupsVo = groupsService.getGroupsInfo(groupId); if(groupsVo == null){ groupsVo = new GroupsVo(); } return new JsonResult(JsonResultCode.SUCCESS, "查詢信息成功", groupsVo); }catch(Exception ex){ logger.error("[GroupsController][detailGroups] exception :",ex); return new JsonResult(JsonResultCode.FAILURE, "系統錯誤,請稍後重試",""); } } /** * 團購下單 * @param request * @param response */ @RequestMapping(value = "/groups/createOrder", method = { RequestMethod.POST }) public JsonResult createOrder(HttpServletRequest request, HttpServletResponse response, @RequestBody GroupOrder groupOrder) { try { String time = groupOrder.getBestTime(); if (StringUtils.isBlank(time)) { return new JsonResult(JsonResultCode.FAILURE, "訂單創建失敗,收貨時間不允許為空", ""); } OrderInfo addOrderInfo = groupsService.addOrderInfo(groupOrder); if (addOrderInfo == null) { return new JsonResult(JsonResultCode.FAILURE, "創建訂單失敗,訂單金額小於起送價", ""); } return new JsonResult(JsonResultCode.SUCCESS, "創建訂單成功", addOrderInfo); } catch (Exception ex) { logger.error("[GroupsController][createOrder] exception :", ex); return new JsonResult(JsonResultCode.FAILURE, "系統錯誤,請稍後重試", ""); } } }
總結:目前Java開源生鮮電商平臺-團購模塊設計與架構只是針對的是很普通的一些團購手段,當然對於拼多多而言,差距還是很大的。
這個也是跟業務形態有關,非技術有關,每一種促銷方案並不是適合左右的買家用戶或者說系統平臺本身的。
由於時間關係或者說有關規定, APP運營截圖相對而言比較簡單,我這邊就不貼出來了。
Java開源生鮮電商平臺-團購模塊設計與架構(源碼可下載),如果需要下載的話,可以在我的github下麵進行下載。