request->filter('trim,strip_tags,htmlspecialchars'); } /** * 后台首页 */ public function index() { //今日收入金额 $return_data['today_money'] = db::name('vs_user_recharge')->where('pay_status',2)->whereTime('pay_time', 'today')->sum('money'); //总收入金额 $return_data['all_money'] = db::name('vs_user_recharge')->where('pay_status',2)->sum('money'); //今日充值笔数 $return_data['today_money_num'] = db::name('vs_user_recharge')->where('pay_status',2)->whereTime('pay_time', 'today')->count(); //总充值笔数 $return_data['all_money_num'] = db::name('vs_user_recharge')->where('pay_status',2)->count(); //今日后台充值金币数 $return_data['admin_today_coin'] =db::name('vs_admin_recharge_log')->where(['type'=>1])->whereTime('createtime', 'today')->sum('change_value'); //总充值数 $return_data['admin_coin'] = db::name('vs_admin_recharge_log')->where(['type'=>1])->sum('change_value'); //今日待付款金额 $return_data['today_wait_pay'] = db::name('vs_user_recharge')->where('pay_status',1)->whereTime('createtime', 'today')->sum('money'); //总待付款金额 $return_data['all_wait_pay'] = db::name('vs_user_recharge')->where('pay_status',1)->sum('money'); //今日待付款笔数 $return_data['today_wait_pay_num'] = db::name('vs_user_recharge')->where('pay_status',1)->whereTime('createtime', 'today')->count(); //总待付款笔数 $return_data['all_wait_pay_num'] = db::name('vs_user_recharge')->where('pay_status',1)->count(); //待办事项 //房间审核数 $return_data['room_audit_num'] = db::name('vs_room')->where('apply_status',1)->count(); //举报待处理数 $return_data['report_audit_num'] = db::name('vs_user_inform')->where('status',1)->count(); //反馈待处理数 $return_data['feedback_audit_num'] = db::name('vs_suggest')->where('is_deal',1)->count(); //代办数据 $room_audit = db::name('vs_room')->field('u.nickname as title')->alias('a')->join('user u','a.user_id=u.id')->where('a.apply_status',1)->select(); foreach ($room_audit as $key => $value) { $room_audit[$key]['title'] = ''.$value['title'].'的房间申请待处理'; } $report_audit = db::name('vs_user_inform')->field('u.nickname as title')->alias('a')->join('user u','a.user_id=u.id')->where('a.status',1)->select(); foreach ($report_audit as $key => $value) { $report_audit[$key]['title'] = ''.$value['title'].'的举报待处理'; } $feedback_audit = db::name('vs_suggest')->field('u.nickname as title')->alias('a')->join('user u','a.user_id=u.id')->where('a.is_deal',1)->select(); foreach ($feedback_audit as $key => $value) { $feedback_audit[$key]['title'] = ''.$value['title'].'的反馈待处理'; } $audit = array_merge($room_audit,$report_audit,$feedback_audit); $return_data['todo_list'] = $audit; //消息公告 $system_message = db::name('system_message')->field('title,createtime')->where('delete_time',0)->select(); foreach ($system_message as $key => $value){ $system_message[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']); } $return_data['system_message'] = $system_message; //图标数据 //一年内收支情况 $year = date('Y'); $return_data['income_expend'] = [];//一年内收支情况 for($i = 1; $i <= 12; $i++){ $key = $i-1; $return_data['income_expend'][$key]['year_month']= $year.'年'.$i.'月'; $return_data['income_expend'][$key]['month']= $i.'月'; $month_start = strtotime($year.'-'.$i.'-01'); $month_end = strtotime($year.'-'.$i.'-31'); //充值收入 $return_data['income_expend'][$key]['recharge_income'] = db::name('vs_user_recharge')->where('pay_status',2)->where('pay_time', 'between', [$month_start, $month_end])->sum('money'); //提现支出 $return_data['income_expend'][$key]['withdraw_expend'] = db::name('vs_user_withdrawal')->whereIn('status',[2,6])->where('createtime', 'between', [$month_start, $month_end])->sum('money'); } //用户覆盖区域 //中国所有省份 foreach ($this->province as $key => $value) { $return_data['cover_area'][$key]['province'] = $value; $return_data['cover_area'][$key]['count'] = db::name('user')->where('status', 1)->where('is_robot', 0)->whereLike('address_ip', $value."%")->count(); } //会员分析 //会员总数 $return_data['member_count'] = db::name('user')->where('status', 1)->where('is_robot', 0)->count(); //今日登录 $return_data['online_count'] = db::name('user')->where('status', 1)->where('is_robot', 0)->whereTime('logintime', 'today')->count(); //七天内未登录 $return_data['no_login_count'] = db::name('user')->where('status', 1)->where('is_robot', 0)->whereTime('logintime', '<', '7 day ago')->count(); //今日注册 $return_data['register_count'] = db::name('user')->where('status', 1)->where('is_robot', 0)->whereTime('createtime', 'today')->count(); //充值会员数 $return_data['recharge_count'] = db::name('vs_user_recharge')->where('pay_status',2)->group('user_id')->count(); //充值会员百分比 $return_data['recharge_count_percent'] = round(($return_data['recharge_count'] / $return_data['member_count']) * 100); //未充值会员数 $return_data['no_recharge_count'] = $return_data['member_count'] - $return_data['recharge_count']; $return_data['no_recharge_count_percent'] = round(($return_data['no_recharge_count'] / $return_data['member_count']) * 100); //IOS用户数 $return_data['ios_count'] = db::name('user')->where('status', 1)->where('is_robot', 0)->where('system', 'iOS')->count(); $return_data['ios_count_percent'] = round(($return_data['ios_count'] / $return_data['member_count']) * 100); //安卓用户数 $return_data['android_count'] = $return_data['member_count']-$return_data['ios_count']; $return_data['android_count_percent'] = round(($return_data['android_count'] / $return_data['member_count']) * 100); //礼物打赏实时统计 //一个月内的礼物打赏 // $start_time_day = 1; $end_time_day = date('d'); for ($i = 0; $i <= $end_time_day; $i++) { if($i == 0){ $gift_money[$i]['day'] = 0; $gift_money[$i]['time'] = 0; $gift_money[$i]['gift_total_day'] = 0; $gift_money[$i]['gift_buy_day'] = 0; $gift_money[$i]['gift_backpack_day'] = 0; }else{ $gift_money[$i]['day'] = $i; $day_time = strtotime(date('Y-m-') . $i); $day_time_end = strtotime(date('Y-m-') . $i . ' 23:59:59'); $gift_money[$i]['time'] = date('Y-m-') . $i; //总礼物打赏值 $gift_money[$i]['gift_total_day'] = Db::name('vs_give_gift')->where('createtime', 'between', [$day_time, $day_time_end])->sum('total_price'); //购买礼物打赏价值 $gift_money[$i]['gift_buy_day'] = Db::name('vs_give_gift')->where('type',1)->where('createtime', 'between', [$day_time, $day_time_end])->sum('total_price'); //背包礼物打赏价值 $gift_money[$i]['gift_backpack_day'] = Db::name('vs_give_gift')->where('type',2)->where('createtime', 'between', [$day_time, $day_time_end])->sum('total_price'); } } $return_data['gift_give_data'] = $gift_money; return V(1,"后台首页", $return_data); } /** * 管理员登录 */ public function login() { $url = $this->request->get('url', '', 'url_clean'); $url = $url ?: 'index/index'; if ($this->auth->isLogin()) { return V(0,"已登录", null); } //保持会话有效时长,单位:小时 $keeyloginhours = 24; if ($this->request->isPost()) { $username = $this->request->post('username'); $password = $this->request->post('password', '', null); $keeplogin = $this->request->post('keeplogin',0); $rule = [ 'username' => 'require|length:3,30', 'password' => 'require|length:3,30', ]; $data = [ 'username' => $username, 'password' => $password, ]; $validate = new Validate($rule, [], ['username' => __('Username'), 'password' => __('Password'), 'captcha' => __('Captcha')]); $result = $validate->check($data); if (!$result) { $this->error($validate->getError(), $url, ['token' => $this->request->token()]); } AdminLog::setTitle(__('Login')); $result = $this->auth->login($username, $password, $keeplogin ? $keeyloginhours * 3600 : 0); if ($result === true) { Hook::listen("admin_login_after", $this->request); $admin = $this->get_admin_info(); return V(1,"登录成功", ['__token__' => $this->request->token(), 'admin' => $admin]); } else { return V(0,"用户名或密码错误", null); } }else{ return V(0,"用户名或密码错误", null); } } /** * 退出登录 */ public function logout() { if ($this->request->isPost()) { $this->auth->logout(); Hook::listen("admin_logout_after", $this->request); return V(1,'退出成功', null); }else{ return V(0,'操作失败', null); } } /* * 获取当前登录管理员信息 */ public function get_admin_info(){ $admin_info = $this->auth->getUserInfo(); $admin_info['ruleList'] = $this->auth->getRuleList(); return $admin_info; } }