Ver código fonte

add to local

stanley-king 6 anos atrás
pai
commit
5165470c87

+ 13 - 0
core/framework/libraries/log.php

@@ -55,6 +55,19 @@ class Log
         }
     }
 
+    public static function record_path($message, $lev = self::DEBUG)
+    {
+        self::record($message, $lev);
+
+        $now = @date('Y-m-d H:i:s', time());
+        $pid = posix_getpid();
+        $level = 'USER_PATH';
+        $log_file = BASE_DATA_PATH . '/log/' . date('Ymd', time()) . '-path.log';
+        $content = "[{$pid} {$now}] {$level}: {$message}\r\n";
+        file_put_contents($log_file, $content, FILE_APPEND);
+        return;
+
+    }
     public static function record($message, $lev = self::ERR)
     {
         $now = @date('Y-m-d H:i:s', time());

+ 5 - 5
data/logic/buy.logic.php

@@ -8,8 +8,6 @@
  * by abc  www.abc.com 开发ls
  */
 
-use bonus\account;
-
 defined('InShopNC') or exit('Access Invalid!');
 require_once (BASE_ROOT_PATH . '/helper/goods/commonid_helper.php');
 
@@ -263,7 +261,6 @@ class buyLogic
         try
         {
             $model = Model('order');
-
             $account = new bonus\account($member_id,false);
             $trans = new trans_wapper($model,__METHOD__);
             //第1步 表单验证
@@ -275,7 +272,7 @@ class buyLogic
             //第4步 生成订单
             $this->_createOrderStep4($use_bonus,$account);
             //第5步 处理预存款
-            $this->_createOrderStep5();
+            $this->_createOrderStep5($use_bonus,$account);
             $trans->commit();
         }
         catch (Exception $e)
@@ -974,9 +971,12 @@ class buyLogic
      * 充值卡、预存款、红包支付
      *
      */
-    private function _createOrderStep5()
+    private function _createOrderStep5($use_bonus,bonus\IPriceCalculate $priceCalculate)
     {
         $buyer_info	= Model('member')->getMemberInfoByID($this->_member_info['member_id']);
+        if($use_bonus) {
+            $this->_logic_buy_1->bonusPay($this->_order_data['order_list'], $this->_post_data, $buyer_info,$priceCalculate);
+        }
 
         if (empty($this->_post_data['password'])) return;
         if ($buyer_info['member_paypwd'] == '' || $buyer_info['member_paypwd'] != md5($this->_post_data['password'])) return ;

+ 7 - 7
data/logic/buy_1.logic.php

@@ -583,7 +583,7 @@ class buy_1Logic
      * 预存款支付,依次循环每个订单
      * 如果预存款足够就单独支付了该订单,如果不足就暂时冻结,等API支付成功了再彻底扣除
      */
-    public function bonusPay($order_list, $input, $buyer_info)
+    public function pdPay($order_list, $input, $buyer_info)
     {
         $member_id = $buyer_info['member_id'];
         $member_name = $buyer_info['member_name'];
@@ -649,7 +649,7 @@ class buy_1Logic
                 $param['code'] = 'new_order';
                 $param['store_id'] = $order_info['store_id'];
                 $param['param'] = array(
-                    'order_sn' => $order_info['order_sn']
+                        'order_sn' => $order_info['order_sn']
                 );
                 QueueClient::push('sendStoreMsg', $param);
             }
@@ -676,14 +676,11 @@ class buy_1Logic
      * 预存款支付,依次循环每个订单
      * 如果预存款足够就单独支付了该订单,如果不足就暂时冻结,等API支付成功了再彻底扣除
      */
-    public function pdPay($order_list, $input, $buyer_info)
+    public function bonusPay($order_list, $input, $buyer_info,bonus\IPriceCalculate $priceCalculate)
     {
         $member_id = $buyer_info['member_id'];
         $member_name = $buyer_info['member_name'];
 
-        $available_pd_amount = floatval($buyer_info['available_predeposit']);
-        if ($available_pd_amount <= 0) return;
-
         $model_order = Model('order');
         $model_pd = Model('predeposit');
         foreach ($order_list as $order_info)
@@ -692,6 +689,9 @@ class buy_1Logic
             if ($order_info['payment_code'] == 'offline') continue;
             if ($order_info['order_state'] == ORDER_STATE_PAY) continue;
 
+            $bonus_amount = $order_info['bonus_amount'];
+//            $priceCalculate->pay();
+
             $order_amount = floatval($order_info['order_amount']) - floatval($order_info['rcb_amount']);
             $data_pd = array();
             $data_pd['member_id'] = $member_id;
@@ -742,7 +742,7 @@ class buy_1Logic
                 $param['code'] = 'new_order';
                 $param['store_id'] = $order_info['store_id'];
                 $param['param'] = array(
-                        'order_sn' => $order_info['order_sn']
+                    'order_sn' => $order_info['order_sn']
                 );
                 QueueClient::push('sendStoreMsg', $param);
             }

+ 198 - 7
data/model/predeposit.model.php

@@ -209,23 +209,20 @@ class predepositModel extends Model {
         }
 
         // 添加日志
-        $log = array(
-            'member_id' => $data['member_id'],
+        $log = array('member_id' => $data['member_id'],
             'member_name' => $data['member_name'],
             'type' => $type,
             'add_time' => time(),
             'available_amount' => $available,
             'freeze_amount' => $freeze,
-            'description' => $desc,
-        );
+            'description' => $desc);
 
         $insertSuccess = $this->table('rcb_log')->insert($log);
         if (!$insertSuccess) {
             throw new Exception('操作失败');
         }
 
-        $msg = array(
-            'code' => 'recharge_card_balance_change',
+        $msg = array('code' => 'recharge_card_balance_change',
             'member_id' => $data['member_id'],
             'param' => array(
                 'time' => date('Y-m-d H:i:s', time()),
@@ -248,7 +245,201 @@ class predepositModel extends Model {
      * @throws Exception
      * @return unknown
      */
-    public function changePd($change_type,$data = array())
+    public function changePd($change_type,$data = array()) {
+        $data_log = array();
+        $data_pd = array();
+        $data_msg = array();
+
+        $data_log['lg_member_id'] = $data['member_id'];
+        $data_log['lg_member_name'] = $data['member_name'];
+        $data_log['lg_add_time'] = TIMESTAMP;
+        $data_log['lg_type'] = $change_type;
+
+        $data_msg['time'] = date('Y-m-d H:i:s');
+        $data_msg['pd_url'] = urlShop('predeposit', 'pd_log_list');
+        switch ($change_type){
+            case 'order_pay':
+                $data_log['lg_av_amount'] = -$data['amount'];
+                $data_log['lg_desc'] = '下单,支付预存款,订单号: '.$data['order_sn'];
+                $data_pd['available_predeposit'] = array('exp','available_predeposit-'.$data['amount']);
+
+                $data_msg['av_amount'] = -$data['amount'];
+                $data_msg['freeze_amount'] = 0;
+                $data_msg['desc'] = $data_log['lg_desc'];
+                break;
+            case 'order_freeze':
+                $data_log['lg_av_amount'] = -$data['amount'];
+                $data_log['lg_freeze_amount'] = $data['amount'];
+                $data_log['lg_desc'] = '下单,冻结预存款,订单号: '.$data['order_sn'];
+                $data_pd['freeze_predeposit'] = array('exp','freeze_predeposit+'.$data['amount']);
+                $data_pd['available_predeposit'] = array('exp','available_predeposit-'.$data['amount']);
+
+                $data_msg['av_amount'] = -$data['amount'];
+                $data_msg['freeze_amount'] = $data['amount'];
+                $data_msg['desc'] = $data_log['lg_desc'];
+                break;
+            case 'order_cancel':
+                $data_log['lg_av_amount'] = $data['amount'];
+                $data_log['lg_freeze_amount'] = -$data['amount'];
+                $data_log['lg_desc'] = '取消订单,解冻预存款,订单号: '.$data['order_sn'];
+                $data_pd['freeze_predeposit'] = array('exp','freeze_predeposit-'.$data['amount']);
+                $data_pd['available_predeposit'] = array('exp','available_predeposit+'.$data['amount']);
+
+                $data_msg['av_amount'] = $data['amount'];
+                $data_msg['freeze_amount'] = -$data['amount'];
+                $data_msg['desc'] = $data_log['lg_desc'];
+                break;
+            case 'order_comb_pay':
+                $data_log['lg_freeze_amount'] = -$data['amount'];
+                $data_log['lg_desc'] = '下单,支付被冻结的预存款,订单号: '.$data['order_sn'];
+                $data_pd['freeze_predeposit'] = array('exp','freeze_predeposit-'.$data['amount']);
+
+                $data_msg['av_amount'] = 0;
+                $data_msg['freeze_amount'] = $data['amount'];
+                $data_msg['desc'] = $data_log['lg_desc'];
+                break;
+            case 'recharge':
+                $data_log['lg_av_amount'] = $data['amount'];
+                $data_log['lg_desc'] = '充值,充值单号: '.$data['pdr_sn'];
+                $data_log['lg_admin_name'] = $data['admin_name'];
+                $data_pd['available_predeposit'] = array('exp','available_predeposit+'.$data['amount']);
+
+                $data_msg['av_amount'] = $data['amount'];
+                $data_msg['freeze_amount'] = 0;
+                $data_msg['desc'] = $data_log['lg_desc'];
+                break;
+
+            case 'refund':
+                $data_log['lg_av_amount'] = $data['amount'];
+                $data_log['lg_desc'] = '确认退款,订单号: '.$data['order_sn'];
+                $data_pd['available_predeposit'] = array('exp','available_predeposit+'.$data['amount']);
+
+                $data_msg['av_amount'] = $data['amount'];
+                $data_msg['freeze_amount'] = 0;
+                $data_msg['desc'] = $data_log['lg_desc'];
+                break;
+            case 'vr_refund':
+                $data_log['lg_av_amount'] = $data['amount'];
+                $data_log['lg_desc'] = '虚拟兑码退款成功,订单号: '.$data['order_sn'];
+                $data_pd['available_predeposit'] = array('exp','available_predeposit+'.$data['amount']);
+
+                $data_msg['av_amount'] = $data['amount'];
+                $data_msg['freeze_amount'] = 0;
+                $data_msg['desc'] = $data_log['lg_desc'];
+                break;
+            case 'cash_apply':
+                $data_log['lg_av_amount'] = -$data['amount'];
+                $data_log['lg_freeze_amount'] = $data['amount'];
+                $data_log['lg_desc'] = '申请提现,冻结预存款,提现单号: '.$data['order_sn'];
+                $data_pd['available_predeposit'] = array('exp','available_predeposit-'.$data['amount']);
+                $data_pd['freeze_predeposit'] = array('exp','freeze_predeposit+'.$data['amount']);
+
+                $data_msg['av_amount'] = -$data['amount'];
+                $data_msg['freeze_amount'] = $data['amount'];
+                $data_msg['desc'] = $data_log['lg_desc'];
+                break;
+            case 'cash_pay':
+                $data_log['lg_freeze_amount'] = -$data['amount'];
+                $data_log['lg_desc'] = '提现成功,提现单号: '.$data['order_sn'];
+                $data_log['lg_admin_name'] = $data['admin_name'];
+                $data_pd['freeze_predeposit'] = array('exp','freeze_predeposit-'.$data['amount']);
+
+                $data_msg['av_amount'] = 0;
+                $data_msg['freeze_amount'] = -$data['amount'];
+                $data_msg['desc'] = $data_log['lg_desc'];
+                break;
+            case 'cash_del':
+                $data_log['lg_av_amount'] = $data['amount'];
+                $data_log['lg_freeze_amount'] = -$data['amount'];
+                $data_log['lg_desc'] = '取消提现申请,解冻预存款,提现单号: '.$data['order_sn'];
+                $data_log['lg_admin_name'] = $data['admin_name'];
+                $data_pd['available_predeposit'] = array('exp','available_predeposit+'.$data['amount']);
+                $data_pd['freeze_predeposit'] = array('exp','freeze_predeposit-'.$data['amount']);
+
+                $data_msg['av_amount'] = $data['amount'];
+                $data_msg['freeze_amount'] = -$data['amount'];
+                $data_msg['desc'] = $data_log['lg_desc'];
+                break;
+            ////////////////////zmr>v20////////////////////////////////////
+            case 'sys_add_money':
+                $data_log['lg_av_amount'] = $data['amount'];
+                $data_log['lg_desc'] = '管理员调节预存款【增加】,充值单号: '.$data['pdr_sn'];
+                $data_log['lg_admin_name'] = $data['admin_name'];
+                $data_pd['available_predeposit'] = array('exp','available_predeposit+'.$data['amount']);
+
+                $data_msg['av_amount'] = $data['amount'];
+                $data_msg['freeze_amount'] = 0;
+                $data_msg['desc'] = $data_log['lg_desc'];
+                break;
+            case 'sys_del_money':
+                $data_log['lg_av_amount'] = -$data['amount'];
+                $data_log['lg_desc'] = '管理员调节预存款【减少】,充值单号: '.$data['pdr_sn'];
+                $data_pd['available_predeposit'] = array('exp','available_predeposit-'.$data['amount']);
+
+                $data_msg['av_amount'] = -$data['amount'];
+                $data_msg['freeze_amount'] = 0;
+                $data_msg['desc'] = $data_log['lg_desc'];
+                break;
+            case 'sys_freeze_money':
+                $data_log['lg_av_amount'] = -$data['amount'];
+                $data_log['lg_freeze_amount'] = $data['amount'];
+                $data_log['lg_desc'] = '管理员调节预存款【冻结】,充值单号: '.$data['pdr_sn'];
+                $data_pd['available_predeposit'] = array('exp','available_predeposit-'.$data['amount']);
+                $data_pd['freeze_predeposit'] = array('exp','freeze_predeposit+'.$data['amount']);
+
+                $data_msg['av_amount'] = -$data['amount'];
+                $data_msg['freeze_amount'] = $data['amount'];
+                $data_msg['desc'] = $data_log['lg_desc'];
+                break;
+            case 'sys_unfreeze_money':
+                $data_log['lg_av_amount'] = $data['amount'];
+                $data_log['lg_freeze_amount'] = -$data['amount'];
+                $data_log['lg_desc'] = '管理员调节预存款【解冻】,充值单号: '.$data['pdr_sn'];
+                $data_log['lg_admin_name'] = $data['admin_name'];
+                $data_pd['available_predeposit'] = array('exp','available_predeposit+'.$data['amount']);
+                $data_pd['freeze_predeposit'] = array('exp','freeze_predeposit-'.$data['amount']);
+
+                $data_msg['av_amount'] = $data['amount'];
+                $data_msg['freeze_amount'] = -$data['amount'];
+                $data_msg['desc'] = $data_log['lg_desc'];
+                break;
+
+            //////////////////////////////////////////////////////
+
+            default:
+                throw new Exception('参数错误');
+                break;
+        }
+
+        $update = Model('member')->editMember(array('member_id'=>$data['member_id']),$data_pd);
+
+        if (!$update) {
+            throw new Exception('操作失败');
+        }
+        $insert = $this->table('pd_log')->insert($data_log);
+        if (!$insert) {
+            throw new Exception('操作失败');
+        }
+
+        // 支付成功发送买家消息
+        $param = array();
+        $param['code'] = 'predeposit_change';
+        $param['member_id'] = $data['member_id'];
+        $data_msg['av_amount'] = ncPriceFormat($data_msg['av_amount']);
+        $data_msg['freeze_amount'] = ncPriceFormat($data_msg['freeze_amount']);
+        $param['param'] = $data_msg;
+        QueueClient::push('sendMemberMsg', $param);
+        return $insert;
+    }
+
+    /**
+     * 变更预存款
+     * @param unknown $change_type
+     * @param unknown $data
+     * @throws Exception
+     * @return unknown
+     */
+    public function changeBonus($change_type,$data = array())
     {
         $data_log = array();
         $data_pd  = array();

+ 12 - 3
helper/bonus/account.php

@@ -30,6 +30,7 @@ interface IPriceCalculate
     public function order_cash($goods_price, $goods_lowest_price);
     public function discount_gap($bonus_price, $goods_lowest_price);
     public function bonus_amount($goods_amount,$goods_lowest_amount);
+    public function pay($bonus_amount,$params);
 }
 
 class normal_calc implements IPriceCalculate
@@ -44,7 +45,7 @@ class normal_calc implements IPriceCalculate
         if($bonus_cent >= $lowest_cent) {
             return ($bonus_cent - $lowest_cent) / 100;
         } else {
-            return false;
+            return 0;
         }
     }
     public function order_cash($goods_price, $goods_lowest_price)
@@ -55,6 +56,10 @@ class normal_calc implements IPriceCalculate
     {
         return 0.00;
     }
+    public function pay($bonus_amount,$params) {
+
+    }
+
 }
 
 class account implements IPriceCalculate
@@ -803,7 +808,7 @@ class account implements IPriceCalculate
         if($bonus_cent >= $lowest_cent) {
             return ($bonus_cent - $lowest_cent) / 100;
         } else {
-            return false;
+            return 0;
         }
     }
     public function bonus_amount($goods_amount,$goods_lowest_amount)
@@ -819,11 +824,15 @@ class account implements IPriceCalculate
         }
     }
 
+    public function pay($bonus_amount,$params) {
+
+    }
     static public function admin_make_bonus($param, $rate_moneys)
     {
         return bonus_helper::make_bonus($param, $rate_moneys);
     }
-//    static public function order_cash($goods_amount, &$rates)
+
+    //    static public function order_cash($goods_amount, &$rates)
 //    {
 //        if (isset($_SESSION['bonus_rate']) == false) {
 //            $pred = new account($_SESSION['member_id'], true);

+ 2 - 2
helper/model/goods_summary.php

@@ -177,14 +177,14 @@ class goods_summary
             if($is_virtual)
             {
                 $summary['bonus_price']  = $this->goods_info['goods_price'];
-                $summary['discount_gap'] = 0.00;
+                $summary['discount_gap'] = 0;
                 $summary['gap_show'] = false;
                 $summary['gap_desc'] = "";
             }
             else
             {
                 $summary['bonus_price']  = $this->mPriceCalcer->bonus_price($this->goods_info['goods_price'],$this->goods_info['goods_lowest_price']);
-                $gap = $this->mPriceCalcer->discount_gap($summary['bonus_price'],$this->goods_info['goods_price']);
+                $gap = $this->mPriceCalcer->discount_gap($summary['bonus_price'],$this->goods_info['goods_lowest_price']);
                 $summary['discount_gap'] = $gap;
                 $summary['gap_show'] = true;
                 if(intval($gap * 100 + 0.5) == 0) {

+ 1 - 1
helper/request_helper.php

@@ -238,7 +238,7 @@ class request_helper
             $_SERVER['original_querystring'] = $squery;
         }
 
-        Log::record("content={$squery}",Log::DEBUG);
+        Log::record_path("content={$squery}",Log::DEBUG);
         $params = preg_split('/&|=/', $squery);
         if ($method == 'get' || $method == 'post')
         {