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);@Autowiredprivate 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運營截圖相對而言比較簡單,我這邊就不貼出來了。
?
轉載于:https://www.cnblogs.com/jurendage/p/9098368.html
總結
以上是生活随笔為你收集整理的Java生鲜电商平台-团购模块设计与架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Val编程-文本操作
- 下一篇: vue引用阿里云iconfont使用ic