Browse Source

增加商品的N元任选

stanley-king 7 years ago
parent
commit
801363d1fb

+ 42 - 4
helper/activity/optional_goods.php

@@ -21,14 +21,17 @@ class opgroup
     private $mEndTm;
     private $mGoods;
     private $mRepeat;
+    private $mSpecialID;
 
-    public function __construct($price,$options,$start,$end,$repeat)
+    public function __construct($price,$options,$start,$end,$repeat,$special_id)
     {
         $this->mPrice = $price;
         $this->mOptions = $options;
         $this->mStartTm = $start;
         $this->mEndTm = $end;
         $this->mRepeat = $repeat;
+        $this->mSpecialID;
+
         $this->mGoods = [];
     }
 
@@ -67,6 +70,20 @@ class opgroup
         }
     }
 
+    public function info($gid)
+    {
+        if(algorithm::binary_search($this->mGoods,$gid))
+        {
+            $result['special_id'] = $this->mSpecialID;
+            $price = $this->mPrice / 100;
+            $result['desc'] = "{$price}元任选{$this->mOptions}件";
+
+            return $result;
+        } else {
+            return false;
+        }
+    }
+
     private function goods_num($gids,$gid_nums)
     {
         $num = 0;
@@ -151,6 +168,27 @@ class optional_goods
         }
     }
 
+    public function info($goods_id)
+    {
+        $gid = intval($goods_id);
+        if($gid <= 0) return false;
+
+        if(algorithm::binary_search($this->mAllGoods,$gid))
+        {
+            foreach ($this->mOpgroups as $group)
+            {
+                $info = $group->info($gid);
+                if($info != false) {
+                    return $info;
+                }
+            }
+            return false;
+        }
+        else {
+            return false;
+        }
+    }
+
     public function match($gidnums)
     {
         $input_goods = $this->input_goods($gidnums);
@@ -222,7 +260,7 @@ class optional_goods
             $type = $block['item_type'];
             if($type == 'home1')
             {
-                $tmp_group = $this->add_group($block);
+                $tmp_group = $this->add_group($block,$special_id);
                 if($tmp_group != null) {
                     $cur_group = $tmp_group;
                     $this->mOpgroups[] = $cur_group;
@@ -257,7 +295,7 @@ class optional_goods
         }
     }
 
-    private function add_group($block)
+    private function add_group($block,$special_id)
     {
         $items = $block['items'];
         if(empty($items)) return null;
@@ -278,7 +316,7 @@ class optional_goods
                 if($group == null)
                 {
                     if($startm > 0 && $hours > 0 && $startm + 3600 * $hours >  time()) {
-                        $group = new opgroup($price,$options,$startm,$startm + 3600 * $hours,$repeat);
+                        $group = new opgroup($price,$options,$startm,$startm + 3600 * $hours,$repeat,$special_id);
                     }
                 }
                 return $group;

+ 4 - 0
helper/activity_helper.php

@@ -216,6 +216,10 @@ class activity_helper
 
         return $result;
     }
+    public static function take_part_opgoods($goods_id)
+    {
+        return activity\optional_goods::instance()->info($goods_id);
+    }
 
     public static function optional_goods_check($goods_id,&$err)
     {

+ 1 - 0
helper/buy_first.php

@@ -61,6 +61,7 @@ class buy_first
         //红包信息
         $result['total_pred'] = doubleval($this->mLogicOut['available_predeposit']);
         $result['opgoods_discount'] = $this->optional_goods();
+        $result['opgoods_desc'] = 'N元任选优惠';
         $result['available_pred']  = $this->available_pred($goods_amount,$full_discount,$result['total_pred'],$rates,$discount_gap,$gap_show);
         $result['discount_gap'] = $discount_gap;
         $result['bonus_rates'] = $this->formate_rates($rates);

+ 14 - 2
helper/model/goods_summary.php

@@ -171,7 +171,8 @@ class goods_summary
             } else {
                 $summary['gap_desc'] = sprintf($config['bonus_gap']['have_gap'],$gap);
             }
-        } else {
+        }
+        else {
             $summary['bonus_price'] = $this->goods_info['goods_price'];
             $summary['discount_gap'] = 0;
             $summary['gap_show'] = false;
@@ -181,13 +182,24 @@ class goods_summary
         $summary['favored']  = $favorate->favored_goods($this->goods_id);
         $summary['anoticed'] = $anotice->noticed($this->goods_id);
 
+        $op_info = activity_helper::take_part_opgoods($this->goods_id);
+        if($op_info != false) {
+            $summary['is_opgoods'] = true;
+            $spid = $op_info['special_id'];
+            $summary['opgoods_open'] = "xmmz://p.lrlz.com/block/special?title=N元任选&special_id={$spid}&isSpecial=true";
+            $summary['opgoods_desc'] = $op_info['desc'];
+        } else {
+            $summary['is_opgoods'] = false;
+            $summary['opgoods_open'] = "";
+            $summary['opgoods_desc'] = "";
+        }
+
         $is_fcode = intval($this->goods_info['is_fcode']) == 1 ? true : false;
         $summary['is_fcode'] = $is_fcode;
 
         if($is_fcode) {
             $fcode = new user_session\fcode();
             $summary['has_fcode'] = $fcode->goods_has_code($this->goods_id,$lock_num) == false ? false : true;
-            //$summary['goods_price'] = $summary['goods_marketprice'];
         } else {
             $summary['has_fcode'] = false;
         }

+ 1 - 1
mobile/control/member_buy.php

@@ -53,7 +53,7 @@ class member_buyControl extends mbMemberControl
         }
         else {
             $result = $buy_helper->format();
-                return self::outsuccess($result);
+            return self::outsuccess($result);
         }
     }