123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524 |
- <?php
- namespace bibidd\Controller;
- use Bibidd\Controller\CommonBaseController;
- /**
- * 动物小游戏
- * 后台类:
- * AdmincrontabController
- */
- class GameBetController extends CommonBaseController
- {
- /**
- * 获取上一期结果
- * @return void
- */
- public function get_pre_result()
- {
- $this->addHeaders(); //添加头部请求
- $uid = $_POST['uid'];
- $retun_info['current'] = M("game_bet_qishu")->field("id,bet_time,bet_jiang,bet_jie_zhi")->where("bet_hit=0")->find();
- $pre_info = M("game_bet_qishu")->field("id,bet_result,bet_jiang,bet_zhong_jian,bet_jiang_rd,bet_zhong_jian_rd")->where("bet_hit=1")->find();
- //处理中奖人数
- $pre_info['bet_jiang']=$pre_info['bet_jiang_rd'];
- $pre_info['bet_zhong_jian']=$pre_info['bet_zhong_jian_rd'];
- unset($pre_info['bet_jiang_rd']);
- unset($pre_info['bet_zhong_jian_rd']);
- $retun_info['pre'] = $pre_info;
- $data['isFen'] = 'no';
- $is_fen = M("game_user_fenjin")->where("uid = '$uid'")->getField("uid");
- if(!empty($is_fen))
- {
- $data['isFen'] = 'yes'; //被封禁
- }
- $data['code'] = '200';
- $data['message'] = 'ok';
- $data['data'] = $retun_info;
- echo json_encode($data);
- }
- /**
- * 查询列表
- * @return void
- */
- public function query_game_list()
- {
- $this->addHeaders(); //添加头部请求
- $user_info = $this->checkUserIsExist($_POST['uid']); //检查用户
- $uid = $user_info['id']; //用户id
- $page = $_POST['page'];
- $one_size = empty($_POST['pageSize']) ? 30 : $_POST['pageSize']; //每頁30行記錄
- $page_one = ($page - 1) * $one_size;
- //期数列表
- $data_list = M("game_bet_qishu")->field("id,bet_time,bet_jie_zhi,bet_result,bet_hit,bet_jiang,bet_zhong_jian,bet_jiang_rd,bet_zhong_jian_rd")->order("bet_time DESC")->LIMIT($page_one, $one_size)->select();
- $data_list = $this->hand_touchu($data_list,$uid);
- $data['code'] = '200';
- $data['message'] = 'ok';
- $data['user_coin'] = $user_info['gold_coins_number'];
- $data['data'] = $data_list;
- $data['all_num'] = M("game_bet_qishu")->field("id,bet_time,bet_result,bet_jiang,bet_zhong_jian")->count();
- echo json_encode($data);
- }
- /**
- * 查询投注列表
- * @return void
- */
- public function query_touzhu_list()
- {
- $this->addHeaders(); //添加头部请求
- $user_info = $this->checkUserIsExist($_POST['uid']); //检查用户
- $uid = $user_info['id']; //用户id
- $page = $_POST['page'];
- $one_size = empty($_POST['pageSize']) ? 30 : $_POST['pageSize']; //每頁30行記錄
- $page_one = ($page - 1) * $one_size;
- //我投注的期数
- $tempList = M("game_bet_touzhu")->where("uid='$uid'")->distinct(true)->field('qishu_id')->select();
- $qishu_ids = array_column($tempList,'qishu_id');
- $sql_charu = "";
- foreach ($qishu_ids as $key1 => $value1) {
- $duifang_id = $value1;;
- $xianzhi_one = " or id='$duifang_id'";
- $sql_charu .= $xianzhi_one;
- }
- //期数列表
- $data_list = M("game_bet_qishu")
- ->field("id,bet_time,bet_jie_zhi,bet_result,bet_hit,bet_jiang,bet_zhong_jian,bet_jiang_rd,bet_zhong_jian_rd")
- ->where("id=0 $sql_charu")
- ->order("bet_time DESC")
- ->LIMIT($page_one, $one_size)
- ->select();
- $data_list = $this->hand_touchu($data_list,$uid);
- $data['code'] = '200';
- $data['message'] = 'ok';
- $data['user_coin'] = $user_info['gold_coins_number'];
- $data['data'] = $data_list;
- $data['all_num'] = M("game_bet_qishu")->field("id,bet_time,bet_result,bet_jiang,bet_zhong_jian") ->where("id=0 $sql_charu")->count();
- echo json_encode($data);
- }
- private function hand_touchu($data_list,$uid)
- {
- foreach ($data_list as $key => $value) {
- if($value['bet_hit']!=0)
- {
- //处理中奖人数
- $data_list[$key]['bet_jiang']=$value['bet_jiang_rd'];
- $data_list[$key]['bet_zhong_jian']=$value['bet_zhong_jian_rd'];
- unset($data_list[$key]['bet_jiang_rd']);
- unset($data_list[$key]['bet_zhong_jian_rd']);
- }
- $data_list[$key]['touzhu'] = null;//添加动态字段,存储投注列表
- $qishu_id = $value['id'];
- $user_touzhu = M("game_bet_touzhu")->field("id,qishu_id,touzhu_type,touzhu_jin,shu_ying,yingli,touzhu_time")->where("qishu_id='$qishu_id' AND uid='$uid'")->order("touzhu_type")->select();
- if (!empty($user_touzhu)) {
- $data_list[$key]['touzhu'] = $user_touzhu;
- }
- }
- //判断数组数组有2个0,则把上一期标记为正在开奖,状态为 -99
- if(count($data_list)>=2 && $data_list[0]['bet_hit']=='0' && $data_list[1]['bet_hit']=='0')
- {
- $data_list[1]['bet_hit']="-99";
- }
- return $data_list;
- }
- /**
- * 用户投注
- * @return void
- */
- public function bet_on()
- {
- $this->addHeaders(); //添加头部请求
- $user_info = $this->checkUserIsExist($_POST['uid']); //检查用户
- $uid = $user_info['id']; //用户id
- $user_coins = $user_info['gold_coins_number'];
- $qishu_id = $_POST['qishu_id']; //期数id
- $coins = $_POST['coins']; //投注金额
- $type = $_POST['type']; //投注类型
- //检查
- if (!ctype_digit($coins) || !ctype_digit($type)) {
- $this->returnDataAndSendMsg("请输入整数参数");
- die();
- }
- $type_arrr = array('1','2','3');
- if (!in_array($type,$type_arrr,true)) {
- $this->returnDataAndSendMsg("非法操作");
- die();
- }
- $is_fen = M("game_user_fenjin")->where("uid = '$uid'")->getField("uid");
- if(!empty($is_fen))
- {
- $this->returnDataAndSendMsg("账号违规封禁<br/>无法进行游戏");
- die();
- }
- if($user_coins<$coins)
- {
- $this->returnDataAndSendMsg("余额不足");
- die();
- }
- //期数
- $qishu_info = M("game_bet_qishu")->where("id = '$qishu_id'")->find();
- if (empty($qishu_info)) {
- $this->returnDataAndSendMsg("非法操作");
- die();
- }
- $jiezhi_time = strtotime($qishu_info['bet_jie_zhi']);//截至投注时间
- $current_time =time();
- if ($current_time >= $jiezhi_time) {
- $this->returnDataAndSendMsg("投注时间已截止");
- die();
- }
- //复投只能5次
- $touzhu_count = M("game_bet_touzhu")->field("id")->where("uid='$uid' AND qishu_id='$qishu_id' AND touzhu_type='$type'")->count();
- if(!empty($touzhu_count) && $touzhu_count>=5)
- {
- $this->returnDataAndSendMsg("同一类型动物投注次数以超过5次");
- die();
- }
- $this->count_bet_on($qishu_id,$type,$coins,$uid);
- $rs = M("user_info")->where("id='$uid' AND gold_coins_number=$user_coins")->setDec("gold_coins_number",$coins);
- if(!$rs)
- {
- $this->returnDataAndSendMsg("投注失败,请稍后重试");
- die();
- }
- //保存
- $save_info['qishu_id'] = $qishu_id;
- $save_info['uid'] = $uid;
- $save_info['touzhu_type'] = $type;
- $save_info['touzhu_jin'] = $coins;
- $save_info['u_ip'] = $this->getIp();
- $user_weizhi=$this->get_user_ip_info($save_info['u_ip']);
- if($user_weizhi['code']=="200" && !empty($user_weizhi['data']['region'])){
- $save_info['u_ip_addr']=$user_weizhi['data']['region']."省".$user_weizhi['data']['city']."市 ".$user_weizhi['data']['isp'];
- }else{
- $save_info['u_ip_addr']="暂无";
- }
- $save_info['touzhu_time'] = date('Y-m-d H:i:s');
- $rs = M("game_bet_touzhu")->add($save_info);
- if(!$rs)
- {
- M("user_info")->where("id='$uid' AND gold_coins_number=$user_coins")->setInc("gold_coins_number",$coins); //回滚用户金额
- $this->returnDataAndSendMsg("投注失败,请稍后重试");
- die();
- }
- //更新统计
- M("game_bet_qishu")->where("id = '$qishu_id'")->setInc("bet_amount",$coins);
- M("game_bet_qishu")->where("id = '$qishu_id'")->setInc("bet_count",1);
- $data['code'] = '200';
- $data['message'] = 'ok';
- $data['data'] =$rs;
- echo json_encode($data);
- //统计
- $this->touzhu_tongji_for_day($uid,$coins,0);
- $this->xiaofei_detail($uid,"幸运动物园下注","期数[$qishu_id],下注动物[$type]",$coins);
- }
- /**
- * 统计投注信息
- * @param $qishu_id
- * @param $touzhu_type
- * @param $touzhu_coins
- * @return void
- */
- private function count_bet_on($qishu_id,$touzhu_type,$touzhu_coins,$uid)
- {
- $game_count_info = M("game_bet_qishu_count")->where("qishu_id='$qishu_id' AND touzhu_leixing='$touzhu_type'")->find();
- if(empty($game_count_info))
- {
- //插入
- $add_info['qishu_id'] = $qishu_id;
- $add_info['touzhu_leixing'] = $touzhu_type;
- $add_info['touzhu_renshu'] = 1;
- $add_info['touzhu_leixing_coins'] = $touzhu_coins;
- $add_info['last_updater'] = date('Y-m-d H:i:s');
- $rs = M("game_bet_qishu_count")->add($add_info);
- if(!$rs)
- {
- M("game_bet_qishu_count")->where("qishu_id='$qishu_id' AND touzhu_leixing='$touzhu_type'")->setInc("error_coins",$touzhu_coins);
- $this->returnDataAndSendMsg("投注失败,请稍后重试");
- die();
- }
- return;
- }
- //更新
- $id = $game_count_info["id"];
- $old_coins = $game_count_info["touzhu_leixing_coins"]; //金额
- $old_renshu = $game_count_info["touzhu_renshu"]; //投注人数
- // $temp_renshu = M("game_bet_touzhu")->where("qishu_id = '$qishu_id' AND touzhu_type = '$touzhu_type'")->distinct(true)->field('uid')->select();
- // $update_info['touzhu_renshu'] = count($temp_renshu);
- //投注人数
- $temp_renshu = M("game_bet_touzhu")->where("uid='$uid' AND qishu_id = '$qishu_id' AND touzhu_type = '$touzhu_type'")->find();
- if(empty($temp_renshu))
- {
- $update_info['touzhu_renshu'] = $old_renshu+1;
- }
- $update_info['touzhu_leixing_coins'] = $old_coins+$touzhu_coins;
- $rs = M("game_bet_qishu_count")->where("id='$id' AND touzhu_leixing_coins='$old_coins'")->save($update_info);
- if(!$rs)
- {
- M("game_bet_qishu_count")->where("qishu_id='$qishu_id' AND touzhu_leixing='$touzhu_type'")->setInc("error_coins",$touzhu_coins);
- $this->returnDataAndSendMsg("投注失败,请稍后重试");
- die();
- }
- }
- public function test()
- {
- $this->addHeaders();
- $uid = $_POST['uid'];
- $qishu_id = $_POST['qishu_id']; //期数id
- $coins = $_POST['coins']; //投注金额
- $type = $_POST['type']; //投注类型
- $this->count_bet_on($qishu_id,$type,$coins,$uid);
- $data['code'] = '200';
- $data['message'] = 'ok';
- echo json_encode($data);
- }
- /**
- * 获取提款账号
- * @return void
- */
- public function get_card()
- {
- $this->addHeaders(); //添加头部请求
- $user_info = $this->checkUserIsExist($_POST['uid']); //检查用户
- $uid = $user_info['id']; //用户id
- $data['code'] = '200';
- $data['message'] = 'ok';
- $data['data'] = M("game_user_card")->where("uid='$uid'")->find();
- echo json_encode($data);
- }
- /**
- * 保存提款账号
- * @return void
- */
- public function save_card()
- {
- $this->addHeaders(); //添加头部请求
- $user_info = $this->checkUserIsExist($_POST['uid']); //检查用户
- $uid = $user_info['id']; //用户id
- $name = $_POST['name'];
- $card_num = $_POST['cardNum'];
- $bank = $_POST['bank'];
- if (empty($name) || empty($card_num) || empty($bank) || !ctype_digit($card_num)) {
- $this->returnDataAndSendMsg("请正确填写收款信息");
- die();
- }
- //重复添加
- $check_info = M("game_user_card")->field("id")->where("name_='$name' AND card_num='$card_num'")->find();
- if(!empty($check_info))
- {
- $this->returnDataAndSendMsg("卡片重复");
- die();
- }
- $save_info['uid'] = $uid;
- $save_info['name_'] = $name;
- $save_info['card_num'] = $card_num;
- $save_info['bank_'] = $bank;
- $card_info = M("game_user_card")->field("id")->where("uid='$uid'")->find();
- if (empty($card_info)) {
- $rs = M("game_user_card")->add($save_info);
- } else {
- $rs = M("game_user_card")->where("uid='$uid'")->save($save_info);
- }
- $data['code'] = '200';
- $data['message'] = 'ok';
- $data['data'] = $rs;
- echo json_encode($data);
- }
- /**
- * 用户提现
- * @return void
- */
- public function tx()
- {
- $this->addHeaders(); //添加头部请求
- $user_info = $this->checkUserIsExist($_POST['uid']); //检查用户
- $uid = $user_info['id']; //用户id
- //判断用户是否被封禁
- $is_fen = M("game_user_fenjin")->where("uid = '$uid'")->getField("uid");
- if(!empty($is_fen))
- {
- $this->returnDataAndSendMsg("违规封禁(如有疑问请联系客服)");
- die();
- }
- //用户余额
- $user_coins = $user_info['gold_coins_number'];
- $money = $_POST['money']; //提现金额
- if (empty($money) || !ctype_digit($money)) {
- $this->returnDataAndSendMsg("请正确填写正确金额");
- die();
- }
- if($user_coins<$money)
- {
- $this->returnDataAndSendMsg("余额不足");
- die();
- }
- //控制提现规则:保证消费金额必须大于消费金额。不管历史数据
- $can_tx_amount = M("game_user_tixian_count")->where("uid='$uid'")->sum("can_tixian");
- $tx_count = M("game_user_tixian_count")->where("uid='$uid'")->sum("tx_count"); //累计提现金额
- if(empty($can_tx_amount) || $can_tx_amount<=0)
- {
- //重来没有下注过
- $this->returnDataAndSendMsg("为防止恶意洗钱,请全额投注后在申请提现");
- die();
- }
- if($can_tx_amount-$tx_count-$money<0)
- {
- //重来没有下注过
- $this->returnDataAndSendMsg("为了避免洗钱,提款需全额投注后方可提款");
- die();
- }
- $current_date = date('Y-m-d');
- $start_time = $current_date.' 00:00:00';
- $end_time = $current_date.' 23:59:59';
- //当天提现总额
- $totalAmount = M("game_user_tixian")->where("uid='$uid' AND apply_time>='$start_time' AND apply_time<='$end_time'")
- ->sum('amount_');
- if(!empty($totalAmount) && $totalAmount+$money>=100000)//十万
- {
- $this->returnDataAndSendMsg("已超出当日提现最大提现额度");
- die();
- }
- //提现需要间隔1个小时
- $check_info = M("game_user_tixian")->where("uid='$uid'")->order("id DESC")->find();
- if(!empty($check_info))
- {
- $tx_time = $check_info['apply_time'];
- $now_time = time();
- if($now_time-strtotime($tx_time)<1*60*60)
- {
- $this->returnDataAndSendMsg("提款需间隔1小时");
- die();
- }
- }
- $rs = M("user_info")->where("id='$uid' AND gold_coins_number=$user_coins")->setDec("gold_coins_number",$money);
- if(!$rs)
- {
- $this->returnDataAndSendMsg("提现失败,请稍后重试");
- die();
- }
- //保存
- $save_info['uid'] = $uid;
- $save_info['amount_'] = $money;
- $save_info['apply_time'] = date("Y-m-d H:i:s");
- $save_info['status_'] = 0;
- $save_info['tongji'] = 0;
- $save_info['dakuan_result'] = '打款审核中';
- $rs = M("game_user_tixian")->add($save_info);
- //累加提现金额
- $tx_count_info = M("game_user_tixian_count")->where("uid='$uid'")->find();
- $tx_id = $tx_count_info['id'];
- $tx_count = $tx_count_info['tx_count']; //提现汇总
- $rs = M("game_user_tixian_count")->where("id='$tx_id' AND tx_count=$tx_count")->setInc("tx_count",$money);
- $data['code'] = '200';
- $data['message'] = 'ok';
- $data['data'] =$rs;
- echo json_encode($data);
- //提现统计
- $this->tx_tongji_for_day($uid,$money);
- }
- /**
- * 提现列表
- * @return void
- */
- public function query_tx_list()
- {
- $this->addHeaders(); //添加头部请求
- $user_info = $this->checkUserIsExist($_POST['uid']); //检查用户
- $uid = $user_info['id']; //用户id
- $page = $_POST['page'];
- $one_size = empty($_POST['pageSize']) ? 30 : $_POST['pageSize']; //每頁30行記錄
- $page_one = ($page - 1) * $one_size;
- $data_list = M("game_user_tixian")->where("uid='$uid'")->order("apply_time DESC")->LIMIT($page_one, $one_size)->select();
- $data['code'] = '200';
- $data['message'] = 'ok';
- $data['user_coin'] = $user_info['gold_coins_number'];
- $data['data'] = $data_list;
- $data['all_num'] = M("game_user_tixian")->where("uid='$uid'")->order("apply_time DESC")->count();
- echo json_encode($data);
- }
- /**
- * 删除统计数据,只保留当前期和上一期。
- * @return void
- */
- public function del_qishu_count()
- {
- $this->addHeaders(); //添加头部请求
- $qishu_arry = M("game_bet_qishu")->where("bet_hit in ('0','1')")->field("id")->select();
- $string = implode(',', array_column($qishu_arry,'id'));
- $rs = M("game_bet_qishu_count")->where("qishu_id NOT IN ($string)")->delete();
- $data['code'] = '200';
- $data['message'] = 'ok';
- $data['data'] = $string;
- echo json_encode($data);
- }
- }
|