Просмотр исходного кода

下单退单模块数据图表

moonsflyer 9 месяцев назад
Родитель
Сommit
f25234bfb1
2 измененных файлов с 118 добавлено и 89 удалено
  1. 109 86
      app/count/controller/IndexController.php
  2. 9 3
      app/count/view/count/index.html

+ 109 - 86
app/count/controller/IndexController.php

@@ -23,6 +23,7 @@ use app\common\model\Order;
 use app\common\model\OrderGoods;
 use app\common\model\Goods;
 use app\common\model\Distribution;
+use app\common\model\AfterSale;
 use think\facade\Config;
 
 /**
@@ -52,16 +53,16 @@ class IndexController extends BaseAdminController
         $whereLastTime[] = ['o.create_time', 'between', [$firstDayOfLastMonth, $lastDayOfLastMonth]];
         $whereNowTime[] = ['o.create_time', 'between', [$firstDayOfNowMonth, $lastDayOfNowMonth]];
 
-        $where[]=['o.pay_status','=',1];
+        $where[] = ['o.pay_status', '=', 1];
         //上月销量
-        $lastOrderGoodsInfo =  OrderGoods::alias('og')->leftJoin('order o','o.id = og.order_id')
+        $lastOrderGoodsInfo = OrderGoods::alias('og')->leftJoin('order o', 'o.id = og.order_id')
             ->field('og.goods_id,og.goods_name name,sum(og.goods_num) last_total_num')
             ->where($where)->where($whereLastTime)
             ->group('og.goods_id,og.goods_name')
             ->order('last_total_num desc')
             ->select()->toArray();
         //本月销量
-        $nowOrderGoodsInfo =  OrderGoods::alias('og')->leftJoin('order o','o.id = og.order_id')
+        $nowOrderGoodsInfo = OrderGoods::alias('og')->leftJoin('order o', 'o.id = og.order_id')
             ->field('og.goods_id,og.goods_name name,sum(og.goods_num) now_total_num')
             ->where($where)->where($whereNowTime)
             ->group('og.goods_id,og.goods_name')
@@ -69,76 +70,75 @@ class IndexController extends BaseAdminController
             ->select()->toArray();
 
         $newGoodsData = [];
-        if(count($lastOrderGoodsInfo)>5){
-            foreach($lastOrderGoodsInfo as $lk=>$lv){
+        if (count($lastOrderGoodsInfo) > 5) {
+            foreach ($lastOrderGoodsInfo as $lk => $lv) {
 
-                if($lk>4)break;
-                foreach($nowOrderGoodsInfo as $nk=>$nv){
+                if ($lk > 4) break;
+                foreach ($nowOrderGoodsInfo as $nk => $nv) {
                     $lastOrderGoodsInfo[$lk]['now_total_num'] = 0;
-                    if($lv['goods_id'] == $nv['goods_id'] ){
+                    if ($lv['goods_id'] == $nv['goods_id']) {
                         $lv['now_total_num'] = $nv['now_total_num'];
                         break;
                     }
                 }
-                $newGoodsData[] =$lv;
+                $newGoodsData[] = $lv;
             }
-        }
-        else{
-            if(empty($lastOrderGoodsInfo)){
-                foreach($nowOrderGoodsInfo as $nk=>$nv){
-                    if($nk>4)break;
+        } else {
+            if (empty($lastOrderGoodsInfo)) {
+                foreach ($nowOrderGoodsInfo as $nk => $nv) {
+                    if ($nk > 4) break;
                     $nv['last_total_num'] = 0;
                     $newGoodsData[] = $nv;
                 }
-            }else{
+            } else {
                 $count = 0;
                 $lastGoodsIdArr = [];
-                foreach($lastOrderGoodsInfo as $lk=>$lv){
+                foreach ($lastOrderGoodsInfo as $lk => $lv) {
                     $count++;
-                    array_push($lastGoodsIdArr,$lv['goods_id']);
-                    if($lk>4)break;
-                    foreach($nowOrderGoodsInfo as $nk=>$nv){
+                    array_push($lastGoodsIdArr, $lv['goods_id']);
+                    if ($lk > 4) break;
+                    foreach ($nowOrderGoodsInfo as $nk => $nv) {
                         $lv['now_total_num'] = 0;
-                        if($lv['goods_id'] == $nv['goods_id'] ){
+                        if ($lv['goods_id'] == $nv['goods_id']) {
                             $lv['now_total_num'] = $nv['now_total_num'];
                             break;
                         }
                     }
-                    $newGoodsData[] =$lv;
+                    $newGoodsData[] = $lv;
                 }
 
-                if($count<5){
-                    foreach($nowOrderGoodsInfo as &$nv){
-                        if($count>=5) break;
-                        if(in_array($nv['goods_id'],$lastGoodsIdArr)) continue;
+                if ($count < 5) {
+                    foreach ($nowOrderGoodsInfo as &$nv) {
+                        if ($count >= 5) break;
+                        if (in_array($nv['goods_id'], $lastGoodsIdArr)) continue;
                         $nv['last_total_num'] = 0;
                         $nv['growth'] = '100%';
                         $nv['type'] = 1;
-                        $count ++;
+                        $count++;
                         $newGoodsData[] = $nv;
                     }
                 }
             }
         }
 
-        foreach ($newGoodsData as &$ngv){
-            if($ngv['last_total_num']==0){
+        foreach ($newGoodsData as &$ngv) {
+            if ($ngv['last_total_num'] == 0) {
                 $ngv['growth'] = '100%';
                 $ngv['type'] = 1;
-            }else{
-                if($ngv['last_total_num'] < $ngv['now_total_num']){
-                    $ngv['growth'] = round(($ngv['now_total_num'] - $ngv['last_total_num'])/$ngv['last_total_num']*100 ,0). '%';
+            } else {
+                if ($ngv['last_total_num'] < $ngv['now_total_num']) {
+                    $ngv['growth'] = round(($ngv['now_total_num'] - $ngv['last_total_num']) / $ngv['last_total_num'] * 100, 0) . '%';
                     $ngv['type'] = 1;
-                }else if($ngv['last_total_num'] > $ngv['now_total_num']){
-                    $ngv['growth'] = round(($ngv['last_total_num'] - $ngv['now_total_num'])/$ngv['last_total_num']*100 ,0). '%';
+                } else if ($ngv['last_total_num'] > $ngv['now_total_num']) {
+                    $ngv['growth'] = round(($ngv['last_total_num'] - $ngv['now_total_num']) / $ngv['last_total_num'] * 100, 0) . '%';
                     $ngv['type'] = 0;
-                }else{
+                } else {
                     $ngv['growth'] = 0;
                     $ngv['type'] = 1;
                 }
             }
 
-            $ngv['name'] = mb_substr( $ngv['name'], 0, 6, "UTF-8") . '....'  ;
+            $ngv['name'] = mb_substr($ngv['name'], 0, 6, "UTF-8") . '....';
         }
 
         $data['newGoodsData'] = $newGoodsData;
@@ -146,26 +146,26 @@ class IndexController extends BaseAdminController
 
         /** 分类销量排名 start**/
         $ogcwhere = [];
