Bladeren bron

增加注册和登录时充值cookie 过期时间,调整float 为 dobule

stanley-king 8 jaren geleden
bovenliggende
commit
6e0f6a27da

+ 6 - 2
data/model/member.model.php

@@ -135,7 +135,10 @@ class memberModel extends Model
             );
             $this->editMember(array('member_id' => $member_info['member_id']), $update_info);
         }
-        setNcCookie('cart_goods_num', '', -3600);
+
+        if(is_mobile() == false) {
+            setNcCookie('cart_goods_num', '', -3600);
+        }
     }
 
     /**
@@ -605,6 +608,7 @@ class memberModel extends Model
         if (!is_array($member_info) || count($member_info)<=0){
             return 0;  // 用户信息不对
         }
+
         $available_predeposit=floatval($member_info['available_predeposit']);
         $freeze_predeposit=floatval($member_info['freeze_predeposit']);
         $available_relay_balance=floatval($member_info['available_relay_balance']);
@@ -619,6 +623,6 @@ class memberModel extends Model
     }
     public function inc_rate_version($member_id)
     {
-        $this->where(array('member_id' => $member_id))->update(array('rate_version' => array('exp', "rate_version+1")));
+        $this->table('member')->where(array('member_id' => $member_id))->update(array('rate_version' => array('exp', "rate_version+1")));
     }
 }

+ 7 - 0
helper/account_helper.php

@@ -430,4 +430,11 @@ class account_helper
             self::bonus_refund($sn,$member_id);
         }
     }
+
+
+    public static function onRegister($member_id)
+    {
+        account_helper::register_bonus($member_id);
+        //relation_helper::onRegister($insert_id,$mobile,$member_info['member_nickname']);
+    }
 }

+ 2 - 2
helper/activity/bundling.php

@@ -80,7 +80,7 @@ class bundling
 
         $ret['bl_id'] = intval($val['bl_id']);
         $ret['bl_name'] = $val['bl_name'];
-        $ret['bl_price'] = floatval($val['bl_discount_price']);
+        $ret['bl_price'] = doubleval($val['bl_discount_price']);
 
         $goods_ids = array();
 
@@ -89,7 +89,7 @@ class bundling
         {
             $goods_id = intval($goods['goods_id']);
             $item['goods_id'] = $goods_id;
-            $item['bl_goods_price'] = floatval($goods['bl_goods_price']);
+            $item['bl_goods_price'] = doubleval($goods['bl_goods_price']);
 
             if(algorithm::binary_search($goods_ids,$goods_id) == false) {
                 $pos = algorithm::lower_bonud($goods_ids,$goods_id);

+ 1 - 1
helper/activity/full_sent.php

@@ -122,7 +122,7 @@ class full_sent
 
     private function filter($rule)
     {
-        $discount = floatval($rule['discount']) * 100 + 0.5;
+        $discount = doubleval($rule['discount']) * 100 + 0.5;
         $discount = intval($discount);
 
         if($discount > 0) {

+ 2 - 2
helper/activity/groupbuy.php

@@ -34,8 +34,8 @@ class group_item
         $info['start_time']      = intval($this->mParam['start_time']);
         $info['end_time']        = intval($this->mParam['end_time']);
         $info['goods_id']        = intval($this->mParam['goods_id']);
-        $info['promotion_price'] = floatval($this->mParam['groupbuy_price']);
-        $info['rebate']          = floatval($this->mParam['groupbuy_rebate']);
+        $info['promotion_price'] = doubleval($this->mParam['groupbuy_price']);
+        $info['rebate']          = doubleval($this->mParam['groupbuy_rebate']);
         $info['quantity']        = intval($this->mParam['virtual_quantity']);
         $info['upper_limit']     = intval($this->mParam['upper_limit']);
         $info['buyer_count']     = intval($this->mParam['buyer_count']);

+ 7 - 7
helper/bonus/allocator.php

@@ -13,13 +13,13 @@ class allocator
 {
     private function get_maxamount($total,$num)
     {
-        $avg = floatval($total / $num);
+        $avg = doubleval($total / $num);
         return intval($avg * 2 + 0.5);
     }
 
     private function get_minamount($total,$num)
     {
-        $avg = floatval($total / $num);
+        $avg = doubleval($total / $num);
         $avg = $avg / 10;
         $avg = intval($avg + 0.5);
 
@@ -30,7 +30,7 @@ class allocator
      */
     public function separate_money($min_amount,$total_amount,$total_num,&$min_val,&$max_val)
     {
-        $min_amount = intval(floatval($min_amount) * 100 + 0.5);
+        $min_amount = intval(doubleval($min_amount) * 100 + 0.5);
         $base_amount = $min_amount;
         $num = intval($total_num);
 
@@ -39,7 +39,7 @@ class allocator
             array_push($ret,$base_amount);
         }
 
