multi-store/app/admin/logic/WorkbenchLogic.php

248 lines
10 KiB
PHP
Raw Normal View History

2024-05-30 21:37:55 +08:00
<?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\admin\logic;
use app\admin\logic\statistic\TradeStatisticLogic;
2024-05-30 21:37:55 +08:00
use app\common\logic\BaseLogic;
use app\common\model\order\Cart;
use app\common\model\store_order\StoreOrder;
use app\common\model\store_visit\StoreVisit;
use app\common\model\user\User;
use app\common\model\user\UserVisit;
2024-05-30 21:37:55 +08:00
use app\common\service\ConfigService;
use app\common\service\FileService;
/**
* 工作台
* Class WorkbenchLogic
* @package app\admin\logic
*/
class WorkbenchLogic extends BaseLogic
{
/**
* @notes 工作套
* @param $adminInfo
* @return array
* @date 2021/12/29 15:58
*/
public static function index()
{
$logic=(new TradeStatisticLogic());
$storeOrder=(new StoreOrder());
$user=(new User());
$userVisit=(new UserVisit());
$today = $logic->tradeTotalMoney(['create_time' => 'today'], 'sum');
$month = $logic->tradeTotalMoney(['create_time'=>'month'], 'sum');
$todayOrder = $storeOrder->where(['paid'=>1])->whereDay('create_time')->count();
$MonthOrder = $storeOrder->where(['paid'=>1])->whereMonth('create_time')->count();
$todayUser = $user->whereDay('create_time')->count();
$MonthUser = $user->whereMonth('create_time')->count();
$todayUserVisit = $userVisit->whereDay('create_time')->group('uid')->count();
$MonthUserVisit = $userVisit->whereMonth('create_time')->group('uid')->count();
2024-05-30 21:37:55 +08:00
return [
'today' => $today, //今日销售额
'month' => $month, //本月销售额
'todayOrder' => $todayOrder, //今日订单量
'MonthOrder' => $MonthOrder, //本月订单量
'todayUser' => $todayUser, //今日新增用户量
'MonthUser' => $MonthUser, //本月新增用户量
'todayUserVisit' => $todayUserVisit, //今日活跃用户量
'MonthUserVisit' => $MonthUserVisit, //本月活跃用户量
2024-05-30 21:37:55 +08:00
];
}
//-------------------------------商品统计---------------------------------------//
2024-05-30 21:37:55 +08:00
/**
* 商品概况
2024-05-30 21:37:55 +08:00
*/
public static function get_basic($where)
2024-05-30 21:37:55 +08:00
{
$browse = StoreVisit::where($where)->count();
$user = StoreVisit::where($where)->group('uid')->count();
$cart = Cart::where($where)->where('is_fail', 0)->sum('cart_num');
$order = StoreOrder::where($where)->count();
$payPeople = StoreOrder::where($where)->where('paid', 1)->group('uid')->count();
$pay = StoreOrder::where($where)->where('paid', 1)->where('refund_status', 0)->count();
$payPrice = StoreOrder::where($where)->where('paid', 1)->where('refund_status', 0)->sum('pay_price');
$cost = StoreOrder::where($where)->where('paid', 1)->sum('cost');
$refundPrice = StoreOrder::where($where)->where('refund_status', 2)->sum('refund_price');
$refund = StoreOrder::where($where)->where('refund_status',2)->count();
$payPercent = bcmul((string)($user > 0 ? bcdiv($payPeople, $user, 4) : 0), '100', 2); //访客-付款转化率
2024-05-30 21:37:55 +08:00
return [
'browse' => ['num' => $browse, 'title' => '浏览量'], //浏览量
'user' => ['num' => $user, 'title' => '访客数'], //访客数
'cart' => ['num' => $cart, 'title' => '加购人数'], //加购人数
'order' => ['num' => $order, 'title' => '订单量'], //订单量
'pay' => ['num' => $pay, 'title' => '支付订单量'], //支付订单量
'payPrice' => ['num' => $payPrice, 'title' => '支付金额'], //支付金额
'cost' => ['num' => $cost, 'title' => '成本'], //成本
'refundPrice' => ['num' => $refundPrice, 'title' => '退款金额'], //退款金额
'refund' => ['num' => $refund, 'title' => '退款订单量'], //退款订单量
'payPercent' => ['num' => $payPercent, 'title' => '支付转化率'], //支付转化率
2024-05-30 21:37:55 +08:00
];
}
/**
* 商品浏览量
*/
public static function store_visit_count($dates)
{
$data = [];
foreach ($dates as $date) {
$data[] = StoreVisit::whereDay('create_time', $date)->cache('store_visit_count_' . $date, 300)->sum('count');
}
return $data;
}
/**
* 商品浏览量
*/
public static function store_visit_user($dates)
{
$data = [];
foreach ($dates as $date) {
$data[] = StoreVisit::whereDay('create_time', $date)->cache('store_visit_user_' . $date, 300)->count('uid');
}
return $data;
}
/**
* 支付金额
*/
public static function payPrice($dates)
{
$data = [];
foreach ($dates as $date) {
$data[] = StoreOrder::whereDay('create_time', $date)->cache('payPrice_' . $date, 300)->where('paid', 1)->where('refund_status', 0)->sum('pay_price');
}
return $data;
}
/**
* 退款金额
*/
public static function refundPrice($dates)
{
$data = [];
foreach ($dates as $date) {
$data[] = StoreOrder::whereDay('create_time', $date)->where('refund_status', 2)->cache('refundPrice_' . $date, 300)->where('paid', 1)->sum('pay_price');
}
return $data;
}
/**
* 当日订单金额
*/
public static function day_order_pay_price($where, $time)
{
$money = StoreOrder::whereDay('create_time', $time)->where('paid', 1)->where('refund_status', 0)->sum('pay_price');
$data = [];
foreach ($where as $date) {
$data[] = StoreOrder::where('create_time','between', $date)->cache('day_order_pay_price_' . $date[0], 300)->where('paid', 1)->where('refund_status', 0)->sum('pay_price');
}
return ['money' => $money, 'value' => $data];
}
/**
* 今日订单数
*/
public static function day_order_count($where,$name)
{
$now_money = StoreOrder::whereDay('create_time')->where('paid', 1)->where('refund_status', 0)->count();
$last_money = StoreOrder::whereDay('create_time', 'yesterday')->where('paid', 1)->where('refund_status', 0)->count();
$data = [];
foreach ($where as $date) {
$data[] = StoreOrder::where('create_time','between', $date)->cache('day_order_count' . $date[0], 300)->where('paid', 1)->where('refund_status', 0)->count();
}
if ($now_money > $last_money) {
if($last_money == 0){
$rate = bcmul($now_money, '100');
}else{
$rate = bcmul(bcmul($now_money, '100'), bcdiv($last_money, $now_money, 2), 2);
}
} else {
$rate = bcmul(bcmul($last_money, '100'), bcdiv($now_money, $last_money, 2), 2);
}
return ['name' => $name, 'now_money' => $now_money, 'last_money' => $last_money, 'rate' => $rate, 'value' => $data];
}
/**
* 今日支付人数
*/
public static function day_order_user($where,$name)
{
$now_money = StoreOrder::whereDay('create_time')->where('paid', 1)->where('refund_status', 0)->count('uid');
$last_money = StoreOrder::whereDay('create_time', 'yesterday')->where('paid', 1)->where('refund_status', 0)->count('uid');
$data = [];
foreach ($where as $date) {
$data[] = StoreOrder::where('create_time','between', $date)->cache('day_order_count' . $date[0], 300)->where('paid', 1)->where('refund_status', 0)->count('uid');
}
if ($now_money > $last_money) {
if($last_money == 0){
$rate = bcmul($now_money, '100');
}else{
$rate = bcmul(bcmul($now_money, '100'), bcdiv($last_money, $now_money, 2), 2);
}
} else {
$rate = bcmul(bcmul($last_money, '100'), bcdiv($now_money, $last_money, 2), 2);
}
return ['name' => $name, 'now_money' => $now_money, 'last_money' => $last_money, 'rate' => $rate, 'value' => $data];
}
/**
* 本月订单数
*/
public static function month_order_count($name)
{
$now_money = StoreOrder::whereMonth('create_time')->where('paid', 1)->where('refund_status', 0)->count();
$last_money = StoreOrder::whereMonth('create_time', 'last month')->where('paid', 1)->where('refund_status', 0)->count();
$data = [];
if ($now_money > $last_money) {
if($last_money == 0){
$rate = bcmul($now_money, '100');
}else{
$rate = bcmul(bcmul($now_money, '100'), bcdiv($last_money, $now_money, 2), 2);
}
} else {
$rate = bcmul(bcmul($last_money, '100'), bcdiv($now_money, $last_money, 2), 2);
}
return ['name' => $name, 'now_money' => $now_money, 'last_money' => $last_money, 'rate' => $rate, 'value' => $data];
}
/**
* 本月支付人数
*/
public static function month_order_user($name)
{
$now_money = StoreOrder::whereMonth('create_time')->where('paid', 1)->where('refund_status', 0)->count('uid');
$last_money = StoreOrder::whereMonth('create_time','last month')->where('paid', 1)->where('refund_status', 0)->count('uid');
$data = [];
if ($now_money > $last_money) {
if($last_money == 0){
$rate = bcmul($now_money, '100');
}else{
$rate = bcmul(bcmul($now_money, '100'), bcdiv($last_money, $now_money, 2), 2);
}
} else {
$rate = bcmul(bcmul($last_money, '100'), bcdiv($now_money, $last_money, 2), 2);
}
return ['name' => $name, 'now_money' => $now_money, 'last_money' => $last_money, 'rate' => $rate, 'value' => $data];
}
}