php电子商务模板,关于php:电商系统设计之运费模板下
電商大伙每天都在用,相似某貓,某狗等。
電商零碎設(shè)計(jì)看似簡單又很簡略,看似簡略又很簡單
本章適宜初中級工程師細(xì)看,大佬請隨便
【騰訊云】云產(chǎn)品限時(shí)秒殺,爆款1核2G云服務(wù)器,首年99元
前言
在訂單零碎中,運(yùn)費(fèi)模板是其中一個(gè)重要組成部分,看似簡略的一個(gè)設(shè)置,在其內(nèi)的設(shè)計(jì)中,要思考的問題還是很多滴,上一章咱們講了運(yùn)費(fèi)的一些規(guī)定以及在數(shù)據(jù)庫表中如何設(shè)計(jì),本章聊聊如何計(jì)算運(yùn)費(fèi)
獲取
通過上一篇文章咱們建設(shè)的數(shù)據(jù)表獲取該商品綁定的哪一個(gè)運(yùn)費(fèi)模版
$templateId = Product::where('id',$product)->value('template_id');
if($template == 0) return [];
指定商品或者會(huì)應(yīng)用多項(xiàng)規(guī)定,例如像這樣
是否包郵
指定地區(qū)運(yùn)費(fèi)
達(dá)成某種條件下運(yùn)費(fèi)多少或者包郵
那這么多條件,咱們要保障所有的規(guī)定全副都能夠檢索到,并且還要晉升其計(jì)算速度。
在計(jì)算前,該當(dāng)想好有幾種可能性,再抉擇其優(yōu)先級,就像有
三個(gè)不同色彩的球,拼湊的辦法有多種一樣
我記得這應(yīng)該是一道小學(xué)的數(shù)學(xué)題。
就近準(zhǔn)則
相比大家必定做過這道面試題
把一份打亂的字符串,進(jìn)行排序
那依照經(jīng)典的形式
疾速排序
抉擇排序
插入排序
冒泡排序
當(dāng)然,咱們不講排序,咱們是要通過這類算法去思考如何以疾速的形式去查問到咱們想要的信息。
排序算法歸并與一點(diǎn)外圍,就是通過比擬的形式進(jìn)行,無論是從兩頭開始進(jìn)行計(jì)算,還是從頭或者從尾開始,都是通過對字符串自身要出現(xiàn)形式的一種猜想。
那咱們對于運(yùn)費(fèi)計(jì)算,應(yīng)該從什么地位開始“排序”呢?
依據(jù)業(yè)務(wù),首先咱們思考對于是否包郵、指定地區(qū)運(yùn)費(fèi)、達(dá)成指定條件這三種規(guī)定,他們的優(yōu)先級大多是這樣的。
達(dá)成指定條件 > 指定地區(qū)運(yùn)費(fèi) > 是否包郵
一、達(dá)成指定條件就不在計(jì)算指定地區(qū)條件和是否包郵
二、達(dá)成指定地區(qū)條件就不判斷是否包郵
思路是不是清晰了一點(diǎn)呢,那么咱們上代碼
實(shí)戰(zhàn)
演示為偽代碼,這類計(jì)算必定不能交給前端去計(jì)算,會(huì)呈現(xiàn)很多平安問題,例如數(shù)據(jù)被篡改等等,偷懶的后端不是一個(gè)好后端
當(dāng)咱們獲取templateId后,在表product_template_config中查問其關(guān)聯(lián)的規(guī)定,這是一個(gè)一對多的數(shù)據(jù)列,意味著會(huì)查問出多條,首先咱們先查問指定條件。
select count(1) product_template_config where template_id = $templateId and 是否有指定條件
當(dāng)有指定條件則進(jìn)行計(jì)算,例如
達(dá)成指定金額,運(yùn)費(fèi)固定
達(dá)成指定金額,運(yùn)費(fèi)多少
計(jì)算就簡略了,小學(xué)就學(xué)過的嘛~
商品數(shù)量*商品單價(jià) > 指定金額 = 運(yùn)費(fèi)
如果沒有指定條件,則去查問指定城市運(yùn)費(fèi),城市咱們應(yīng)用的是json存儲(chǔ),會(huì)有多條,免不了for,這樣你必定會(huì)說了,那很多個(gè)城市不會(huì)導(dǎo)致效率低嘛?做任何性能都要以理論業(yè)務(wù)登程,除了西藏、新疆及偏遠(yuǎn)地區(qū),會(huì)有商家一個(gè)市一個(gè)市設(shè)置不同運(yùn)費(fèi)的嘛😂,那咱們就應(yīng)用2種形式
第一種:沒有蛇精病的商家
$list = "select * from `product_template_config` where template_id = $templateId";
$city = [];
for($list){
if($list->city == "北京市"){
return price;
}
}
第二種:有蛇精病的商家
這種辦法,那咱們就在sql高低點(diǎn)功夫,不應(yīng)用json查問
select * from `product_template_config` where city like "%北京市%"
最初如果以上兩種規(guī)定都不滿足,則就回到最簡略都自定義運(yùn)費(fèi)和是否包郵,自定義運(yùn)費(fèi)的話就計(jì)算最終運(yùn)費(fèi),包郵的話,間接return 0就完事嘍。
流程圖如下
至此,咱們運(yùn)費(fèi)模版的設(shè)計(jì)和實(shí)戰(zhàn)就到此結(jié)束了。
致謝
感激你的關(guān)注,心愿本篇文章能夠幫到你,謝謝。
總結(jié)
以上是生活随笔為你收集整理的php电子商务模板,关于php:电商系统设计之运费模板下的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php链接mysql编码错误_php 操
- 下一篇: 登录服务器用户账户限制,当用户有登录到的