stanley-king 8 éve
szülő
commit
40c3a2e0dc

+ 7 - 2
helper/bonus/witholder.php

@@ -71,7 +71,7 @@ class witholder
         return $this->usable_amount;
     }
 
-    public function withold_bonus($rate,$bonus_sn)
+    public function withold_bonus($rate,$bonus_sn,$money)
     {
         if(array_key_exists($rate,$this->mRateBonus) == false) return false;
 
@@ -79,8 +79,13 @@ class witholder
         foreach ($bounses as $bonus)
         {
             if($bonus_sn == $bonus->bonus_sn()) {
+                $left = $bonus->remain_amount() * 100 + 0.5;
+                $money = $money * 100 + 0.5;
+                $left = $left - $money;
+                $left = $left >= 0 ? $left / 100 : 0.00;
+
                 $param = $bonus->get_param();
-                $param['remain_amount'] = 0.00;
+                $param['remain_amount'] = $left;
                 $this->mod_bonus->replace($param);
                 return true;
             }

+ 2 - 2
helper/bonus_helper.php

@@ -269,10 +269,10 @@ class bonus_helper
         return true;
     }
 
-    static public function withold_bonus($member_id,$rate,$bonus_sn)
+    static public function withold_bonus($member_id,$bonus_sn,$rate,$money)
     {
         $holder = new \bonus\witholder($member_id);
-        return $holder->withold_bonus($rate,$bonus_sn);
+        return $holder->withold_bonus($rate,$bonus_sn,$money);
     }
 
     static public function send($type_sn,$member_ids)

+ 1 - 1
helper/order_helper.php

@@ -688,7 +688,7 @@ class order_helper
                 $result[] = $item;
             }
         }
-
+        
         return $result;
     }
 

+ 23 - 1
helper/predeposit_helper.php

@@ -402,6 +402,28 @@ class predeposit_helper
         return $this->mRates == null ? false : $this->mRates;
     }
 
+    public function make_bonusone($param,$rate_moneys,$bonus_sn)
+    {
+        $result = bonus_helper::make_bonusex($param,$rate_moneys);
+        if($result == false) return false;
+
+        foreach ($rate_moneys as $item) {
+            $rate = intval($item['rate']);
+            $val = intval($item['amount']);
+            bonus_helper::withold_bonus($this->member_id,$bonus_sn,$rate,$val);
+        }
+
+        $type_sn = $result['type_sn'];
+        $money = $result['money'];
+        $this->handout_bonus($money,$type_sn,session_helper::nickname(),"发送了{$money}元的红包.",\bonus\type::MakeSendType);
+
+        foreach ($rate_moneys as $item) {
+            $this->mRates->with_hold($item['rate'],$item['amount']);
+        }
+
+        return $result;
+    }
+
     public function make_bonus($param,$rate_moneys)
     {
         $result = bonus_helper::make_bonusex($param,$rate_moneys);
@@ -471,7 +493,7 @@ class predeposit_helper
         }
         else
         {
-            if(bonus_helper::withold_bonus($this->member_id,$bonus->bonus_rate(),$bonus_sn)) {
+            if(bonus_helper::withold_bonus($this->member_id,$bonus->bonus_rate(),$bonus_sn,$type->getTotal_amount())) {
                 $type_sn = $result['type_sn'];
                 $money = $result['money'];
                 $this->handout_bonus($money,$type_sn,session_helper::nickname(),"发送了{$money}元的红包.",\bonus\type::MakeSendType);

+ 26 - 0
helper/session_helper.php

@@ -79,6 +79,32 @@ class session_helper
             }
         }
     }
