科技改變生活 · 科技引領(lǐng)未來
對(duì)于商城系統(tǒng)來說,運(yùn)費(fèi)系統(tǒng)是必不可少的,最簡單的就是在每個(gè)商品添加的時(shí)候設(shè)置此商品購買時(shí)候的運(yùn)費(fèi),但是這個(gè)邏輯并不能滿足用戶的需求,無法按照客戶的地址設(shè)置不同的運(yùn)費(fèi),設(shè)置地區(qū)包郵,不配送等一系列的操作。那怎么能更快更簡單的實(shí)現(xiàn)這個(gè)功能呢,這
對(duì)于商城系統(tǒng)來說,運(yùn)費(fèi)系統(tǒng)是必不可少的,最簡單的就是在每個(gè)商品添加的時(shí)候設(shè)置此商品購買時(shí)候的運(yùn)費(fèi),但是這個(gè)邏輯并不能滿足用戶的需求,無法按照客戶的地址設(shè)置不同的運(yùn)費(fèi),設(shè)置地區(qū)包郵,不配送等一系列的操作。那怎么能更快更簡單的實(shí)現(xiàn)這個(gè)功能呢,這篇文章,我會(huì)將我開發(fā)CRMEB單商戶系統(tǒng)時(shí)的設(shè)計(jì)思路拿出來和大家分享,希望大家看完能有所啟發(fā)并找到更好的解決辦法。
希望大家看完在動(dòng)手,看一半就覺得自己行了,容易寫B(tài)UG~
初版~
對(duì)于運(yùn)費(fèi)的計(jì)算來說,最開始就是要知道用戶選擇的送貨地址,運(yùn)費(fèi)計(jì)算也不用過于精確地址信息,所以我在全國省市區(qū)的數(shù)據(jù)庫里增加了城市ID字段,用戶在添加地址的時(shí)候,將對(duì)應(yīng)的城市ID也同時(shí)存儲(chǔ)在用戶的地址信息中,這樣,用戶在每次切換地址的時(shí)候,可以根據(jù)城市ID字段判斷用戶所處的城市。
接下來,先創(chuàng)建一個(gè)最簡單運(yùn)費(fèi)模版A表,里面只有城市ID和運(yùn)費(fèi),只要用戶的城市ID就能找出你要付多少運(yùn)費(fèi)啦,但是當(dāng)我設(shè)置運(yùn)費(fèi)的時(shí)候,發(fā)現(xiàn)了一個(gè)大問題,全國這么多城市,難道要一個(gè)一個(gè)的進(jìn)行設(shè)置么?當(dāng)然不,國家運(yùn)輸系統(tǒng)這么完善,只有很少的地區(qū)運(yùn)費(fèi)是不同的,我只要把不同運(yùn)費(fèi)的地區(qū)設(shè)置了就好。其他的,就讓他用默認(rèn)的數(shù)據(jù)就可以啦。于是,我創(chuàng)建了一條默認(rèn)數(shù)據(jù),城市ID設(shè)置為0,當(dāng)用戶的地址在數(shù)據(jù)里面找不到對(duì)應(yīng)的運(yùn)費(fèi)的時(shí)候,我就給他默認(rèn)的運(yùn)費(fèi)。
好,最簡單的運(yùn)費(fèi)模版已經(jīng)出來了,管理者可以簡單的設(shè)置每個(gè)地區(qū)的運(yùn)費(fèi)是多少,在用戶下單的時(shí)候按照地址計(jì)算運(yùn)費(fèi)就能得出對(duì)應(yīng)地址的運(yùn)費(fèi)啦。
進(jìn)階版~
思考一下,商城里面包含多種多樣的商品,總不能一件衣服和一臺(tái)冰箱的運(yùn)費(fèi)是一樣的吧,那豈不是很虧。所以商城里面需要多個(gè)運(yùn)費(fèi)模版進(jìn)行不同的價(jià)格計(jì)算,我創(chuàng)建了新的數(shù)據(jù)B表來存儲(chǔ)多個(gè)運(yùn)費(fèi)模版,包括模版名稱,添加時(shí)間,A表內(nèi)就可以增加B表內(nèi)對(duì)應(yīng)的模版ID,和城市ID和運(yùn)費(fèi)來計(jì)算不同運(yùn)費(fèi)模版下同一個(gè)城市的不同運(yùn)費(fèi)啦。
接下來,我考慮物流中會(huì)出現(xiàn)首件和續(xù)件的問題,那么我們地區(qū)運(yùn)費(fèi)就要增加續(xù)件的字段,來存儲(chǔ)續(xù)件的金額,比如我購買了2件商品,商品的首件是10元,續(xù)件是5元,那么這個(gè)訂單的運(yùn)費(fèi)就是首件加上續(xù)件的費(fèi)用一共15元。
現(xiàn)在運(yùn)費(fèi)模版已經(jīng)成型了,每個(gè)商品都可以使用不同的運(yùn)費(fèi)模版來計(jì)算整體訂單的運(yùn)費(fèi),購買多件商品,就可以按照不同用戶地址,不同的運(yùn)費(fèi)模版,不同的首件和續(xù)件的費(fèi)用,來確定當(dāng)前訂單的世紀(jì)運(yùn)費(fèi)了,接下來就是繼續(xù)細(xì)化運(yùn)費(fèi)模版的其他功能了。
終極版~
江浙滬包郵?這個(gè)問題又出現(xiàn)在了我的腦海中,那我怎么能在模版中設(shè)置包郵信息呢?思前想后,我發(fā)現(xiàn)一個(gè)最簡單的辦法,就是把對(duì)應(yīng)包郵的地址的首件和續(xù)件費(fèi)用都寫成0,計(jì)算的時(shí)候就不會(huì)增加運(yùn)費(fèi)了。
不過,如果是滿多少錢進(jìn)行包郵呢?如果說,我有一個(gè)上海地區(qū)的運(yùn)費(fèi)模版,我想用戶在購買超過100元的時(shí)候給他包郵怎么辦。我又開始了我的發(fā)呆時(shí)間。。。
想到了,我又給A表里增加了滿額包郵的字段,用來記錄此區(qū)域需要滿額的金額,計(jì)算的時(shí)候?qū)⑼粋€(gè)運(yùn)費(fèi)模版下的金額加起來,只要大于了這個(gè)金額,我就直接跳過此模版的計(jì)算。
訂單在購買多個(gè)商品,牽扯到多個(gè)運(yùn)費(fèi)模版的時(shí)候,可以在計(jì)算的時(shí)候按照運(yùn)費(fèi)模版進(jìn)行數(shù)據(jù)的分類整理,計(jì)算出每個(gè)運(yùn)費(fèi)模版里面商品的件數(shù),總金額,然后每個(gè)運(yùn)費(fèi)模版單獨(dú)計(jì)算,先通過計(jì)算此運(yùn)費(fèi)模版是否滿足了包郵,如果滿足跳過后面的運(yùn)費(fèi)計(jì)算,如果沒有滿足包郵情況的時(shí)候,繼續(xù)進(jìn)行件數(shù)的首件和續(xù)件的計(jì)算,將每次計(jì)算出來的運(yùn)費(fèi)相加,就得出了最后的訂單運(yùn)費(fèi)。
接下來,就是完善我們的運(yùn)費(fèi)模版了,模版名稱,模版是按照件數(shù)、重量還是體積進(jìn)行運(yùn)費(fèi)的計(jì)算,包郵是否還要按照別的情況進(jìn)行計(jì)算。
CRMEB運(yùn)費(fèi)模版的實(shí)現(xiàn)
CRMEB單商戶系統(tǒng)中的運(yùn)費(fèi)模版很強(qiáng)大了,不僅可以設(shè)置不同地區(qū)的運(yùn)費(fèi),還可以判斷運(yùn)費(fèi)模版是按照件數(shù)、體積還是重量進(jìn)行計(jì)算。可以設(shè)置單獨(dú)的包郵數(shù)據(jù)以及指定地區(qū)不送貨的邏輯。首件和續(xù)件的金額計(jì)算可以設(shè)定首件件數(shù)。包郵同時(shí)判斷了件數(shù)和金額。可以滿足大多數(shù)商城系統(tǒng)管理者的需求。
運(yùn)費(fèi)模版的添加
后臺(tái)添加運(yùn)費(fèi)模版的頁面,填寫運(yùn)費(fèi)模版的名稱,選擇該運(yùn)費(fèi)模版是按照那種計(jì)費(fèi)方式進(jìn)行計(jì)費(fèi)(件數(shù),重量,體積),選擇對(duì)應(yīng)的城市數(shù)據(jù),添加運(yùn)費(fèi)和包郵信息等。
運(yùn)費(fèi)模版的計(jì)算邏輯
1.先獲取到用戶訂單的商品和地址信息,將所有的商品按照運(yùn)費(fèi)模版進(jìn)行分組整理,得到每個(gè)運(yùn)費(fèi)模版的商品總數(shù),總價(jià)和此運(yùn)費(fèi)模版的運(yùn)費(fèi)金額,指定包郵信息等。$cartInfo變量里面存儲(chǔ)的就是該訂單下所有的商品信息,包括金額,件數(shù)或體積或重量,對(duì)應(yīng)的運(yùn)費(fèi)模版ID等信息。$addr里面包含用戶現(xiàn)在選擇的的地址信息,用于最后查詢包郵或者運(yùn)費(fèi)。
2.按照用戶當(dāng)前選擇的地址,根據(jù)當(dāng)前地址數(shù)據(jù)內(nèi)的city_id查詢當(dāng)前地址是否在指定包郵的地區(qū)內(nèi),然后在判斷商品件數(shù)和金額是否大于設(shè)定的件數(shù)和金額,滿足條件在運(yùn)費(fèi)模版的數(shù)組中刪除此運(yùn)費(fèi)模版的數(shù)據(jù)。
3.經(jīng)過步驟2,$temp_num數(shù)組中,只會(huì)剩下需要計(jì)算運(yùn)費(fèi)的數(shù)據(jù),系統(tǒng)接下來會(huì)在先計(jì)算出首件運(yùn)費(fèi)最大值,設(shè)置初始運(yùn)費(fèi)為0開始計(jì)算訂單所需運(yùn)費(fèi)。
4.循環(huán)計(jì)算運(yùn)費(fèi),將首件最大的運(yùn)費(fèi)模版設(shè)置為首件計(jì)算,剩余的模版都按照續(xù)件進(jìn)行金額的計(jì)算,如果有多個(gè)首件金額等于最大值,會(huì)將多個(gè)運(yùn)費(fèi)模版當(dāng)作首件進(jìn)行計(jì)算,最后取得運(yùn)費(fèi)最大值返回。
金悅
版權(quán)所有 未經(jīng)許可不得轉(zhuǎn)載
增值電信業(yè)務(wù)經(jīng)營許可證備案號(hào):遼ICP備14006349號(hào)
網(wǎng)站介紹 商務(wù)合作 免責(zé)聲明 - html - txt - xml