multi-store/app/admin/controller/WorkbenchController.php

294 lines
9.2 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
2024-05-30 21:37:55 +08:00
// | likeadmin团队 版权所有 拥有最终解释权
// +----------------------------------------------------------------------
// | author=> likeadminTeam
2024-05-30 21:37:55 +08:00
// +----------------------------------------------------------------------
namespace app\admin\controller;
2024-08-02 11:01:17 +08:00
use app\admin\lists\store_order_cart_info\StoreOrderCartInfoGroupLists;
use app\admin\lists\store_order_cart_info\StoreOrderCartInfoGroupMonthLists;
use app\admin\logic\statistic\ProductStatisticLogic;
use app\admin\logic\statistic\TradeStatisticLogic;
use app\admin\logic\statistic\UserStatisticLogic;
use app\admin\logic\statistic\WarehouseLogic;
2024-05-30 21:37:55 +08:00
use app\admin\logic\WorkbenchLogic;
use app\store\logic\WorkbenchLogic as LogicWorkbenchLogic;
use DateInterval;
use DateTime;
2024-05-30 21:37:55 +08:00
/**
* 工作台
* Class WorkbenchCotroller
* @package app\admin\controller
*/
class WorkbenchController extends BaseAdminController
{
/**
* @notes 工作台
* @author 乔峰
* @date 2021/12/29 17=>01
2024-05-30 21:37:55 +08:00
*/
public function index()
{
$result = WorkbenchLogic::index();
return $this->data($result);
}
/**
* @notes 门店
* @author 乔峰
* @date 2021/12/29 17=>01
*/
public function store_index()
{
$params = $this->request->get();
if(!isset($params['store_id']) ||$params['store_id']==''){
$params['store_id'] =0;
}
if(!isset($params['start_time']) ||$params['start_time']==''){
$time=explode('-', $this->getDay(''));
$params['start_time'] =$time[0];
$params['end_time'] =$time[1];
}
$result = LogicWorkbenchLogic::index($params);
return $this->data($result);
}
/**
* @notes 工作台
* @author 乔峰
* @date 2021/12/29 17=>01
*/
public function store_index_new()
{
$params['store_id'] = $this->request->adminInfo['store_id'];
$result = WorkbenchLogic::index($params);
return $this->data($result);
}
//-------------------------------商品统计---------------------------------------//
2024-06-08 16:53:08 +08:00
/**
* 商品概况
*/
public function get_basic()
{
$startTime = $this->request->get('start_time'); //开始时间
$endTime = $this->request->get('end_time'); //结束时间
if (empty($startTime)) { //如果没有传开始时间则默认获取最近7天的数据
$startTime = strtotime(date('Y-m-d'));
$endTime = $startTime + 86400;
}
$where = [
['create_time', 'between', [$startTime, $endTime]]
];
$data = WorkbenchLogic::get_basic($where);
return $this->data($data);
}
/**
* 商品趋势
*/
public function get_trend()
{
$dates = [];
$date=$this->request->get('date','');
$days=31;
if($date){
$arr=explode('-', $date);
if($arr[0]==$arr[1]){
$date = new DateTime($arr[0]);
$dates[] = $date->format("Y-m-d");
}else{
$datetime_start = new DateTime($arr[0]);
$datetime_end = new DateTime($arr[1]);
$days = $datetime_start->diff($datetime_end)->days;
for ($i = 0; $i <= $days; $i++) {
$date = new DateTime($datetime_start->format('Y-m-d'));
$date->modify('+' . $i . ' days');
$dates[] = $date->format('Y-m-d');
}
}
}else{
$today = new DateTime();
$thirtyDaysAgo = new DateTime($today->format('Y-m-d'));
$thirtyDaysAgo->modify('-30 days');
for ($i = 0; $i < $days; $i++) {
$date = new DateTime($thirtyDaysAgo->format('Y-m-d'));
$date->modify('+' . $i . ' days');
$dates[] = $date->format('Y-m-d');
}
}
$data = [
"xAxis" => $dates,
"series" => [
[
"name" => "商品浏览量",
"data" => WorkbenchLogic::store_visit_count($dates),
"type" => "line",
"smooth" => "true",
"yAxisIndex" => 1
],
[
"name" => "商品访客量",
"data" => WorkbenchLogic::store_visit_user($dates),
"type" => "line",
"smooth" => "true",
"yAxisIndex" => 1
],
[
"name" => "支付金额",
"data" => WorkbenchLogic::payPrice($dates),
"type" => "bar"
],
[
"name" => "退款金额",
"data" => WorkbenchLogic::refundPrice($dates),
"type" => "bar"
]
]
];
return $this->data($data);
}
/**
* 获取商品排名数据
*/
public function get_product_ranking()
{
$date=$this->request->get('date','');
$where['create_time'] = $this->getDay($date);
$data=(new ProductStatisticLogic())->get_product_ranking($where);
return $this->success('',$data);
}
//-------------------------------用户统计---------------------------------------//
2024-06-08 16:53:08 +08:00
/**
* 获取用户概况
*/
public function get_user_basic()
{
$date=$this->request->get('date','');
$store_id=$this->request->get('store_id');
$where['create_time'] = $this->getDay($date);
if($store_id){
$where['store_id'] = $store_id;
}
$data=(new UserStatisticLogic())->getBasic($where);
return $this->data($data);
}
/**
* 获取用户趋势
*/
public function get_user_trend()
{
$date=$this->request->get('date','');
$store_id=$this->request->get('store_id');
$where['create_time'] = $this->getDay($date);
if($store_id){
$where['store_id'] = $store_id;
}
$data=(new UserStatisticLogic())->getTrend($where);
return $this->data($data);
}
//-------------------------------交易统计---------------------------------------//
//当日订单金额
public function top_trade()
{
$logic=(new TradeStatisticLogic());
$leftToday = $logic->getTopLeftTrade(['create_time' => 'today']);
$leftyestoday = $logic->getTopLeftTrade(['create_time' => 'yestoday']);
$rightOne = $logic->getTopRightOneTrade();
$rightTwo = $logic->getTopRightTwoTrade();
$right = ['today' => $rightOne, 'month' => $rightTwo];
$totalleft = [$leftToday, $leftyestoday];
$left = [];
foreach ($totalleft as $k => $v) {
$left['name'] = "当日订单金额";
$left['x'] = $v['curve']['x'];
$left['series'][$k]['money'] = round($v['total_money'], 2);
$left['series'][$k]['value'] = array_values($v['curve']['y']);
}
$data['left'] = $left;
$data['right'] = $right;
return $this->data($data);
}
//交易趋势
public function bottom_trade()
{
$date=$this->request->get('date','');
$data=(new TradeStatisticLogic())->getBottomTrade(['data'=>$this->getDay($date)]);
return $this->data($data);
}
2024-08-02 11:01:17 +08:00
/**
* 实时商品统计
*/
public function product_order(){
return $this->dataLists(new StoreOrderCartInfoGroupLists());
}
/**
* 月销售商品统计
*/
public function product_month_order(){
return $this->dataLists(new StoreOrderCartInfoGroupMonthLists());
}
/**
* 格式化时间
* @param $time
* @return string
*/
public function getDay($time)
{
if (strstr($time, '-') !== false) {
[$startTime, $endTime] = explode('-', $time);
if (!$startTime && !$endTime) {
return date("Y/m/d", strtotime("-30 days", time())) . '-' . date("Y/m/d", time());
} else {
if($startTime==$endTime){
return $startTime . '-' . $endTime.' 23:59:59';
}else{
return $startTime . '-' . $endTime;
}
}
} else {
return date("Y/m/d", strtotime("-30 days", time())) . '-' . date("Y/m/d", time());
}
}
/**
* 统计仓库
* @return array
*/
public function total_warehouse()
{
$data=WarehouseLogic::total_warehouse();
return $this->data($data);
}
/**
* 统计仓库
* @return array
*/
public function warehouse_list()
{
$data=WarehouseLogic::warehouse_list();
return $this->data($data);
}
}