-        $total_amount = intval(intval(floatval($total_amount) * 100 + 0.5) - $num * $base_amount);
+        $total_amount = intval(intval(doubleval($total_amount) * 100 + 0.5) - $num * $base_amount);
         $min_amount = $this->get_minamount($total_amount,$num);
 
         if($min_amount > 0)
@@ -68,13 +68,13 @@ class allocator
             }
         }
 
-        $max_val = floatval($max_val) / 100;
+        $max_val = doubleval($max_val) / 100;
         $min_val = $ret[0];
         foreach ($ret as &$val) {
             $min_val = $min_val > $val ? $val : $min_val;
-            $val = floatval($val) / 100;
+            $val = doubleval($val) / 100;
         }
-        $min_val = floatval($min_val) / 100;
+        $min_val = doubleval($min_val) / 100;
 
         for($index = 0; $index < $num - 1; $index++) {
             $pos_a = mt_rand(0, $num - 1);

+ 2 - 2
helper/bonus/sender.php

@@ -54,7 +54,7 @@ class sender
 
         if(bonus_helper::isFixed($send_type))
         {
-            $fixed_mondey = floatval($input['fixed_money']);
+            $fixed_mondey = doubleval($input['fixed_money']);
             if ($fixed_mondey * 100 < 1) {
                 $ret = array('code' => errcode::ErrParamter,'msg' => "红包额度不能小于一分钱.");
                 return false;
@@ -64,7 +64,7 @@ class sender
         }
         else if (bonus_helper::isRandom($send_type))
         {
-            $total_amount = floatval($input['total_amount']);
+            $total_amount = doubleval($input['total_amount']);
             if($total_amount * 100 < $param['total_num']) {
                 $ret = array('code' => errcode::ErrParamter,'msg' => "金额不够.");
                 return false;

+ 3 - 3
helper/bonus/shaker.php

@@ -51,7 +51,7 @@ class shaker
                     }
                 }
 
-                $total_amount = floatval($total_amount / 100);
+                $total_amount = doubleval($total_amount / 100);
                 $ret = $this->separate($bonus_val,$total_amount,$total_num,$direction,$strength);
                 if($ret == true)
                 {
@@ -136,7 +136,7 @@ class shaker
             return 0;
         }
 
-        $avg = floatval($total / $num);
+        $avg = doubleval($total / $num);
         $avg = intval($avg * $mul + 0.5);
         return mt_rand(0,$avg);
     }
@@ -168,7 +168,7 @@ class shaker
             $strength = 1;
         }
 
-        $weight = intval(floatval($total_num / self::max_strength) * $strength + 0.5);
+        $weight = intval(doubleval($total_num / self::max_strength) * $strength + 0.5);
         return ($weight > $total_num) ? $total_num : $weight;
     }
 

+ 2 - 2
helper/bonus/type.php

@@ -94,7 +94,7 @@ class type
             $avg = ($this->mParam['total_amount'] * 100 - $this->mParam['total_num']) / $this->mParam['total_num'];
             $max_val = $avg * 2;
             $max = $max_def > $max_val ?  $max_val : $max_def;
