model = new \app\admin\model\User; $this->view->assign("genderList", $this->model->getGenderList()); $this->view->assign("statusList", $this->model->getStatusList()); } /** * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法 * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑 * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改 */ /** * 查看 */ public function index() { //当前是否为关联查询 $this->relationSearch = true; //设置过滤方法 $this->request->filter(['strip_tags', 'trim']); if ($this->request->isAjax()) { //如果发送的来源是Selectpage,则转发到Selectpage if ($this->request->request('keyField')) { return $this->selectpage(); } list($where, $sort, $order, $offset, $limit) = $this->buildparams(); $list = $this->model ->with(['jigou']) ->where($where) ->order($sort, $order) ->paginate($limit); foreach ($list as $row) { $row->getRelation('jigou')->visible(['title']); } $result = array("total" => $list->total(), "rows" => $list->items()); return json($result); } return $this->view->fetch(); } /** * 统计 */ public function tongji(){ $list_exam = Db::name('user_question_log')->alias('log') ->field('max(log.id) as maxlogid,log.user_id,count(log.id) as right_num,user.nickname,user.mobile,user.bind_jigou_id,vote_jigou.title') ->join('user','log.user_id = user.id','LEFT') ->join('vote_jigou','user.bind_jigou_id = vote_jigou.id','LEFT') ->where('log.is_right',1) ->group('log.user_id')->order('right_num desc,maxlogid asc') ->select(); //只要前300名,后面的砍掉 if(count($list_exam) > 300){ $list_exam = array_chunk($list_exam,300)[0]; } $user_ids = array_column($list_exam,'user_id'); $list_vote = Db::name('vote_record')->field('user_id,sum(vote) as vote_num')->where('user_id','IN',$user_ids)->group('user_id')->order('vote_num desc')->select(); foreach($list_exam as $key => $val){ $val['num'] = $key + 1; $val['vote_num'] = 0; foreach($list_vote as $k => $v){ if($val['user_id'] == $v['user_id']){ $val['vote_num'] = $v['vote_num']; } } $list_exam[$key] = $val; } // dump($list_exam); // dump($list_vote); //导出excel $action = input('action',''); if($action == 'export'){ //表头 $excel_header = [ 'num' => '排名', 'user_id' => '用户ID', 'nickname' => '用户昵称', 'mobile' => '用户手机', 'right_num' => '答对次数', 'title' => '绑定机构', 'vote_num' => '投出票数', ]; //内容 $excel_result = $list_exam; //文件输出 $fileName = date('Y-m-d-H-i-s'); $ExcelCsv = new ExcelCsv($excel_header, $excel_result); $data = $ExcelCsv->collection(); $ExcelCsv->download($fileName, $excel_header, $data); }else{ $this->assign('lists',$list_exam); $this->view->engine->layout(false); return $this->view->fetch(); } } }