一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - php 網上商城促銷設計實例代碼

php 網上商城促銷設計實例代碼

2019-12-26 15:22PHP教程網 PHP教程

前一篇文章講的是購物車的設計,這篇來講下關于促銷的。支持的促銷類似于,打折,買幾贈幾,滿多少錢送禮品等等。用到策略模式

大體的思想,每一個促銷要新建一個促銷類,有專門的開關來控制是否生效。 
用商品里面的促銷識別碼來判斷具體調用哪一個促銷實例。 
首先,在添加商品的時候,分兩步,第一步是添加狀態,第二步是把購物車內的商品顯示這個狀態。 
一,添加步驟幾個重要的點: 
1,添加商品之前,遍歷所有的促銷互斥條件。 
例如,某一款商品不可以和另一個商品同時在一個購物車內;或者某個用戶權限,不可以購買特定的一件商品等等。 
2,添加商品之前,選擇特定的促銷實例,來進行添加之前的操作。 
注:第二點與第一點的區別在于1是要遍歷所有的促銷實例,而2是單獨的一條。 
3,添加商品后,根據特定的促銷實例,所要進行的操作。 

復制代碼代碼如下:


/** 
* 向購物車內添加商品 
* @param int $goods_id 商品ID 
* @param string $goods_spec 商品規格 
* @param int $goods_number 商品數量 
* @param string $promote_name 商品參加活動 
* @return bool 
*/ 
public function goodsAdd($goods_id, $goods_spec, $goods_number, $promote_name) 

//獲取所有有效的促銷實例 
$rules = $this->_getAllRuleInstance(); 
foreach($this->_rules as $instance) 

//換禮互斥判斷 
if(!$instance->goodsExclusion($goods_id, $goods_spec)) 

return false; 


//獲取商品單獨的促銷實例 
$rule = $this->_getRuleInstance($promote_name); 
//添加商品之前操作 
if($rule->beforeGoodsAdd()) 

$rule->goodsAdd($goods_id, $goods_spec, $goods_number); 
//添加商品之后操作 
return $rule->afterGoodsAdd(); 

return false; 

 

復制代碼代碼如下:


/** 
* 獲取可用規則實例列表 
* @return array 
*/ 
private function _getAllRuleInstance() 

if(empty($this->_rules)) 

$dir = dirname(__FILE__).'/Cart/Rule/'; 
$dir_handle = opendir($dir); 
while($file = readdir($dir_handle)) 

if(is_file($dir.$file)) 

$instance = $this->_getRuleInstance(substr($file, 0, strpos($file, '.'))); 
if($instance->enabled()) 

$this->_rules[] = $instance; 




return $this->_rules; 

 

復制代碼代碼如下:


/** 
* 獲取購物車規則類 
* @param string $name 規則名稱 
* @return Bll_Shop_Cart_Rule 
*/ 
private function _getRuleInstance($name) 

$rule_name = 'Bll_Shop_Cart_Rule_'.$name; 
try 

Zend_Loader::loadClass($rule_name); 
$this->_rule = new $rule_name(); 
$this->_rule->setCart($this); 
return $this->_rule; 
}catch (Exception $e) 

Bll_LogWriter::logException('購物規則對象加載異常. rule_name:'.$rule_name); 
throw new Exception('購物規則對象加載異常.'); 


這里主要用到的促銷是,判斷某一個人是否有添加這個商品的權限,打折等。 
二,遍歷購物車商品的操作 
這一步要執行關鍵操作是遍歷所有促銷策略的檢查列表函數。 
這里常常可以用到的促銷是滿多少錢,送贈品,買二送一等等。 

復制代碼代碼如下:


/** 
* 獲取購物車內商品清單對象列表 
* @return array Bll_Shop_Cart_Rule 
*/ 
public function goodsViewList() 

$list = $this->getGoodsList(); 
// 在列表時檢查購物車內商品列表 
$rules = $this->_getAllRuleInstance(); 
foreach($this->_rules as $instance) 

$instance->setGoodsList($list)->goodsCheckList(); 
$this->_tip_rules[] = $instance; 

//獲取最新購物車列表 
$goods_list = $this->_cart->getGoodsList(); 
return $goods_list; 


第三,提交訂單之前的操作 
有一些類型的促銷,比如某人有打折的權限,當下完訂單后,這個打折的權限就被用掉了;或者在下單之前要先檢查這個訂單的金額,如果小于多少就不準下這個訂單等等。 
以上這些都會用到提交訂單之前的操作。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人精品一区二区三区中文字幕 | 艹b小说| 亚洲男人天堂2023 | 我的美女奴隶 | 亚洲国产香蕉视频欧美 | tkvk视频 | 日本一区二区三区在线 观看网站 | 男女天堂 | 成 人免费va视频 | 古代翁熄乩伦小说h | 欧美视频在线一区 | 青草青青在线视频 | 国产自拍专区 | 啪一啪日一日 | 99国产自偷色久 | 美女扒开腿让男人桶爽动态图片 | 欧美日韩高清不卡一区二区三区 | 亚洲欧美精品一区二区 | 亚洲日韩精品欧美一区二区 | 国产好痛疼轻点好爽的视频 | 日本黄a三级三级三级 | 日韩久久综合 | 大桥未久midd—962在线 | 91色资源网在线观看 | 国产一久久香蕉国产线看观看 | 四虎2021地址入口 | 欧美高清乌克兰精品另类 | 国产一级一级一级成人毛片 | 亚洲人成在线播放 | 日韩欧美国产一区二区三区 | 四虎国产成人免费观看 | 波多野结衣被绝伦强在线观看 | 欧美日韩精品一区二区三区高清视频 | 91手机在线 | 成人免费视频一区二区 | 亚洲日韩精品欧美一区二区 | 日韩一区二三区无 | 三级全黄裸体 | aaa在线| 亚洲色图15p | 免看一级a一片成人123 |