stanley-king 6 年 前
コミット
5b9b613f4c

+ 92 - 92
admin/control/predeposit.php

@@ -623,90 +623,90 @@ class predepositControl extends SystemControl{
 	/**
 	 * 添加余额
 	 */
-	public function add_money(){
-		
-			$obj_validate = new Validator();
-			$obj_validate->validateparam = array(
-				array("input"=>$_POST["member_id"], "require"=>"true", "message"=>Language::get('admin_points_member_error_again')),
-				array("input"=>$_POST["pointsnum"], "require"=>"true",'validator'=>'Compare','operator'=>' >= ','to'=>1,"message"=>Language::get('admin_points_points_min_error'))
-			);
-			$error = $obj_validate->validate();
-			if ($error != ''){
-				showMessage($error,'','','error');
-			}
-			
-			$money = abs(floatval($_POST['pointsnum']));
-			$memo=trim($_POST['pointsdesc']);
-		    if ($money <= 0) {
-		       showMessage('输入的金额必需大于0','','html','error');
-		    }
-			//查询会员信息
-			$obj_member = Model('member');
-			$member_id = intval($_POST['member_id']);
-			$member_info = $obj_member->getMemberInfo(array('member_id'=>$member_id));
+	public function add_money()
+    {
+        $obj_validate = new Validator();
+        $obj_validate->validateparam = array(
+            array("input"=>$_POST["member_id"], "require"=>"true", "message"=>Language::get('admin_points_member_error_again')),
+            array("input"=>$_POST["pointsnum"], "require"=>"true",'validator'=>'Compare','operator'=>' >= ','to'=>1,"message"=>Language::get('admin_points_points_min_error'))
+        );
+        $error = $obj_validate->validate();
+        if ($error != ''){
+            showMessage($error,'','','error');
+        }
 
-			if (!is_array($member_info) || count($member_info)<=0){
-				showMessage(Language::get('admin_points_userrecord_error'),'index.php?act=predeposit&op=predeposit_add','','error');
-			}
-			$available_predeposit=floatval($member_info['available_predeposit']);
-			$freeze_predeposit=floatval($member_info['freeze_predeposit']);
-			if ($_POST['operatetype'] == 2 && $money > $available_predeposit){
-				showMessage(('预存款不足,会员当前预存款').$available_predeposit,'index.php?act=predeposit&op=predeposit_add','','error');
-			}
-			if ($_POST['operatetype'] == 3 && $money > $available_predeposit){
-				showMessage(('可冻结预存款不足,会员当前预存款').$available_predeposit,'index.php?act=predeposit&op=predeposit_add','','error');
-			}
-			if ($_POST['operatetype'] == 4 && $money > $freeze_predeposit){
-				showMessage(('可恢复冻结预存款不足,会员当前冻结预存款').$freeze_predeposit,'index.php?act=predeposit&op=predeposit_add','','error');
-			}
-			$model_pd = Model('predeposit');
-			$order_sn = $model_pd->makeSn();
-			$admininfo = $this->getAdminInfo();
-			$log_msg = "管理员【".$admininfo['admin_name']."】操作会员【".$member_info['member_name']."】预存款,金额为".$money.",编号为".$order_sn;
-			$admin_act="sys_add_money";
-			switch ($_POST['operatetype'])
-			{
-				case 1:
-					$admin_act="sys_add_money";
-					$log_msg = "管理员【".$admininfo['admin_name']."】操作会员【".$member_info['member_name']."】预存款【增加】,金额为".$money.",编号为".$order_sn;
-					break;  
-				case 2:
-					$admin_act="sys_del_money";
-					$log_msg = "管理员【".$admininfo['admin_name']."】操作会员【".$member_info['member_name']."】预存款【减少】,金额为".$money.",编号为".$order_sn;
-				    break;  
-				case 3:
-					$admin_act="sys_freeze_money";
-					$log_msg = "管理员【".$admininfo['admin_name']."】操作会员【".$member_info['member_name']."】预存款【冻结】,金额为".$money.",编号为".$order_sn;
-					break;  
-				case 4:
-					$admin_act="sys_unfreeze_money";
-					$log_msg = "管理员【".$admininfo['admin_name']."】操作会员【".$member_info['member_name']."】预存款【解冻】,金额为".$money.",编号为".$order_sn;
-					break;
-				default:
-					showMessage('操作失败','index.php?act=predeposit&op=pd_log_list');
-					break;  
-			}
-			try
-            {
-                $trans = new trans_wapper($model_pd,__METHOD__);
-                //扣除冻结的预存款
-				$data = array();
-				$data['member_id'] = $member_info['member_id'];
-				$data['member_name'] = $member_info['member_name'];
-				$data['amount'] = $money;
-				$data['order_sn'] = $order_sn;
-				$data['admin_name'] = $admininfo['name'];
-				$data['pdr_sn'] = $order_sn;
-				$data['lg_desc'] = $memo;
-				$model_pd->changePd($admin_act,$data);
-                $trans->commit();
-				$this->log($log_msg,1);
-				showMessage('操作成功','index.php?act=predeposit&op=pd_log_list');
-			} catch (Exception $e) {
-                $trans->rollback();
-				$this->log($log_msg,0);
-				showMessage($e->getMessage(),'index.php?act=predeposit&op=pd_log_list','html','error');
-			}
+        $money = abs(floatval($_POST['pointsnum']));
+        $memo=trim($_POST['pointsdesc']);
+        if ($money <= 0) {
+           showMessage('输入的金额必需大于0','','html','error');
+        }
+        //查询会员信息
+        $obj_member = Model('member');
+        $member_id = intval($_POST['member_id']);
+        $member_info = $obj_member->getMemberInfo(array('member_id'=>$member_id));
+
+        if (!is_array($member_info) || count($member_info)<=0){
+            showMessage(Language::get('admin_points_userrecord_error'),'index.php?act=predeposit&op=predeposit_add','','error');
+        }
+        $available_predeposit=floatval($member_info['available_predeposit']);
+        $freeze_predeposit=floatval($member_info['freeze_predeposit']);
+        if ($_POST['operatetype'] == 2 && $money > $available_predeposit){
+            showMessage(('预存款不足,会员当前预存款').$available_predeposit,'index.php?act=predeposit&op=predeposit_add','','error');
+        }
+        if ($_POST['operatetype'] == 3 && $money > $available_predeposit){
+            showMessage(('可冻结预存款不足,会员当前预存款').$available_predeposit,'index.php?act=predeposit&op=predeposit_add','','error');
+        }
+        if ($_POST['operatetype'] == 4 && $money > $freeze_predeposit){
+            showMessage(('可恢复冻结预存款不足,会员当前冻结预存款').$freeze_predeposit,'index.php?act=predeposit&op=predeposit_add','','error');
+        }
+        $model_pd = Model('predeposit');
+        $order_sn = $model_pd->makeSn();
+        $admininfo = $this->getAdminInfo();
+        $log_msg = "管理员【".$admininfo['admin_name']."】操作会员【".$member_info['member_name']."】预存款,金额为".$money.",编号为".$order_sn;
+        $admin_act="sys_add_money";
+        switch ($_POST['operatetype'])
+        {
+            case 1:
+                $admin_act="sys_add_money";
+                $log_msg = "管理员【".$admininfo['admin_name']."】操作会员【".$member_info['member_name']."】预存款【增加】,金额为".$money.",编号为".$order_sn;
+                break;
+            case 2:
+                $admin_act="sys_del_money";
+                $log_msg = "管理员【".$admininfo['admin_name']."】操作会员【".$member_info['member_name']."】预存款【减少】,金额为".$money.",编号为".$order_sn;
+                break;
+            case 3:
+                $admin_act="sys_freeze_money";
+                $log_msg = "管理员【".$admininfo['admin_name']."】操作会员【".$member_info['member_name']."】预存款【冻结】,金额为".$money.",编号为".$order_sn;
+                break;
+            case 4:
+                $admin_act="sys_unfreeze_money";
+                $log_msg = "管理员【".$admininfo['admin_name']."】操作会员【".$member_info['member_name']."】预存款【解冻】,金额为".$money.",编号为".$order_sn;
+                break;
+            default:
+                showMessage('操作失败','index.php?act=predeposit&op=pd_log_list');
+                break;
+        }
+        try
+        {
+            $trans = new trans_wapper($model_pd,__METHOD__);
+            //扣除冻结的预存款
+            $data = array();
+            $data['member_id'] = $member_info['member_id'];
+            $data['member_name'] = $member_info['member_name'];
+            $data['amount'] = $money;
+            $data['order_sn'] = $order_sn;
+            $data['admin_name'] = $admininfo['name'];
+            $data['pdr_sn'] = $order_sn;
+            $data['lg_desc'] = $memo;
+            $model_pd->changePd($admin_act,$data);
+            $trans->commit();
+            $this->log($log_msg,1);
+            showMessage('操作成功','index.php?act=predeposit&op=pd_log_list');
+        } catch (Exception $e) {
+            $trans->rollback();
+            $this->log($log_msg,0);
+            showMessage($e->getMessage(),'index.php?act=predeposit&op=pd_log_list','html','error');
+        }
 	}
 
 	//取得会员信息
@@ -716,20 +716,20 @@ class predepositControl extends SystemControl{
 		if (!$name){
 			echo ''; die;
 		}
-		/**
-		 * 转码
-		 */
-		if(strtoupper(CHARSET) == 'GBK'){
-			$name = Language::getGBK($name);
-		}
+
 		$obj_member = Model('member');
 		$member_info = $obj_member->getMemberInfo(['member_mobile' => $name,'member_mobile_bind' => 1]);
-		if (is_array($member_info) && count($member_info)>0){
+		if (is_array($member_info) && count($member_info)>0)
+		{
 			if(strtoupper(CHARSET) == 'GBK'){
 				$member_info['member_name'] = Language::getUTF8($member_info['member_name']);
 			}
-			echo json_encode(array('id'=>$member_info['member_id'],'name'=>$member_info['member_name'],'available_predeposit'=>$member_info['available_predeposit'],'freeze_predeposit'=>$member_info['freeze_predeposit']));
-		}else {
+			echo json_encode(array('id'=>$member_info['member_id'],
+                'name'=>$member_info['member_mobile'],
+                'available_predeposit'=>$member_info['available_predeposit'],
+                'freeze_predeposit'=>$member_info['freeze_predeposit']));
+		}
+		else {
 			echo ''; die;
 		}
 	}

+ 9 - 1
data/logic/buy_1.logic.php

@@ -583,6 +583,13 @@ class buy_1Logic
      * 预存款支付,依次循环每个订单
      * 如果预存款足够就单独支付了该订单,如果不足就暂时冻结,等API支付成功了再彻底扣除
      */
+
+    private function bonus_amount($order_info)
+    {
+        $bonus_amount = unserialize($order_info['bonus_amount']);
+        $amount = floatval($bonus_amount['user_bonus']) + floatval($bonus_amount['room_bonus']);
+        return $amount;
+    }
     public function pdPay($order_list, $input, $buyer_info)
     {
         $member_id = $buyer_info['member_id'];
@@ -599,7 +606,8 @@ class buy_1Logic
             if ($order_info['payment_code'] == 'offline') continue;
             if ($order_info['order_state'] == ORDER_STATE_PAY) continue;
 
-            $order_amount = floatval($order_info['order_amount']) - floatval($order_info['rcb_amount']);
+
+            $order_amount = floatval($order_info['order_amount']) - floatval($order_info['rcb_amount']) - $this->bonus_amount($order_info);
             $data_pd = array();
             $data_pd['member_id'] = $member_id;
             $data_pd['member_name'] = $member_name;

+ 13 - 5
helper/buy_first.php

@@ -75,8 +75,6 @@ class buy_first
         $ways = $this->mPriceCalculate->bonus_way($total_bonus);
 
         $result['user_bonus'] = $ways['user_bonus'];
-        $result['available_pred']  = $ways['user_bonus'] + $ways['room_bonus'];
-
         $result['show_room']  = $ways['show_room'];
         $result['room_bonus'] = $ways['room_bonus'];
         $result['rooms']  = $ways['rooms'];
@@ -99,11 +97,21 @@ class buy_first
             $result['discount_gap'] = $discount_gap;
         }
         $result['bonus_rates'] = $this->formate_rates([ 30 => $result['user_bonus'] + $result['room_bonus']]);
-        $result['
-        '] = $config['bonus_gap']['earn_bonus'];
+        $result['earn_bonus'] = $config['bonus_gap']['earn_bonus'];
 
         $result['usable_pred'] = true;
-        $result['pay_cash_pred']   = $result['goods_amount'] + $result['freight'] - $result['full_discount'] - $result['opgoods_discount'] - $result['user_bonus'] - $result['room_bonus'];
+        $cash_amount = $result['goods_amount'] + $result['freight'] - $result['full_discount'] - $result['opgoods_discount'] - $result['user_bonus'] - $result['room_bonus'];
+        $total_pred_cent = intval($result['total_pred'] * 100 + 0.5);
+        $cash_amount_cent = intval($cash_amount * 100 + 0.5);
+        if($total_pred_cent >= $cash_amount_cent) {
+            $pay_pred = $cash_amount_cent / 100;
+        }
+        else {
+            $pay_pred = $total_pred_cent / 100;
+        }
+
+        $result['user_pred'] = $pay_pred;
+        $result['pay_cash_pred']   = $result['goods_amount'] + $result['freight'] - $result['full_discount'] - $result['opgoods_discount'] - $result['user_bonus'] - $result['room_bonus'] - $pay_pred;
         $result['pay_cash_nopred'] = $result['goods_amount'] + $result['freight'] - $result['full_discount'] - $result['opgoods_discount'];
 
         //购物车显示应付现金

+ 1 - 0
helper/order_helper.php

@@ -801,6 +801,7 @@ class order_helper extends order_base
         $result["order_amount"] = doubleval($order["order_amount"]);
         $result["rcb_amount"] = doubleval($order["rcb_amount"]);
         $result["pd_amount"] = doubleval($order["pd_amount"]);
+        $result["user_pred"] = $result["pd_amount"];
         $result["shipping_fee"] = doubleval($order["shipping_fee"]);
         $result["evaluation_state"] = intval($order["evaluation_state"]);
         $result["order_state"] = intval($order["order_state"]);

+ 11 - 2
mobile/control/member_bonus.php

@@ -47,6 +47,7 @@ class member_bonusControl extends mbMemberControl
     {
         $result = [];
         $result['bonus_total']  = $this->mUserAccount->total_bonus();
+        $result['pred_total']   = $this->total_pred();
         $result['bonus_rate']   = 30;
         $mine_rooms = room_helper::user_rooms(session_helper::memberid(),'shared_bonus desc',4);
         if(empty($mine_rooms)) {
@@ -67,6 +68,13 @@ class member_bonusControl extends mbMemberControl
         return self::outsuccess($result);
     }
 
+    private function total_pred()
+    {
+        $member = Model('member');
+        $info = $member->getMemberInfoByID(session_helper::memberid());
+        return (floatval($info['available_predeposit']) * 100 + 0.5 ) / 100;
+    }
+
     public function mine_bonusOp()
     {
         $result = [];
@@ -101,6 +109,7 @@ class member_bonusControl extends mbMemberControl
     {
         $result = [];
         $result['bonus_total']  = $this->mUserAccount->total_bonus();
+        $result['pred_total']   = $this->total_pred();
 
         $bonus_state = $this->mUserAccount->bonus_state();
         $expiring = $bonus_state['expiring'];
@@ -1496,9 +1505,9 @@ class tpl_free_gifts
         if($this->mMine)
         {
             if($called) {
-                $str .=     "<span class=\"call_btn called\" data-user=\"{$user}\">召唤TA</span>";
+                $str .= "<span class=\"call_btn called\" data-user=\"{$user}\">召唤TA</span>";
             } else {
-                $str .=     "<span class=\"call_btn\" data-user=\"{$user}\">召唤TA</span>";
+                $str .= "<span class=\"call_btn\" data-user=\"{$user}\">召唤TA</span>";
             }
         }
         $str .= "</div>";

+ 3 - 1
mobile/control/member_buy.php

@@ -158,9 +158,11 @@ class member_buyControl extends mbMemberControl
         $param['pay_name'] = "online";
 
         $param['usebonus'] = $_POST['usebonus'];
-        $param['usepred'] = $_POST['usepred'];
+        $param['pd_pay']   = $_POST['usepred'];
+
         $param['room_id'] = $_POST['room_id'];
         $usebonus = $_POST['usebonus'];
+
         $_POST['pd_pay'] = 1;
         $usepred  = $_POST['pd_pay'];
         $param['pd_pay'] = 1;

+ 2 - 2
mobile/control/member_order.php

@@ -107,8 +107,8 @@ class member_orderControl extends mbMemberControl
 
     private function state_type($act_type)
     {
-        if($act_type == "if_cancel") return "order_cancel";
-        if($act_type == "if_delete") return "order_delete";
+        if($act_type == "if_cancel")  return "order_cancel";
+        if($act_type == "if_delete")  return "order_delete";
         if($act_type == "if_receive") return "order_receive";
         return false;
     }