Procházet zdrojové kódy

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

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