電商平台 訂單抽成模組的設計與架構

2021-08-21 07:33:51 字數 3823 閱讀 7965

說明:訂單抽成指的是向賣家收取相應的資訊服務費.(目前市場上有兩種抽成方式,一種是按照總額的抽成比率,另外一種是按照訂單明細的抽成比率)

由於生鮮電商的垂直領域的特殊性質,總額抽成不切合實際,所以按照訂單的明細抽成。

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` (

`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='抽點資訊總表';

補充說明:1. 由於的是對某乙個明細進行抽點。所以需要賣家id,訂單明細id以及抽點比率等,最終算出抽點金額。

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表。表結構如下 ...