-        $ogcwhere[]=['gc.level','=','1'];
+        $ogcwhere[] = ['gc.level', '=', '1'];
 
-        $OrderGoodsCategoryInfo =  OrderGoods::alias('og')
-            ->leftJoin('order o','o.id = og.order_id')
-            ->leftJoin('goods g','g.id = og.goods_id')
-            ->leftJoin('goods_category_index gci','gci.goods_id=g.id')
-            ->leftJoin('goods_category gc','gc.id = gci.category_id')
+        $OrderGoodsCategoryInfo = OrderGoods::alias('og')
+            ->leftJoin('order o', 'o.id = og.order_id')
+            ->leftJoin('goods g', 'g.id = og.goods_id')
+            ->leftJoin('goods_category_index gci', 'gci.goods_id=g.id')
+            ->leftJoin('goods_category gc', 'gc.id = gci.category_id')
             ->field('gc.`name` ,sum( og.goods_num) total_num')
             ->where($where)->where($ogcwhere)
             ->group('gc.name')
             ->select()->toArray();
 
-        $goods_category_data = array_column($OrderGoodsCategoryInfo,'total_num');
+        $goods_category_data = array_column($OrderGoodsCategoryInfo, 'total_num');
 
         $data['order_goods_category'] = $OrderGoodsCategoryInfo;
         $count = count($goods_category_data);
