說明:訂單抽成指的是向賣家收取相應的資訊服務費.(目前市場上有兩種抽成方式,一種是按照總額的抽成比率,另外一種是按照訂單明細的抽成比率)
由於生鮮電商的垂直領域的特殊性質,總額抽成不切合實際,所以按照訂單的明細抽成。
1. 訂單抽成,是按照乙個區的維度,以及菜品的二級分類類抽點的。
舉例說明:比如武漢光谷區,佛祖嶺區,雖然都是屬於東湖高新,但是光谷區的物價以及消費水平肯定是高於佛祖嶺區的,因此它是按照乙個區的維度來分的。
但是有些賣家掙的錢多,有的賣家掙的錢少,雖然同屬於乙個菜市場,但是掙錢少的跟掙錢多的一樣抽成,他們也不樂意,因此又按照賣家的id進行抽查。
最終根據業務的形態以及我們的市場調查結果,採用以商戶為基準,按照菜品的二級分類來抽成的一種盈利模式。
2. 資料庫系統架構設計如下:
賣家抽點配置資訊表:
create table `order_percentage_config` (說明:按照賣家的所屬二級分類進行抽點,不同的抽點率也是不一樣的。`id` bigint(20) not null auto_increment comment '主鍵,自動增加id',
`region_id` bigint(20) not null comment '區域id',
`seller_id` bigint(20) default null comment '賣家id',
`category_id` bigint(20) default null comment '商品二級分類的id',
`percentage` decimal(12,2) default null comment '平台抽點率 ',
`status` tinyint(1) default null comment '狀態: 0禁用 ,1啟用',
`create_time` datetime default null comment '建立時間 ',
`update_time` datetime default null comment '修改時間',
primary key (`id`)
) engine=innodb auto_increment=144 default charset=utf8 comment='訂單抽點配置資訊表';
2. 賣家抽點明細表。(系統需要精確的記錄,那個菜品進行了抽點,抽點多少,原來的多少錢,抽點後多少錢,需要明明白白的,讓賣家清清楚楚的有一筆賬)
create table `order_percentage` (補充說明:1. 由於的是對某乙個明細進行抽點。所以需要賣家id,訂單明細id以及抽點比率等,最終算出抽點金額。`id` bigint(20) unsigned not null auto_increment comment '自動增加id',
`order_item_id` bigint(20) default null comment '訂單item的id',
`order_number` varchar(64) default null comment '所屬訂單號',
`seller_id` bigint(20) default null comment '賣家id',
`order_total_amount` decimal(12,2) default null comment '訂單金額',
`order_percentage` decimal(12,2) default null comment '抽點比率',
`order_percentage_amount` decimal(12,2) default null comment '抽點金額',
`order_reality_money` decimal(12,2) default null comment '訂單最終金額即使用者最終收到的金額',
`create_time` datetime default null comment '所屬時間',
primary key (`id`)
) engine=innodb auto_increment=47226 default charset=utf8 comment='抽點資訊總表';
3. 何時進行抽點呢、
回答:每天早上6點30進行昨天的抽點,形成自己的賬單。
相關的核心**如下:採用spring task做定時器
/**業務核心**:* 計算訂單抽成 每天早上6:30點執行 */
@scheduled(cron = "0 30 6 * * ?") protected void makeorderpercentage() catch (exception ex)
}
@servicepublic class orderpercentageserviceimpl implements orderpercentageservice for (orderitem item : orderitems)相關後台運營截圖如下;orderpercentage orderpercentage = new orderpercentage(); // 訂單總額
bigdecimal ordertotalamount = item.getgoodsamount(); // 抽點比率
bigdecimal percentage = config.getpercentage(); // 抽點金額
bigdecimal orderpercentageamount = ordertotalamount.multiply(percentage)
.multiply(new bigdecimal("0.01")).setscale(3, bigdecimal.round_up); // 賣家最終所得
bigdecimal orderrealitymoney = ordertotalamount.subtract(orderpercentageamount).setscale(3,
bigdecimal.round_up);
orderpercentage.setcreatetime(new date());
orderpercentage.setorderitemid(item.getid());
orderpercentage.setordernumber(item.getordernumber());
orderpercentage.setordertotalamount(ordertotalamount);
orderpercentage.setorderpercentage(percentage);
orderpercentage.setorderpercentageamount(orderpercentageamount);
orderpercentage.setorderrealitymoney(orderrealitymoney);
orderpercentage.setsellerid(sellerid);
list.add(orderpercentage);
} catch (exception ex)
} try catch (exception ex) }}
電商平台 訂單表的設計
場景分析說明 買家可以在張三家買茄子,李四家買蘿蔔,王五家買白菜,趙六家買豬肉等 那麼買家就應該有個訂單主表,我們稱為訂單表,同時還有 上面所說的具體的訂單明細表,清楚的檢視自己買了什麼菜,多少元一斤,買了多少斤等。1.訂單表的設計 補充說明 交易狀態 存在下了單子沒付款,付款了沒結算等狀態。付款狀...
電商平台 賬單模組的設計與架構
由於系統存在乙個押賬功能的需求,何為押賬,就是形成公司的資金池,類似摩拜單車,ofo單車等等 目前b2b平台也是採用押賬的這種功能策略。這裡有個特別說明的押賬方式 就是比如有個賣家張三,他是5月1日跟我們平台簽約開始入住平台賣菜,我們約定好押賬7天,那麼他5月1日的金額會在5月2日存入 他自己的餘額...
電商平台 使用者表的設計
說明 由於該系統屬於b2b平台,不設計到b2c的架構。角色分析 買家與賣家.由於買家與賣家所填寫的資料都不一樣,需要建立兩站表進行維護,比如 buyer,seller.這樣進行資料庫的解耦,任何一方的變動都互不影響,但是我想集中式管理,以及一些業務個性化要求,我就增加了乙個users表。表結構如下 ...