stanley-king %!s(int64=7) %!d(string=hai) anos
pai
achega
e0023d14f7

+ 3 - 3
helper/account_helper.php

@@ -95,15 +95,15 @@ class account_helper
             return false;
         }
 
-        $minfo = new member_info($from_id);
-        $param = \bonus\parameters::shake_gain($minfo->member_id(),$minfo->mobile(),$minfo->nickname(),$bonus_rate['rate'],$bonus_rate['amount']);
+        $minfo  = new member_info($from_id);
+        $param  = \bonus\parameters::shake_gain($minfo->member_id(),$minfo->mobile(),$minfo->nickname(),$bonus_rate['rate'],$bonus_rate['amount']);
 
         $ret = bonus_helper::make_bonus($param,$param['rate_money']);
         if($ret != false)
         {
             $to_minfo = new member_info($to_id);
             $thief = $to_minfo->nickname();
-            bonus_helper::withold_money($from_id,$bonus_rate['rate'],$amount,bonus_helper::send_bonus_withold);
+            bonus_helper::withold_money($from_id,$bonus_rate['rate'],$bonus_rate['amount'],bonus_helper::send_bonus_withold);
             $pred_from->handout_bonus($amount,$ret['type_sn'],$thief,"{$thief}摇走了您{$amount}元的红包.",\bonus\type::MakeShakeGainType);
             $bonusex = bonus_helper::send($ret['type_sn'],[$to_id]);
             push_helper::stolen_bonus($minfo,$to_minfo,$amount);

+ 1 - 1
helper/bonus_helper.php

@@ -208,7 +208,7 @@ class bonus_helper
             {
                 if($manager->topup($type,$mod_bonus,$val) == true) {
                     array_push($bonusex,$val);
-                    ranklist_helper::add_money($_SESSION['member_id'],$bonus->bonus_value());
+                    ranklist_helper::add_money($pred->member_id(),$bonus->bonus_value());
                     $pred->add_bonus($bonus,$type);
                 }
             } catch (Exception $ex) {

+ 125 - 97
helper/predeposit_helper.php

@@ -223,14 +223,17 @@ class predeposit_helper
     private $mShareRates;
     private $mBonusState;
     private $mRateVersion; //用来记录,红包过期带来的红包变化
+    private $mFromSession;
 
-    public function __construct($member_id)
+    public function __construct($member_id,$from_session = false)
     {
         $this->model_pd = Model('predeposit');
         $this->member_id = $member_id;
+        $this->mFromSession = $from_session;
 
         $pd_array = Model('member')->getMemberPdInfo($this->member_id);
         $this->mRateVersion  = intval($pd_array['rate_version']);
+
         $this->init_rate();
     }
     public function member_id() {
@@ -239,27 +242,34 @@ class predeposit_helper
 
     private function init_rate()
     {
-        $fUpdate = false;
-        if(isset($_SESSION['bonus_rate_version']) == false) {
-            $fUpdate = true;
-        }
-        else
+        if($this->mFromSession)
         {
-            $version = $_SESSION['bonus_rate_version'];
-            if($version != $this->mRateVersion) {
+            $fUpdate = false;
+            if(isset($_SESSION['bonus_rate_version']) == false) {
                 $fUpdate = true;
             }
             else
             {
-                if(isset($_SESSION['bonus_rate']) && isset($_SESSION['bonus_state']) && isset($_SESSION['share_bonus_rate'])) {
-                    $this->mPayRates = new RateMoney($_SESSION['bonus_rate']);
-                    $this->mShareRates = new RateMoney($_SESSION['share_bonus_rate']);
-                    $this->mBonusState = $_SESSION['bonus_state'];
-                } else {
+                $version = $_SESSION['bonus_rate_version'];
+                if($version != $this->mRateVersion) {
                     $fUpdate = true;
                 }
+                else
+                {
+                    if(isset($_SESSION['bonus_rate']) && isset($_SESSION['bonus_state']) && isset($_SESSION['share_bonus_rate'])) {
+                        $this->mPayRates = new RateMoney($_SESSION['bonus_rate']);
+                        $this->mShareRates = new RateMoney($_SESSION['share_bonus_rate']);
+                        $this->mBonusState = $_SESSION['bonus_state'];
+                    } else {
+                        $fUpdate = true;
+                    }
+                }
             }
         }
+        else
+        {
+            $fUpdate = true;
+        }
 
         if($fUpdate || $this->need_update())
         {
@@ -274,10 +284,10 @@ class predeposit_helper
             $this->mShareRates->add_bonuses($share_items);
             $share_bonus_rate = $this->mShareRates->format();
 
-
             $this->mBonusState = [];
             $querys = array('usable','expiring','used','expired');
-            foreach ($querys as $state) {
+            foreach ($querys as $state)
+            {
                 $cond = $this->query_cond($state);
                 if($state == 'used') {
                     $sum = $mod_bonus->getSum($cond,'bonus_value');
@@ -288,31 +298,44 @@ class predeposit_helper
             }
 
             $this->write_rates($this->mBonusState,$pay_bonus_rate,$share_bonus_rate);
+
             $this->mPayRates->clean();
             $this->mShareRates->clean();
-            $_SESSION['bonus_update_time'] = time();
+
+            if($this->mFromSession) {
+                $_SESSION['bonus_update_time'] = time();
+            }
         }
     }
 
     private function need_update()
     {
-        if(!isset($_SESSION['bonus_update_time'])) return true;
+        if($this->mFromSession)
+        {
+            if(!isset($_SESSION['bonus_update_time'])) return true;
 
-        $time = intval($_SESSION['bonus_update_time']);
-        if(time() - $time > 86400) {
+            $time = intval($_SESSION['bonus_update_time']);
+            if(time() - $time > 86400) {
+                return true;
+            } else {
+                return false;
+            }
+        }
+        else {
             return true;
-        } else {
-            return false;
         }
     }
 
     public function __destruct()
     {
-        if($this->mPayRates != null && $this->mPayRates->dirty()) {
-            $this->del_rates();
-        }
-        if($this->mShareRates != null && $this->mShareRates->dirty()) {
-            $this->del_rates();
+        if($this->mFromSession)
+        {
+            if($this->mPayRates != null && $this->mPayRates->dirty()) {
+                $this->del_rates();
+            }
+            if($this->mShareRates != null && $this->mShareRates->dirty()) {
+                $this->del_rates();
+            }
         }
     }
 
@@ -329,59 +352,6 @@ class predeposit_helper
         return $this->mShareRates->total();
     }
 
-    static public function order_cash($goods_amount, &$rates)
-    {
-        if(isset($_SESSION['bonus_rate']) == false) {
-            $pred = new predeposit_helper($_SESSION['member_id']);
-            $bonus_rate = $pred->pay_bonus_rates();
-        } else {
-            $bonus_rate = new RateMoney($_SESSION['bonus_rate']);
-        }
-
-        return $bonus_rate->calc_money($goods_amount,$rates);
-    }
-
-    static public function login_bonus_price($goods_price, &$rates)
-    {
-        if(session_helper::logined())
-        {
-            if(isset($_SESSION['bonus_rate']) == false) {
-                $pred = new predeposit_helper($_SESSION['member_id']);
-                $bonus_rate = $pred->pay_bonus_rates();
-            } else {
-                $bonus_rate = new RateMoney($_SESSION['bonus_rate']);
-            }
-
-            return $bonus_rate->calc_price($goods_price,$rates);
-        }
-        else
-        {
-            return ($goods_price);
-        }
-    }
-
-    static public function unlogin_bonus_price($goods_price,$rate_moneys,&$rates)
-    {
-        if(!empty($rate_moneys)) {
-            $bonus_rate = new RateMoney($rate_moneys);
-            return $bonus_rate->calc_price($goods_price,$rates);
-        } else {
-            return $goods_price;
-        }
-    }
-
-    static public function discount_gap($bonus_price,$goods_price)
-    {
-        $bonus_price = intval($bonus_price* 100 + 0.5);
-        $discount = intval($goods_price * 70 + 0.5);
-
-        if($bonus_price <= $discount) {
-            return 0;
-        } else {
-            return ($bonus_price - $discount) / 100;
-        }
-    }
-
     public function bonus_state() {
         return $this->mBonusState;
     }
@@ -391,7 +361,7 @@ class predeposit_helper
         static $stQuerys = array('usable','expiring','used','expired');
         static $day_secs = 24 * 3600;
 
-        $cond = array('user_id' => $_SESSION['member_id'],'bonus_status' => 3);
+        $cond = array('user_id' => $this->member_id,'bonus_status' => 3);
 
         if(!empty($query_state) && in_array($query_state,$stQuerys))
         {
@@ -419,25 +389,31 @@ class predeposit_helper
 
     private function write_rates($bonus_state, $pay_bonus_rate,$share_bonus_rate)
     {
-        $_SESSION['bonus_state'] = $bonus_state;
-        $_SESSION['bonus_rate']  = $pay_bonus_rate;
-        $_SESSION['share_bonus_rate']   = $share_bonus_rate;
-        $_SESSION['bonus_rate_version'] = $this->mRateVersion;
+        if($this->mFromSession)
+        {
+            $_SESSION['bonus_state'] = $bonus_state;
+            $_SESSION['bonus_rate']  = $pay_bonus_rate;
+            $_SESSION['share_bonus_rate']   = $share_bonus_rate;
+            $_SESSION['bonus_rate_version'] = $this->mRateVersion;
+        }
     }
 
     private function del_rates()
     {
-        if(isset($_SESSION['bonus_state'])) {
-            unset($_SESSION['bonus_state']);
-        }
-        if(isset($_SESSION['bonus_rate'])) {
-            unset($_SESSION['bonus_rate']);
-        }
-        if(isset($_SESSION['share_bonus_rate'])) {
-            unset($_SESSION['share_bonus_rate']);
-        }
-        if(isset($_SESSION['bonus_rate_version'])) {
-            unset($_SESSION['bonus_rate_version']);
+        if($this->mFromSession)
+        {
+            if(isset($_SESSION['bonus_state'])) {
+                unset($_SESSION['bonus_state']);
+            }
+            if(isset($_SESSION['bonus_rate'])) {
+                unset($_SESSION['bonus_rate']);
+            }
+            if(isset($_SESSION['share_bonus_rate'])) {
+                unset($_SESSION['share_bonus_rate']);
+            }
+            if(isset($_SESSION['bonus_rate_version'])) {
+                unset($_SESSION['bonus_rate_version']);
+            }
         }
     }
 
@@ -623,8 +599,7 @@ class predeposit_helper
     public function bonus_refund($bonus_type)
     {
         $types = bonus\type::create_by_paramer($bonus_type);
-        QueueClient::push('onPredeposit',
-            array('change_type' => 'bonus_refund','buyer_id'=>$types->sender_id(),'order_sn'=>$types->getType_sn()));
+        QueueClient::push('onPredeposit',array('change_type' => 'bonus_refund','buyer_id'=>$types->sender_id(),'order_sn'=>$types->getType_sn()));
     }
 
     public function transform_money($member_id,$name,$amount)
@@ -941,4 +916,57 @@ class predeposit_helper
     {
         Model('member')->inc_rate_version($this->member_id);
     }
+
+    static public function order_cash($goods_amount, &$rates)
+    {
+        if(isset($_SESSION['bonus_rate']) == false) {
+            $pred = new predeposit_helper($_SESSION['member_id'],true);
+            $bonus_rate = $pred->pay_bonus_rates();
+        } else {
+            $bonus_rate = new RateMoney($_SESSION['bonus_rate']);
+        }
+
+        return $bonus_rate->calc_money($goods_amount,$rates);
+    }
+
+    static public function login_bonus_price($goods_price, &$rates)
+    {
+        if(session_helper::logined())
+        {
+            if(isset($_SESSION['bonus_rate']) == false) {
+                $pred = new predeposit_helper($_SESSION['member_id'],true);
+                $bonus_rate = $pred->pay_bonus_rates();
+            } else {
+                $bonus_rate = new RateMoney($_SESSION['bonus_rate']);
+            }
+
+            return $bonus_rate->calc_price($goods_price,$rates);
+        }
+        else
+        {
+            return ($goods_price);
+        }
+    }
+
+    static public function unlogin_bonus_price($goods_price,$rate_moneys,&$rates)
+    {
+        if(!empty($rate_moneys)) {
+            $bonus_rate = new RateMoney($rate_moneys);
+            return $bonus_rate->calc_price($goods_price,$rates);
+        } else {
+            return $goods_price;
+        }
+    }
+
+    static public function discount_gap($bonus_price,$goods_price)
+    {
+        $bonus_price = intval($bonus_price* 100 + 0.5);
+        $discount = intval($goods_price * 70 + 0.5);
+
+        if($bonus_price <= $discount) {
+            return 0;
+        } else {
+            return ($bonus_price - $discount) / 100;
+        }
+    }
 }

+ 0 - 2
helper/session_helper.php

@@ -314,8 +314,6 @@ class session_helper
             }
             else
             {
-                return true;
-
                 if (session_helper::binded_wechat())
                 {
                     $author_time = $_SESSION['wxauthor_time'];

+ 1 - 1
mobile/control/cart.php

@@ -69,7 +69,7 @@ class cartControl extends mobileControl
     {
         if($_SESSION['is_login'] == 1)
         {
-            $pred = new predeposit_helper($_SESSION['member_id']);
+            $pred = new predeposit_helper($_SESSION['member_id'],true);
             $bonus_rate = $pred->pay_bonus_rates();
 
             if($bonus_rate != null)

+ 1 - 1
mobile/control/festval.php

@@ -162,7 +162,7 @@ class festvalControl extends mobileControl
     private function topup()
     {
         if(session_helper::logined()) {
-            $pred = new predeposit_helper($_SESSION['member_id']);
+            $pred = new predeposit_helper($_SESSION['member_id'],true);
             $pred->topup_bonus($_SESSION['member_mobile']);
         }
     }

+ 9 - 3
mobile/control/index.php

@@ -111,17 +111,23 @@ class indexControl extends specialControl
 class tpl_member
 {
     private $mOutput;
+    private $mInfo;
+    private $mIsFriend;
+    private $mPred;
     public function __construct($output)
     {
         $this->mOutput = $output;
+        $this->mInfo = $this->mOutput['info'];
+        $this->mIsFriend = $this->mOutput['is_friend'];
+        $userid = $this->mInfo->member_id();
+        $this->mPred = new predeposit_helper($userid);
     }
 
     public function output_group()
     {
-        $minfo = $this->mOutput['info'];
-        $amount = $minfo->available_bonus();
+        $amount = $this->mPred->total_bonus();
         $amount = intval($amount * 100 + 0.5) / 100;
-        $discount = $minfo->discount_self();
+        $discount = $this->mInfo->discount_self();
         $discount = intval($discount * 100 + 0.5) / 100;
 
         $result = "<div class=\"cell\">

+ 2 - 3
mobile/control/member_bonus.php

@@ -31,7 +31,7 @@ class member_bonusControl extends mbMemberControl
 
     public function __construct() {
         parent::__construct();
-        $this->mPred = new predeposit_helper($_SESSION['member_id']);
+        $this->mPred = new predeposit_helper($_SESSION['member_id'],true);
     }
 
     public function predepositexOp()
@@ -1070,8 +1070,7 @@ class member_bonusControl extends mbMemberControl
         else
         {
             $amount = session_helper::thief($user_id,$err);
-            if($amount == false)
-            {
+            if($amount == false) {
                 return self::outerr($err['code'],$err['msg']);
             }
             else

+ 1 - 1
mobile/control/member_ugc.php

@@ -500,7 +500,7 @@ class member_ugcControl extends specialControl
     public function mine_bonusOp()
     {
         $this->need_login();
-        $pred = new predeposit_helper($_SESSION['member_id']);
+        $pred = new predeposit_helper($_SESSION['member_id'],true);
         $bonus_rate = $pred->pay_bonus_rates();
 
         if($bonus_rate != null)

+ 1 - 1
mobile/control/mshop.php

@@ -243,7 +243,7 @@ class mshopControl extends specialControl
     private function topup()
     {
         if(session_helper::logined()) {
-            $pred = new predeposit_helper($_SESSION['member_id']);
+            $pred = new predeposit_helper($_SESSION['member_id'],true);
             $pred->topup_bonus($_SESSION['member_mobile']);
         }
     }