소스 검색

merge from bonus_rate

stanley-king 7 년 전
부모
커밋
542792622a

+ 14 - 6
admin/control/login.php

@@ -7,15 +7,17 @@
  ***/
 
 defined('InShopNC') or exit('Access Invalid!');
-class LoginControl extends SystemControl {
-
+class LoginControl extends SystemControl
+{
 	/**
 	 * 不进行父类的登录验证,所以增加构造方法重写了父类的构造方法
 	 */
-	public function __construct(){
+	public function __construct()
+    {
 		Language::read('common,layout,login');
 	    $result = chksubmit(true,true,'num');
-		if ($result){
+		if ($result)
+		{
 		    if ($result === -11){
 		        showMessage('非法请求');
 		    }elseif ($result === -12){
@@ -61,6 +63,12 @@ class LoginControl extends SystemControl {
 		Tpl::output('html_title',L('login_index_need_login'));
 		Tpl::showpage('login','login_layout');
 	}
-	public function loginOp(){}
-	public function indexOp(){}
+	public function loginOp()
+    {
+
+    }
+	public function indexOp()
+    {
+
+    }
 }

+ 0 - 1
data/logic/payment.logic.php

@@ -318,7 +318,6 @@ class paymentLogic
             return callback(true);
         } catch (Exception $e) {
             $trans->rollback();
-
             return callback(false, $e->getMessage());
         }
     }

+ 13 - 1
data/model/user_bonus.model.php

@@ -52,7 +52,19 @@ class user_bonusModel extends Model
 
     public function getUsableSum($member_id)
     {
-        $cond = array('user_id' => $member_id,'bonus_status' => 3,'usable_time' => array('gt',time()),'expired' => 0);
+        $cond = array('user_id' => $member_id,'bonus_status' => 3,'usable_time' => array('gt',time()),'expired' => 0,'remain_amount' => array('gt','0.00'));
+        return $this->table('user_bonus')->where($cond)->sum('remain_amount');
+    }
+
+    public function getShareableSum($member_id)
+    {
+        $cond = array('user_id' => $member_id,'bonus_status' => 3,'usable_time' => array('gt',time()),'remain_amount' => array('gt','0.00'),'can_share' => 1,'expired' => 0);
+        return $this->table('user_bonus')->where($cond)->sum('remain_amount');
+    }
+    public function getThiefableSum($member_id)
+    {
+        $cond = array('user_id' => $member_id,'bonus_status' => 3,'usable_time' => array('gt',time()),'remain_amount' => array('gt','0.00'),
+            'can_share' => 1,'bonus_rate' => array('elt',30), 'expired' => 0);
         return $this->table('user_bonus')->where($cond)->sum('remain_amount');
     }
 

+ 4 - 4
helper/account_helper.php

@@ -91,19 +91,19 @@ class account_helper
     {
         $pred_from = new predeposit_helper($from_id);
         $bonus_rate = $pred_from->find_share_bonus($amount);
-        if($bonus_rate == false) {
+        if($bonus_rate == false || $bonus_rate['rate'] > 30) {
             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);

+ 20 - 3
helper/async/register.php

@@ -23,6 +23,8 @@ class register extends IAsync
     private $cur_info;
     private $last_inviter;
 
+    const max_inviters = 5;
+
     public function __construct($user,$inviter)
     {
         $mod_member = Model('member');
@@ -30,8 +32,8 @@ class register extends IAsync
         $minfo = $mod_member->getMemberInfo(['member_id' => $user], '*', true);
         $this->cur_user = $user;
         $this->cur_info = new member_info($minfo);
-        if($this->cur_info->binded_wechat() == false) {
-            throw new Exception('为防止欺诈,需要微信授权登录');
+        if($this->cur_info->binded_wechat() == false || $this->cur_info->binded_mobile() == false) {
+            throw new Exception('为防止欺诈,需要微信和手机号码授权登录');
         }
         $this->last_inviter = $inviter;
     }
@@ -93,7 +95,20 @@ class register extends IAsync
     //给Level 级的邀请者发奖励
     private function reward_inviter($inviter, $level)
     {
-        $params = bonus\parameters::guide_inviter($this->cur_info->nickname(),$level);
+        if($level == 0)
+        {
+            $inviter_info = new member_info($inviter);
+            if($inviter_info->invitees() > register::max_inviters) {
+                $params = bonus\parameters::guide_inviterex($this->cur_info->nickname(),$level);
+            }
+            else {
+                $params = bonus\parameters::guide_inviter($this->cur_info->nickname(),$level);
+            }
+        }
+        else {
+            $params = bonus\parameters::guide_inviter($this->cur_info->nickname(),$level);
+        }
+
         foreach ($params as $param)
         {
             $type = bonus_helper::create_type_input($param);
@@ -125,6 +140,8 @@ class register extends IAsync
         if(empty($invitees)) return false;
         $inviter_info = new member_info($inviter);
 
+        if($level > 1) return false;
+
         $num = count($invitees);
         $params = bonus\parameters::guide_invitee($inviter_info->nickname(),$this->cur_info->nickname(),$level,$num);
         foreach ($params as $param)

+ 0 - 1
helper/bonus/factory.php

@@ -38,7 +38,6 @@ class factory
             if(!$ret = $iGen->make_bonus($rate_moneys)) {
                 Model('bonus_type')->delete(array('type_id' => $type->getType_id()));
                 Model('user_bonus')->delete(array('type_id' => $type->getType_id()));
-
                 return false;
             }
             $money = $type->getTotal_amount();

+ 37 - 10
helper/bonus/parameters.php

@@ -72,10 +72,37 @@ class parameters
     {
         $rate_moneys = [
             ['amount' => 10,  'num' => 1, 'rate' => 100],
-            ['amount' => 1,   'num' => 1, 'rate' => 100],
-            ['amount' => 0.5, 'num' => 1, 'rate' => 100],
-            ['amount' => 0.25,'num' => 1, 'rate' => 100],
-            ['amount' => 0.10,'num' => 1, 'rate' => 100],
+            ['amount' => 3,   'num' => 1, 'rate' => 40],
+            ['amount' => 1, 'num' => 1, 'rate' => 40],
+            ['amount' => 0.5,'num' => 1, 'rate' => 40],
+        ];
+
+        $count = count($rate_moneys);
+        $cur_index = $level < $count ? $level : $count -1;
+
+        $params = [];
+
+        $param['make_type'] = type::MakeInviteRewardType;
+        $param['type_name'] = "邀请 {$nickname},奖励红包";
+        $level = $level + 1;
+        $param['type_bless']  = "{$nickname} 成为您的{$level}度粉丝";
+        $param['send_type']   = type::SendType_Fixed;
+        $param['grab_type']   = type::GrabType_All;
+        $param['sender_id']   = self::admin_member_id;
+        $param['sender_name'] = self::admin_name;
+        $param['usable_days'] = self::usable_days;
+        $param['can_share']   = 0;
+
+        $param['rate_money'][] = $rate_moneys[$cur_index];
+        $params[] = $param;
+
+        return $params;
+    }
+
+    public static function guide_inviterex($nickname,$level)
+    {
+        $rate_moneys = [
+            ['amount' => 10,  'num' => 1, 'rate' => 50],
         ];
 
         $count = count($rate_moneys);
@@ -103,9 +130,9 @@ class parameters
     public static function guide_invitee($inviter_name, $invitee_name, $level, $num)
     {
         $rate_moneys = [
-            ['amount' => 0.5,  'num' => $num, 'rate' => 100],
-            ['amount' => 0.25, 'num' => $num, 'rate' => 100],
-            ['amount' => 0.10, 'num' => $num, 'rate' => 100],
+            ['amount' => 2, 'num' => $num,   'rate' => 40],
+            ['amount' => 1, 'num' => $num, 'rate' => 40],
+            ['amount' => 2, 'num' => $num,   'rate' => 30],
         ];
 
         $count = count($rate_moneys);
@@ -271,9 +298,9 @@ class parameters
     public static function order_complete_invitee($nickname, $level, $num)
     {
         $rate_moneys = [
-            ['amount' => 0.5, 'num' => $num, 'rate' => 100],
-            ['amount' => 0.25,'num' => $num, 'rate' => 100],
-            ['amount' => 0.10,'num' => $num, 'rate' => 100],
+            ['amount' => 2, 'num' => $num, 'rate' => 40],
+            ['amount' => 1,'num' => $num,  'rate' => 40],
+            ['amount' => 2,'num' => $num,  'rate' => 30],
         ];
 
         $count = count($rate_moneys);

+ 1 - 1
helper/bonus/thief_vilator.php

@@ -35,7 +35,7 @@ class thief_vilator
         }
 
         $pred = new predeposit_helper($this->mFromID);
-        $usable_amount = $pred->total_bonus();
+        $usable_amount = $pred->share_total_bonus();
         $cents = intval($usable_amount * 100 + 0.5);
         if($cents == 0) {
             $error = ['code' => errcode::ErrBonus,'msg' => '他比你更穷,还是选择富人下手吧~'];

+ 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) {

+ 558 - 0
helper/car_convert/importer.php

@@ -0,0 +1,558 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: lionared
+ * Date: 2018/1/10
+ * Time: 下午6:38
+ */
+
+namespace car_convert;
+
+use Exception;
+
+class importer
+{
+    /**
+     * @var string $_file: file path to load
+     */
+    protected $_file;
+    /**
+     * @var array $_header: table header 缓存表头字段
+     */
+    protected $_header;
+    /**
+     * @var array $_data: table data 缓存数据各行
+     */
+    protected $_data;
+    /**
+     * @var string 解析csv文件分隔符
+     */
+    const _delimiter = ',';
+
+    private static $stAlias = null;
+    /**
+     * @var $_fileds_pos: 缓存各字段对应坐标
+     */
+    private $_fileds_pos;
+    /**
+     * ImportAutoData constructor.
+     * @param $filepath
+     * @throws \Exception
+     */
+    public function __construct($filepath)
+    {
+        if(self::$stAlias == null) {
+            self::init_alias();
+        }
+
+        if(is_file($filepath)) {
+            $this->_file = $filepath;
+        } else {
+            throw new Exception("no file given!");
+        }
+    }
+    private static function init_alias()
+    {
+        self::$stAlias = [];
+        self::$stAlias['base_info'] = self::base_info();
+        self::$stAlias['body_info'] = self::body_info();
+        self::$stAlias['engine_info'] = self::engine_info();
+        self::$stAlias['motor_info'] = self::motor_info();
+        self::$stAlias['gearbox_info'] = self::gearbox_info();
+        self::$stAlias['underpan_info'] = self::underpan_info();
+        self::$stAlias['brake_info'] = self::brake_info();
+        self::$stAlias['secure_info'] = self::secure_info();
+        self::$stAlias['oper_info'] = self::oper_info();
+        self::$stAlias['guard_info'] = self::guard_info();
+        self::$stAlias['inside_info'] = self::inside_info();
+        self::$stAlias['seat_info'] = self::seat_info();
+        self::$stAlias['media_info'] = self::media_info();
+        self::$stAlias['light_info'] = self::light_info();
+        self::$stAlias['glass_info'] = self::glass_info();
+        self::$stAlias['air_info'] = self::air_info();
+    }
+
+    private static function body_info()
+    {
+        $data = [
+            [ 'origin'=>'车身-长度(mm)',               'alias'=>'length'],
+            [ 'origin'=>'车身-宽度(mm)',               'alias'=>'width' ],
+            [ 'origin'=>'车身-高度(mm)',               'alias'=>'height'],
+            [ 'origin'=>'车身-轴距(mm)',               'alias'=>'between_wheels'],
+            [ 'origin'=>'车身-前轮距(mm)',             'alias'=>'front_wheels_distance'],
+            [ 'origin'=>'车身-后轮距(mm)',             'alias'=>'back_wheels_distance'],
+            [ 'origin'=>'车身-最小离地间隙(mm)',        'alias'=>'min_ground'],
+            [ 'origin'=>'车身-整备质量(kg)',           'alias'=>'total_weight'],
+            [ 'origin'=>'车身-车身结构',               'alias'=>'body_struct'],
+            [ 'origin'=>'车身-车门数(个)',             'alias'=>'doors'],
+            [ 'origin'=>'车身-座位数(个)',             'alias'=>'seats'],
+            [ 'origin'=>'车身-油箱容积(L)',            'alias'=>'fuel_vol'],
+            [ 'origin'=>'车身-行李厢容积(L)',          'alias'=>'cargo_vol'],
+            [ 'origin'=>'车身-后排车门开启方式',        'alias'=>'cdoor'],
+            [ 'origin'=>'车身-货箱尺寸(mm)',           'alias'=>'cargo_size'],
+            [ 'origin'=>'车身-最大载重质量(kg)',        'alias'=>'carry_cap'],
+        ];
+        return $data;
+    }
+
+    private static function base_info()
+    {
+        $data = [
+            [ 'origin'=>'车系ID',             'alias'=>'car_id'],
+            [ 'origin'=>'品牌',               'alias'=>'brand'],
+            [ 'origin'=>'品牌图标',            'alias'=>'brand_logo'],
+            [ 'origin'=>'国家',               'alias'=>'country'],
+            [ 'origin'=>'车系',               'alias'=>'car_series'],
+            [ 'origin'=>'生产方式',            'alias'=>'produce_type'],
+            [ 'origin'=>'车系首页',            'alias'=>'series_home'],
+            [ 'origin'=>'车型ID',              'alias'=>'type_id'],
+            [ 'origin'=>'基本参数-车型名称',        'alias'=>'type_name'],
+            [ 'origin'=>'基本参数-厂商指导价(元)',    'alias'=>'market_price'],
+            [ 'origin'=>'基本参数-厂商',          'alias'=>'manufacturer'],
+            [ 'origin'=>'基本参数-级别',          'alias'=>'car_level'],
+            [ 'origin'=>'基本参数-上市时间',          'alias'=>'market_time'],
+            [ 'origin'=>'基本参数-发动机',         'alias'=>'engine'],
+            [ 'origin'=>'基本参数-变速箱',         'alias'=>'gearbox'],
+            [ 'origin'=>'基本参数-长*宽*高(mm)',           'alias'=>'car_size'],
+            [ 'origin'=>'基本参数-车身结构',               'alias'=>'car_struct'],
+            [ 'origin'=>'基本参数-最高车速(km/h)',             'alias'=>'max_speed'],
+            [ 'origin'=>'基本参数-官方0-100km/h加速(s)',        'alias'=>'official_speedup'],
+            [ 'origin'=>'基本参数-实测0-100km/h加速(s)',        'alias'=>'actual_speedup'],
+            [ 'origin'=>'基本参数-实测100-0km/h制动(m)',        'alias'=>'actual_brake'],
+            [ 'origin'=>'基本参数-实测油耗(L/100km)',           'alias'=>'actual_fueluse'],
+            [ 'origin'=>'基本参数-工信部综合油耗(L/100km)',      'alias'=>'gerenal_fueluse'],
+            [ 'origin'=>'基本参数-实测离地间隙(mm)',            'alias'=>'actual_ground'],
+            [ 'origin'=>'基本参数-整车质保',               'alias'=>'quality_guarantee'],
+            [ 'origin'=>'基本参数-能源类型',        'alias'=>'energy_type'],
+            [ 'origin'=>'基本参数-最大功率(kW)',    'alias'=>'max_power'],
+            [ 'origin'=>'基本参数-最大扭矩(N・m)',   'alias'=>'max_torque'],
+            [ 'origin'=>'基本参数-纯电续航里程',               'alias'=>'electric_cruise'],
+            [ 'origin'=>'基本参数-电池充电时间',               'alias'=>'electric_power'],
+            [ 'origin'=>'基本参数-快充电量百分比',               'alias'=>'fast_charge']];
+
+        return $data;
+    }
+
+    private static function engine_info()
+    {
+        $data = [
+            [ 'origin'=>'发动机-发动机型号', 'alias'=>'engine0'],
+            [ 'origin'=>'发动机-排量(mL)', 'alias'=>'engine1'],
+            [ 'origin'=>'发动机-进气形式', 'alias'=>'engine2'],
+            [ 'origin'=>'发动机-气缸排列形式', 'alias'=>'engine3'],
+            [ 'origin'=>'发动机-气缸数(个)', 'alias'=>'engine4'],
+            [ 'origin'=>'发动机-每缸气门数(个)', 'alias'=>'engine5'],
+            [ 'origin'=>'发动机-压缩比', 'alias'=>'engine6'],
+            [ 'origin'=>'发动机-配气机构', 'alias'=>'engine7'],
+            [ 'origin'=>'发动机-缸径(mm)', 'alias'=>'engine8'],
+            [ 'origin'=>'发动机-行程(mm)', 'alias'=>'engine9'],
+            [ 'origin'=>'发动机-最大马力(Ps)', 'alias'=>'engine10'],
+            [ 'origin'=>'发动机-最大功率(kW)', 'alias'=>'engine11'],
+            [ 'origin'=>'发动机-最大功率转速(rpm)', 'alias'=>'engine12'],
+            [ 'origin'=>'发动机-最大扭矩(N・m)', 'alias'=>'engine13'],
+            [ 'origin'=>'发动机-最大扭矩转速(rpm)', 'alias'=>'engine14'],
+            [ 'origin'=>'发动机-发动机特有技术', 'alias'=>'engine15'],
+            [ 'origin'=>'发动机-燃料形式', 'alias'=>'engine16'],
+            [ 'origin'=>'发动机-燃油标号', 'alias'=>'engine17'],
+            [ 'origin'=>'发动机-供油方式', 'alias'=>'engine18'],
+            [ 'origin'=>'发动机-缸盖材料', 'alias'=>'engine19'],
+            [ 'origin'=>'发动机-缸体材料', 'alias'=>'engine20'],
+            [ 'origin'=>'发动机-环保标准', 'alias'=>'engine21']
+        ];
+        return $data;
+    }
+
+    private static function motor_info()
+    {
+        $data = [
+            [ 'origin'=>'电动机-电机类型', 'alias'=>'motor0'],
+            [ 'origin'=>'电动机-电动机总功率(kW)', 'alias'=>'motor1'],
+            [ 'origin'=>'电动机-电动机总扭矩(N・m)', 'alias'=>'motor2'],
+            [ 'origin'=>'电动机-前电动机最大功率(kW)', 'alias'=>'motor3'],
+            [ 'origin'=>'电动机-前电动机最大扭矩(N・m)', 'alias'=>'motor4'],
+            [ 'origin'=>'电动机-后电动机最大功率(kW)', 'alias'=>'motor5'],
+            [ 'origin'=>'电动机-后电动机最大扭矩(N・m)', 'alias'=>'motor6'],
+            [ 'origin'=>'电动机-系统综合功率(kW)', 'alias'=>'motor7'],
+            [ 'origin'=>'电动机-系统综合扭矩(N・m)', 'alias'=>'motor8'],
+            [ 'origin'=>'电动机-驱动电机数', 'alias'=>'motor9'],
+            [ 'origin'=>'电动机-电机布局', 'alias'=>'motor10'],
+            [ 'origin'=>'电动机-电池类型', 'alias'=>'motor11'],
+            [ 'origin'=>'电动机-工信部续航里程(km)', 'alias'=>'motor12'],
+            [ 'origin'=>'电动机-电池容量(kWh)', 'alias'=>'motor13'],
+            [ 'origin'=>'电动机-百公里耗电量(kWh/100km)', 'alias'=>'motor14'],
+            [ 'origin'=>'电动机-电池组质保', 'alias'=>'motor15'],
+            [ 'origin'=>'电动机-电池充电时间', 'alias'=>'motor16'],
+            [ 'origin'=>'电动机-快充电量(%)', 'alias'=>'motor17'],
+            [ 'origin'=>'电动机-充电桩价格', 'alias'=>'motor18'],
+        ];
+        return $data;
+    }
+
+    private static function gearbox_info()
+    {
+        $data = [
+            [ 'origin'=>'变速箱-简称', 'alias'=>'gearbox0'],
+            [ 'origin'=>'变速箱-挡位个数', 'alias'=>'gearbox1'],
+            [ 'origin'=>'变速箱-变速箱类型', 'alias'=>'gearbox2'],
+        ];
+        return $data;
+    }
+
+    private static function underpan_info()
+    {
+        $data = [
+            [ 'origin'=>'底盘转向-驱动方式', 'alias'=>'underpan0'],
+            [ 'origin'=>'底盘转向-前悬架类型', 'alias'=>'underpan1'],
+            [ 'origin'=>'底盘转向-后悬架类型', 'alias'=>'underpan2'],
+            [ 'origin'=>'底盘转向-助力类型', 'alias'=>'underpan3'],
+            [ 'origin'=>'底盘转向-车体结构', 'alias'=>'underpan4'],
+            [ 'origin'=>'底盘转向-四驱形式', 'alias'=>'underpan5'],
+            [ 'origin'=>'底盘转向-中央差速器结构', 'alias'=>'underpan6'],
+        ];
+        return $data;
+    }
+
+    private static function brake_info()
+    {
+        $data = [
+            [ 'origin'=>'车轮制动-前制动器类型', 'alias'=>'brake0'],
+            [ 'origin'=>'车轮制动-后制动器类型', 'alias'=>'brake1'],
+            [ 'origin'=>'车轮制动-驻车制动类型', 'alias'=>'brake2'],
+            [ 'origin'=>'车轮制动-前轮胎规格', 'alias'=>'brake3'],
+            [ 'origin'=>'车轮制动-后轮胎规格', 'alias'=>'brake4'],
+            [ 'origin'=>'车轮制动-备胎规格', 'alias'=>'brake5'],
+        ];
+        return $data;
+    }
+
+    private static function secure_info()
+    {
+        $data = [
+            [ 'origin'=>'主/被动安全装备-主驾驶座安全气囊', 'alias'=>'secure0'],
+            [ 'origin'=>'主/被动安全装备-副驾驶座安全气囊', 'alias'=>'secure1'],
+            [ 'origin'=>'主/被动安全装备-前/后排侧气囊', 'alias'=>'secure2'],
+            [ 'origin'=>'主/被动安全装备-前/后排头部气囊(气帘)', 'alias'=>'secure3'],
+            [ 'origin'=>'主/被动安全装备-膝部气囊', 'alias'=>'secure4'],
+            [ 'origin'=>'主/被动安全装备-胎压监测装置', 'alias'=>'secure5'],
+            [ 'origin'=>'主/被动安全装备-零胎压继续行驶', 'alias'=>'secure6'],
+            [ 'origin'=>'主/被动安全装备-安全带未系提示', 'alias'=>'secure7'],
+            [ 'origin'=>'主/被动安全装备-ISOFIX儿童座椅接口', 'alias'=>'secure8'],
+            [ 'origin'=>'主/被动安全装备-ABS防抱死', 'alias'=>'secure9'],
+            [ 'origin'=>'主/被动安全装备-制动力分配(EBD/CBC等)', 'alias'=>'secure10'],
+            [ 'origin'=>'主/被动安全装备-刹车辅助(EBA/BAS/BA等)', 'alias'=>'secure11'],
+            [ 'origin'=>'主/被动安全装备-牵引力控制(ASR/TCS/TRC等)', 'alias'=>'secure12'],
+            [ 'origin'=>'主/被动安全装备-车身稳定控制(ESC/ESP/DSC等)', 'alias'=>'secure13'],
+            [ 'origin'=>'主/被动安全装备-并线辅助', 'alias'=>'secure14'],
+            [ 'origin'=>'主/被动安全装备-车道偏离预警系统', 'alias'=>'secure15'],
+            [ 'origin'=>'主/被动安全装备-主动刹车/主动安全系统', 'alias'=>'secure16'],
+            [ 'origin'=>'主/被动安全装备-夜视系统', 'alias'=>'secure17'],
+            [ 'origin'=>'主/被动安全装备-疲劳驾驶提示', 'alias'=>'secure18'],
+            [ 'origin'=>'主/被动安全装备-主/副驾驶座安全气囊', 'alias'=>'secure19'],
+            [ 'origin'=>'主/被动安全装备-前排侧气囊', 'alias'=>'secure20'],
+            [ 'origin'=>'主/被动安全装备-后排侧气囊', 'alias'=>'secure21'],
+            [ 'origin'=>'主/被动安全装备-前排头部气囊(气帘)', 'alias'=>'secure22'],
+            [ 'origin'=>'主/被动安全装备-后排头部气囊(气帘)', 'alias'=>'secure23']
+        ];
+        return $data;
+    }
+
+    private static function oper_info()
+    {
+        $data = [
+            [ 'origin'=>'辅助/操控配置-前驻车雷达', 'alias'=>'oper0'],
+            [ 'origin'=>'辅助/操控配置-后驻车雷达', 'alias'=>'oper1'],
+            [ 'origin'=>'辅助/操控配置-倒车视频影像', 'alias'=>'oper2'],
+            [ 'origin'=>'辅助/操控配置-全景摄像头', 'alias'=>'oper3'],
+            [ 'origin'=>'辅助/操控配置-定速巡航', 'alias'=>'oper4'],
+            [ 'origin'=>'辅助/操控配置-自适应巡航', 'alias'=>'oper5'],
+            [ 'origin'=>'辅助/操控配置-自动泊车入位', 'alias'=>'oper6'],
+            [ 'origin'=>'辅助/操控配置-发动机启停技术', 'alias'=>'oper7'],
+            [ 'origin'=>'辅助/操控配置-自动驾驶技术', 'alias'=>'oper8'],
+            [ 'origin'=>'辅助/操控配置-上坡辅助', 'alias'=>'oper9'],
+            [ 'origin'=>'辅助/操控配置-自动驻车', 'alias'=>'oper10'],
+            [ 'origin'=>'辅助/操控配置-陡坡缓降', 'alias'=>'oper11'],
+            [ 'origin'=>'辅助/操控配置-可变悬架', 'alias'=>'oper12'],
+            [ 'origin'=>'辅助/操控配置-空气悬架', 'alias'=>'oper13'],
+            [ 'origin'=>'辅助/操控配置-电磁感应悬架', 'alias'=>'oper14'],
+            [ 'origin'=>'辅助/操控配置-可变转向比', 'alias'=>'oper15'],
+            [ 'origin'=>'辅助/操控配置-前桥限滑差速器/差速锁', 'alias'=>'oper16'],
+            [ 'origin'=>'辅助/操控配置-中央差速器锁止功能', 'alias'=>'oper17'],
+            [ 'origin'=>'辅助/操控配置-后桥限滑差速器/差速锁', 'alias'=>'oper18'],
+            [ 'origin'=>'辅助/操控配置-整体主动转向系统', 'alias'=>'oper19'],
+            [ 'origin'=>'辅助/操控配置-前/后驻车雷达', 'alias'=>'oper20'],
+        ];
+        return $data;
+    }
+
+    private static function guard_info()
+    {
+        $data = [
+            [ 'origin'=>'外部/防盗配置-电动天窗', 'alias'=>'guard0'],
+            [ 'origin'=>'外部/防盗配置-全景天窗', 'alias'=>'guard1'],
+            [ 'origin'=>'外部/防盗配置-多天窗', 'alias'=>'guard2'],
+            [ 'origin'=>'外部/防盗配置-运动外观套件', 'alias'=>'guard3'],
+            [ 'origin'=>'外部/防盗配置-铝合金轮圈', 'alias'=>'guard4'],
+            [ 'origin'=>'外部/防盗配置-电动吸合门', 'alias'=>'guard5'],
+            [ 'origin'=>'外部/防盗配置-侧滑门', 'alias'=>'guard6'],
+            [ 'origin'=>'外部/防盗配置-电动后备厢', 'alias'=>'guard7'],
+            [ 'origin'=>'外部/防盗配置-感应后备厢', 'alias'=>'guard8'],
+            [ 'origin'=>'外部/防盗配置-车顶行李架', 'alias'=>'guard9'],
+            [ 'origin'=>'外部/防盗配置-发动机电子防盗', 'alias'=>'guard10'],
+            [ 'origin'=>'外部/防盗配置-车内中控锁', 'alias'=>'guard11'],
+            [ 'origin'=>'外部/防盗配置-遥控钥匙', 'alias'=>'guard12'],
+            [ 'origin'=>'外部/防盗配置-无钥匙启动系统', 'alias'=>'guard13'],
+            [ 'origin'=>'外部/防盗配置-无钥匙进入系统', 'alias'=>'guard14'],
+            [ 'origin'=>'外部/防盗配置-远程启动', 'alias'=>'guard15'],
+        ];
+        return $data;
+    }
+
+    private static function inside_info()
+    {
+        $data = [
+            [ 'origin'=>'内部配置-皮质方向盘', 'alias'=>'inside0'],
+            [ 'origin'=>'内部配置-方向盘调节', 'alias'=>'inside1'],
+            [ 'origin'=>'内部配置-方向盘电动调节', 'alias'=>'inside2'],
+            [ 'origin'=>'内部配置-多功能方向盘', 'alias'=>'inside3'],
+            [ 'origin'=>'内部配置-方向盘换挡', 'alias'=>'inside4'],
+            [ 'origin'=>'内部配置-方向盘加热', 'alias'=>'inside5'],
+            [ 'origin'=>'内部配置-方向盘记忆', 'alias'=>'inside6'],
+            [ 'origin'=>'内部配置-行车电脑显示屏', 'alias'=>'inside7'],
+            [ 'origin'=>'内部配置-全液晶仪表盘', 'alias'=>'inside8'],
+            [ 'origin'=>'内部配置-HUD抬头数字显示', 'alias'=>'inside9'],
+            [ 'origin'=>'内部配置-内置行车记录仪', 'alias'=>'inside10'],
+            [ 'origin'=>'内部配置-主动降噪', 'alias'=>'inside11'],
+            [ 'origin'=>'内部配置-手机无线充电', 'alias'=>'inside12'],
+        ];
+        return $data;
+    }
+
+    private static function seat_info()
+    {
+        $data = [
+            [ 'origin'=>'座椅配置-座椅材质', 'alias'=>'seat0'],
+            [ 'origin'=>'座椅配置-运动风格座椅', 'alias'=>'seat1'],
+            [ 'origin'=>'座椅配置-座椅高低调节', 'alias'=>'seat2'],
+            [ 'origin'=>'座椅配置-腰部支撑调节', 'alias'=>'seat3'],
+            [ 'origin'=>'座椅配置-肩部支撑调节', 'alias'=>'seat4'],
+            [ 'origin'=>'座椅配置-主/副驾驶座电动调节', 'alias'=>'seat5'],
+            [ 'origin'=>'座椅配置-第二排靠背角度调节', 'alias'=>'seat6'],
+            [ 'origin'=>'座椅配置-第二排座椅移动', 'alias'=>'seat7'],
+            [ 'origin'=>'座椅配置-后排座椅电动调节', 'alias'=>'seat8'],
+            [ 'origin'=>'座椅配置-副驾驶位后排可调节按钮', 'alias'=>'seat9'],
+            [ 'origin'=>'座椅配置-电动座椅记忆', 'alias'=>'seat10'],
+            [ 'origin'=>'座椅配置-前排座椅加热', 'alias'=>'seat11'],
+            [ 'origin'=>'座椅配置-后排座椅加热', 'alias'=>'seat12'],
+            [ 'origin'=>'座椅配置-前/后排座椅通风', 'alias'=>'seat13'],
+            [ 'origin'=>'座椅配置-前/后排座椅按摩', 'alias'=>'seat14'],
+            [ 'origin'=>'座椅配置-第二排独立座椅', 'alias'=>'seat15'],
+            [ 'origin'=>'座椅配置-第三排座椅', 'alias'=>'seat16'],
+            [ 'origin'=>'座椅配置-后排座椅放倒方式', 'alias'=>'seat17'],
+            [ 'origin'=>'座椅配置-前中央扶手', 'alias'=>'seat18'],
+            [ 'origin'=>'座椅配置-后中央扶手', 'alias'=>'seat19'],
+            [ 'origin'=>'座椅配置-后排杯架', 'alias'=>'seat20'],
+            [ 'origin'=>'座椅配置-可加热/制冷杯架', 'alias'=>'seat21'],
+            [ 'origin'=>'座椅配置-前/后排座椅加热', 'alias'=>'seat22'],
+            [ 'origin'=>'座椅配置-前/后中央扶手', 'alias'=>'seat23'],
+            [ 'origin'=>'座椅配置-主驾驶座电动调节', 'alias'=>'seat24'],
+            [ 'origin'=>'座椅配置-副驾驶座电动调节', 'alias'=>'seat25'],
+            [ 'origin'=>'座椅配置-前排座椅通风', 'alias'=>'seat26'],
+            [ 'origin'=>'座椅配置-后排座椅通风', 'alias'=>'seat27'],
+            [ 'origin'=>'座椅配置-前排座椅按摩', 'alias'=>'seat28'],
+            [ 'origin'=>'座椅配置-后排座椅按摩', 'alias'=>'seat29'],
+            [ 'origin'=>'座椅配置-可加热冷杯架', 'alias'=>'seat30'],
+            [ 'origin'=>'座椅配置-可加制冷杯架', 'alias'=>'seat31'],
+        ];
+        return $data;
+    }
+
+    private static function media_info()
+    {
+        $data = [
+            [ 'origin'=>'多媒体配置-GPS导航系统', 'alias'=>'media0'],
+            [ 'origin'=>'多媒体配置-定位互动服务', 'alias'=>'media1'],
+            [ 'origin'=>'多媒体配置-中控台彩色大屏', 'alias'=>'media2'],
+            [ 'origin'=>'多媒体配置-中控台彩色大屏尺寸', 'alias'=>'media3'],
+            [ 'origin'=>'多媒体配置-中控液晶屏分屏显示', 'alias'=>'media4'],
+            [ 'origin'=>'多媒体配置-蓝牙/车载电话', 'alias'=>'media5'],
+            [ 'origin'=>'多媒体配置-手机互联/映射', 'alias'=>'media6'],
+            [ 'origin'=>'多媒体配置-车联网', 'alias'=>'media7'],
+            [ 'origin'=>'多媒体配置-车载电视', 'alias'=>'media8'],
+            [ 'origin'=>'多媒体配置-后排液晶屏', 'alias'=>'media9'],
+            [ 'origin'=>'多媒体配置-220V/230V电源', 'alias'=>'media10'],
+            [ 'origin'=>'多媒体配置-外接音源接口', 'alias'=>'media11'],
+            [ 'origin'=>'多媒体配置-CD/DVD', 'alias'=>'media12'],
+            [ 'origin'=>'多媒体配置-扬声器品牌', 'alias'=>'media13'],
+            [ 'origin'=>'多媒体配置-扬声器数量', 'alias'=>'media14'],
+        ];
+        return $data;
+    }
+
+    private static function light_info()
+    {
+        $data = [
+            [ 'origin'=>'灯光配置-近光灯', 'alias'=>'light0'],
+            [ 'origin'=>'灯光配置-远光灯', 'alias'=>'light1'],
+            [ 'origin'=>'灯光配置-LED日间行车灯', 'alias'=>'light2'],
+            [ 'origin'=>'灯光配置-自适应远近光', 'alias'=>'light3'],
+            [ 'origin'=>'灯光配置-自动头灯', 'alias'=>'light4'],
+            [ 'origin'=>'灯光配置-转向辅助灯', 'alias'=>'light5'],
+            [ 'origin'=>'灯光配置-转向头灯', 'alias'=>'light6'],
+            [ 'origin'=>'灯光配置-前雾灯', 'alias'=>'light7'],
+            [ 'origin'=>'灯光配置-大灯高度可调', 'alias'=>'light8'],
+            [ 'origin'=>'灯光配置-大灯清洗装置', 'alias'=>'light9'],
+            [ 'origin'=>'灯光配置-车内氛围灯', 'alias'=>'light10'],
+        ];
+        return $data;
+    }
+
+    private static function glass_info()
+    {
+        $data = [
+            [ 'origin'=>'玻璃/后视镜-前电动车窗', 'alias'=>'glass0'],
+            [ 'origin'=>'玻璃/后视镜-后电动车窗', 'alias'=>'glass1'],
+            [ 'origin'=>'玻璃/后视镜-车窗一键升降', 'alias'=>'glass2'],
+            [ 'origin'=>'玻璃/后视镜-车窗防夹手功能', 'alias'=>'glass3'],
+            [ 'origin'=>'玻璃/后视镜-防紫外线/隔热玻璃', 'alias'=>'glass4'],
+            [ 'origin'=>'玻璃/后视镜-后视镜电动调节', 'alias'=>'glass5'],
+            [ 'origin'=>'玻璃/后视镜-后视镜加热', 'alias'=>'glass6'],
+            [ 'origin'=>'玻璃/后视镜-内/外后视镜自动防眩目', 'alias'=>'glass7'],
+            [ 'origin'=>'玻璃/后视镜-流媒体车内后视镜', 'alias'=>'glass8'],
+            [ 'origin'=>'玻璃/后视镜-后视镜电动折叠', 'alias'=>'glass9'],
+            [ 'origin'=>'玻璃/后视镜-后视镜记忆', 'alias'=>'glass10'],
+            [ 'origin'=>'玻璃/后视镜-后风挡遮阳帘', 'alias'=>'glass11'],
+            [ 'origin'=>'玻璃/后视镜-后排侧遮阳帘', 'alias'=>'glass12'],
+            [ 'origin'=>'玻璃/后视镜-后排侧隐私玻璃', 'alias'=>'glass13'],
+            [ 'origin'=>'玻璃/后视镜-遮阳板化妆镜', 'alias'=>'glass14'],
+            [ 'origin'=>'玻璃/后视镜-后雨刷', 'alias'=>'glass15'],
+            [ 'origin'=>'玻璃/后视镜-感应雨刷', 'alias'=>'glass16'],
+            [ 'origin'=>'玻璃/后视镜-内后视镜自动防眩目', 'alias'=>'glass17'],
+            [ 'origin'=>'玻璃/后视镜-外后视镜自动防眩目', 'alias'=>'glass18'],
+            [ 'origin'=>'玻璃/后视镜-前/后电动车窗', 'alias'=>'glass19'],
+        ];
+        return $data;
+    }
+
+    private static function air_info()
+    {
+        $data = [
+            [ 'origin'=>'空调/冰箱-空调控制方式', 'alias'=>'air0'],
+            [ 'origin'=>'空调/冰箱-后排独立空调', 'alias'=>'air1'],
+            [ 'origin'=>'空调/冰箱-后座出风口', 'alias'=>'air2'],
+            [ 'origin'=>'空调/冰箱-温度分区控制', 'alias'=>'air3'],
+            [ 'origin'=>'空调/冰箱-车内空气调节/花粉过滤', 'alias'=>'air4'],
+            [ 'origin'=>'空调/冰箱-车载空气净化器', 'alias'=>'air5'],
+            [ 'origin'=>'空调/冰箱-车载冰箱', 'alias'=>'air6'],
+        ];
+        return $data;
+    }
+    /**
+     *  read data from file and fill into this _header & _data
+     */
+    public function read_data()
+    {
+        $encoding = $this->encoding();
+        if($encoding == false) return [];
+
+        $data = [];
+
+        $file = @fopen($this->_file, 'r');
+        $i = 0;
+        while( !@feof($file) )
+        {
+            if( $line = @fgets($file) )
+            {
+                if($i == 0) {
+                    $this->_header = explode(self::_delimiter, trim(iconv($encoding, 'UTF-8', $line)));
+                } else {
+                    $data[] = explode(self::_delimiter, trim(iconv($encoding, 'UTF-8', $line)));
+                }
+                $i++;
+            }
+        }
+        if(!empty($data)) {
+            $this->_data = $data;
+        }
+        @fclose($file);
+    }
+    /**
+     * 解析各数据表所属字段在_data中所在位置
+     * @param array $tables: 需解析的数据表名, ['base_info', 'body_info', 'engine_info', 'motor_info', 'gearbox_info', 'underpan_info',
+     *                      'brake_info', 'secure_info', 'oper_info', 'guard_info', 'inside_info', 'seat_info',
+     *                      'media_info', 'light_info', 'glass_info', 'air_info']
+     */
+    public function resolve($tables)
+    {
+        if(empty($this->_header)) {
+            $this->read_data();
+        };
+
+        foreach ($tables as $table) {
+            $this->resolve_field($table);
+        }
+        return $this->_fileds_pos;
+    }
+    /**
+     * 根据表名返回数据
+     * @param $table_name: 'base_info', 'body_info', 'engine_info', 'motor_info', 'gearbox_info', 'underpan_info',
+     *                      'brake_info', 'secure_info', 'oper_info', 'guard_info', 'inside_info', 'seat_info',
+     *                      'media_info', 'light_info', 'glass_info', 'air_info'
+     * @return array
+     */
+    public function get_data($table_name)
+    {
+        if(empty($this->_fileds_pos[$table_name])) {
+            $this->resolve( array($table_name) );
+        }
+
+        if(!isset($this->_fileds_pos[$table_name])) return [];
+
+        $datas = [];
+
+        foreach ($this->_data as $key=>$item)
+        {
+            foreach ($this->_fileds_pos[$table_name] as $index=>$value) {
+                $datas[$key][$index] = $item[$value];
+            }
+        }
+
+        return $datas;
+    }
+    /**
+     * resolve the index of fields in this _header
+     * @param $table_name
+     */
+    private function resolve_field($table_name)
+    {
+        if(!isset(self::$stAlias[$table_name])) return false;
+
+        foreach (self::$stAlias[$table_name] as $alias)
+        {
+            $header_fields[$alias['alias']] = $alias['origin'];
+        }
+
+        if(empty($header_fields)) return false;
+
+        foreach ($this->_header as $key=>$item)
+        {
+            if(in_array($item, $header_fields)) {
+                $index = array_search($item, $header_fields);
+                $this->_fileds_pos[$table_name][$index] = $key;
+            }
+        }
+    }
+    /**
+     * @return false|string
+     */
+    private function encoding()
+    {
+        $content = file_get_contents($this->_file);
+        $encoding = mb_detect_encoding($content, ['GB2312','GBK','UTF-16','UCS-2','UTF-8','BIG5','ASCII']);
+        return $encoding;
+    }
+
+    private function format_type($value, $type)
+    {
+
+    }
+}

+ 130 - 101
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,92 +298,58 @@ 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();
+            }
         }
     }
 
     public function pay_bonus_rates() {
         return $this->mPayRates;
     }
+    public function total_bonus() {
+        return $this->mPayRates->total();
+    }
     public function share_bonus_rates() {
         return $this->mShareRates;
     }
-
-    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 share_total_bonus() {
+        return $this->mShareRates->total();
     }
 
     public function bonus_state() {
@@ -385,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))
         {
@@ -413,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']);
+            }
         }
     }
 
@@ -445,11 +427,6 @@ class predeposit_helper
         return $bonuses;
     }
 
-    public function total_bonus()
-    {
-        return $this->mPayRates->total();
-    }
-
     public function is_enough($money) {
         return intval($this->total_bonus() * 100) >= intval($money * 100);
     }
@@ -622,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)
@@ -940,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;
+        }
+    }
 }

+ 2 - 0
helper/push_helper.php

@@ -171,6 +171,8 @@ class push_helper
             $tmp = $discount / 10;
             $desc = "{$tmp}折";
         }
