Przeglądaj źródła

refactor(app): 重构 Pv.php 中的订单状态代码

- 使用 StoreOrderEnum 枚举类替换硬编码的订单状态值
- 提高代码的可读性和可维护性
- 便于未来的状态码修改和扩展
shichen 10 miesięcy temu
rodzic
commit
62d8c3554b
1 zmienionych plików z 17 dodań i 11 usunięć
  1. 17 11
      app/common/utils/Pv.php

+ 17 - 11
app/common/utils/Pv.php

@@ -6,6 +6,7 @@ use app\common\dao\profit\ProductPvDao;
6 6
 use app\common\dao\store\order\StoreCartDao;
7 7
 use app\common\dao\store\order\StoreOrderDao;
8 8
 use app\common\dao\user\UserDao;
9
+use app\common\enum\store\StoreOrderEnum;
9 10
 
10 11
 /**
11 12
  * PV业绩计算工具类
@@ -26,7 +27,12 @@ class Pv
26 27
      * 0,1,2,3 可能代表:待付款、已付款、已发货、已完成等状态
27 28
      * @var array
28 29
      */
29
-    private $status = [0, 1, 2, 3];
30
+    private $status = [
31
+        StoreOrderEnum::STATUS['WAITING_SHIPMENT']['code'],
32
+        StoreOrderEnum::STATUS['WAITING_RECEIVE']['code'],
33
+        StoreOrderEnum::STATUS['WAITING_EVALUATION']['code'],
34
+        StoreOrderEnum::STATUS['COMPLETED']['code']
35
+        ];
30 36
 
31 37
     /**
32 38
      * 需要排除的测试用户ID列表
@@ -96,11 +102,11 @@ class Pv
96 102
     {
97 103
         // 测试用户id(硬编码,实际应该使用传入的参数)
98 104
         // $userId = [1592];
99
-        
105
+
100 106
         // 时间范围示例(注释掉的代码)
101 107
         // $startTime = '2025-9-8';
102 108
         // $endTime = '2025-9-11';
103
-        
109
+
104 110
         // 获取订单数据(过滤掉测试用户)
105 111
         $orderData = $this->storeOrderDao->getDataForPv(
106 112
             $userId,
@@ -110,19 +116,19 @@ class Pv
110 116
             $this->status,
111 117
             $this->removeUserIdList
112 118
         );
113
-        
119
+
114 120
         // 提取所有购物车ID
115 121
         $cartIds = array_column($orderData, 'cart_id');
116 122
 
117 123
         // 根据购物车ID获取购物车数据
118 124
         $cartData = $this->cartDao->getDataByIds($cartIds);
119
-        
125
+
120 126
         // 统计每个商品的出现次数
121 127
         $productCount = $this->countProductIds($cartData);
122
-        
128
+
123 129
         // 根据商品数量和PV配置计算总PV值
124 130
         $pv = $this->countResult($productCount);
125
-        
131
+
126 132
         // 输出计算结果(调试用)
127 133
         dd($pv);
128 134
     }
@@ -151,10 +157,10 @@ class Pv
151 157
     private function countProductIds(array $cartData): array
152 158
     {
153 159
         $productIdCounts = [];
154
-        
160
+
155 161
         foreach ($cartData as $cartItem) {
156 162
             $productId = $cartItem['product_id'];
157
-            
163
+
158 164
             if (isset($productIdCounts[$productId])) {
159 165
                 // 如果商品已存在,增加计数
160 166
                 $productIdCounts[$productId]++;
@@ -181,7 +187,7 @@ class Pv
181 187
         // 获取PV配置
182 188
         $pvConfig = $this->getPvConfig();
183 189
         $totalPv = 0;
184
-        
190
+
185 191
         // 遍历每个商品计算PV贡献
186 192
         foreach ($productCount as $productId => $count) {
187 193
             if (isset($pvConfig[$productId])) {
@@ -190,7 +196,7 @@ class Pv
190 196
             }
191 197
             // 如果没有配置PV系数的商品,不计入业绩
192 198
         }
193
-        
199
+
194 200
         return $totalPv;
195 201
     }
196 202
 }