| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- <?php
- namespace plugin\admin\app\controller;
- use plugin\admin\app\common\Util;
- use plugin\admin\app\model\Option;
- use plugin\admin\app\model\Payorder;
- use plugin\admin\app\model\Sign;
- use plugin\admin\app\model\Stream;
- use plugin\admin\app\model\User;
- use plugin\admin\app\model\Withdraw;
- use support\exception\BusinessException;
- use support\Request;
- use support\Response;
- use think\db\Where;
- use Throwable;
- use Workerman\Worker;
- class IndexController
- {
- /**
- * 无需登录的方法
- * @var string[]
- */
- protected $noNeedLogin = ['index'];
- /**
- * 不需要鉴权的方法
- * @var string[]
- */
- protected $noNeedAuth = ['dashboard'];
- /**
- * 后台主页
- * @param Request $request
- * @return Response
- * @throws BusinessException|Throwable
- */
- public function index(Request $request): Response
- {
- clearstatcache();
- if (!is_file(base_path('plugin/admin/config/database.php'))) {
- return raw_view('index/install');
- }
- $admin = admin();
- if (!$admin) {
- $name = 'system_config';
- $config = Option::where('name', $name)->value('value');
- $config = json_decode($config, true);
- $title = $config['logo']['title'] ?? 'webman admin';
- $logo = $config['logo']['image'] ?? '/app/admin/admin/images/logo.png';
- return raw_view('account/login', ['logo' => $logo, 'title' => $title]);
- }
- return raw_view('index/index');
- }
- /**
- * 仪表板
- * @param Request $request
- * @return Response
- * @throws Throwable
- */
- public function dashboard(Request $request): Response
- {
- $teamId = admin('team_id');
- $data = Payorder::query()
- ->where('is_pay', 2)
- ->whereExists(function ($query) use ($teamId) {
- $query->from('wa_users')->whereRaw('wa_users.id=wa_payorder.user_id');
- if (!empty($teamId)) {
- $query->where('team_id', $teamId);
- }
- })
- ->select(['user_id', 'created_at', 'goods_type'])
- ->get()
- ->toArray();
- /** @var $user_id 获取今日购买订单信息 */
- $user_id = collect($data)->where('created_at', '>=', date('Y-m-d') . ' 00:00:00')->pluck('user_id')->toArray();
- $cja = collect($data)->where('created_at', '<', date('Y-m-d') . ' 00:00:00')->whereIn('user_id', $user_id)->pluck('user_id')->toArray();
- $numDya = count(array_unique($user_id)) - count(array_unique($cja));
- /** @var $num 购买总人数 */
- $num = collect($data)->groupBy('user_id')->count();
- $myGoodModel = Payorder::query()
- ->where('is_pay', 2)
- ->where('created_at','>=', '2025-10-07 23:59:59')
- ->whereExists(function ($query) use ($teamId) {
- $query->from('wa_users')->whereRaw('wa_users.id=wa_payorder.user_id');
- if (!empty($teamId)) {
- $query->where('team_id', $teamId);
- }
- });
- $withdrawModel = Withdraw::query()->where('status', 3)->whereExists(function ($query) use ($teamId) {
- $query->from('wa_users')->whereRaw('wa_users.id=wa_withdraw.user_id');
- if (!empty($teamId)) {
- $query->where('team_id', $teamId);
- }
- });
- if ($request->isAjax()) {
- $time = strtotime(date('Y-m-d') . ' 23:59:59');
- $arr = [
- date('Y-m-d', $time - 6 * 24 * 60 * 60),
- date('Y-m-d', $time - 5 * 24 * 60 * 60),
- date('Y-m-d', $time - 4 * 24 * 60 * 60),
- date('Y-m-d', $time - 3 * 24 * 60 * 60),
- date('Y-m-d', $time - 2 * 24 * 60 * 60),
- date('Y-m-d', $time - 1 * 24 * 60 * 60),
- date('Y-m-d', $time),
- ];
- $array = [];
- foreach ($arr as $v) {
- $array[] = [
- 'name' => date('m月d日', strtotime($v)),
- 'value1' => (clone $myGoodModel)->whereBetween('created_at', [$v . ' 00:00:00', $v . ' 23:59:59'])->sum('money'),
- 'value2' => (clone $withdrawModel)->whereBetween('updated_at', [$v . ' 00:00:00', $v . ' 23:59:59'])->sum('money'),
- ];
- }
- return adminsuccess($array);
- }
- // 总用户数
- $user_count = User::query()->where(function ($query) use ($teamId) {
- if (!empty($teamId)) {
- $query->where('team_id', $teamId);
- }
- })->count();
- // 今日签到
- $day7_user_count = Stream::query()
- ->whereExists(function ($query) use ($teamId) {
- $query->from('wa_users')->whereRaw('wa_users.id=wa_stream.user_id');
- if (!empty($teamId)) {
- $query->where('team_id', $teamId);
- }
- })->where('type', streamType2)
- ->whereBetween('created_at', [date('Y-m-d') . ' 00:00:00', date('Y-m-d') . ' 23:59:59'])
- ->count();
- // 在线用户
- $today_user_count = User::where('last_login', '>', time())->where(function ($query) use ($teamId) {
- if (!empty($teamId)) {
- $query->where('team_id', $teamId);
- }
- })->count();
- //今日注册人数
- $register_num = User::whereBetween('created_at',[date('Y-m-d').' 00:00:00',date('Y-m-d').' 23:59:59'])->where(function ($query) use ($teamId) {
- if (!empty($teamId)) {
- $query->where('team_id', $teamId);
- }
- })->count();
- // 订单金额
- $day30_user_count = Payorder::where('is_pay', 2)
- ->where('created_at','>=', '2025-10-07 23:59:59')
- ->whereExists(function ($query) use ($teamId) {
- $query->from('wa_users')->whereRaw('wa_users.id=wa_payorder.user_id');
- if (!empty($teamId)) {
- $query->where('team_id', $teamId);
- }
- })
- ->sum('money');
- $day7_detail = [];
- $now = time();
- for ($i = 0; $i < 7; $i ++) {
- $date = date('Y-m-d', $now - 24 * 60 * 60 * $i);
- $day7_detail[substr($date, 5)] = User::query()->where(function ($query) use ($teamId) {
- if (!empty($teamId)) {
- $query->where('team_id', $teamId);
- }
- })->whereBetween('created_at', ["$date 00:00:00", "$date 23:59:59"])->count();
- }
- /** 新增购买 */
- /** 总购买数 */
- return raw_view('index/dashboard', [
- 'today_user_count' => $today_user_count,
- 'day7_user_count' => $day7_user_count,
- 'day30_user_count' => $day30_user_count,
- 'user_count' => $user_count,
- 'day7_detail' => array_reverse($day7_detail),
- 'tal_num' => $num,
- 'numDya' => $numDya,
- 'register_num'=>$register_num,
- /* 'two_withdraw'=>(clone $withdrawModel)->sum('money'),*/
- 'app' => User::where('is_app', 1)->where(function ($query) use ($teamId) {
- if (!empty($teamId)) {
- $query->where('team_id', $teamId);
- }
- })->count()
- ]);
- }
- }
|