ソースを参照

fix bonus error

stanley-king 8 年 前
コミット
4079db4be2

+ 6 - 8
helper/account_helper.php

@@ -253,8 +253,8 @@ class account_helper
 
     public static function gain_bonus($from_id,$to_id,$amount)
     {
-        $pred = new predeposit_helper($from_id);
-        $bonus_rate = $pred->find_bonus($amount);
+        $pred_from = new predeposit_helper($from_id);
+        $bonus_rate = $pred_from->find_bonus($amount);
         if($bonus_rate == false) {
             return false;
         }
@@ -278,7 +278,7 @@ class account_helper
             $to_minfo = new member_info($to_id);
             $thief =$to_minfo->nickname();
             bonus_helper::withold_money($from_id,$rate,$amount);
-            $pred->handout_bonus($amount,$ret['type_sn'],$thief,"{$thief}摇走了您{$amount}元的红包.",\bonus\type::MakeShakeGainType);
+            $pred_from->handout_bonus($amount,$ret['type_sn'],$thief,"{$thief}摇走了您{$amount}元的红包.",\bonus\type::MakeShakeGainType);
             $bonusex = bonus_helper::send($ret['type_sn'],array($to_id));
             push_helper::stolen_bonus($minfo,$to_minfo,$amount);
             return $bonusex;
@@ -289,8 +289,8 @@ class account_helper
 
     public static function lost_bonus($from_id,$to_id,$amount)
     {
-        $pred = new predeposit_helper($from_id);
-        $bonus_rate = $pred->find_bonus($amount);
+        $pred_from = new predeposit_helper($from_id);
+        $bonus_rate = $pred_from->find_bonus($amount);
         if($bonus_rate == false) {
             return false;
         }
@@ -313,7 +313,7 @@ class account_helper
         if($ret != false)
         {
             $to_info = new member_info($to_id);
-            $pred->handout_bonus($amount,$ret['type_sn'],$to_info->nickname(),"您摇丢了{$amount}的红包.",\bonus\type::MakeShakeLostType);
+            $pred_from->handout_bonus($amount,$ret['type_sn'],$to_info->nickname(),"您摇丢了{$amount}的红包.",\bonus\type::MakeShakeLostType);
             bonus_helper::withold_money($from_id,$rate,$amount);
             $bonusex = bonus_helper::send($ret['type_sn'],array($to_id));
             push_helper::fly_bonus($minfo,$to_info,$amount);
@@ -355,7 +355,6 @@ class account_helper
 
         $pred = new predeposit_helper($member_id);
         $pred->pay_bonus($bonus_rate);
-        Model('member')->inc_rate_version($member_id);
     }
 
     private static function order_cancel($order_sn,$member_id)
@@ -387,7 +386,6 @@ class account_helper
                 Log::record("给用户{$member_id} 退款{$amount}失败.");
             }
         }
-        Model('member')->inc_rate_version($member_id);
     }
 
     public static function bonus_refund($type_sn,$member_id)

+ 1 - 1
helper/bonus/manager.php

@@ -205,7 +205,7 @@ class manager
     public function topup($mod_user_bonus,&$bonus)
     {
         $day_secs = 24 * 3600;
-        $expried_secs = 30 * $day_secs;
+        $expried_secs = 45 * $day_secs;
 
         $datas = array('bonus_status' => 3,
             'user_id' => $_SESSION['member_id'],

+ 2 - 4
helper/bonus_helper.php

@@ -144,17 +144,15 @@ class bonus_helper
         }
     }
 
