model_pd = Model('predeposit'); } public function get_predeposit() { $pd_array = Model('member')->getMemberPdInfo($_SESSION['member_id']); $total_value = $pd_array['available_predeposit']; // 当前预存款 $freeze_value = $pd_array['freeze_predeposit']; // 当前预存款冻结 return array('total_value' => $total_value,'freeze_value' => $freeze_value); } public function get_predeposit_total() { $member = Model('member'); $relay_array = $member->getMemberPdInfo($_SESSION['member_id']); $total = floatval($relay_array['available_predeposit']);// + floatval($relay_array['available_relay_balance']); return $total; } public function is_enough($money) { return intval(self::get_predeposit_total() * 100) >= intval($money * 100); } public function bonus_add_money($amount,$bonus_sn,$sender_name,$info) { $data = array(); $data['member_id'] = $_SESSION['member_id']; $data['member_name'] = $_SESSION['member_name']; $data['amount'] = $amount; $data['order_sn'] = $bonus_sn; $data['admin_name'] = $sender_name; $data['pdr_sn'] = $bonus_sn; $data['lg_desc'] = $info; $this->model_pd->changePd("bonus_add_money", $data); } public function hand_out_bonus($amount,$bonus_sn,$sender_name,$info) { $data = array(); $data['member_id'] = $_SESSION['member_id']; $data['member_name'] = $_SESSION['member_name']; $data['amount'] = $amount; $data['order_sn'] = $bonus_sn; $data['admin_name'] = $sender_name; $data['pdr_sn'] = $bonus_sn; $data['lg_desc'] = $info; $this->model_pd->changePd("hand_out_bonus", $data); } private function filter_sn($lg_desc) { //发送红包系统调节预存款【减少】,红包单号: 910514563264556490 $pos = mb_strpos($lg_desc,':'); if($pos != false) { return mb_substr($lg_desc,$pos + 1); } return ''; } public function filter_pd_log($items) { $pdlogs = array(); foreach($items as $val) { $item = array(); $av_amount = $val['lg_av_amount']; $freeze_amount = $val['lg_freeze_amount']; $admin_name = $val['lg_admin_name']; $add_time = $val['lg_add_time']; $type = $val['lg_type']; $sn = $this->filter_sn($val['lg_desc']); $item['av_amount'] = $av_amount; $item['freeze_amount'] = $freeze_amount; $item['add_time'] = $add_time; $fAdd = true; if($type == 'order_pay') { $item['title'] = "支付订单:{$sn}"; } else if($type == 'order_freeze') { $item['title'] = "下单,冻结预存款,订单号:{$sn}"; } else if($type == 'order_cancel') { $item['title'] = "取消订单,解冻预存款,订单号:{$sn}"; } else if($type == 'order_comb_pay') { $item['title'] = "下单,支付被冻结的预存款,订单号:{$sn}"; } else if($type == 'recharge') { $item['title'] = "充值,充值单号:{$sn}"; } else if($type == 'refund') { $item['title'] = "确认退款,订单号:{$sn}"; } else if($type == 'vr_refund') { $item['title'] = "虚拟兑码退款成功,订单号:{$sn}"; } else if($type == 'hand_out_bonus') { $item['title'] = "发出红包,红包号:{$sn}"; } else if($type == 'bonus_add_money') { $item['title'] = "{$admin_name}的红包,红包号:{$sn}"; } else if($type == 'sys_add_money') { $item['title'] = "管理员调节预存款,充值单号:{$sn}"; } else if($type == 'sys_del_money') { $item['title'] = "管理员调节预存款,充值单号:{$sn}"; } else if($type == 'sys_freeze_money') { $item['title'] = "管理员冻结预存款,充值单号:{$sn}"; } else if($type == 'sys_unfreeze_money') { $item['title'] = "管理员解冻预存款,充值单号:{$sn}"; } else { $fAdd = false; } if($fAdd) { array_push($pdlogs,$item); } } return $pdlogs; } //订单总额,可用的余额,当前订单已经使用的余额 //返回分 public function calc_pred($order_amount,$avail_amound,$pd_amount,&$no_cash) { $cur_used = intval($order_amount * 0.99 + 0.5); $cur_used = $cur_used > $avail_amound ? $avail_amound : $cur_used; if($order_amount == $cur_used) { $no_cash = true; } else { $no_cash = false; } return ($cur_used - $pd_amount > 0 ? $cur_used - $pd_amount : 0); } // public function calc_pred($pay_sn,&$avail_pred) // { // $logic_payment = Logic('payment'); // $result = $logic_payment->getRealOrderInfo($pay_sn, $_SESSION['member_id']); // // if(empty($result)) { // return false; // } // $data = $result['data']; // $order_amount = $data['api_pay_amount']; // // $member = Model('member'); // $relay_array = $member->getMemberPdInfo($_SESSION['member_id']); // $avail_pred = floatval($relay_array['available_predeposit']); // //$order_list = $data['order_list']; todo 需要更严格的扣费策略,从各个商品考虑 // // $use_pred = intval(($order_amount * 0.2) * 100); // $use_pred = $use_pred > intval($avail_pred * 100) ? intval($avail_pred * 100) : $use_pred; // // return $use_pred / 100; // } }