query($sql_count); $count = $count_arr[0]['count']; $Page = new \Think\Page($count,C('BACK_PAGE_NUM')); $show = $Page->show();// 分页显示输出 $sql.=' ORDER BY f.id desc LIMIT '.$Page->firstRow.','.$Page->listRows; $list=M()->query($sql); foreach($list as $key => $val) { $money = M('fissionbonus_order')->where( array('fissionbonus_id' => $val['id']) )->sum('money'); $order_list = M('fissionbonus_order')->where( array('fissionbonus_id' => $val['id']) )->order('id asc')->select(); foreach($order_list as $kk => $vv) { $mb_info = M('member')->field('uname,avatar')->where( array('member_id' => $vv['member_id']) )->find(); $vv['mb_info'] = $mb_info; $order_list[$kk] = $vv; } $val['money'] = $money; $val['order_list'] = $order_list; $list[$key] = $val; } return array( 'empty'=>'~~暂无数据', 'list'=>$list, 'page'=>$show ); } /** 开启一个今日签到 **/ public function open_new_bonus($member_id) { $end_time = strtotime( date('Y-m-d').' 00:00:00' ) + 86400; $bonus_game_time_arr = M('config')->where( array('name' =>'bonus_game_time') )->find(); $bonus_count_arr = M('config')->where( array('name' =>'bonus_count') )->find(); $bonus_money_arr = M('config')->where( array('name' =>'bonus_money') )->find(); $bonus_ser_arr = $this->_rand_fen_bonus($bonus_money_arr['value'], $bonus_count_arr['value']); $fissionbonus_data = array(); $fissionbonus_data['member_id'] = $member_id; $fissionbonus_data['count'] = $bonus_count_arr['value']; $fissionbonus_data['bonus_ser'] = serialize($bonus_ser_arr); $fissionbonus_data['state'] = 0; $fissionbonus_data['begin_time'] = time(); $fissionbonus_data['end_time'] = $end_time; //$fissionbonus_data['end_time'] = time()+3600 * $bonus_game_time_arr['value']; $res = M('fissionbonus')->add($fissionbonus_data); return $res; } /** 将签到金分拆成等分 **/ private function _rand_fen_bonus($money_total = 1, $personal_num = 2) { //$money_total=100; //$personal_num=10; $min_money=0.01; $money_right=$money_total; $randMoney=[]; for($i=1;$i<=$personal_num;$i++){ if($i== $personal_num){ $money=$money_right; }else{ $max=$money_right*100 - ($personal_num - $i ) * $min_money *100; $money= rand($min_money*100,$max) /100; $money=sprintf("%.2f",$money); } $randMoney[]=$money; $money_right=$money_right - $money; $money_right=sprintf("%.2f",$money_right); } sort($randMoney); return $randMoney; } /** 对订单开始分红包 **/ public function get_fissionbonus_order($bonus_id, $member_id) { $fissionbonus_info = M('fissionbonus')->where( array('id' => $bonus_id) )->find(); if($fissionbonus_info['state'] == 1) { return 0; }else{ $bonus_ser = unserialize($fissionbonus_info['bonus_ser']); $is_self = 0; if($fissionbonus_info['member_id'] == $member_id) { $is_self = 1; } $count_order = M('fissionbonus_order')->where( array('fissionbonus_id' => $bonus_id) )->count(); $money = $bonus_ser[ $count_order ]; $is_notify = 0; if($is_self == 1) { $is_notify = 1; } //判断是否两次 $fissionbonus_order_info = M('fissionbonus_order')->where( array('fissionbonus_id' =>$bonus_id,'member_id' =>$member_id ) )->find(); if( !empty($fissionbonus_order_info) ) { return 0; }else{ $fissionbonus_order_data = array(); $fissionbonus_order_data['fissionbonus_id'] = $bonus_id; $fissionbonus_order_data['member_id'] = $member_id; $fissionbonus_order_data['is_self'] = $is_self; $fissionbonus_order_data['is_notify'] = $is_notify; $fissionbonus_order_data['money'] = $money; $fissionbonus_order_data['addtime'] = time(); M('fissionbonus_order')->add($fissionbonus_order_data); //开始赠送金额 if( $is_self == 1 ) { $this->send_member_fissionbonus($member_id,$member_id, $bonus_id, $money,1); }else{ //$this->send_member_fissionbonus($member_id, $bonus_id, $money,3); send_member_id $this->send_member_fissionbonus($fissionbonus_info['member_id'],$member_id, $bonus_id, $money,2); } $count_order = M('fissionbonus_order')->where( array('fissionbonus_id' => $bonus_id) )->count(); if($fissionbonus_info['count']<=$count_order) { M('fissionbonus')->where( array('id' => $bonus_id) )->save( array('state' => 1) ); } return $money; } } } /** 给会员赠送红包金额 1:自己签到,2:别人帮忙金额得到 3,给别人点赞得到金额 **/ private function send_member_fissionbonus($member_id =0,$send_member_id=0,$fissionbonus_id =0, $money = 0,$type=1) { //fissionbonus_flow $fissionbonus_flow_data = array(); $fissionbonus_flow_data['fissionbonus_id'] = $fissionbonus_id; $fissionbonus_flow_data['member_id'] = $member_id; $fissionbonus_flow_data['send_member_id'] = $send_member_id; $fissionbonus_flow_data['money'] = $money; $fissionbonus_flow_data['type'] = $type; $fissionbonus_flow_data['addtime'] = time(); $flow_id = M('fissionbonus_flow')->add($fissionbonus_flow_data); D('Home/member')->charge_member_account($member_id, $money, 6, $flow_id); } } ?>