getAll($sql_str);
if($list){
foreach($list as $k=>$v){
$list[$k] = licai_item_format($v);
}
}
return $list;
}
/**
* 获取理财列表
* $condition 条件语句 无 and 打头
* $order 排序
* $limit 条数
*/
function get_licai_list($condition,$order="sort DESC,id DESC",$limit="0,10"){
if($condition!=""){
$extWhere = " AND ".$condition;
}
$sql_count = "SELECT COUNT(*) FROM ".DB_PREFIX."licai WHERE 1=1 ".$extWhere;
$rs_count = $GLOBALS['db']->getOne($sql_count);
$list = array();
if($rs_count > 0){
$sql_str = "SELECT * FROM ".DB_PREFIX."licai WHERE 1=1 ".$extWhere." ORDER BY ".$order." LIMIT ".$limit;
$list = $GLOBALS['db']->getAll($sql_str);
if($list){
foreach($list as $k=>$v){
$list[$k] = licai_item_format($v);
}
}
}
return array("rs_count"=>$rs_count,"list"=>$list);
}
/**
* 获取单个理财信息
*/
function get_licai($id){
if($id==0){
return false;
}
$sql = "SELECT * FROM ".DB_PREFIX."licai WHERE id= ".$id;
$result = $GLOBALS['db']->getRow($sql);
if($result){
$result = licai_item_format($result);
if($result['type'] > 0 ){
$result['licai_interest'] = $GLOBALS['db']->getAll("SELECT * FROM ".DB_PREFIX."licai_interest WHERE licai_id=".$result['id']." ORDER BY max_money ASC ");
}
else
{
$licai = $GLOBALS['db']->getRow("SELECT id,platform_rate,site_buy_fee_rate,redemption_fee_rate FROM ".DB_PREFIX."licai WHERE id=".$result['id']);
$licai_interest = get_licai_interest_yeb($licai["id"],$result["begin_interest_date"],$result["end_interest_date"]);
$result['licai_interest'] = array(
"average_income_rate" => $licai_interest["avg_interest_rate"],
"platform_rate" => $licai["platform_rate"],
"site_buy_fee_rate" => $licai["site_buy_fee_rate"],
"redemption_fee_rate" => $licai["redemption_fee_rate"],
"days" => $licai_interest["days"],
"interest_rate" => $licai_interest["interest_rate"],
);
}
}
return $result;
}
/**
* 获取最近购买的
* $type 0模拟数据 1真实数据
*/
function get_licai_dealshow($limit=10,$type=0){
$d_table="licai_dealshow";
if($type==1)
$d_table="licai_order";
$sql="SELECT d.*,l.id,l.name,l.img FROM ".DB_PREFIX.$d_table." d LEFT JOIN ".DB_PREFIX."licai l ON l.id = d.licai_id ORDER BY d.id DESC LIMIT ".$limit;
$list = $GLOBALS['db']->getAll($sql);
foreach($list as $k=>$v){
$list[$k] = licai_item_format($v);
}
return $list;
}
/**
* 格式化理财
*/
function licai_item_format($vo){
//能购买的时间
if($vo['type']>0){
}else{
$vo['end_buy_date'] = $vo['end_date'];
}
if(to_timespan($vo['end_buy_date'])==0){
$vo['buy_limit_format'] = "无限期";
$vo['date_limit'] = "无限期";
$vo['buy_limit'] = -1;
}
else{
$time_limit = to_timespan($vo['end_buy_date']) - to_timespan($vo['begin_buy_date']);
$vo['buy_limit_format'] = intval($time_limit/3600/24);
$vo['begin_date'] = get_peizi_next_date(NOW_TIME,$vo['begin_interest_type']);
if(to_timespan($vo['end_buy_date']) > $vo['begin_date']){
$date_limit =to_timespan($vo['end_buy_date'])- to_timespan($vo['begin_date']);
$vo['date_limit'] = intval($date_limit/3600/24);
}
if(to_timespan($vo['end_buy_date']) > NOW_TIME)
$vo['buy_limit'] = NOW_TIME - to_timespan($vo['begin_buy_date']);
else
$vo['buy_limit'] = $time_limit;
}
if($vo['min_money']!=0){
$vo['min_money_format'] = format_price($vo['min_money']);
if($vo['min_money']>0){
$vo['min_money_format_num']=floatval($vo['min_money']/10000).'万元';
}
}
else{
$vo['min_money_format_num'] = "不限";
}
if($vo['product_size']!=0){
if($vo['product_size']>0&&$vo['product_size']<100000000){
$vo['product_size_format_num']=floatval($vo['product_size']/10000).'万元';
}elseif($vo['product_size']>=100000000){
$vo['product_size_format_num']=floatval($vo['product_size']/100000000).'亿元';
}
}
//安全等级
switch($vo['risk_rank']){
case 0:
$vo['risk_rank_format'] = "低";
break;
case 1:
$vo['risk_rank_format'] = "中";
break;
case 2:
$vo['risk_rank_format'] = "高";
break;
default :
$vo['risk_rank_format'] = "未知";
break;
}
//理财产品类型
switch($vo['type']){
case 0:
$vo['type_format'] = "余额宝";
break;
case 1:
$vo['type_format'] = "固定定存";
break;
//case 2:
// $vo['type_format'] = "浮动定存";
// break;
//case 3:
// $vo['type_format'] = "票据";
// break;
//case 4:
// $vo['type_format'] = "基金";
// break;
default :
$vo['type_format'] = "未知";
break;
}
//是否托管
switch($vo['is_deposit']){
case 0:
$vo['deposit_format'] = "非托管";
break;
case 1:
$vo['deposit_format'] = "托管";
break;
default :
$vo['deposit_format'] = "未知";
break;
}
//算息时间
switch($vo['begin_interest_type']){
case 0:
$vo['begin_interest_type_format'] = "当日生效";
break;
case 1:
$vo['begin_interest_type_format'] = "次日生效";
break;
case 2:
$vo['begin_interest_type_format'] = "下个工作日生效";
break;
case 3:
$vo['begin_interest_type_format'] = "下二个工作日";
break;
default :
$vo['begin_interest_type_format'] = "未知";
break;
}
$vo['url'] = url("licai#deal",array("id"=>$vo['id']));
$vo["average_income_rate"]=number_format($vo["average_income_rate"],2);
$vo['average_income_rate_format'] = number_format($vo["average_income_rate"],4) . "%";
$vo["licai_status"] = get_licai_status($vo["id"]);
//状态
switch($vo['licai_status']){
case 0:
$vo['licai_status_format'] = "预热期";
break;
case 1:
$vo['licai_status_format'] = "理财期";
break;
case 2:
$vo['licai_status_format'] = "无限期";
break;
}
switch($vo["review_type"])
{
case 0:
$vo["review_type_format"] = "发起人审核" ;
break;
case 1:
$vo["review_type_format"] = "网站和发起人审核" ;
break;
case 2:
$vo["review_type_format"] = "自动审核" ;
break;
}
if($vo['type'] >0 )
{
$vo['begin_interest_date'] = to_timespan($vo['begin_interest_date'])==0 ? to_date(NOW_TIME,"Y-m-d") : (to_timespan($vo['begin_interest_date'],"Y-m-d") > to_timespan(to_date(NOW_TIME,"Y-m-d"),"Y-m-d") ? $vo['begin_interest_date'] : to_date(NOW_TIME,"Y-m-d") );
//预热期
$vo['before_interest_date'] = get_peizi_next_date(NOW_TIME,$vo['begin_interest_type']);
if(to_timespan($vo['before_interest_date']) > 0 && to_timespan($vo['before_interest_date'],"Y-m-d") > to_timespan($vo['begin_interest_date'],"Y-m-d")){
$vo['before_interest_date'] = $vo['begin_interest_date'];
}
//预热结束时间
$vo['before_interest_enddate'] = $vo['begin_interest_date'];
$vo['before_day'] = 0;
$before_time_limit = to_timespan($vo['before_interest_enddate'],"Y-m-d") - to_timespan($vo['before_interest_date'],"Y-m-d");
if($before_time_limit > 0){
$vo['before_day'] = $before_time_limit / 24 / 3600;
}
//起息时间
$begin_interest_date = get_peizi_next_date(NOW_TIME,$vo['begin_interest_type']);
if(to_timespan($begin_interest_date,"Y-m-d") > to_timespan($vo['begin_interest_date'],"Y-m-d")){
$vo['begin_interest_date'] = $begin_interest_date;
}
if($vo['time_limit'] == 0)
{
$vo['end_interest_date'] = $vo['end_date'];
}
//无项目结束时间 有周期
elseif(to_timespan($vo['end_date']) == 0 && $vo['time_limit'] > 0){
$vo['end_interest_date'] = to_date(next_month(NOW_TIME,$vo['time_limit']),"Y-m-d");
}
//有项目结束时间 有周期
elseif(to_timespan($vo['end_date']) > 0 && $vo['time_limit'] > 0){
//如果项目结束时间大于周期那么使用周期时间
$str_time = to_timespan($vo['begin_interest_date']);
if(to_timespan($vo['end_date'],"Y-m-d") > to_timespan(to_date(next_month($str_time,$vo['time_limit']),"Y-m-d"))){
$vo['end_interest_date'] = to_date(next_month($str_time,$vo['time_limit']),"Y-m-d");
}
else{
$vo['end_interest_date'] = $vo['end_date'];
}
}
$vo['end_interest_date_format'] = to_date($vo['end_date']);
$vo['buy_day'] = 0;
$buy_time_limit = to_timespan($vo['end_interest_date'],"Y-m-d") - to_timespan($vo['begin_interest_date'],"Y-m-d");
if($buy_time_limit >= 0){
$vo['buy_day'] = $buy_time_limit / 24 / 3600 ;
}
if($vo["end_date"] == "0000-00-00" ||$vo["end_date"] == "" )
{
$vo["end_date"] = "无期限";
}
}
//余额宝
else
{
$vo['before_day'] = 0;
$vo['end_buy_date'] = $vo['end_date'];
$vo['buy_day'] = 0;
$vo['begin_interest_date'] = to_timespan($vo['begin_interest_date'])==0 ? to_date(NOW_TIME,"Y-m-d") : (to_timespan($vo['begin_interest_date'],"Y-m-d") > to_timespan(to_date(NOW_TIME,"Y-m-d"),"Y-m-d") ? $vo['begin_interest_date'] : to_date(NOW_TIME,"Y-m-d") );
$vo['begin_interest_date'] = get_peizi_next_date(to_timespan($vo['begin_interest_date']),$vo['begin_interest_type']);
$vo['end_interest_date'] = $vo['end_date'];
$buy_time_limit = to_timespan($vo['end_date'],"Y-m-d") - to_timespan($vo['begin_buy_date'],"Y-m-d");
if($buy_time_limit >= 0){
$vo['buy_day'] = $buy_time_limit / 24 / 3600;
}
if($vo["end_date"] == "0000-00-00" ||$vo["end_date"] == "" )
{
$vo["end_date"] = "已结束";
}
//$vo['time_limit'] = intval($buy_time_limit/3600/24/30);
$vo['platform_rate_format'] = number_format($vo['platform_rate'],4)."%";
$vo['site_buy_fee_rate_format']= number_format($vo['site_buy_fee_rate'],4)."%";
$vo['redemption_fee_rate_format']= number_format($vo['redemption_fee_rate'],4)."%";
}
$vo["service_fee_rate_format"] = number_format($vo["service_fee_rate"],4). "%";
$vo["subscribing_amount_format"] = format_price($vo["subscribing_amount"]);
$vo["subscribing_amount_format_num"] = number_format($vo["subscribing_amount"]/10000);
$vo['begin_interest_date_time'] = to_timespan($vo['begin_interest_date'],"Y-m-d");
$vo['end_buy_date_time'] = to_timespan($vo['end_buy_date'],"Y-m-d");
$vo['begin_buy_date_time'] = to_timespan($vo['begin_buy_date'],"Y-m-d");
$vo['end_date_time'] = to_timespan($vo['end_date'],"Y-m-d");
return $vo;
}
/**
* 理财产品参数更新
* id int 理财ID
*/
function syn_licai_status($id,$type = 1){
if($id==0){
return false;
}
$data=array();
if($type > 0 )
{
$data['average_income_rate'] = $GLOBALS['db']->getOne("SELECT avg(interest_rate) FROM ".DB_PREFIX."licai_interest WHERE licai_id=".$id);
}
else
{
$data['average_income_rate'] = $GLOBALS['db']->getOne("SELECT avg(rate) FROM ".DB_PREFIX."licai_history WHERE licai_id=".$id);
}
$sum_rs = $GLOBALS['db']->getRow("SELECT count(*) as total_people,sum(money) as subscribing_amount FROM ".DB_PREFIX."licai_order where licai_id=".$id);
$data['total_people'] = $sum_rs['total_people'];
$data['subscribing_amount'] = $sum_rs['subscribing_amount'];
$GLOBALS['db']->autoExecute(DB_PREFIX."licai",$data,"UPDATE","id=".$id);
}
function licai_bid($id,$money,$paypassword){
$return = array("status"=>0,"info"=>"");
if(intval($GLOBALS['user_info']['id']) == 0){
$return['info'] = "请先登录";
return $return;
}
if(intval($GLOBALS['user_info']['money']) < $money){
$return['info'] = "账户余额不足";
return $return;
}
if($GLOBALS['user_info']['paypassword'] != md5($paypassword)){
$return['info'] = "支付密码错误";
return $return;
}
$licai = $GLOBALS['db']->getRow("SELECT * FROM ".DB_PREFIX."licai where id=".$id);
$licai['url'] = url("licai#deal",array("id"=>$licai['id']));
if($licai['user_id'] == $GLOBALS['user_info']['id']){
$return['info'] = "不能购买自己发布的理财产品";
return $return;
}
if(!$licai || $licai['status'] == 0){
$return['info'] = "理财产品不存在";
return $return;
}
if(to_timespan($licai['begin_buy_date'],"Y-m-d") > 0 && to_timespan($licai['begin_buy_date'],"Y-m-d") > NOW_TIME){
$return['info'] = "理财产品还未开始允许购买";
return $return;
}
if(to_timespan($licai['end_buy_date'],"Y-m-d") > 0 && to_timespan($licai['end_buy_date'],"Y-m-d") < NOW_TIME){
$return['info'] = "理财产品已结束购买";
return $return;
}
if(to_timespan($licai['end_date'],"Y-m-d") > 0 && to_timespan($licai['end_date'],"Y-m-d") < NOW_TIME){
$return['info'] = "理财产品已结束";
return $return;
}
if(floatval($licai['min_money'])!=0){
if($money < floatval($licai['min_money'])){
$return['info'] = "最小购买金额为:".format_price($licai['min_money']);
return $return;
}
}
if(floatval($licai['max_money'])!=0){
if($money > floatval($licai['max_money'])){
$return['info'] = "最大购买金额为:".format_price($licai['max_money']);
return $return;
}
}
$licai_order_data = array();
$licai_order_data['status'] = 1;
$licai_order_data['licai_id'] = $id;
$licai_order_data['user_id'] = intval($GLOBALS['user_info']['id']);
$licai_order_data['user_name'] = $GLOBALS['user_info']['user_name'];
$licai_order_data['money'] = $money;
$licai_order_data['create_time'] = to_date(NOW_TIME);
$licai_order_data['create_date'] = to_date(NOW_TIME);
//算息时间
$licai_order_data['begin_interest_type'] = $licai['begin_interest_type'];
$licai['begin_interest_date'] = (to_timespan($licai['begin_interest_date'])==0 || to_timespan($licai['begin_interest_date']) < NOW_TIME) ? to_date(NOW_TIME,"Y-m-d") : $licai['begin_interest_date'] ;
//预热期
if($licai['type'] > 0){
//预热开始时间 | 购买开始时间
$licai_order_data['before_interest_date'] = get_peizi_next_date(NOW_TIME,$licai['begin_interest_type']);
if(to_timespan($licai_order_data['before_interest_date'],"Y-m-d") > 0 && to_timespan($licai['before_interest_date'],"Y-m-d") > to_timespan($licai['begin_interest_date'],"Y-m-d")){
$licai_order_data['before_interest_date'] = $licai['begin_interest_date'];
}
//预热结束时间
$licai_order_data['before_interest_enddate'] = $licai['begin_interest_date'];
}
//起息时间
$licai_order_data['begin_interest_date'] = get_peizi_next_date(NOW_TIME,$licai['begin_interest_type']);
if(to_timespan($licai_order_data['begin_interest_date'],"Y-m-d") < to_timespan($licai['begin_interest_date'],"Y-m-d")){
$licai_order_data['begin_interest_date'] = $licai['begin_interest_date'];
}
//结束时间
if($licai['time_limit'] == 0){
$licai_order_data['end_interest_date'] = $licai['end_date'];
}
//无项目结束时间 有周期
elseif(to_timespan($licai['end_date'],"Y-m-d") == 0 && $licai['time_limit'] > 0){
$licai_order_data['end_interest_date'] = to_date(next_month(NOW_TIME,$licai['time_limit']),"Y-m-d");
}
//有项目结束时间 有周期
elseif(to_timespan($licai['end_date'],"Y-m-d") > 0 && $licai['time_limit'] > 0){
//如果项目结束时间大于周期那么使用周期时间
//$str_time = to_timespan($licai['begin_interest_date'],"Y-m-d");
$str_time = to_timespan($licai_order_data['begin_interest_date'],"Y-m-d");
if(to_timespan($licai['end_date']) > to_timespan(to_date(next_month($str_time,$licai['time_limit']),"Y-m-d"),"Y-m-d")){
$licai_order_data['end_interest_date'] = to_date(next_month($str_time,$licai['time_limit']),"Y-m-d");
}
else{
$licai_order_data['end_interest_date'] = $licai['end_date'];
}
}
if($licai['type'] > 0){
$interest_rs = get_licai_interest($id,$money);
//预热利息
$licai_order_data['before_rate'] = $interest_rs['before_rate'];
//预热违约利息
$licai_order_data['before_breach_rate'] = $interest_rs['before_breach_rate'];
//正常利息
$licai_order_data['interest_rate'] = $interest_rs['interest_rate'];
//违约利息
$licai_order_data['breach_rate'] = $interest_rs['breach_rate'];
//申购手续费
$licai_order_data['site_buy_fee_rate'] = $interest_rs['site_buy_fee_rate'];
//赎回手续费
$licai_order_data['redemption_fee_rate'] = $interest_rs['redemption_fee_rate'];
//平台收益
$licai_order_data['platform_rate'] = $interest_rs['platform_rate'];
//用户违约平台收益
$licai_order_data['platform_breach_rate'] = $interest_rs['platform_breach_rate'];
//冻结保证金比例
$licai_order_data['freeze_bond_rate'] = $interest_rs['freeze_bond_rate'];
}
else
{
$licai_order_data['before_rate'] = 0;
$licai_order_data['before_breach_rate'] = 0;
$licai_order_data['interest_rate'] = 0;
$licai_order_data['breach_rate'] = 0;
$licai_order_data['platform_breach_rate'] = 0;
$licai_order_data['freeze_bond_rate'] = 0;
$licai_order_data['platform_rate'] = $licai['platform_rate'];
$licai_order_data['site_buy_fee_rate'] = $licai['site_buy_fee_rate'];
$licai_order_data['redemption_fee_rate'] = $licai['redemption_fee_rate'];
}
//预热期利息
$licai_order_data['before_interest'] = $money * floatval($licai_order_data['before_rate']) * 0.01 * ((to_timespan($licai_order_data['before_interest_enddate']) - to_timespan($licai_order_data['before_interest_date']))/24/3600) / 365; //余额宝时为0
$licai_order_data['site_buy_fee'] = $money * floatval($licai_order_data['site_buy_fee_rate']) * 0.01;
//$licai_order_data['freeze_bond_rate'] = $licai['freeze_bond_rate'];
//冻结的保证金,扣除网站收取的手续费
$licai_order_data['freeze_bond'] = round($licai_order_data['freeze_bond_rate'] * ($money-$licai_order_data['site_buy_fee']) * 0.01,2); //余额宝时为0
$licai_order_data['pay_money'] = $money - $licai_order_data['site_buy_fee'] - $licai_order_data['freeze_bond'] ;
//成交服务费
$licai_order_data['service_fee_rate'] = $licai['service_fee_rate'];
$licai_order_data['service_fee'] = floatval($licai['service_fee_rate']) * 0.01 * ($money - $licai_order_data['site_buy_fee']);
//print_r($licai_order_data);die();
$GLOBALS['db']->autoExecute(DB_PREFIX."licai_order",$licai_order_data,"INSERT");
if($GLOBALS['db']->affected_rows()){
require_once(APP_ROOT_PATH.'system/libs/user.php');
//理财购买本金
modify_account(array("money"=>'-'.($money-$licai_order_data['site_buy_fee'])),$GLOBALS['user_info']['id'],"购买理财产品“".$licai['name']."”,购买本金",array('type'=>42));
//理财购买手续费
modify_account(array("money"=>'-'.$licai_order_data['site_buy_fee']),$GLOBALS['user_info']['id'],"购买理财产品“".$licai['name']."”,购买手续费",array('type'=>43));
//理财发放资金
modify_account(array("money"=>$licai_order_data['pay_money']),intval($licai['user_id']),$GLOBALS['user_info']['user_name']."对理财“".$licai['name']."”的投资,理财购买资金",array('type'=>46));
if($licai_order_data['freeze_bond'] > 0)
{
//理财冻结资金
modify_account(array("mortgage_money"=>$licai_order_data['freeze_bond']),intval($licai['user_id']),$GLOBALS['user_info']['user_name']."对理财“".$licai['name']."”的投资,理财冻结资金",array('type'=>44));
}
if($licai_order_data['service_fee']!=0)
{
//理财服务费
modify_account(array("money"=>'-'.$licai_order_data['service_fee']),intval($licai['user_id']),$GLOBALS['user_info']['user_name']."对理财“".$licai['name']."”的投资,理财服务费",array('type'=>45));
}
if($licai['type'] >0 )
{
syn_licai_status($id);
}
else
{
syn_licai_status($id,0);
}
$return['status'] = 1;
$return['info'] = "购买成功";
return $return;
}
}
///获取余额宝总收益费率
///$id 理财编号
///$begin_date 起息时间 Y-m-d
///$end_date 结束时间 Y-m-d
function get_licai_interest_yeb($id,$begin_date,$end_date)
{
if($id==0)
return null;
$licai = $GLOBALS["db"]->getRow("select * from ".DB_PREFIX."licai where id =".$id." and type = 0 ");
if(!$licai)
{
return null;
}
$interest = $GLOBALS["db"]->getRow("select sum(rate) as sum_rate,count(*) as sum_count from ".DB_PREFIX."licai_history where licai_id =".$id." and history_date >= '".$begin_date."' and history_date <'".$end_date."'");
$days=(to_timespan($end_date)-to_timespan($begin_date))/3600/24;
$avg = number_format($interest["sum_rate"]/$interest["sum_count"],4);
return array(
"days" => $days,
"interest_rate"=>$interest["sum_rate"],
"avg_interest_rate" => $avg,
"site_buy_fee_rate"=>$licai["site_buy_fee_rate"], //购买手续费
"redemption_fee_rate"=>$licai["redemption_fee_rate"], //赎回手续费
"platform_rate"=>$licai["platform_rate"], //平台收益
);
}
/**
* 获取理财收益费率
* $id 理财ID $money金额 投资金额 或赎回金额
*/
function get_licai_interest($id,$money){
if($id==0)
return null;
$licai['licai_interest'] = $GLOBALS['db']->getAll("SELECT * FROM ".DB_PREFIX."licai_interest WHERE licai_id=".$id." ORDER BY max_money ASC ");
$before_rate = 0; //预热期利率
$before_breach_rate = 0; //预热期违约利率
$interest_rate = 0; //利息率
$breach_rate = 0; //正常利息 违约收益率
$site_buy_fee_rate=0; //网站购买手续费
$redemption_fee_rate = 0; //赎回手续费
$platform_rate = 0; //平台收益率
$platform_breach_rate = 0; // 用户违约网站收益
$freeze_bond_rate = 0;
$count_str = count($licai['licai_interest']) - 1;
if($count_str >= 0 && $licai['licai_interest'][$count_str]['max_money'] < $money ){
$before_rate = $licai['licai_interest'][$count_str]['before_rate'];
$before_breach_rate = $licai['licai_interest'][$count_str]['before_breach_rate'];
$interest_rate = $licai['licai_interest'][$count_str]['interest_rate'];
$breach_rate = $licai['licai_interest'][$count_str]['breach_rate'];
$site_buy_fee_rate = $licai['licai_interest'][$count_str]['site_buy_fee_rate'];
$redemption_fee_rate = $licai['licai_interest'][$count_str]['redemption_fee_rate'];
$platform_rate = $licai['licai_interest'][$count_str]['platform_rate'];
$platform_breach_rate = $licai['licai_interest'][$count_str]['platform_breach_rate'];
$freeze_bond_rate = $licai['licai_interest'][$count_str]['freeze_bond_rate'];
}
elseif($count_str >= 0){
foreach($licai['licai_interest'] as $k=>$v){
if($v['min_money'] <$money && $v['max_money']>=$money){
$before_rate = $v['before_rate'];
$before_breach_rate = $v['before_breach_rate'];
$interest_rate = $v['interest_rate'];
$breach_rate = $v['breach_rate'];
$site_buy_fee_rate = $v['site_buy_fee_rate'];
$redemption_fee_rate = $v['redemption_fee_rate'];
$platform_rate = $v['platform_rate'];
$platform_breach_rate = $v['platform_breach_rate'];
$freeze_bond_rate = $v['freeze_bond_rate'];
}
}
}
return array(
"interest"=>$licai['licai_interest'],
"before_rate"=>$before_rate,
"before_breach_rate"=>$before_breach_rate,
"interest_rate"=>$interest_rate,
"breach_rate"=>$breach_rate,
"site_buy_fee_rate"=>$site_buy_fee_rate,
"redemption_fee_rate"=>$redemption_fee_rate,
"platform_rate"=>$platform_rate,
"platform_breach_rate"=>$platform_breach_rate,
"freeze_bond_rate"=>$freeze_bond_rate,
);
}
/**
* 下一交易日
*/
function get_peizi_next_date($time= NOW_TIME ,$left = 0){
$date = to_date($time,"Y-m-d");
switch($left){
case 0://当天
return $date;
break;
case 1://次日生效
$cur_date = dec_date($date, -1);
return $cur_date;
break;
case 2://下一交易日
for($i = 1; $i < 30; $i ++){
$cur_date = dec_date($date, -$i);
if (get_peizi_is_holiday($cur_date) == false){
return $cur_date;
}
}
break;
case 3://下二个交易日
for($i = 1; $i < 30; $i ++){
$i ++;
$cur_date = dec_date($date, -$i);
if (get_peizi_is_holiday($cur_date) == false){
return $cur_date;
}
}
break;
default :
return null;
break;
}
}
/**
* 判断是否交易日
* @param unknown_type $date
*/
function get_peizi_is_holiday($date){
//判断是否是:周末
$w = to_date(to_timespan($date,"Y-m-d"),'w');
//echo $w;exit;
if ($w == 0 || $w == 6){
return true;
}
//判断是否为节假日
$sql = "select id from ".DB_PREFIX."licai_holiday where holiday = '".$date."'";
if (intval($GLOBALS['db']->getOne($sql)) > 0){
return true;
}else{
return false;
}
}
function next_month($time,$m=1){
$str_t = to_timespan(to_date($time)." ".$m." month ");
//$str_t = to_timespan(to_date($time)." ".$m." month -1 day");
return $str_t;
}
/*
* $redempte_id 申请ID
* $status 0表示未审核 1表示已审核 2表示审核不通过 3表示取消赎回
* $earn_money 审核收益
* $fee 赎回手续费
* $organiser_fee 平台收益
* $pay_type 0 表示不允许垫付 1表示允许垫付
* $web_type 0表示前台撤销 1表示后台审核赎回 2表示前台审核赎回
*/
function deal_redempte($redempte_id,$status,$earn_money,$fee=0,$organiser_fee=0,$pay_type=0,$web_type=0){
require_once(APP_ROOT_PATH.'system/libs/user.php');
$info=array('status'=>1,'info'=>'');
$licai=array();
if($web_type==1||$web_type==2){
$redempte=$GLOBALS['db']->getRow("select * from ".DB_PREFIX."licai_redempte where id=$redempte_id");
if($redempte['status']==0){
if($status==1){
//审核通过
if(true){
//最终的金额
$money=$redempte['money']+$organiser_fee+$earn_money;
$order=$GLOBALS['db']->getRow("select dorder.money,dorder.site_buy_fee,dorder.redempte_money,dorder.user_id as consumer_id,d.user_id as organiser_id,d.name as licai_name,d.id as licai_id,d.service_fee_rate from ".DB_PREFIX."licai_order as dorder left join ".DB_PREFIX."licai as d on dorder.licai_id=d.id where dorder.id=".$redempte['order_id']);
if($redempte['money']>($order['money']-$order['redempte_money'])){
$info['status']=0;
$info['info']='您赎回的金额超过了您购买的金额(您的购买金额是'.$order['money'].',已赎回'.$order['redempte_money'].")";
return $info;
}
/*if($order['service_fee_rate']>0){
$organiser_fee=$redempte['money']*$order['service_fee_rate'];
}else{
$organiser_fee=0;
}*/
//$money=$redempte['money']+$organiser_fee+$earn_money;
$licai['url'] = url("licai#deal",array("id"=>$order['licai_id']));
$licai['name']=$order['licai_name'];
//对发起人进行扣款操作,有冻结金额mortgage_money 先用冻结金额,没有再用余额money,如果余额也不够,就生成垫付单
if($order['consumer_id']&&$order['organiser_id']){
$organiser_user=$GLOBALS['db']->getRow("select * from ".DB_PREFIX."user where id=".$order['organiser_id']);
require_once APP_ROOT_PATH.'system/libs/user.php';
//$organiser_user = get_user_info("*",$order['organiser_id']);
if($organiser_user['money']>=$money){
//modify_account(array('money'=>'-'.$money,'ben_money'=>'-'.$redempte['money'],'earn_money'=>'-'.$earn_money,'organiser_fee'=>'-'.$organiser_fee),$order['organiser_id'],"发放用户要赎回的理财产品“".$licai['name']."”",39);
//赎回本金
modify_account(array('money'=>'-'.$redempte['money']),$order['organiser_id'],"发放用户要赎回的理财产品“".$licai['name']."”的本金",array('type'=>42));//42理财购买本金 43理财购买手续费 44理财冻结资金 45理财服务费 46理财发放资金
//收益
modify_account(array('money'=>'-'.$earn_money),$order['organiser_id'],"发放用户要赎回的理财产品“".$licai['name']."”的收益",array('type'=>46));
//平台手续费
modify_account(array('money'=>'-'.$organiser_fee),$order['organiser_id'],"发放用户要赎回的理财产品“".$licai['name']."”的平台收益",array('type'=>43));
//if(!$re){
/* $info['status']=0;
$info['info']='资金修改错误';
return $info;
*/
//}
}elseif($organiser_user['mortgage_money']>=$money){
//赎回本金
modify_account(array('mortgage_money'=>'-'.$redempte['money']),$order['organiser_id'],"发放用户要赎回的理财产品“".$licai['name']."”的本金",array('type'=>44));
//赎回手续费
modify_account(array('mortgage_money'=>'-'.$earn_money),$order['organiser_id'],"发放用户要赎回的理财产品“".$licai['name']."”的收益",array('type'=>44));
//赎回平台手续费
modify_account(array('mortgage_money'=>'-'.$organiser_fee),$order['organiser_id'],"发放用户要赎回的理财产品“".$licai['name']."”的平台收益",array('type'=>44));
//if(!$re){
/* $info['status']=0;
$info['info']='资金修改错误';
return $info;*/
//}
}/*elseif(($organiser_user['money']+$organiser_user['mortgage_money'])>=$money){
$ye_money=$money-$organiser_user['mortgage_money'];
//赎回本金
modify_account(array('money'=>'-'.$redempte['money']),$order["organiser_id"],"发放用户要赎回的理财产品“".$licai['name']."”的本金",array('type'=>42));
//赎回收益
modify_account(array('money'=>'-'.$earn_money),$order["organiser_id"],"发放用户要赎回的理财产品“".$licai['name']."”的收益",array('type'=>46));
//平台手续费
modify_account(array('money'=>'-'.$organiser_fee),$order["organiser_id"],"发放用户要赎回的理财产品“".$licai['name']."”的手续费",array('type'=>43));
}*/else{
if($pay_type==1){
//生成垫付单
$re=$GLOBALS['db']->getRow("select * from ".DB_PREFIX."licai_advance where redempte_id=".$redempte_id);
if($re){
$info['status']=0;
$info['info']='发起人已经生成垫付单';
return $info;
}else{
$advance['redempte_id']=$redempte_id;
$advance['user_id']=$organiser_user['id'];
$advance['user_name']=$organiser_user['user_name'];
$advance['money']=$redempte['money'];
$advance['earn_money']=$earn_money;
$advance['fee']=$fee;
$advance['organiser_fee']=$organiser_fee;
$advance['real_money']=$organiser_user['money']+$organiser_user['mortgage_money'];
$advance['advance_money']=$redempte['money']+$advance['earn_money']+$advance['organiser_fee']-$advance['real_money'];
$advance['status']=1;
$advance['type']=$redempte['type'];
$advance['create_date']=to_date(NOW_TIME);
$advance['update_date']=to_date(NOW_TIME);
$re=$GLOBALS['db']->autoExecute(DB_PREFIX."licai_advance",$advance);
if(!$re){
$info['status']=0;
$info['info']='发起人生成垫付单错误';
return $info;
}else{
$results = array('redempte_money'=>0,'earn_money'=>0,'organiser_fee'=>0);
if($organiser_user['mortgage_money']){
//赎回本金
if($results['redempte_money'] == 0&&$organiser_user['mortgage_money']>$redempte['money']){
if(modify_account(array('mortgage_money'=>'-'.$redempte['money']),$advance["user_id"],"发放用户要赎回的理财产品“".$licai['name']."”的本金",array('type'=>44))){
$results['redempte_money'] = 1;
}
}
//赎回收益
if($results['earn_money'] == 0&&$organiser_user['mortgage_money']>$earn_money){
if(modify_account(array('mortgage_money'=>'-'.$earn_money),$advance["user_id"],"发放用户要赎回的理财产品“".$licai['name']."”的收益",array('type'=>44))){
$results['earn_money'] = 1;
}
}
//平台收益
if($results['organiser_fee'] == 0&&$organiser_user['mortgage_money']>$organiser_fee){
if(modify_account(array('mortgage_money'=>'-'.$organiser_fee),$advance["user_id"],"发放用户要赎回的理财产品“".$licai['name']."”的平台收益",array('type'=>44))){
$results['organiser_fee'] = 1;
}
}
//生成垫付单前扣除冻结金
$yue1 = $GLOBALS['db']->getOne("select mortgage_money from ".DB_PREFIX."user where id=".$GLOBALS["user_info"]["id"]);
modify_account(array('mortgage_money'=>'-'.$yue1),$advance["user_id"],"生成垫付单扣除冻结金",array('type'=>44));
}
if($organiser_user['money']){
//赎回本金
if($results['redempte_money'] == 0&&$organiser_user['money']>$redempte['money']){
if(modify_account(array('money'=>'-'.$redempte['money']),$advance["user_id"],"发放用户要赎回的理财产品“".$licai['name']."”的本金",array('type'=>42))){
$results['redempte_money'] = 1;
}
}
//赎回收益
if($results['earn_money'] == 0&&$organiser_user['money']>$earn_money){
if(modify_account(array('money'=>'-'.$earn_money),$advance["user_id"],"发放用户要赎回的理财产品“".$licai['name']."”的收益",array('type'=>46))){
$results['earn_money'] = 1;
}
}
//平台收益
if($results['organiser_fee'] == 0&&$organiser_user['money']>$organiser_fee){
if(modify_account(array('money'=>'-'.$organiser_fee),$advance["user_id"],"发放用户要赎回的理财产品“".$licai['name']."”的平台收益",array('type'=>43))){
$results['organiser_fee'] = 1;
}
}
//生成垫付单前扣除余额
$yue2 = $GLOBALS['db']->getOne("select money from ".DB_PREFIX."user where id=".$GLOBALS["user_info"]["id"]);
modify_account(array('money'=>'-'.$yue2),$advance["user_id"],"生成垫付单扣除余额",array('type'=>47));
}
}
}
}else{
$info['status']=2;
if($web_type==1){
$info['info']='用户账户资金不足,是否要帮用户垫付';
}elseif($web_type==2){
$licai_pay_type = $GLOBALS["db"]->getRow("select lc.pay_type from ".DB_PREFIX."licai as lc" .
" left join ".DB_PREFIX."licai_order as lco on lc.id = lco.licai_id " .
" left join ".DB_PREFIX."licai_redempte as lcr on lco.id = lcr.order_id " .
" where lcr.id=".$redempte_id." and lc.user_id = ".$GLOBALS["user_info"]["id"]);
if($licai_pay_type['pay_type'] ==1){
$info['status']=2;
$info['info']='账户资金不足,是否需要系统垫付';
return $info;
}else{
$info['status']=0;
$info['lack'] = 1;
$info['info']='您的账户资金不足,请充值';
}
}
return $info;
}
}
//修改赎回状态
$re=$GLOBALS['db']->query("update ".DB_PREFIX."licai_redempte set status=$status,earn_money=".$earn_money.",fee=".$fee.",update_date = '".to_date(NOW_TIME,"Y-m-d H:i:s")."' where id=$redempte_id ");
//修改订单状态
if($redempte['money']<($order['money']-$order["site_buy_fee"]-$order['redempte_money'])){
//部分赎回
$set=" ,status=2 ";
}else{
//全部赎回
$set=" ,status=3 ";
$over = 1;
}
$re=$GLOBALS['db']->query("update ".DB_PREFIX."licai_order set redempte_money=redempte_money+".$redempte['money'].$set." ,status_time = '".to_date(NOW_TIME,"Y-m-d H:i:s")."' where id=".$redempte['order_id']);
//为投资人 进行金额的增加
$comuse_money=$redempte['money']+$earn_money-$fee;
//赎回本金
modify_account(array('money'=>$redempte['money']),$order['consumer_id'],"赎回理财产品“".$licai['name']."”的本金",array('type'=>42));
//赎回收益
modify_account(array('money'=>$earn_money),$order['consumer_id'],"赎回理财产品“".$licai['name']."”的收益",array('type'=>46));
//赎回手续费
modify_account(array('money'=>'-'.$fee),$order['consumer_id'],"赎回理财产品“".$licai['name']."”的手续费",array('type'=>43));
if($over == 1)
{
$GLOBALS["db"]->query("update ".DB_PREFIX."licai_redempte set status=2,update_date = '".to_date(NOW_TIME,"Y-m-d H:i:s")."' where order_id = ".$redempte['order_id']." and status = 0 and user_id =".$order["consumer_id"]);
}
/* if(!$re){
$info['status']=0;
$info['info']='用户收款错误';
return $info;
}*/
}else{
$info['status']=0;
$info['info']='操作失败,请重新提交';
return $info;
}
}else{
$info['status']=0;
$info['info']='操作失败,请重新撤销';
return $info;
}
}elseif($status==2){
//审核不通过
$re=$GLOBALS['db']->query("update ".DB_PREFIX."licai_redempte set status=$status where id=$redempte_id ");
if($re){
$info['info']='操作成功';
return $info;
}else{
$info['status']=0;
$info['info']='操作失败,请重新撤销';
return $info;
}
}
}
}elseif($web_type==0){
$user_id=$GLOBALS['user_info']['id'];
if(!$user_id){
$info['status']=0;
$info['info']='请登录';
return $info;
}
if($status==3){
$redempte=$GLOBALS['db']->getRow("select * from ".DB_PREFIX."licai_redempte where id=$redempte_id");
if($redempte['user_id']==$user_id){
$re=$GLOBALS['db']->query("update ".DB_PREFIX."licai_redempte set status=$status where id=$redempte_id and user_id=$user_id ");
if($re){
$info['info']='操作成功';
return $info;
}else{
$info['status']=0;
$info['info']='操作失败,请重新撤销';
return $info;
}
}else{
$info['status']=0;
$info['info']='您没有权限撤销';
return $info;
}
}
}
return $info;
}
/*
* 生成赎回订单
* $user_id 申请人ID
* $order_id 订单ID
* $money 申请赎回金额
*/
function create_redempte($user_id,$order_id,$money){
$info=array('status'=>1,'info'=>'');
if($money<=0){
$info['status']=0;
$info['info']='请输入有效金额';
return $info;
}
if(!$GLOBALS['user_info']){
$info['status']=0;
$info['info']='请先登录';
return $info;
}
if($GLOBALS['user_info']['id']!=$user_id){
$info['status']=0;
$info['info']='您没有权限';
return $info;
}
$order=$GLOBALS['db']->getRow("select dorder.before_interest_date,dorder.before_interest_enddate,dorder.begin_interest_date as begin_order,dorder.end_interest_date, dorder.user_id as consumer_id,d.user_id as organiser_id,d.name as licai_name,d.id as licai_id,d.service_fee_rate,d.begin_buy_date,d.begin_interest_date,d.end_buy_date,d.end_date,d.time_limit,d.type from ".DB_PREFIX."licai_order as dorder left join ".DB_PREFIX."licai as d on dorder.licai_id=d.id where dorder.id=".$order_id." and dorder.user_id=".$user_id);
if($order){
if($order["type"]>0)
{
$licai_interest=get_licai_interest($order['licai_id'],$money);
}
else
{
if( to_timespan($order["end_interest_date"]) > NOW_TIME)
{
$licai_interest= get_licai_interest_yeb($order['licai_id'],$order['begin_order'],to_date(NOW_TIME,'Y-m-d'));
}
else
{
$licai_interest= get_licai_interest_yeb($order['licai_id'],$order['begin_order'],$order['end_interest_date']);
}
}
$redempte['order_id']=$order_id;
$redempte['user_id']=$user_id;
$redempte['user_name']=$GLOBALS['user_info']['user_name'];
$redempte['money']=$money;
// $redempte['earn_money']=$earn_money;
// $redempte['fee']=$fee;
// $redempte['organiser_fee']=$organiser_fee;
$now=get_gmtime();
$limit_time=$order['time_limit']*30*24*3600;
$order['before_interest_date']=to_timespan($order['before_interest_date']);
$order['before_interest_enddate']=to_timespan($order['before_interest_enddate']);
$order['begin_interest_date']=$order['begin_order'];
$order['begin_interest_date']=to_timespan($order['begin_interest_date']);
$order['end_interest_date']=to_timespan($order['end_interest_date']);
if($order["type"]>0)
{
if($order['before_interest_date']<$now&&$order['before_interest_enddate']>$now){
//小于起息时间,就是预热期就赎回
$redempte['type']=0;
$day=intval(($now-$order['before_interest_date'])/24/3600);
if($day<=0){
$day=0;
}
$redempte['earn_money']=$money*$day*$licai_interest['before_breach_rate']*0.01/365;
$redempte['fee']=$money*$day*$licai_interest['redemption_fee_rate']*0.01/365;
$redempte['organiser_fee']=$money*$day*$licai_interest['platform_breach_rate']*0.01/365;
}elseif($order['before_interest_enddate']<=$now&&$order['begin_interest_date']>$now){
//完成预期期间,未进入正式起息时间
$redempte['type']=1;
$day=intval(($order['before_interest_enddate']-$order['before_interest_date'])/24/3600);
if($day<=0){
$day=0;
}
$redempte['earn_money']=$money*$day*$licai_interest['before_rate']*0.01/365;
$redempte['fee']=$money*$day*$licai_interest['redemption_fee_rate']*0.01/365;
$redempte['organiser_fee']=$money*$day*$licai_interest['platform_breach_rate']*0.01/365;
}elseif($order['begin_interest_date']<=$now&&$order['end_interest_date']>$now){
//进入正式起息时间,违约
$redempte['type']=1;
$day_before=intval(($order['before_interest_enddate']-$order['before_interest_date'])/24/3600);
if($day_before<=0){
$day_before=0;
}
$before_earn_money=$money*$day_before*$licai_interest['before_rate']*0.01/365;
$day_begin=intval(($now-$order['begin_interest_date'])/24/3600);
if($day_begin<=0){
$day_begin=0;
if($order['begin_interest_date']!=$order['before_interest_enddate']){
$redempte['type']=1;
}else{
$redempte['type']=3;
}
}
$begin_earn_money=$money*$day_begin*$licai_interest['breach_rate']*0.01/365;
$redempte['earn_money']=$before_earn_money+$begin_earn_money;
$redempte['fee']=$money*($day_before+$day_begin)*$licai_interest['redemption_fee_rate']*0.01/365;
$redempte['organiser_fee']=$money*($day_before+$day_begin)*$licai_interest['platform_breach_rate']*0.01/365;
}elseif($order['end_interest_date']<=$now){
$redempte['type']=2;
$day_before=intval(($order['before_interest_enddate']-$order['before_interest_date'])/24/3600);
$before_earn_money=$money*$day_before*$licai_interest['before_rate']*0.01/365;
$day_begin=intval(($order['end_interest_date']-$order['begin_interest_date'])/24/3600);
$begin_earn_money=$money*$day_begin*$licai_interest['interest_rate']*0.01/365;
$redempte['earn_money']=$before_earn_money+$begin_earn_money;
$redempte['fee']=$money*($day_before+$day_begin)*$licai_interest['redemption_fee_rate']*0.01/365;
$redempte['organiser_fee']=$money*($day_before+$day_begin)*$licai_interest['platform_rate']*0.01/365;
}
}
else
{
$order_data['platform_rate'] = $licai_interest['platform_rate'];
$order_data['service_fee_rate'] = $licai_interest['service_fee_rate'];
$order_data['redemption_fee_rate'] = $licai_interest['redemption_fee_rate'];
if($order['end_interest_date'] < NOW_TIME)
{
$redempte['type']=2;
$days = intval(($order['end_interest_date']-$order['begin_interest_date'])/24/3600);
}
else
{
$redempte['type']=1;
$days = intval((NOW_TIME-$order['begin_interest_date'])/24/3600);
}
if($days<0)
{
$days = 0;
}
$redempte['earn_money']=$money*$licai_interest["interest_rate"]/365/100;
$redempte['fee']=$money*$days*$order_data['redemption_fee_rate']*0.01/365;
$redempte['organiser_fee']=$money*$days*$order_data['platform_rate']*0.01/365;
}
$redempte['status']=0;
$redempte['create_date']=to_date(NOW_TIME);
$redempte['update_date']=to_date(NOW_TIME);
$re=$GLOBALS['db']->autoExecute(DB_PREFIX."licai_redempte",$redempte);
if($re){
$info['info']='申请成功';
return $info;
}else{
$info['status']=0;
$info['info']='操作失败,请重新提交';
return $info;
}
}else{
$info['status']=0;
$info['info']='您的订单不存在';
return $info;
}
}
function interest_item_format($vo)
{
$vo["min_money_format"] = format_price($vo["min_money"]);
$vo["max_money_format"] = format_price($vo["max_money"]);
$vo["interest_rate_format"] = number_format($vo["interest_rate"],4)."%";
$vo["buy_fee_rate_format"] = number_format($vo["buy_fee_rate"],4)."%";
$vo["site_buy_fee_rate_format"] = number_format($vo["site_buy_fee_rate"],4)."%";
$vo["redemption_fee_rate_format"] = number_format($vo["redemption_fee_rate"],4)."%";
$vo["before_rate_format"] = number_format($vo["before_rate"],4)."%";
$vo["before_breach_rate_format"] = number_format($vo["before_breach_rate"],4)."%";
$vo["breach_rate_format"] = number_format($vo["breach_rate"],4)."%";
$vo["platform_rate_format"] = number_format($vo["platform_rate"],4)."%";
$vo["freeze_bond_rate_format"] = number_format($vo["freeze_bond_rate"],4)."%";
$vo["platform_breach_rate_format"] = number_format($vo["platform_breach_rate"],4)."%";
return $vo;
}
function get_licai_status($id)
{
$vo = $GLOBALS["db"]->getRow("select * from ".DB_PREFIX."licai where id =".$id);
if(!$vo)
{
return "";
}
$time = get_peizi_next_date(to_timespan($vo["begin_interest_date"]),$vo['begin_buy_date']);
if(NOW_TIME < to_timespan($time))
{
$status = 0;
}
elseif(($vo["end_date"] =="" || $vo["end_date"] = "0000-00-00" || NOW_TIME <= to_timespan($vo["end_date"]) && NOW_TIME >= to_timespan($time)))
{
$status = 1;
}
elseif(NOW_TIME > to_timespan($vo["end_date"]))
{
$status = 3;
}
return $status;
}
function format_money_wan($money)
{
return ($money/10000)."万元";
}
?>