+
+        $desc = "可抵扣";
         $amount = intval($money * 100 + 0.5) / 100;
         return "{$amount}元{$desc}";
     }

+ 2 - 1
helper/room/base_room.php

@@ -105,7 +105,8 @@ abstract class base_room extends base_info
 
         if($this->join($room_key))
         {
-            $this->add_return([$room_key],'ret_join',$this->room_info($room_key));
+//            $this->add_return([$room_key],'ret_join',$this->room_info($room_key));
+            $this->add_return([$room_key],'ret_join',[]);
             $this->add_broad('join',$this->mRoomkeys[$room_key]);
             return true;
         }

+ 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
helper/shaker_helper.php

@@ -227,7 +227,7 @@ class shaker_helper
 
             $pos = mt_rand(0,$count -1);
             $mod_bonus = Model('user_bonus');
-            $usable_amount = $mod_bonus->getUsableSum($friends[$pos]);
+            $usable_amount = $mod_bonus->getThiefableSum($friends[$pos]);
 
             if(intval($usable_amount * 100 + 0.5) > 0) {
                 return $friends[$pos];

BIN
mac_webacc


+ 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\">

+ 1 - 1
mobile/control/invite_friend.php

@@ -279,7 +279,7 @@ class tpl_invite_friend
                     </div>
                     <div class=\"prompt_list\">
                         <p>1.由于近期发现恶意刷红包用户,为保障体验,在邀请好友之后,需要好友微信授权、注册、下载APP登录后才发邀请奖励。</p>
-                        <p>2.为了您的长期收益,我们建议您邀请真实的朋友。</p>
+                        <p>2.邀请前5名新用户可得10元100%红包,邀请好友数量>5后可得10元40%红包,雨露均沾红包为40%红包,为了您的长期收益,我们建议您邀请真实的朋友。</p>
                         <p>3.您可以点击\"召唤TA\",邀请好友回来。(同一用户每天只能召唤一次)</p>
                         <p>4.熊猫有权解散违规邀请的用户,收回已发红包并关闭相关订单。(具体细节查看规则)</p>
                     </div>

+ 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']);
         }
     }

+ 4 - 9
mobile/templates/default/invite_friend/invite.php

@@ -24,17 +24,12 @@
                 <p>
                     (1).通过您发出邀请链接,好友微信授权、注
                     册下载APP、登录后,您将获得10元100%红包,
-                    累计叠加,上不封顶。好友邀请的好友以此递推,
-                    按层级关系您也会获得1元,0.5元等红包。
+                    5人以后得同等额度四折红包。好友邀请的好
+                    友以此递推,按层级关系您也会获得1元或0.5元
+                    等红包。
                 </p>
                 <p>
-                    (2).您的好友每下一单,您可获得5元100%回
-                    礼红包。好友的好友下单,按层级关系您同样
-                    获得100%不等金额红包。在层级关系中的任
-                    意好友N次下单,您将获得N次红包。
-                </p>
-                <p>
-                    (3).您可以通过分享红包、好物、文章等任意
+                    (2).您可以通过分享红包、好物、文章等任意
                     链接,粘粉新用户注册,即可获得以上福利。
                     注意:
                     该红包可累计使用,有效期为30天,直接在订

BIN
webacc