//gitee.com/likeshop_gitee/likeadmin // | github下载:https=>//github.com/likeshop-github/likeadmin // | 访问官网:https=>//www.likeadmin.cn // | likeadmin团队 版权所有 拥有最终解释权 // +---------------------------------------------------------------------- // | author=> likeadminTeam // +---------------------------------------------------------------------- namespace app\admin\controller; use app\admin\lists\store_order_cart_info\StoreOrderCartInfoGroupLists; use app\admin\logic\statistic\ProductStatisticLogic; use app\admin\logic\statistic\TradeStatisticLogic; use app\admin\logic\statistic\UserStatisticLogic; use app\admin\logic\WorkbenchLogic; use app\store\logic\WorkbenchLogic as LogicWorkbenchLogic; use DateInterval; use DateTime; /** * 工作台 * Class WorkbenchCotroller * @package app\admin\controller */ class WorkbenchController extends BaseAdminController { /** * @notes 工作台 * @author 乔峰 * @date 2021/12/29 17=>01 */ 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); } //-------------------------------商品统计---------------------------------------// /** * 商品概况 */ 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); } //-------------------------------用户统计---------------------------------------// /** * 获取用户概况 */ public function get_user_basic() { $date=$this->request->get('date',''); $where['create_time'] = $this->getDay($date); $data=(new UserStatisticLogic())->getBasic($where); return $this->data($data); } /** * 获取用户趋势 */ public function get_user_trend() { $date=$this->request->get('date',''); $where['create_time'] = $this->getDay($date); $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); } /** * 实时商品统计 */ public function product_order(){ return $this->dataLists(new StoreOrderCartInfoGroupLists()); } /** * 格式化时间 * @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()); } } }