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

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

@@ -32,10 +32,116 @@ class IndexController extends BaseAdminController
 {
     public array $notNeedLogin = ['index'];
 
-    public function index(){
-        $order_list = Order::select();
+    public function index()
+    {
 
-        return view('/count/index', ['id'=>2025]);
+        // 获取上个月的第一天
+        $firstDayOfLastMonth = strtotime(date('Y-m-01', strtotime('last month')));
+
+        // 获取上个月最后一天
+        $lastDayOfLastMonth = strtotime(date('Y-m-t', strtotime('last month')) . ' 23:59:59');
+
+        // 获取上个月的第一天
+        $firstDayOfNowMonth = strtotime(date('Y-m-01'));
+
+        // 获取上个月最后一天
+        $lastDayOfNowMonth = strtotime(date('Y-m-t') . ' 23:59:59');
+
+        $where = [];
+        $whereTime = [];
+
+        $whereLastTime[] = ['o.create_time', 'between', [$firstDayOfLastMonth, $lastDayOfLastMonth]];
+
+        $whereNowTime[] = ['o.create_time', 'between', [$firstDayOfNowMonth, $lastDayOfNowMonth]];
+
+        $where[]=['o.pay_status','=',1];
+
+        $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')
+            ->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')
+            ->order('now_total_num desc')
+            ->select()->toArray();
+
+        $newGoodsData = [];
+        if(count($lastOrderGoodsInfo)>5){
+            foreach($lastOrderGoodsInfo as $lk=>$lv){
+
+                if($lk>4)break;
+                foreach($nowOrderGoodsInfo as $nk=>$nv){
+                    $lastOrderGoodsInfo[$lk]['now_total_num'] = 0;
+                    if($lv['goods_id'] == $nv['goods_id'] ){
+                        $lv['now_total_num'] = $nv['now_total_num'];
+                        break;
+                    }
+                }
+                $newGoodsData[] =$lv;
+            }
+        }else{
+            if(empty($lastOrderGoodsInfo)){
+                foreach($nowOrderGoodsInfo as $nk=>$nv){
+                    if($nk>4)break;
+                    $nv['last_total_num'] = 0;
+                    $newGoodsData[] = $nv;
+                }
+            }else{
+                $count = 0;
+                $lastGoodsIdArr = [];
+                foreach($lastOrderGoodsInfo as $lk=>$lv){
+                    $count++;
+                    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'] ){
+                            $lv['now_total_num'] = $nv['now_total_num'];
+                            break;
+                        }
+                    }
+                    $newGoodsData[] =$lv;
+                }
+
+                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 ++;
+                        $newGoodsData[] = $nv;
+                    }
+                }
+            }
+        }
+        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). '%';
+                    $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). '%';
+                    $ngv['type'] = 0;
+                }else{
+                    $ngv['growth'] = 0;
+                    $ngv['type'] = 1;
+                }
+            }
+
+            $ngv['name'] = mb_substr( $ngv['name'], 0, 6, "UTF-8") . '....'  ;
+        }
+
+        return view('/count/index', ['newGoodsData' => $newGoodsData]);
     }
 
 }

+ 24 - 37
app/count/view/count/index.html

@@ -65,47 +65,34 @@
 
 
 								</tr>
+								{volist name="newGoodsData" id='goods'}
+
 								<tr>
-									<td>类型1</td>
-									<td><span class="text-w">1000万</span></td>
-									<td><span class="text-b">900万</span></td>
-									<td>
-										<div class="text-d">↑12%</div>
-									</td>
-								</tr>
-								<tr>
-									<td>类型1</td>
-									<td><span class="text-w">1000万</span></td>
-									<td><span class="text-b">900万</span></td>
-									<td>
-										<div class="text-s">↓12%</div>
-									</td>
-								</tr>
-								<tr>
-									<td>类型1</td>
-									<td><span class="text-w">1000万</span></td>
-									<td><span class="text-b">900万</span></td>
-									<td>
-										<div class="text-d">↑12%</div>
-									</td>
-								</tr>
-								<tr>
-									<td>类型1</td>
-									<td><span class="text-w">1000万</span></td>
-									<td><span class="text-b">900万</span></td>
-									<td>
-										<div class="text-s">↓12%</div>
-									</td>
-								</tr>
-								<tr>
-									<td>类型1</td>
-									<td><span class="text-w">1000万</span></td>
-									<td><span class="text-b">900万</span></td>
+									<td>{$goods.name}</td>
+									<td><span class="text-w">{$goods.last_total_num}</span></td>
+									<td><span class="text-b">{$goods.now_total_num}</span></td>
 									<td>
-										<div class="text-d">↑12%</div>
+										{if $goods.type}<div  class="text-d">↑{$goods.growth}</div>{/if}
+										{if !$goods.type}<div  class="text-s">↓{$goods.growth}</div>{/if}
 									</td>
 								</tr>
-
+								{/volist}
+<!--								<tr>-->
+<!--									<td>类型1</td>-->
+<!--									<td><span class="text-w">1000万</span></td>-->
+<!--									<td><span class="text-b">900万</span></td>-->
+<!--									<td>-->
+<!--										<div class="text-d">↑12%</div>-->
+<!--									</td>-->
+<!--								</tr>-->
+<!--								<tr>-->
+<!--									<td>类型1</td>-->
+<!--									<td><span class="text-w">1000万</span></td>-->
+<!--									<td><span class="text-b">900万</span></td>-->
+<!--									<td>-->
+<!--										<div class="text-s">↓12%</div>-->
+<!--									</td>-->
+<!--								</tr>-->
 							</tbody>
 						</table>
 					</div>