+    static public function is_man() {
+        return (intval($_SESSION['member_sex']) == 1);
+    }
+    static function avatar()
+    {
+        if(empty($_SESSION['member_avatar']))
+        {
+            if(self::is_man()) {
+                $img = 'male.png';
+            } else {
+                $img = 'female.png';
+            }
+            return RESOURCE_SITE_URL . '/mobile/defimg/' . $img;
+        }
+        else
+        {
+            $path = $_SESSION['member_avatar'];
+            if(strncasecmp($path,"http://",strlen("http://")) == 0) {
+                $url = $path;
+            } else {
+                $url = UPLOAD_SITE_URL . "/shop/avatar{$path}";
+            }
+
+            return $url;
+        }
+    }
 
     static public function cur_mobile()
     {

+ 19 - 15
mobile/control/member_bonus.php

@@ -101,40 +101,44 @@ class member_bonusControl extends mbMemberControl
             $img_url = $share['img_url'];
 
             return self::outsuccess(array('type_sn' => $ret, 'url' => "{$url}",
-                'title' => $title,'sub_title' => $sub_title,'img_url' => $img_url));
+                'title' => $title,'sub_title' => $sub_title,'img_url' => $img_url,'avatar' => session_helper::avatar()));
         }
     }
 
-    public function make_Op()
+    public function makeby_bonusOp()
     {
+        if(!isset($_GET['bonus_sn']) || empty($_GET['bonus_sn'])) {
+            return self::outerr(errcode::ErrParamter,"需要红包序列号.");
+        }
+
         $param = bonus_helper::check_personal($_GET,$ret);
         if($param == false) {
             return self::outerr($ret['code'],$ret['msg']);
         }
 
-        if (intval($_GET['bonus_rate']) > 0) {
-            $bonus_rate = intval($_GET['bonus_rate']);
-        } else {
-            $bonus_rate = -1;
-        }
+        $bonusn = $_GET['bonus_sn'];
+        $bonus  = \bonus\user_bonus::create_by_sn($bonusn);
+        $rate = $bonus->bonus_rate();
 
         $param['sender_id'] = $_SESSION['member_id'];
         $param['sender_mobile'] = $_SESSION['member_mobile'];
         $param['sender_name'] = session_helper::nickname();
         $type = bonus_helper::create_type($param);
 
-        if(!$this->mPred->person_enough($type->getTotal_amount(),$bonus_rate)) {
-            return self::outerr(errcode::ErrBonusNotEnough,'余额不够发送红包');
+        $type_amount  = $type->getTotal_amount() * 100 + 0.5;
+        $bonus_amount = $bonus->remain_amount()  * 100 + 0.5;
+        if($type_amount > $bonus_amount) {
+            return self::outerr(errcode::ErrBonusNotEnough,'该红包余额不足发送红包');
         }
-        $type->set_rate($bonus_rate);
 
+        $type->set_rate($rate);
         $rate_moneys = [];
         $item['amount'] = $type->getTotal_amount();
         $item['num'] = $type->getTotal_num();
-        $item['rate'] = $bonus_rate;
+        $item['rate'] = $rate;
         $rate_moneys[] = $item;
 
-        $ret = $this->mPred->make_bonus($type->get_param(),$rate_moneys);
+        $ret = $this->mPred->make_bonusone($type->get_param(),$rate_moneys,$bonusn);
         if($ret === false) {
             return self::outerr(errcode::ErrBonus,"生成红包失败.");
         }
@@ -150,7 +154,7 @@ class member_bonusControl extends mbMemberControl
             $img_url = $share['img_url'];
 
             return self::outsuccess(array('type_sn' => $ret, 'url' => "{$url}",
-                'title' => $title,'sub_title' => $sub_title,'img_url' => $img_url));
+                'title' => $title,'sub_title' => $sub_title,'img_url' => $img_url,'avatar' => session_helper::avatar()));
         }
     }
 
@@ -203,7 +207,7 @@ class member_bonusControl extends mbMemberControl
                 $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']);
+                    $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));
@@ -282,7 +286,7 @@ class member_bonusControl extends mbMemberControl
                 'groupbuy' => null,
                 'limitime' => null,
                 'bundling' => null,
-                'typeinfos'  => $type_infos,
+                'typeinfos'   => $type_infos,
                 'mobile_page' => mobile_page($pages)));
         }
     }