model_pd = Model('predeposit'); $this->member_id = $member_id; } public function get_predeposit() { $pd_array = Model('member')->getMemberPdInfo($this->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($this->member_id); $total = floatval($relay_array['available_predeposit']); return $total; } public function is_enough($money) { return intval(self::get_predeposit_total() * 100) >= intval($money * 100); } public function bonus_expire($bouns) { try { $bonus_obj = bonus\user_bonus::create_by_param($bouns); if($bonus_obj->spend_over()) { return false; } $minfo = new member_info($this->member_id); $data = array(); $data['member_id'] = $this->member_id; $data['member_name'] = $minfo->nickname(); $data['amount'] = $bonus_obj->remain_amount(); $data['order_sn'] = $bonus_obj->bonus_sn(); $data['admin_name'] = "熊猫美妆"; $data['pdr_sn'] = $bonus_obj->bonus_sn(); $data['lg_desc'] = "红包过期扣款"; $this->model_pd->changePd("bonus_expire", $data); return true; } catch (Exception $ex) { return false; } } public function bonus_refund($bonus_type) { $types = bonus\type::crate_by_paramer($bonus_type); $log_data = array(); $log_data['member_id'] = $types->sender_id(); $log_data['member_name'] = $types->sender_name(); $log_data['amount'] = $types->remain_amount(); $log_data['type_sn'] = $types->getType_sn(); $this->model_pd->changePd('bonus_refund',$log_data); } public function transform_money($member_id,$name,$amount) { $data = array(); $data['member_id'] = $member_id; $data['member_name'] = is_null($name) ? '' : $name; $data['amount'] = $amount; $order_sn = $this->model_pd->makeSn(); $data['order_sn'] = $order_sn; $data['admin_name'] = '平台管理员'; $data['pdr_sn'] = $order_sn; $data['lg_desc'] = '版本升级,余额迁移.'; $this->model_pd->changePd("sys_add_money",$data); } public function bonus_add_money($amount,$bonus_sn,$sender_name,$info,$make_type = 0) { $minfo = new member_info($this->member_id); $data = array(); $data['member_id'] = $this->member_id; $data['member_name'] = $minfo->nickname(); $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 add_bonus(bonus\user_bonus $bonus,bonus\type $type) { $minfo = new member_info($this->member_id); $data = array(); $data['member_id'] = $this->member_id; $data['member_name'] = $minfo->nickname(); $data['amount'] = $bonus->bonus_value(); $data['order_sn'] = $bonus->bonus_sn(); $data['admin_name'] = $type->sender_name(); $data['pdr_sn'] = $bonus->bonus_sn(); $data['lg_desc'] = ""; $data['make_type'] = $type->make_type(); $this->model_pd->changePd("bonus_add_money", $data); } public function handout_bonus($amount, $type_sn, $sender_name, $info,$make_type = 0) { Log::record("handout_bonus {$amount} {$type_sn} {$sender_name}",Log::DEBUG); $minfo = new member_info($this->member_id); $data = array(); $data['member_id'] = $this->member_id; $data['member_name'] = $minfo->nickname(); $data['amount'] = $amount; $data['order_sn'] = $type_sn; $data['admin_name'] = $sender_name; $data['pdr_sn'] = $type_sn; $data['lg_desc'] = $info; $data['make_type'] = $make_type; $this->model_pd->changePd("hand_out_bonus", $data); } public function handout_relaybonus($amount, $sender_name, $type_sn, $relayer_id, $info) { $minfo = new member_info($relayer_id); $data = array(); $data['member_id'] = $this->member_id; $data['member_name'] = $minfo->nickname(); $data['amount'] = $amount; $data['order_sn'] = $type_sn; $data['admin_name'] = $sender_name; $data['pdr_sn'] = $type_sn; $data['lg_desc'] = $info; $this->model_pd->changePd("hand_out_bonus", $data); } private function filter_sn($lg_desc) { $pos = mb_strpos($lg_desc,':'); if($pos != false) { return mb_substr($lg_desc,$pos + 1); } return ''; } private function filter_make_type($lg_desc) { $reg = '/make_type=(\d+)/i'; $ret = preg_match($reg, $lg_desc, $arr); if($ret > 0) { return intval($arr[1]); } else { return 0; } } private function gen_send_title($sender_name,$make_type) { switch ($make_type) { case bonus\type::MakeSendType: return "发出红包"; case bonus\type::MakeShakeGainType: return "被{$sender_name}摇走的红包"; case bonus\type::MakeShakeLostType: return "摇飞红包到{$sender_name}"; default: return ""; } } private function gen_gain_title($sender_name,$make_type) { switch ($make_type) { case bonus\type::MakeSendType: return "{$sender_name}的红包"; case bonus\type::MakeBonusRefundType: return "未领红包退款"; case bonus\type::MakeShakeGainType: return "摇到{$sender_name}的红包"; case bonus\type::MakeShakeLostType: return "{$sender_name}摇到你这儿的红包"; case bonus\type::MakePayRefundType: return "购物退款红包"; case bonus\type::MakePayType: return "购物分享红包"; case bonus\type::MakeOrderCancelType: return "订单取消退款"; case bonus\type::MakeRegister: return "新人福利"; default: 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'] = "支付订单"; $item['sn'] = "订单号:{$sn}"; } else if($type == 'order_freeze') { $item['title'] = "下单扣除红包"; $item['sn'] = "订单号:{$sn}"; } else if($type == 'order_cancel') { $item['title'] = "取消订单,解冻红包"; $item['sn'] = "订单号:{$sn}"; } else if($type == 'order_comb_pay') { $item['title'] = "下单,支付被冻结的红包"; $item['sn'] = "订单号:{$sn}"; $item['av_amount'] = $freeze_amount; } else if($type == 'recharge') { $item['title'] = "充值"; $item['sn'] = "充值单号:{$sn}"; } else if($type == 'refund') { $item['title'] = "确认退款"; } else if($type == 'vr_refund') { $item['title'] = "虚拟兑码退款成功"; } else if($type == 'hand_out_bonus') { $make_type = $this->filter_make_type($val['lg_desc']); $item['title'] = $this->gen_send_title($admin_name,$make_type); $item['sn'] = ''; } else if($type == 'bonus_refund') { $item['title'] = "红包退款"; $item['sn'] = ''; } else if($type == 'bonus_add_money') { $make_type = $this->filter_make_type($val['lg_desc']); $item['title'] = $this->gen_gain_title($admin_name,$make_type); $item['sn'] = ''; } else if($type == 'bonus_expire') { $item['title'] = "红包过期扣款"; $item['sn'] = ''; } else if($type == 'sys_add_money') { $item['title'] = "管理员调节预存款"; $item['sn'] = ''; } else if($type == 'sys_del_money') { $item['title'] = "管理员调节预存款"; $item['sn'] = ''; } else if($type == 'sys_freeze_money') { $item['title'] = "管理员冻结预存款"; $item['sn'] = "充值单号:{$sn}"; } else if($type == 'sys_unfreeze_money') { $item['title'] = "管理员解冻预存款"; $item['sn'] = "充值单号:{$sn}"; } else { $fAdd = false; } if($fAdd) { array_push($pdlogs,$item); } } return $pdlogs; } static public function scale() { if(is_pushoms()) { $scale = 0.30; } else { $scale = 0.99; } return $scale; } public function calc_pred($order_info,$pd_amount,&$no_cash) { $order_id = intval($order_info['order_id']); $mod_order = Model('order'); $pred_amount = 0.00; $goods_list = $mod_order->getOrderGoodsList(array('order_id' => $order_id)); foreach ($goods_list as $goods) { $goods_type = intval($goods['goods_type']); if($goods_type == 1) { $pred_amount += floatval($goods['goods_pay_price']); } } $scale = self::scale(); $cur_used = intval($pred_amount * $scale * 100 + 0.5); $cur_used = $cur_used > $pd_amount ? $pd_amount : $cur_used; $order_amount = intval($order_info['order_amount'] * 100 + 0.5); $order_pd_amount = intval($order_info['pd_amount'] * 100 + 0.5); if($order_amount == $cur_used) { $no_cash = true; } else { $no_cash = false; } return $cur_used - $order_pd_amount; } }