-        while($count){
-            if($count<3 ) {
-                array_push($goods_category_data,0);
-            }else{
+        while ($count) {
+            if ($count < 3) {
+                array_push($goods_category_data, 0);
+            } else {
                 break;
             }
             $count = count($goods_category_data);
@@ -173,22 +173,22 @@ class IndexController extends BaseAdminController
         $data['goods_category_data'] = json_encode($goods_category_data);
         $ogcK = 0;
         $chars_category = [];
-        foreach ($OrderGoodsCategoryInfo as $ogcv){
+        foreach ($OrderGoodsCategoryInfo as $ogcv) {
             $ogcK++;
-            $random_data = [30,20,50,40,100,200,300];
+            $random_data = [30, 20, 50, 40, 100, 200, 300];
             shuffle($random_data);
             $randomValue = $random_data[2];
-            $max = substr($ogcv['total_num'] + $randomValue, 0, -1).'0';
+            $max = substr($ogcv['total_num'] + $randomValue, 0, -1) . '0';
             $ogcv['max'] = $max;
             unset($ogcv['total_num']);
-            $chars_category[]=$ogcv;
+            $chars_category[] = $ogcv;
         }
-        while($ogcK){
-            $categorys['name']='填充';
-            $categorys['max']='0';
-            if($ogcK<3 ) {
-                $chars_category[]=$categorys;
-            }else{
+        while ($ogcK) {
+            $categorys['name'] = '填充';
+            $categorys['max'] = '0';
+            if ($ogcK < 3) {
+                $chars_category[] = $categorys;
+            } else {
                 break;
             }
             $ogcK++;
@@ -198,28 +198,28 @@ class IndexController extends BaseAdminController
 
         /** middle start **/
         //商品数量
-        $goodswhere = [] ;
-        $goodswhere[] = ['status','=',1];
-        $goodswhere[] = ['delete_time','=',NULL];
+        $goodswhere = [];
+        $goodswhere[] = ['status', '=', 1];
+        $goodswhere[] = ['delete_time', '=', NULL];
         $goods_count = Goods::where($goodswhere)->count();
         $middle['goods_number'] = $goods_count;
 
         //合作商
-        $diswhere = [] ;
-        $diswhere[] = ['is_distribution','=',1];
-        $diswhere[] = ['delete_time','=',NULL];
+        $diswhere = [];
+        $diswhere[] = ['is_distribution', '=', 1];
+        $diswhere[] = ['delete_time', '=', NULL];
         $distribution_count = Distribution::where($diswhere)->count();
         $middle['distribution_number'] = $distribution_count;
 
         //订单数
-        $order_where = [] ;
-        $order_where[] = ['pay_status','=',1];
+        $order_where = [];
+        $order_where[] = ['pay_status', '=', 1];
         $order_count = Order::where($order_where)->count();
         $middle['order_number'] = $order_count;
 
         //派送订单
-        $orderwhere = [] ;
-        $orderwhere[] = ['order_status','=',2];
+        $orderwhere = [];
+        $orderwhere[] = ['order_status', '=', 2];
         $order_delivery_count = Order::where($orderwhere)->count();
         $middle['delivery_number'] = $order_delivery_count;
 
@@ -231,53 +231,76 @@ class IndexController extends BaseAdminController
 
         $monthData = [];
         $monthArr = [];
-        for($i=1;$i<=$nowMonth;$i++){
-            array_push($monthArr,$i);
-            $monthFat = $i.'月';
-            array_push($monthData,$monthFat);
+        for ($i = 1; $i <= $nowMonth; $i++) {
+            array_push($monthArr, $i);
+            $monthFat = $i . '月';
+            array_push($monthData, $monthFat);
         }
 
         $middle['YearData'] = $nowYear;
         $middle['MonthFormatData'] = json_encode($monthData);
         $month_data = [];
-        foreach ($monthArr as $mv){
-            $date = getMonthFirstAndLastDay($nowYear,$mv);
+        foreach ($monthArr as $mv) {
+            $date = getMonthFirstAndLastDay($nowYear, $mv);
             $startTime = strtotime($date['firstDay']);
-            $endTime = strtotime($date['lastDay'].' 23:59:59');
-            $create_time_date = [$startTime,$endTime];
+            $endTime = strtotime($date['lastDay'] . ' 23:59:59');
+            $create_time_date = [$startTime, $endTime];
             $salewhere = [];
-            $salewhere[]=['create_time','between',$create_time_date];
+            $salewhere[] = ['create_time', 'between', $create_time_date];
             $month_order_number = Order::alias('o')->where($where)->where($salewhere)->count();
-            array_push($month_data,$month_order_number);
+            array_push($month_data, $month_order_number);
         }
 
         $middle['MonthOrderData'] = json_encode($month_data);
         $nowTime = time();
         $todayStartDate = date('Y-m-d');
-        $todaywhere= [];
-        $todaywhere[]=['create_time','between',[strtotime($todayStartDate),$nowTime]];
+        $todaywhere = [];
+        $todaywhere[] = ['create_time', 'between', [strtotime($todayStartDate), $nowTime]];
         $todayOrderInfo = Order::alias('o')->where($where)->where($todaywhere)->field('count(id) number,sum(total_amount) total_money')->find();
 
-        $middle['today_order_number']=$todayOrderInfo['number'];
-        $middle['today_total_amount']=$todayOrderInfo['total_money']??0;
+        $middle['today_order_number'] = $todayOrderInfo['number'];
+        $middle['today_total_amount'] = $todayOrderInfo['total_money'] ?? 0;
 
         $thisMonth = date('n');
-        $this_month_date =  getMonthFirstAndLastDay($nowYear,$thisMonth);
+        $this_month_date = getMonthFirstAndLastDay($nowYear, $thisMonth);
 
         $startTime = strtotime($this_month_date['firstDay']);
-        $endTime = strtotime($this_month_date['lastDay'].' 23:59:59');
-        $create_time_date = [$startTime,$endTime];
+        $endTime = strtotime($this_month_date['lastDay'] . ' 23:59:59');
+        $create_time_date = [$startTime, $endTime];
 
         $thisMonthWhere = [];
-        $thisMonthWhere[]=['create_time','between',$create_time_date];
+        $thisMonthWhere[] = ['create_time', 'between', $create_time_date];
         $thisMonthOrderInfo = Order::alias('o')->where($where)->where($thisMonthWhere)->field('count(id) number,sum(total_amount) total_money')->find();
 
-        $middle['this_month_order_number']=$thisMonthOrderInfo['number'];
-        $middle['this_month_total_amount']=$thisMonthOrderInfo['total_money']??0;
+        $middle['this_month_order_number'] = $thisMonthOrderInfo['number'];
+        $middle['this_month_total_amount'] = $thisMonthOrderInfo['total_money'] ?? 0;
 
         $data['middle'] = $middle;
         /** middle end **/
 
+        /**下单退款 start**/
+        $order_refund['MonthData'] = json_encode($monthArr);
+        $order_month_info = [];
+        $refund_month_info = [];
+        foreach ($monthArr as $mv) {
+            $date = getMonthFirstAndLastDay($nowYear, $mv);
+            $startTime = strtotime($date['firstDay']);
+            $endTime = strtotime($date['lastDay'] . ' 23:59:59');
+            $create_time_date = [$startTime, $endTime];
+            $salewhere = [];
+            $salewhere[] = ['create_time', 'between', $create_time_date];
+            $month_order_number = Order::alias('o')->where($where)->where($salewhere)->count();
+            array_push($order_month_info, $month_order_number);
+
+            $salewhere[]=['status','in',[1,2]];
+            $month_refund_number = AfterSale::where($salewhere)->count();
+            array_push($refund_month_info,$month_refund_number);
+        }
+        $order_refund['order_month_info'] = json_encode($order_month_info);
+        $order_refund['refund_month_info'] = json_encode($refund_month_info);
+        $data['order_refund_info'] = $order_refund;
+        /**下单退款 end **/
+//        dump($data);
         return view('/count/index', $data);
     }
 

+ 9 - 3
app/count/view/count/index.html

@@ -298,6 +298,9 @@
 		<input id="category_data" value="{$goods_category_data}" hidden/>
 		<input id="month_data" value="{$middle.MonthFormatData}" hidden/>
 		<input id="month_order_data" value="{$middle.MonthOrderData}" hidden/>
+		<input id="month_arr_data" value="{$order_refund_info.MonthData}" hidden/>
+		<input id="order_month_info" value="{$order_refund_info.order_month_info}" hidden/>
+		<input id="refund_month_info" value="{$order_refund_info.refund_month_info}" hidden/>
 	</div>
 </body>
 <script >
@@ -796,6 +799,9 @@
 
 	//供需信息统计
 	function echarts_4() {
+		var month_arr_data = JSON.parse(document.getElementById('month_arr_data').value);
+		var order_month_info = JSON.parse(document.getElementById('order_month_info').value);
+		var refund_month_info = JSON.parse(document.getElementById('refund_month_info').value);
 		// 基于准备好的dom,初始化echarts实例
 		var myChart = echarts.init(document.getElementById('echart4'));
 		var myChart2 = echarts.init(document.getElementById('echart3'));
@@ -828,7 +834,7 @@
 			},
 			xAxis: [{
 				type: 'category',
-				data: ['1', '2', '3', '4', '5', '6', '7', '8', '9'],
+				data: month_arr_data,
 				axisLine: {
 					show: true,
 					lineStyle: {
@@ -882,7 +888,7 @@
 			series: [{
 				name: '下单',
 				type: 'bar',
-				data: [2, 3, 3, 9, 15, 12, 6, 4, 6],
+				data: order_month_info,
 				barWidth:'20%', //柱子宽度
 				// barGap: 1, //柱子之间间距
 				itemStyle: {
@@ -895,7 +901,7 @@
 			}, {
 				name: '退款',
 				type: 'bar',
-				data: [1, 4, 5, 11, 12, 9, 5, 6, 5],
+				data: refund_month_info,
 				barWidth:'20%',
 				// barGap: 1,
 				itemStyle: {