Files
zzp-server/app/adminapi/logic/WorkbenchLogic.php
2026-01-19 14:19:22 +08:00

410 lines
18 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
// +----------------------------------------------------------------------
// | likeadmin快速开发前后端分离管理后台PHP版
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
// | 开源版本可自由商用可去除界面版权logo
// | gitee下载https://gitee.com/likeshop_gitee/likeadmin
// | github下载https://github.com/likeshop-github/likeadmin
// | 访问官网https://www.likeadmin.cn
// | likeadmin团队 版权所有 拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeadminTeam
// +----------------------------------------------------------------------
namespace app\adminapi\logic;
use app\common\logic\BaseLogic;
use app\common\service\ConfigService;
use app\common\service\FileService;
use app\common\model\user\{User,UserLog,UserMineRecord};
use app\common\model\finance\{WithdrawRecord,RechargeRecord};
use app\common\model\goods\{GoodsRecord};
use app\common\model\lh\{LhRecord};
use app\common\model\item\ItemRecord;
use app\common\model\finance\UserFinance;
/**
* 工作台
* Class WorkbenchLogic
* @package app\adminapi\logic
*/
class WorkbenchLogic extends BaseLogic
{
/**
* @notes 工作台
* @param $adminInfo
* @return array
* @author 段誉
* @date 2021/12/29 15:58
*/
public static function index()
{
return [
// 今日数据
'report' => self::report(),
// 常用功能
'menu' => self::menu(),
// 近15日注册量
'visitor' => self::visitor(),
];
}
/**
* @notes 代理工作台
* @param $params
* @return array
* @author 段誉
* @date 2021/12/29 15:58
*/
public static function agent($params)
{
return [
// 今日数据
'report' => self::agentReport($params),
];
}
/**
* @notes 常用功能
* @return array[]
* @author 段誉
* @date 2021/12/29 16:40
*/
public static function menu(): array
{
return [
[
'name' => '用户管理',
'image' => FileService::getFileUrl(config('project.default_image.menu_role')),
'url' => '/consumer/lists'
],
[
'name' => '用户关系',
'image' => FileService::getFileUrl(config('project.default_image.menu_dept')),
'url' => '/consumer/user_relation'
],
[
'name' => '资金明细',
'image' => FileService::getFileUrl(config('project.default_image.menu_dict')),
'url' => '/finance/user_finance'
],
[
'name' => '素材中心',
'image' => FileService::getFileUrl(config('project.default_image.menu_generator')),
'url' => '/material/index'
],
[
'name' => '文章资讯',
'image' => FileService::getFileUrl(config('project.default_image.menu_file')),
'url' => '/article/lists'
],
[
'name' => '网站配置',
'image' => FileService::getFileUrl(config('project.default_image.menu_web')),
'url' => '/app/information'
],
[
'name' => '管理员',
'image' => FileService::getFileUrl(config('project.default_image.menu_admin')),
'url' => '/permission/admin'
],
];
}
/**
* @notes 今日数据
* @return int[]
* @author 段誉
* @date 2021/12/29 16:15
*/
public static function report(): array
{
$time = time();
$start_time = strtotime(date('Y-m-d 00:00:00', time()));//0点
$end_time = strtotime(date('Y-m-d 23:59:59', time()));//24点
//昨日
$start_time_yes = strtotime("yesterday");//昨日0点
$end_time_yes = strtotime("today") - 1;//昨日24点
return [
'time' => date('Y-m-d H:i:s'),
'totoal' => WorkbenchLogic::reportData(0,$end_time),
'today' => WorkbenchLogic::reportData($start_time,$end_time),
'yes' => WorkbenchLogic::reportData($start_time_yes,$end_time_yes),
];
}
/**
* @notes 访问数据
* @return array
* @author 段誉
* @date 2021/12/29 16:57
*/
public static function reportData($start_time,$end_time): array
{
$time = time();
$online_time = $time - 60*60;
$user_money_sum = User::where(" user_money > 0 ")->sum('user_money');
$user_money_frozen_sum = UserFinance::where(" change_amount > 0 ")->where(['frozen' => 1])->sum('change_amount');
$user_online_count= User::where("last_time >= $online_time")->count();
$user_count= User::where("create_time >= $start_time AND create_time <= $end_time")->count();
//活跃人数
$user_active_count= UserLog::where("create_time >= $start_time AND create_time <= $end_time")->where(['type' => 1])->group("user_id")->count();
$recharge_sum= RechargeRecord::where("status = 1 AND create_time >= $start_time AND create_time <= $end_time")->sum('amount');
$recharge_count= RechargeRecord::where("status = 1 AND create_time >= $start_time AND create_time <= $end_time")->count();
$recharge_first_num= RechargeRecord::where("status = 1 AND create_time >= $start_time AND create_time <= $end_time")->group("user_id")->having(1)->count();
$recharge_num= RechargeRecord::where("status = 1 AND create_time >= $start_time AND create_time <= $end_time")->group("user_id")->count();
$recharge_first_num= RechargeRecord::where("status = 1 AND create_time >= $start_time AND create_time <= $end_time")->group("user_id")->having('count(*) = 1')->count();
$withdraw_sum= WithdrawRecord::where("status = 1 AND create_time >= $start_time AND create_time <= $end_time")->sum('amount');
$withdraw_count= WithdrawRecord::where("status = 1 AND create_time >= $start_time AND create_time <= $end_time")->count();
$withdraw_num= WithdrawRecord::where("status = 1 AND create_time >= $start_time AND create_time <= $end_time")->group("user_id")->count();
$user_reward_sum = UserFinance::where(" change_amount > 0 AND change_type IN (4,14,15) AND create_time >= $start_time AND create_time <= $end_time")->sum('change_amount');
// $order_sum= LhRecord::where("create_time >= $start_time AND create_time <= $end_time")->sum('money');
// $order_num= LhRecord::where("create_time >= $start_time AND create_time <= $end_time")->group("user_id")->count();
// $order_com_sum= LhRecord::where("create_time >= $start_time AND create_time <= $end_time")->sum('income');
$order_sum= ItemRecord::where("create_time >= $start_time AND create_time <= $end_time")->sum('money');
$order_ing_sum = ItemRecord::where(['status' => 1])->where(" create_time >= $start_time AND create_time <= $end_time ")->sum('money');
$order_num= ItemRecord::where("create_time >= $start_time AND create_time <= $end_time")->group("user_id")->count();
$order_com_sum= ItemRecord::where("create_time >= $start_time AND create_time <= $end_time")->sum('total_income');
$mine_com_sum = UserMineRecord::where(" create_time >= $start_time AND create_time <= $end_time ")->sum('amount');
$mine_num= UserMineRecord::where("create_time >= $start_time AND create_time <= $end_time")->group("user_id")->count();
return [
'user_money_sum' => $user_money_sum,
'user_money_frozen_sum' => $user_money_frozen_sum,
'user_online_count' => $user_online_count,
'user_count' => $user_count,
'user_active_count' => $user_active_count,
'recharge_count' => $recharge_count,
'recharge_num' => $recharge_num,
'recharge_first_num' => $recharge_first_num,
'recharge_sum' => round($recharge_sum, 2),
'withdraw_sum' => round($withdraw_sum, 2),
'withdraw_count' => $withdraw_count,
'withdraw_num' => $withdraw_num,
'user_reward_sum' => $user_reward_sum,
'order_sum' => round($order_sum, 2),
'order_ing_sum' => round($order_ing_sum, 2),
'order_num' => $order_num,
'order_com_sum' => round($order_com_sum, 2),
'mine_com_sum' => round($mine_com_sum, 2),
'mine_num' => $mine_num,
];
}
/**
* @notes 今日数据
* @return int[]
* @author 段誉
* @date 2021/12/29 16:15
*/
public static function agentReport($params): array
{
$time = time();
$start_time = strtotime(date('Y-m-d 00:00:00', time()));//0点
$end_time = strtotime(date('Y-m-d 23:59:59', time()));//24点
//昨日
$start_time_yes = strtotime("yesterday");//昨日0点
$end_time_yes = strtotime("today") - 1;//昨日24点
return [
'time' => date('Y-m-d H:i:s'),
'totoal' => WorkbenchLogic::agentReportData(0,$end_time,$params),
'today' => WorkbenchLogic::agentReportData($start_time,$end_time,$params),
'yes' => WorkbenchLogic::agentReportData($start_time_yes,$end_time_yes,$params),
];
}
/**
* @notes 访问数据
* @return array
* @author 段誉
* @date 2021/12/29 16:57
*/
public static function agentReportData($start_time,$end_time,$params): array
{
//根据管理员ID获取代理
$user = User::where(['agent_id' => $params['admin_id']])->findOrEmpty();
$where = " 1 = 2 ";
if (!$user->isEmpty()) {
$user_id = $user['id'];
$where = " ur.parent_id = $user_id ";
}
$time = time();
$online_time = $time - 60*60;
$user_money_sum = User::alias('u')->join('user_relation_agent ur', 'u.id = ur.user_id')->where($where)->where(" u.user_money > 0 ")->sum('u.user_money');
$user_money_frozen_sum = UserFinance::alias('uf')->join('user_relation_agent ur', 'uf.user_id = ur.user_id')->where($where)->where(" uf.change_amount > 0 ")->where(['uf.frozen' => 1])->sum('uf.change_amount');
$user_online_count= User::alias('u')->join('user_relation_agent ur', 'u.id = ur.user_id')->where($where)->where("u.last_time >= $online_time")->count();
$user_count= User::alias('u')->join('user_relation_agent ur', 'u.id = ur.user_id')->where($where)->where("u.create_time >= $start_time AND u.create_time <= $end_time")->count();
//活跃人数
$user_active_count= UserLog::alias('ul')->join('user_relation_agent ur', 'ul.user_id = ur.user_id')->where($where)->where("ul.create_time >= $start_time AND ul.create_time <= $end_time")->where(['ul.type' => 1])->group("ul.user_id")->count();
$recharge_sum= RechargeRecord::alias('rr')->join('user_relation_agent ur', 'rr.user_id = ur.user_id')->where($where)->where("rr.status = 1 AND rr.create_time >= $start_time AND rr.create_time <= $end_time")->sum('rr.amount');
$recharge_count= RechargeRecord::alias('rr')->join('user_relation_agent ur', 'rr.user_id = ur.user_id')->where($where)->where("rr.status = 1 AND rr.create_time >= $start_time AND rr.create_time <= $end_time")->count();
$recharge_first_num= RechargeRecord::alias('rr')->join('user_relation_agent ur', 'rr.user_id = ur.user_id')->where($where)->where("rr.status = 1 AND rr.create_time >= $start_time AND rr.create_time <= $end_time")->group("rr.user_id")->having(1)->count();
$recharge_num= RechargeRecord::alias('rr')->join('user_relation_agent ur', 'rr.user_id = ur.user_id')->where($where)->where("rr.status = 1 AND rr.create_time >= $start_time AND rr.create_time <= $end_time")->group("rr.user_id")->count();
$recharge_first_num= RechargeRecord::alias('rr')->join('user_relation_agent ur', 'rr.user_id = ur.user_id')->where($where)->where("rr.status = 1 AND rr.create_time >= $start_time AND rr.create_time <= $end_time")->group("rr.user_id")->having('count(*) = 1')->count();
$withdraw_sum= WithdrawRecord::alias('wr')->join('user_relation_agent ur', 'wr.user_id = ur.user_id')->where($where)->where("wr.status = 1 AND wr.create_time >= $start_time AND wr.create_time <= $end_time")->sum('wr.amount');
$withdraw_count= WithdrawRecord::alias('wr')->join('user_relation_agent ur', 'wr.user_id = ur.user_id')->where($where)->where("wr.status = 1 AND wr.create_time >= $start_time AND wr.create_time <= $end_time")->count();
$withdraw_num= WithdrawRecord::alias('wr')->join('user_relation_agent ur', 'wr.user_id = ur.user_id')->where($where)->where("wr.status = 1 AND wr.create_time >= $start_time AND wr.create_time <= $end_time")->group("wr.user_id")->count();
$user_reward_sum = UserFinance::alias('uf')->join('user_relation_agent ur', 'uf.user_id = ur.user_id')->where($where)->where(" uf.change_amount > 0 AND uf.change_type IN (4,14,15) AND uf.create_time >= $start_time AND uf.create_time <= $end_time")->sum('uf.change_amount');
// $order_sum= LhRecord::alias('lr')->join('user_relation_agent ur', 'lr.user_id = ur.user_id')->where($where)->where("lr.create_time >= $start_time AND lr.create_time <= $end_time")->sum('lr.money');
// $order_num= LhRecord::alias('lr')->join('user_relation_agent ur', 'lr.user_id = ur.user_id')->where("lr.create_time >= $start_time AND lr.create_time <= $end_time")->group("lr.user_id")->count();
// $order_com_sum= LhRecord::alias('lr')->join('user_relation_agent ur', 'lr.user_id = ur.user_id')->where("lr.create_time >= $start_time AND lr.create_time <= $end_time")->sum('lr.income');
$order_sum= ItemRecord::alias('ir')->join('user_relation_agent ur', 'ir.user_id = ur.user_id')->where($where)->where("ir.create_time >= $start_time AND ir.create_time <= $end_time")->sum('ir.money');
$order_num= ItemRecord::alias('ir')->join('user_relation_agent ur', 'ir.user_id = ur.user_id')->where($where)->where("ir.create_time >= $start_time AND ir.create_time <= $end_time")->group("ir.user_id")->count();
$order_com_sum= ItemRecord::alias('ir')->join('user_relation_agent ur', 'ir.user_id = ur.user_id')->where($where)->where("ir.create_time >= $start_time AND ir.create_time <= $end_time")->sum('ir.total_income');
$mine_com_sum = UserMineRecord::alias('umr')->join('user_relation_agent ur', 'umr.user_id = ur.user_id')->where($where)->where("umr.create_time >= $start_time AND umr.create_time <= $end_time")->sum('umr.amount');
$mine_num= UserMineRecord::alias('umr')->join('user_relation_agent ur', 'umr.user_id = ur.user_id')->where($where)->where("umr.create_time >= $start_time AND umr.create_time <= $end_time")->group("umr.user_id")->count();
return [
'user_money_sum' => $user_money_sum,
'user_money_frozen_sum' => $user_money_frozen_sum,
'user_online_count' => $user_online_count,
'user_count' => $user_count,
'user_active_count' => $user_active_count,
'recharge_count' => $recharge_count,
'recharge_num' => $recharge_num,
'recharge_first_num' => $recharge_first_num,
'recharge_sum' => round($recharge_sum, 2),
'withdraw_sum' => round($withdraw_sum, 2),
'withdraw_count' => $withdraw_count,
'withdraw_num' => $withdraw_num,
'user_reward_sum' => $user_reward_sum,
'order_sum' => round($order_sum, 2),
'order_num' => $order_num,
'order_com_sum' => round($order_com_sum, 2),
'mine_com_sum' => round($mine_com_sum, 2),
'mine_num' => $mine_num,
];
}
/**
* @notes 访问数
* @return array
* @author 段誉
* @date 2021/12/29 16:57
*/
public static function visitor(): array
{
$num = [];
$date = [];
for ($i = 0; $i < 30; $i++) {
$where_start = strtotime("- " . $i . "day");
$date[] = date('Y/m/d', $where_start);
$start_time = strtotime(date('Y-m-d 00:00:00', strtotime(date('Y-m-d', $where_start))));//0点
$end_time = strtotime(date('Y-m-d 23:59:59', strtotime(date('Y-m-d', $where_start))));//12点
$num[] = User::where("create_time >= $start_time AND create_time <= $end_time")->count();
}
return [
'date' => $date,
'list' => [
['name' => '注册数', 'data' => array_reverse($num)]
]
];
}
}