訂單業務梳理

2021-10-08 15:32:15 字數 1948 閱讀 7515

校驗使用者是否存在以及是否被禁用

校驗商品,是否已下架,選購數量是否正,不能為0,不能為null並不能操作5件,檢查商品庫存,門店會員則檢查門店庫存

預售商品,檢查預售時間、預售渠道是否滿足配置要求

組裝滿足條件的商品資料結構

處理收件人,獲取預設收件人資訊,如果沒有預設收件人則獲取收件人第一條資料

獲取優惠券列表,查詢此使用者所有滿足該商品及渠道的優惠券資訊,同時將優惠券的資料封裝,並篩選優惠可使用平台及跳轉型別。優惠券總可使用次數及剩餘可用次數,如果未傳值預設為1次

根據前端傳過來的資料報裝需要的資料

劃分訂單型別為普通訂單或者內賣訂單

生成訂單資料結構

獲取會員折扣,白金卡會員9折,內賣、預售商品不享受會員折扣,儲存訂單基本資料。門店會員下單,訂單號字首為"rck"且不可享受白金會員折扣

新增訂單子項資料

購物車滿贈

計算訂單實際應付金額

儲存訂單,訂單狀態為"等待審核"儲存訂單子項

獲取收件人id,支付方式id,配送方式id

校驗使用者,是否登入或者是否被禁用

通過訂單號獲取訂單資訊,通過收件人id獲取收件人資訊

組裝訂單 需要的資料結構

處理支付方式和配送方式

通過地區計算運費,內賣訂單金額小於99的運費為12元

設定支付方式名稱和支付方式型別,0為網上支付,1為貨到付款

處理訂單狀態,如果是待審核訂單或者門店訂單,訂單子項amount賦值給amountpaid

位址過濾

優惠券code不為null不是內賣訂單,計算優惠券金額。優惠券分為禮品券、現金券、折扣券。

處理優惠券對應的商品型別,商品分為其他商品、正價商品、折扣商品

處理不使用優惠券的訂單

計算訂單實際支付金額

處理預售商品,如果訂單型別為預售商品且訂單狀態不是等待支付尾款,直接返回尾款金額;如果訂單型別是預售商品且訂單狀態為支付尾款,預售訂單 ios 列表切換支付方式需要重新計算尾款,呼叫create計算尾款方法;普通商品計算金額,商品**加手續費加運費加tax減**金額減優惠券金額減抵扣價;禮品券計算

更新訂單

校驗使用者,是否登入或者是否被禁用

處理訂單狀態不是等待發貨的訂單

過濾地區更新地區

修改訂單過期時間,只有第一次點支付或者暫緩支付,設定過期時間,如果後台沒有配置支付方式過期時間,預設2小時過期,後邊再點付款不會變更過期時間

判斷收穫區域是否支援配送

修改訂單狀態,如果貨到付款,則修改訂單狀態為等待發貨,過期時間設為null;如果是預售訂單且訂單狀態不是等待支付尾款,狀態改為等待支付定金,從新計算金額;如果訂單是預售且訂單狀態是等待支付尾款時,更新訂單狀態為等待支付尾款,過期時間設為null,其他情況直接修改訂單狀態為等待發貨

扣減庫存,如果是貨到付款或者0元單,或者訂單未分配庫存,傳送商品銷量的訊息,檢查庫存,更新庫存。修改isallocatedstock為true;

扣減優惠券,同時修改setisusecouponcode欄位

清空購物車

傳送定時釋放庫存訊息,暫緩支付不扣減庫存

更新createdate,更新訂單

1、釋放優惠券

2、扣減累計消費(整單)

3、更新訂單狀態(只能取消一次)

訂單子項:

優惠券金額:amount - amoutpaid

會員折扣金額 price - amount

優惠券分攤金額

現金券先計算權重,商品金額(price)*商品數量(quantity)/商品總金額(total)

再計算分攤到各個商品的金額, 優惠券金額*權重,最後訂單子項amount - 優惠券權重金額 

折扣券amount_paid = amount - 商品金額(price)*商品數量(quantity)*優惠券折扣

預售

訂單管理業務層

訂單處理服務 service public class orderserviceimpl implements orderservice private string order id gen key value private string order id start value private...

業務梳理 故障解決

一.integral 1.1 tradecapture duplication 解決方案 每一條通過integral進入的trade,17 execid 屬性是唯一的,把這個屬性改一下就不會出現這個問題了 1.2 value date not consistent on back to back t...

Moqui訂單業務模型分析

h1.通用訂單服務 h2.通用的下單和商業用法 create customer 新建客戶 customerservices.create account create update delete customer address 新增 修改 刪除 客戶位址 contactservices.creat...