-            $this->mParam['max_amount'] = floatval($max) / 100;
+            $this->mParam['max_amount'] = doubleval($max) / 100;
         }
 
         $this->mParam['remain_amount'] = $this->mParam['total_amount'];
@@ -200,7 +200,7 @@ class type
     }
     public function isMaxAmount($value)
     {
-        $max_val = intval(floatval($this->mParam['max_amount']) * 100);
+        $max_val = intval(doubleval($this->mParam['max_amount']) * 100);
         return ($max_val == intval($value * 100));
     }
     public function make_type()

+ 5 - 5
helper/bonus/user_bonus.php

@@ -50,8 +50,8 @@ class user_bonus
         return intval($this->mParamer['type_id']);
     }
     public function bonus_value() {
-        $val = intval(floatval($this->mParamer['bonus_value']) * 100 + 0.5);
-        return floatval($val) / 100;
+        $val = intval(doubleval($this->mParamer['bonus_value']) * 100 + 0.5);
+        return doubleval($val) / 100;
     }
     public function bonus_status()
     {
@@ -71,12 +71,12 @@ class user_bonus
     }
 
     public function remain_amount() {
-        $val = intval(floatval($this->mParamer['remain_amount']) * 100 + 0.5);
-        return floatval($val) / 100;
+        $val = intval(doubleval($this->mParamer['remain_amount']) * 100 + 0.5);
+        return doubleval($val) / 100;
     }
 
     public function spend_over() {
-        $remain = intval(floatval($this->mParamer['remain_amount']) * 100 + 0.5);
+        $remain = intval(doubleval($this->mParamer['remain_amount']) * 100 + 0.5);
         return ($remain == 0);
     }
 

+ 0 - 1
helper/model/goods_summary.php

@@ -86,7 +86,6 @@ class goods_summary
         $summary['goods_state'] = intval($this->goods_info['goods_state']);
         $summary['goods_salenum'] = intval($this->goods_info['goods_salenum']);
         $summary['goods_storage'] = intval($this->goods_info['goods_storage']);
-
         //return $summary;
 
 

+ 3 - 3
helper/pay_helper.php

@@ -57,7 +57,7 @@ class pay_helper
             return false;
         }
 
