410 lines
18 KiB
PHP
410 lines
18 KiB
PHP
<?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)]
|
||
]
|
||
];
|
||
}
|
||
|
||
|
||
} |