-    static public function topup_bonus($mobile)
+    static public function topup_bonus(predeposit_helper $pred,$mobile)
     {
         $mod_bonus = Model('user_bonus');
-
         $bind_bonus = $mod_bonus->getBinded($mobile);
         if(empty($bind_bonus)) {
             return false;
         }
 
         $manager = new \bonus\manager();
-        $pd_helper = new predeposit_helper($_SESSION['member_id']);
         $bonusex = array();
         foreach($bind_bonus as $val)
         {
@@ -168,7 +166,7 @@ class bonus_helper
                 if($manager->topup($mod_bonus,$val) == true) {
                     array_push($bonusex,$val);
                     ranklist_helper::add_money($_SESSION['member_id'],$bonus->bonus_value());
-                    $pd_helper->add_bonus($bonus,$type);
+                    $pred->add_bonus($bonus,$type);
                 }
                 Db::commit();
             } catch (Exception $ex) {

+ 0 - 2
helper/notify_helper.php

@@ -80,8 +80,6 @@ class notify_helper
 
         foreach ($member_amount as $member_id => $amount) {
             push_helper::notice_expired($member_id,$amount);
-            $pred = new predeposit_helper($member_id);
-            $pred->inc_rate_version();
         }
 
         if (!empty($ids)) {

+ 12 - 26
helper/predeposit_helper.php

@@ -217,12 +217,12 @@ class predeposit_helper
 
         $pd_array = Model('member')->getMemberPdInfo($this->member_id);
         $this->mTotal_value  = $pd_array['available_predeposit'];   // 当前预存款
-        $this->mFreeze_value = $pd_array['freeze_predeposit'];     // 当前预存款冻结
+        $this->mFreeze_value = $pd_array['freeze_predeposit'];      // 当前预存款冻结
         $this->mRateVersion  = intval($pd_array['rate_version']);
         $this->init_rate();
     }
 
-    public function init_rate()
+    private function init_rate()
     {
         $fUpdate = false;
         if(isset($_SESSION['bonus_rate_version']) == false) {
@@ -367,7 +367,7 @@ class predeposit_helper
 
     public function topup_bonus($mobile)
     {
-        $bonuses = bonus_helper::topup_bonus($mobile);
+        $bonuses = bonus_helper::topup_bonus($this,$mobile);
         if($bonuses != false) {
             $this->del_rates();
         }
@@ -506,6 +506,8 @@ class predeposit_helper
             if($bonus_obj->spend_over()) {
                 return false;
             }
+            $this->inc_rate_version();
+
             $minfo = new member_info($this->member_id);
             $data = array();
             $data['member_id'] = $this->member_id;
@@ -574,8 +576,9 @@ class predeposit_helper
     }
     public function add_bonus(bonus\user_bonus $bonus,bonus\type $type)
     {
-        $minfo = new member_info($this->member_id);
+        $this->inc_rate_version();
 
+        $minfo = new member_info($this->member_id);
         $data = array();
         $data['member_id'] = $this->member_id;
         $data['member_name'] = $minfo->nickname();
@@ -586,14 +589,12 @@ class predeposit_helper
         $data['lg_desc'] = "";
         $data['make_type'] = $type->make_type();
         $this->model_pd->changePd("bonus_add_money", $data);
-        $this->inc_rate_version();
     }
 
     public function handout_bonus($amount, $type_sn, $sender_name, $info,$make_type = 0)
     {
-        Log::record("handout_bonus {$amount} {$type_sn} {$sender_name}",Log::DEBUG);
+        $this->inc_rate_version();
         $minfo = new member_info($this->member_id);
-
         $data = array();
         $data['member_id'] = $this->member_id;
         $data['member_name'] = $minfo->nickname();
@@ -605,25 +606,8 @@ class predeposit_helper
         $data['make_type'] = $make_type;
 
         $this->model_pd->changePd("hand_out_bonus", $data);
-        $this->inc_rate_version();
     }
 
-//    public function handout_relaybonus($amount, $sender_name, $type_sn, $relayer_id, $info)
-//    {
-//        $minfo = new member_info($relayer_id);
-//
-//        $data = array();
-//        $data['member_id'] = $this->member_id;
-//        $data['member_name'] = $minfo->nickname();
-//        $data['amount'] = $amount;
-//        $data['order_sn'] = $type_sn;
-//        $data['admin_name'] = $sender_name;
-//        $data['pdr_sn'] = $type_sn;
-//        $data['lg_desc'] = $info;
-//
-//        $this->model_pd->changePd("hand_out_bonus", $data);
-//    }
-
     private function filter_sn($lg_desc)
     {
         $pos = mb_strpos($lg_desc,':');
@@ -810,9 +794,11 @@ class predeposit_helper
     public function pay_bonus($rates)
     {
         $ret = bonus_helper::withold($this->member_id,$rates);
-        if(!empty($rates)) {
+        if($ret == true) {
+            $this->inc_rate_version();
             $this->del_rates();
         }
+
         return $ret;
     }
 
@@ -822,7 +808,7 @@ class predeposit_helper
         return $bonus_rate->find_rate($amount);
     }
 
-    public function inc_rate_version()
+    private function inc_rate_version()
     {
         Model('member')->inc_rate_version($this->member_id);
     }

+ 0 - 1
mobile/control/control.php

@@ -51,7 +51,6 @@ class mobileControl
 
     public function __destruct()
     {
-        //unset($_SESSION['is_app']);
     }
 
     protected function android()

+ 4 - 24
mobile/control/member_bonus.php

@@ -374,27 +374,7 @@ class member_bonusControl extends mbMemberControl
 
     public function topupOp()
     {
-        $bonuses = bonus_helper::topup_bonus($_SESSION['member_mobile']);
-        if($bonuses === false) {
-            return self::outsuccess(array("$bonuses" => array()));
-        }
-        else
-        {
-            $ret = array();
-            foreach($bonuses as $bonus)
-            {
-                $all_type_info = bonus_helper::get_typeinfo($bonus['type_sn']);
-                if(!empty($all_type_info) && !empty($all_type_info['type_info']))
-                {
-                    $type_info  = bonus_helper::filter_type($all_type_info['type_info']);
-                    $bonus_info = bonus_helper::filter_bonus($bonus);
-
-                    array_push($ret,array('type_info' => $type_info,'bonus_info' => $bonus_info));
-                }
-            }
-
-            return self::outsuccess(array("$bonuses" => $ret));
-        }
+        return self::outerr(errcode::ErrBonus,"APP版本太旧了,请升级到最新版本.");
     }
 
     public function topupexOp()
@@ -500,16 +480,16 @@ class member_bonusControl extends mbMemberControl
             if($query_state == 'usable') {
                 $cond['remain_amount'] = array('gt','0.00');
                 $cond['expired'] = 0;
-                $order_by = 'bonus_rate DESC,bonus_id DESC';
+                $order_by = 'grab_time DESC'; //'bonus_rate DESC,bonus_id DESC';
             } elseif ($query_state == 'expiring') {
                 $cond['usable_time'] = array('elt',time() + 5 * $day_secs);
                 $cond['remain_amount'] = array('gt','0.00');
                 $cond['expired'] = 0;
-                $order_by = 'bonus_rate DESC,bonus_id asc';
+                $order_by = 'grab_time DESC';//'bonus_rate DESC,bonus_id asc';
             } elseif ($query_state == 'used') {
                 $cond['remain_amount'] = '0.00';
                 $cond['expired'] = 0;
-                $order_by = 'bonus_rate DESC,bonus_id DESC';
+                $order_by = 'grab_time DESC'; //'bonus_rate DESC,bonus_id DESC';
             } elseif ($query_state == 'expired') {
                 $cond['expired'] = 1;
                 $order_by = 'bonus_rate DESC,bonus_id DESC';