where("access_time > $now")->count(); return json(['code' => 200, 'data' => $online_user]); } /** * 显示后台首页 * @throws \ReflectionException * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ public function index() { $this->title = '系统管理后台'; $auth = AdminService::instance()->apply(true); if (!$auth->isLogin()) { $this->redirect('@' . ADMIN_MODULE . '/login'); } $this->menus = MenuService::instance()->getTree(); if (empty($this->menus) && !$auth->isLogin()) { $this->redirect('@' . ADMIN_MODULE . '/login'); } else { $this->fetch(); } } /** * Describe:查询充值提现记录 * DateTime: 2020/5/15 0:54 * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ public function check() { $auth = AdminService::instance()->apply(true); if ($auth->isLogin()) { $cash_count = Db::name("LcCash")->where(['status' => 0, 'warn' => 0])->count(); $firstDate = time(); $lastDate = time() + 300; $Order_count = Db::name("LcOrder")->where("ostaus = 0 AND warn = 0 and kong_type = 0")->count(); $recharge_count = Db::name("LcRecharge")->where(['status' => 0, 'warn' => 0])->count(); if ($Order_count > 0) { $this->success("您有{$Order_count}条新的订单记录,请查看", ["url" => "/static/mp3/order.mp3_{$recharge_count}@{$cash_count}&{$Order_count}"]); } if ($cash_count > 0 && $recharge_count > 0) { $this->success("您有{$cash_count}条新的提现记录和{$recharge_count}条新的充值记录,请查看", ["url" => "/static/mp3/cztx.mp3_{$recharge_count}@{$cash_count}&{$Order_count}"]); } if ($cash_count > 0 && $recharge_count == 0) { $this->success("您有{$cash_count}条新的提现记录,请查看", ["url" => "/static/mp3/tx.mp3_{$recharge_count}@{$cash_count}&{$Order_count}"]); } if ($cash_count == 0 && 0 < $recharge_count) { $this->success("您有{$recharge_count}条新的充值记录,请查看", ["url" => "/static/mp3/cz.mp3_{$recharge_count}@{$cash_count}&{$Order_count}"]); } $this->error("暂无记录"); } $this->error("请先登录"); } /** * Describe:忽略提醒 * DateTime: 2020/5/15 0:56 * @throws \think\Exception * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException * @throws \think\exception\PDOException */ public function system_ignore() { $auth = AdminService::instance()->apply(true); if ($auth->isLogin()) { Db::name("LcCash")->where(['warn' => 0])->update(['warn' => 1]); Db::name("LcRecharge")->where(['warn' => 0])->update(['warn' => 1]); Db::name("LcOrder")->where(['warn' => 0])->update(['warn' => 1]); $this->success("操作成功"); } $this->error("请先登录"); } /** * 后台环境信息 */ public function main() { /*$this->think_ver = \think\App::VERSION; $this->mysql_ver = Db::query('select version() as ver')[0]['ver'];*/ $this->invest_count = Db::name('LcOrder')->sum('ploss'); $this->user_count = Db::name('LcUser')->count(); $this->recharge_sum = Db::name('LcRecharge')->where("status = 1")->sum('money'); $this->cash_sum = Db::name('LcCash')->where("status = 1")->sum('money'); $table = $this->finance_report(); $this->month = $table['month']; $this->last_month = $table['last_month']; $this->day = $table['day']; $this->today_key = array_search(date('Y-m-d'), array_column($this->day, 'date')); $now = time() - 300; $this->online_user = Db::name('LcUser')->where("logintime > $now")->count(); $this->fetch(); } private function finance_report() { $firstDate = strtotime(date('Y-m-01 00:00:00', strtotime(date("Y-m-d")))); $lastDate = strtotime(date('Y-m-01 23:59:59', strtotime(date("Y-m-d"))) . " +1 month -1 day"); $month['recharge'] = Db::name('LcRecharge')->where("UNIX_TIMESTAMP(time) BETWEEN $firstDate AND $lastDate AND status = 1")->sum('money'); $month['cash'] = Db::name('LcCash')->where("UNIX_TIMESTAMP(time) BETWEEN $firstDate AND $lastDate AND status = 1")->sum('money'); $month['invest_list'] = Db::name('LcRecharge')->where("UNIX_TIMESTAMP(time) BETWEEN $firstDate AND $lastDate AND status = 1")->group('uid')->count(); $month['invest'] = Db::name('LcInvest')->where("UNIX_TIMESTAMP(time) BETWEEN $firstDate AND $lastDate")->count(); $month['invest_sum'] = Db::name('LcOrder')->where(" buytime BETWEEN $firstDate AND $lastDate")->sum('ploss'); $lastMonthFirstDate = strtotime(date('Y-m-01 00:00:00', strtotime(date("Y-m-d"))) . " -1 month"); $lastMonthLastDate = strtotime(date('Y-m-01 23:59:59', strtotime(date("Y-m-d"))) . " -1 day"); $lastMonth['recharge'] = Db::name('LcRecharge')->where("UNIX_TIMESTAMP(time) BETWEEN $lastMonthFirstDate AND $lastMonthLastDate AND status = 1")->sum('money'); $lastMonth['cash'] = Db::name('LcCash')->where("UNIX_TIMESTAMP(time) BETWEEN $lastMonthFirstDate AND $lastMonthLastDate AND status = 1")->sum('money'); $lastMonth['invest_list'] = Db::name('LcRecharge')->where("UNIX_TIMESTAMP(time) BETWEEN $lastMonthFirstDate AND $lastMonthLastDate AND status = 1")->group('uid')->count(); $lastMonth['invest'] = Db::name('LcInvest')->where("UNIX_TIMESTAMP(time) BETWEEN $lastMonthFirstDate AND $lastMonthLastDate")->count(); $lastMonth['invest_sum'] = Db::name('LcOrder')->where(" buytime BETWEEN $lastMonthFirstDate AND $lastMonthLastDate")->sum('ploss'); $monthDays = $this->getMonthDays(); foreach ($monthDays as $k => $v) { $first = strtotime($v); $last = $first + 86400 - 1; $day[$k]['date'] = $v; $day[$k]['recharge'] = Db::name('LcRecharge')->where("UNIX_TIMESTAMP(time) BETWEEN $first AND $last AND status = 1")->sum('money'); $day[$k]['cash'] = Db::name('LcCash')->where("UNIX_TIMESTAMP(time) BETWEEN $first AND $last AND status = 1")->sum('money'); $day[$k]['invest_list'] = Db::name('LcRecharge')->where("UNIX_TIMESTAMP(time) BETWEEN $first AND $last AND status = 1")->group('uid')->count(); $day[$k]['new_user'] = Db::name('LcUser')->where("UNIX_TIMESTAMP(time) BETWEEN $first AND $last")->count(); $day[$k]['invest'] = Db::name('LcInvest')->where("UNIX_TIMESTAMP(time) BETWEEN $first AND $last")->count(); $day[$k]['invest_sum'] = Db::name('LcInvest')->where("UNIX_TIMESTAMP(time) BETWEEN $first AND $last")->sum('money'); $day[$k]['expire'] = Db::name('LcOrder')->where(" buytime BETWEEN $first AND $last")->sum('ploss'); $day[$k]['ordernumer'] = Db::name('LcOrder')->where(" buytime BETWEEN $first AND $last ")->count(); $day[$k]['interest'] = Db::name('LcOrder')->where(" buytime BETWEEN $first AND $last")->sum('fee'); } return array('day' => $day, 'month' => $month, 'last_month' => $lastMonth); } /** * 获取当前月已过日期 * @return array */ private function getMonthDays() { $monthDays = []; $firstDay = date('Y-m-01', time()); $i = 0; $now_day = date('d'); $lastDay = date('Y-m-d', strtotime("$firstDay +1 month -1 day")); while (date('Y-m-d', strtotime("$firstDay +$i days")) <= $lastDay) { // if($i>=$now_day) break; $monthDays[] = date('Y-m-d', strtotime("$firstDay +$i days")); $i++; } return $monthDays; } /** * 修改密码 * @login true * @param integer $id * @throws \think\Exception * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException * @throws \think\exception\PDOException */ public function pass($id) { $this->applyCsrfToken(); if (intval($id) !== intval(session('user.id'))) { $this->error('只能修改当前用户的密码!'); } if (!AdminService::instance()->isLogin()) { $this->error('需要登录才能操作哦!'); } if ($this->request->isGet()) { $this->verify = true; $this->_form('SystemUser', 'admin@user/pass', 'id', [], ['id' => $id]); } else { $data = $this->_input([ 'password' => $this->request->post('password'), 'repassword' => $this->request->post('repassword'), 'oldpassword' => $this->request->post('oldpassword'), ], [ 'oldpassword' => 'require', 'password' => 'require|min:4', 'repassword' => 'require|confirm:password', ], [ 'oldpassword.require' => '旧密码不能为空!', 'password.require' => '登录密码不能为空!', 'password.min' => '登录密码长度不能少于4位有效字符!', 'repassword.require' => '重复密码不能为空!', 'repassword.confirm' => '重复密码与登录密码不匹配,请重新输入!', ]); $user = Db::name('SystemUser')->where(['id' => $id])->find(); if (md5($data['oldpassword']) !== $user['password']) { $this->error('旧密码验证失败,请重新输入!'); } if (Data::save('SystemUser', ['id' => $user['id'], 'password' => md5($data['password'])])) { $this->success('密码修改成功,下次请使用新密码登录!', ''); } else { $this->error('密码修改失败,请稍候再试!'); } } } /** * 修改用户资料 * @login true * @param integer $id 会员ID * @throws \think\Exception * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException * @throws \think\exception\PDOException */ public function info($id = 0) { if (!AdminService::instance()->isLogin()) { $this->error('需要登录才能操作哦!'); } $this->applyCsrfToken(); if (intval($id) === intval(session('user.id'))) { $this->_form('SystemUser', 'akszadmin@user/form', 'id', [], ['id' => $id]); } else { $this->error('只能修改登录用户的资料!'); } } /** * 清理运行缓存 * @auth true */ public function clearRuntime() { try { Console::call('clear'); Console::call('xclean:session'); $this->success('清理运行缓存成功!'); } catch (HttpResponseException $exception) { throw $exception; } catch (\Exception $e) { $this->error("清理运行缓存失败,{$e->getMessage()}"); } } /** * 压缩发布系统 * @auth true */ public function buildOptimize() { try { Console::call('optimize:route'); Console::call('optimize:schema'); Console::call('optimize:autoload'); Console::call('optimize:config'); $this->success('压缩发布成功!'); } catch (HttpResponseException $exception) { throw $exception; } catch (\Exception $e) { $this->error("压缩发布失败,{$e->getMessage()}"); } } }