Bladeren bron

增加满减和包邮提示

stanley-king 8 jaren geleden
bovenliggende
commit
aef11549f7
3 gewijzigde bestanden met toevoegingen van 140 en 30 verwijderingen
  1. 107 28
      helper/activity/full_sent.php
  2. 7 2
      helper/activity_helper.php
  3. 26 0
      mobile/control/cart.php

+ 107 - 28
helper/activity/full_sent.php

@@ -8,6 +8,35 @@
 
 namespace activity;
 
+class full_item
+{
+    private $mStart;
+    private $mEnd;
+    private $mName;
+    private $mRules;
+
+    public function __construct($start,$end,$name)
+    {
+        $this->mStart = $start;
+        $this->mEnd = $end;
+        $this->mName = $name;
+
+        $this->mRules = [];
+    }
+
+    public function add_rule($title)
+    {
+        $this->mRules[] = $title;
+    }
+    public function is_runing()
+    {
+        $cur = time();
+        return ($cur >= $this->mStart && $cur < $this->mEnd);
+    }
+    public function rules() {
+        return $this->mRules;
+    }
+}
 
 class full_sent
 {
@@ -18,7 +47,8 @@ class full_sent
 
     static private $stInstance = null;
     private $verchecker;
-    private $contents;
+    private $mItem;
+    private $mFreePrice;
 
     private function __construct()
     {
@@ -37,45 +67,94 @@ class full_sent
         return self::$stInstance;
     }
 
-    public function contents()
+    public function rules()
     {
-        $contents = array();
-        $cur = time();
-        foreach ($this->contents as $item) {
-            $start = intval($item['start_time']);
-            $end   = intval($item['end_time']);
-            if($cur >= $start && $cur < $end) {
-                array_push($contents,$item);
-            }
+        if($this->mItem->is_runing()) {
+            return $this->mItem->rules();
+        }
+        else {
+            return array();
         }
+    }
 
-        return $contents;
+    public function free_price()
+    {
+        if($this->mFreePrice > 0) {
+            $val = $this->mFreePrice / 100;
+            return "满{$val}包邮";
+        } else {
+            return false;
+        }
     }
 
     private function init()
     {
+        $store_list = Model('store')->getStoreOnlineList(array('store_id' => 6),null,'','store_free_price');
+        if(empty($store_list)) {
+            $this->mFreePrice = 0;
+        } else {
+            $this->mFreePrice = intval($store_list[0]['store_free_price'] * 100 + 0.5);
+        }
+
         $mod = Model('p_mansong');
-        $condition = array();
-        $condition['store_id'] = self::STORE_ID;
-        $condition['state'] = array('in', array(self::MANSONG_STATE_NORMAL));
-
-        $list = $mod->getMansongList($condition);
-        $this->contents = array();
-        foreach ($list as $val) {
-            array_push($this->contents,$this->filter($val));
+        $value = $mod->getMansongInfoByStoreID(self::STORE_ID);
+        if(empty($value)) {
+            $this->mItem = null;
+        }
+        else
+        {
+            $start = intval($value['start_time']);
+            $end   = intval($value['end_time']);
+            $name  = $value['mansong_name'];
+
+            $this->mItem = new full_item($start,$end,$name);
+
+            $rules = $value['rules'];
+            foreach ($rules as $rule)
+            {
+                $val = $this->filter($rule);
+                if($val != false) {
+                    $this->mItem->add_rule($val);
+                }
+            }
         }
     }
 
-    private function filter($info)
+    private function filter($rule)
     {
-        if(!empty($info)) {
-            unset($$info['quota_id']);
-            unset($$info['member_id']);
-            unset($$info['store_id']);
-            unset($$info['member_name']);
-            unset($$info['store_name']);
-            unset($$info['state']);
+        $discount = floatval($rule['discount']) * 100 + 0.5;
+        $discount = intval($discount);
+
+        if($discount > 0) {
+            $discount = $discount / 100;
+            $desc = "减 {$discount}";
+        } else {
+            $desc = "";
         }
-        return $info;
+
+        $goods_id = intval($rule['goods_id']);
+        if($goods_id > 0) {
+            $goods_name = $rule['mansong_goods_name'];
+            $name = "赠 {$goods_name}";
+        } else {
+            $name = '';
+        }
+
+        if(empty($desc) && empty($name)) {
+            return false;
+        }
+
+        $price = $rule['price'];
+        if(empty($desc)) {
+            $title = "满 {$price} {$name}";
+        }
+        elseif(empty($name)) {
+            $title = "满 {$price} {$desc}";
+        }
+        else {
+            $title = "满 {$price} {$desc}#{$name}";
+        }
+
+        return $title;
     }
 }

+ 7 - 2
helper/activity_helper.php

@@ -78,8 +78,13 @@ class activity_helper
         return activity\recommend_combo::instance()->combo_goods($goods_id);
     }
     //满赠活动
-    public static function fullsent_contents() {
-        return activity\full_sent::instance()->contents();
+    public static function fullsent_rules() {
+        return activity\full_sent::instance()->rules();
+    }
+
+    //包邮信息
+    public static function free_ship() {
+        return activity\full_sent::instance()->free_price();
     }
 
     //推荐商品列表

+ 26 - 0
mobile/control/cart.php

@@ -6,6 +6,7 @@
 defined('InShopNC') or exit('Access Invalid!');
 
 require_once (BASE_ROOT_PATH . '/helper/goods_helper.php');
+require_once (BASE_ROOT_PATH . '/helper/activity_helper.php');
 
 class cart_item
 {
@@ -103,6 +104,10 @@ class cartControl extends mobileControl
             $summary_list = array_merge($summary_list,$related_summary['summary']);
         }
 
+        if($this->page_no() == 1) {
+            $ret['free_info'] = $this->full_send();
+        }
+
         $ret['cart_count'] = $total;
         $ret['cart_list']  = $cart_infos;
         $ret['summary']  = $summary_list;
@@ -114,6 +119,27 @@ class cartControl extends mobileControl
         return self::outsuccess($ret);
     }
 
+    private function full_send()
+    {
+        $result = [];
+
+        $rules = activity_helper::fullsent_rules();
+        foreach ($rules as $rule) {
+            $item['title'] = '全场促销';
+            $item['value'] = $rule;
+            $result[] = $item;
+        }
+
+        $free_ship = activity_helper::free_ship();
+        if($free_ship != false) {
+            $item['title'] = '全场包邮';
+            $item['value'] = $free_ship;
+            $result[] = $item;
+        }
+
+        return $result;
+    }
+
     public function cart_listOp()
     {
         if($_SESSION['is_login'] != 1) {