-        $left_cents = intval(floatval($payinfo['data']['api_pay_amount']) * 100 + 0.5);
+        $left_cents = intval(doubleval($payinfo['data']['api_pay_amount']) * 100 + 0.5);
         if($left_cents == 0)
         {
             $output['need_pay'] = false;
@@ -187,8 +187,8 @@ class pay_helper
         if(is_array($data['order_list']))
         {
             foreach($data['order_list'] as $key => $order) {
-                $order_amount += floatval($order['order_amount']);
-                $goods_amount += floatval($order['goods_amount']);
+                $order_amount += doubleval($order['order_amount']);
+                $goods_amount += doubleval($order['goods_amount']);
             }
 
             $mod = Model('order');

+ 1 - 1
helper/predeposit_helper.php

@@ -783,7 +783,7 @@ class predeposit_helper
         {
             $goods_type = intval($goods['goods_type']);
             if($goods_type == 1) {
-                $pred_amount += floatval($goods['goods_pay_price']);
+                $pred_amount += doubleval($goods['goods_pay_price']);
             }
         }
 

+ 36 - 13
helper/session.php

@@ -42,7 +42,7 @@ class session
     {
         $this->fdestroy = false;
         session_start();
-        $_SESSION['MPHPSESSID'] = $_COOKIE[self::session_name];
+        $_SESSION['MPHPSESSID'] = $this->sessid;
     }
 
     public function end()
@@ -89,6 +89,7 @@ class session
         {
             $sid = $_COOKIE[self::session_name];
             Log::record("APP MPHPSESSID = {$sid}." , Log::DEBUG);
+            return $this->from_certain($sid);
         }
         else
         {
@@ -97,24 +98,46 @@ class session
 
             if(isset($_POST['HPHPSESSID']) && !empty($_POST['HPHPSESSID']))
             {
-                $msid = $_POST['HPHPSESSID'];
-                if($sid != $msid) {
-                    $sid = $msid;
-                    //todo 此行代码可能问题待验证
-                    //$this->set_cookie($sid);
-                    $_COOKIE[self::session_name] = $sid;
+                $hsid = $_POST['HPHPSESSID'];
+                $this->sessid = $hsid;
+                if($sid == $hsid) {
+                    return $this->from_certain($sid);
+                } else {
+                    return $this->from_uncertain($hsid);
                 }
             }
-            Log::record("WAP HPHPSESSID = {$sid}." , Log::DEBUG);
+            else
+            {
+                return $this->from_certain($sid);
+            }
         }
+    }
+    private function from_uncertain($sid)
+    {
+        if(empty($sid))
+        {
+            return '';
+        }
+        else
+        {
+            $data = rcache($sid,self::prefix);
+            if(empty($data)) {
+                return '';
+            } else {
+                $this->sessid = $sid;
+                return $data[self::session_name];
+            }
+        }
+    }
 
+    private function from_certain($sid)
+    {
         if(empty($sid))
         {
             $ret = session_regenerate_id(false);
             if($ret == true) {
                 $sid = session_id();
                 $this->set_cookie($sid);
-                $_COOKIE[self::session_name] = $sid;
                 $this->sessid = $sid;
             } else {
                 Log::record("session_regenerate_id error.",Log::ERR);
@@ -133,7 +156,6 @@ class session
                     $sid = session_id();
                     $this->set_cookie($sid);
                     $this->sessid = $sid;
-                    $_COOKIE[self::session_name] = $sid;
                 } else {
                     Log::record("session_regenerate_id error.",Log::ERR);
                 }
@@ -150,7 +172,8 @@ class session
         return true;
     }
 
-    public function onWrite($sid, $data) {
+    public function onWrite($sid, $data)
+    {
         if($this->fdestroy) {
             dcache($this->sessid,self::prefix);
         } else {
@@ -168,7 +191,7 @@ class session
         return true;
     }
 
-    private function set_cookie($sid)
+    public function set_cookie($sid)
     {
         $expire_time = time() + $this->expire_min() * 60;
         if(is_localdebug()) {
@@ -181,7 +204,7 @@ class session
     private function expire_min()
     {
         if(is_debug()) {
-            return 10;
+            return 2;
         } else {
             return 43200;
         }

+ 1 - 0
helper/sms_helper.php

@@ -42,6 +42,7 @@ class sms_helper
 
         //$sms = new Sms();
         $code = makeSmscode();
+        Log::record("sms code = {$code}",Log::DEBUG);
         //Logic('queue')->sendSMS(array('mobile'=>$mobile,'type'=>$itype,'datas' => array('code'=>$code,'time'=>'5')));
         QueueClient::push('sendSMS',array('mobile'=>$mobile,'type'=>$itype,'datas' => array('code'=>$code,'time'=>'5')));
         $status = 0;

+ 1 - 1
helper/special_helper.php

@@ -387,7 +387,7 @@ class special_helper
         }
         $ret = getimagesize($image,$info);
         if($ret != false) {
-            $scale = floatval($ret[0]) / floatval($ret[1]);
+            $scale = doubleval($ret[0]) / doubleval($ret[1]);
             return $scale;
         } else {
             Log::record("special scale getimagesize error {$image}",Log::ERR);

+ 1 - 1
mobile/alipay_notify_url.php

@@ -10,7 +10,7 @@ require_once(BASE_DATA_PATH   . '/logic/delivery.logic.php');
 
 $pay_sn = $_POST['out_trade_no'];       // 商户订单号
 $trade_no = $_POST['trade_no'];         // 支付宝交易号
-$total_fee = floatval(trim($_POST['total_fee']));
+$total_fee = doubleval(trim($_POST['total_fee']));
 
 Log::record("alipay_notify_url: pay_sn={$pay_sn} total_fee={$total_fee}", Log::DEBUG);
 

+ 1 - 1
mobile/control/app_pay.php

@@ -80,7 +80,7 @@ class app_payControl extends mbMemberControl
 
         // 判断是否需要支付
         $output = array();
-        $pay_money = intval(floatval($result['data']['api_pay_amount']) * 100 + 0.5);
+        $pay_money = intval(doubleval($result['data']['api_pay_amount']) * 100 + 0.5);
         if ($pay_money >= 1)
         {
             $output['need_pay'] = 1;

+ 47 - 31
mobile/control/login.php

@@ -15,6 +15,7 @@ require_once(BASE_ROOT_PATH . '/helper/field_helper.php');
 require_once(BASE_ROOT_PATH . '/helper/session_helper.php');
 require_once(BASE_ROOT_PATH . '/helper/relation_helper.php');
 require_once(BASE_ROOT_PATH . '/helper/account_helper.php');
+require_once(BASE_ROOT_PATH . '/helper/session.php');
 
 //登录,获取验证码,注册
 
@@ -33,19 +34,22 @@ class loginControl extends mobileHomeControl
         parent::__construct();
     }
 
-    /**
-     * 登录
-     */
+    public function statusOp()
+    {
+        if ($_SESSION['is_login'] == '1') {
+            session::instance()->set_cookie($_SESSION['MPHPSESSID']);
+            return self::outsuccess(array('member_id' => $_SESSION['member_id']));
+        } else {
+            return self::outsuccess(NULL);
+        }
+    }
+
     public function loginOp()
     {
         if ($_SESSION['is_login'] == '1') { //检查是否已经登录
             return self::outsuccess(array('member_id' => $_SESSION['member_id'],'HPHPSESSID' => $_SESSION['MPHPSESSID']));
         }
 
-//        if (process::islock('login')) { //检查登录操作是否已经锁定
-//            return self::outerr(errcode::ErrOperRepeat);
-//        }
-
         $type = intval(trim($_POST['type']));
         if (!isset($type) || !in_array($type, $this->client_login_type_array)) {
             return self::outerr(errcode::ErrParamter, 'type error.');
@@ -80,7 +84,6 @@ class loginControl extends mobileHomeControl
         }
         else
         {
-//            process::addprocess('login');
             if($type == self::wxopen_login) { //如果是开放平台帐号,此处先需要注册
                 return self::outerr(errcode::ErrWxNotExist);
             } else {
@@ -89,15 +92,11 @@ class loginControl extends mobileHomeControl
         }
 
         $model_member->createSession($member_info);
-//        process::clear('login');
-
-        //这两处代码应该从session merge 到数据库中.
-        // cookie中的cart存入数据库
         Model('cart')->mergecart($member_info, $_SESSION['store_id']);
-        // cookie中的浏览记录存入数据库
         Model('goods_browse')->mergebrowse($_SESSION['member_id'], $_SESSION['store_id']);
         relation_helper::onLogin($_SESSION['member_id']);
 
+        session::instance()->set_cookie($_SESSION['MPHPSESSID']);
         return self::outsuccess(array('member_id' => $_SESSION['member_id'],'HPHPSESSID' => $_SESSION['MPHPSESSID']));
     }
 
@@ -227,10 +226,16 @@ class loginControl extends mobileHomeControl
             $insert_id = $model->addMember($member_info);
             if ($insert_id == false) {
                 return self::outerr(errcode::ErrRegister);
-            } else {
-                account_helper::register_bonus($insert_id);
-                relation_helper::onRegister($insert_id,$mobile,$member_info['member_nickname']);
-                return self::outsuccess(NULL);
+            }
+            else
+            {
+                $model->createSession($member_info);
+                Model('cart')->mergecart($member_info, $_SESSION['store_id']);
+                Model('goods_browse')->mergebrowse($_SESSION['member_id'], $_SESSION['store_id']);
+                account_helper::onRegister($_SESSION['member_id']);
+
+                session::instance()->set_cookie($_SESSION['MPHPSESSID']);
+                return self::outsuccess(array('member_id' => $_SESSION['member_id'],'HPHPSESSID' => $_SESSION['MPHPSESSID']));
             }
         }
     }
@@ -269,9 +274,7 @@ class loginControl extends mobileHomeControl
     }
 
     /**
-     * 微信绑定
-     *
-     * 输入参数:
+     * 微信注册登录
      * wx_openid 微信id
      * user_info: 用户信息
      * mobile: 手机号
@@ -306,21 +309,27 @@ class loginControl extends mobileHomeControl
         if (empty($ret))
         {
             $passwd = $_POST['passwd'];
-            if(isset($passwd) && !empty($passwd)) {
-                $member_info = array('member_mobile' => $mobile,
-                    'member_type' => self::mobile_login,
-                    'member_passwd' => $passwd,
-                    'member_sex' => 0,
-                    'member_name' => $mobile,
-                    'member_nickname' => substr_replace($mobile, '****', 3, 4),
-                    'member_mobile_bind' => 1);
-                $member_id = $model->addMember($member_info);
+            $validator = new Validate();
+            $validator->setValidate(Validate::verify_password($passwd));
+            $err = $validator->validate();
+            if ($err != '') {
+                return self::outerr(errcode::ErrInputParam,$err);
             }
 
+            $member_info = array('member_mobile' => $mobile,
+                'member_type' => self::mobile_login,
+                'member_passwd' => $passwd,
+                'member_sex' => 0,
+                'member_name' => $mobile,
+                'member_nickname' => substr_replace($mobile, '****', 3, 4),
+                'member_mobile_bind' => 1);
+            $member_id = $model->addMember($member_info);
+
             if(!isset($member_id) || $member_id == false) {
                 return self::outerr(errcode::ErrMemberNotExist);
             }
-        } else {
+        }
+        else {
             $member_id = $ret['member_id'];
         }
 
@@ -337,7 +346,14 @@ class loginControl extends mobileHomeControl
         if (!$ret) {
             return self::outerr(errcode::ErrDB);
         } else {
-            return self::outsuccess(null);
+            $info = $model->getMemberInfoByID($member_id);
+            $model->createSession($info);
+            Model('cart')->mergecart($info, $_SESSION['store_id']);
+            Model('goods_browse')->mergebrowse($_SESSION['member_id'], $_SESSION['store_id']);
+            account_helper::onRegister($_SESSION['member_id']);
+
+            session::instance()->set_cookie($_SESSION['MPHPSESSID']);
+            return self::outsuccess(array('member_id' => $_SESSION['member_id'],'HPHPSESSID' => $_SESSION['MPHPSESSID']));
         }
     }
 }

+ 1 - 1
mobile/control/member_bonus.php

@@ -366,7 +366,7 @@ class member_bonusControl extends mbMemberControl
                     $avatar = $member->avatar();
                     $max_rate = $rate;
                 }
-                $total_amount += floatval($item['bonus_value']);
+                $total_amount += doubleval($item['bonus_value']);
             }
             $count = count($items);
             $title = "您新领了{$count}个,价值{$total_amount}元的红包.";

+ 2 - 2
mobile/control/member_refund.php

@@ -116,7 +116,7 @@ class member_refundControl extends mbMemberControl
         $rec_id = intval($_GET['rec_id']);
         $buyer_msg = isset($_GET['buyer_message']) ? remove_tags(urldecode($_GET['buyer_message'])) : '';
         $goods_num = intval($_GET['goods_num']);
-        $refund_amount = floatval($_GET['refund_amount']);
+        $refund_amount = doubleval($_GET['refund_amount']);
         $reason_id = intval($_GET['reason_id']);//退货退款原因
 
         if(empty($order_sn) || $rec_id <= 0) {
@@ -327,7 +327,7 @@ class member_refundControl extends mbMemberControl
             $reson_info = $reason_array['reason_info'];
         }
         $goods_num = intval($_POST['goods_num']);//退货数量
-        $refund_amount = floatval($_POST['refund_amount']);//退款金额
+        $refund_amount = doubleval($_POST['refund_amount']);//退款金额
 
         ////////////////////////////////////////////////////////////////
         $condition = array();