diff --git a/Application/Admin/Controller/StatisticsCountSetController.class.php b/Application/Admin/Controller/StatisticsCountSetController.class.php index ef935609c..0381ce512 100644 --- a/Application/Admin/Controller/StatisticsCountSetController.class.php +++ b/Application/Admin/Controller/StatisticsCountSetController.class.php @@ -29,55 +29,85 @@ class StatisticsCountSetController extends Controller { $this->LoginModel =M("user_login_record","tab_"); $this->SpendModel =M("spend","tab_"); $this->PromoteModel =M("promote","tab_"); - + $this->model =M(); $this->PromoteCountModel =M("PromoteCount","tab_"); $this->GameCountModel =M("GameCount","tab_"); $this->nowdata =time(); + + $group_concat_max_len = M()->execute("SET SESSION group_concat_max_len = 4294967295"); + echo "set group_concat_max_len ok,beging count".PHP_EOL; if(I("reset")) $this->reset = true; - } + } + public function setChartCount() + { + $begin = date("Y-m-d",strtotime("-1 day")); + $this->setDateCount($begin); + } + public function setFreeDateCount($begin,$end='') + { + if($end == '') $end = $begin; + //判断日期格式 + $patten = "/^\d{4}[\-](0?[1-9]|1[012])[\-](0?[1-9]|[12][0-9]|3[01])$/"; + if (!preg_match($patten, $begin)) { + die("开始时间格式错误"); + } + if (!preg_match($patten, $end)) { + die("结束时间格式错误"); + } + if(strtotime($end) < strtotime($begin)){ + die("结束时间不能比开始时间小"); + } + if(strtotime($end)+86399 > time()){ + die("结束时间不能包含今日"); + } + if($begin == $end){ + $this->setDateCount($begin); + }else{ + $starttime = $begin?strtotime($begin):mktime(0,0,0,date('m'),date('d')-1,date('Y')); + $endtime = $end?strtotime($end)+86399:$starttime+86399; + $datelist = get_date_list($starttime,$endtime,1); + $countdate = count($datelist); + for($i=0;$i<$countdate;$i++){ + $this->setDateCount($datelist[$i]); + } + } + + } public function setDateCount($date) { $this->date = $date; $tarry = explode('-',$date); $this->beginTime=mktime(0,0,0,$tarry[1],$tarry[2],$tarry[0]); $this->endTime=mktime(0,0,0,$tarry[1],$tarry[2]-0+1,$tarry[0])-1; - set_time_limit(0); $t1 = microtime(true); //判断是否存在 - // $res = $this->ChartModel->where("date = '{$this->beginTime}'")->find(); - // $reset=''; - // if(!empty($res)){ - // if($this->reset){ - // $this->ChartModel->where("date = '{$this->beginTime}'")->delete(); - // $reset = "reset and creat "; - // }else{ - // echo ("{$this->date} 已统计,请勿重复提交".PHP_EOL); - // return; - // } - - // } - $group_concat_max_len = M()->query("show variables like 'group_concat_max_len'")[0]['value']; - if($group_concat_max_len < 102400){ - echo ("请".PHP_EOL); + $PromoteRes = $this->PromoteCountModel->where("date = '{$this->beginTime}'")->find(); + $GameRes = $this->GameCountModel->where("date = '{$this->beginTime}'")->find(); + $reset=''; + if(!empty($PromoteRes) || !empty($GameRes) ){ + if($this->reset){ + $this->PromoteCountModel->where("date = '{$this->beginTime}'")->delete(); + $this->GameCountModel->where("date = '{$this->beginTime}'")->delete(); + $reset = "reset and creat "; + }else{ + echo ("{$this->date} 已统计,请勿重复提交".PHP_EOL); + return; + } } - dump($res); - - // $this->promoteNew(); - // $this->promotePayMoeny(); - // $this->promoteActive(); - // $this->promoteCreateDb(); - - // $this->addid = []; - // $this->adddata = []; - - // $this->gameNew(); - // $this->gamePayMoeny(); - // $this->gameActive(); - // $this->gameCreateDb(); - - + $this->model->startTrans(); + $this->promoteNew(); + $this->promotePayMoeny(); + $this->promoteActive(); + $this->promoteCreateDb(); + $this->addid = []; + $this->adddata = []; + $this->gameNew(); + $this->gamePayMoeny(); + $this->gameActive(); + $this->gameCreateDb(); + $this->model->commit(); $t2 = microtime(true); echo ("{$this->date} {$reset}success runtime:".round($t2-$t1,3).'s'.PHP_EOL); # code... @@ -149,10 +179,14 @@ class StatisticsCountSetController extends Controller { $value['date']=$this->beginTime; $value['create_time']=$this->nowdata; $value['active_user_list'] = @serialize(explode(",",$value['active_user_list'])); - if(empty($value['promote_account'])){ + if(empty($value['promote_account']) && $value['promote_id']){ $value['promote_account'] = $this->PromoteModel->field("account")->where("id = {$value['promote_id']}")->find()['account']; } - $this->PromoteCountModel->add($value); + $tempdbres = $this->PromoteCountModel->add($value); + if($tempdbres === false){ + $this->model->rollback(); + die("error"); + } } } } @@ -222,7 +256,11 @@ class StatisticsCountSetController extends Controller { $value['date']=$this->beginTime; $value['create_time']=$this->nowdata; $value['active_user_list'] = @serialize(explode(",",$value['active_user_list'])); - $this->GameCountModel->add($value); + $tempdbres = $this->GameCountModel->add($value); + if($tempdbres === false){ + $this->model->rollback(); + die("error"); + } } } }