sunxbiao 1 год назад
Родитель
Сommit
55b5931f52
1 измененных файлов с 30 добавлено и 19 удалено
  1. 30 19
      app/controller/api/store/merchant/Taskorderguquan.php

+ 30 - 19
app/controller/api/store/merchant/Taskorderguquan.php

@@ -31,8 +31,6 @@ class Taskorderguquan
31
             'insertPvSummary' => ['success' => 0, 'failed' => 0],         // 优化: 汇总PV插入结果
31
             'insertPvSummary' => ['success' => 0, 'failed' => 0],         // 优化: 汇总PV插入结果
32
             'errors' => [],               // 优化: 统一记录错误信息
32
             'errors' => [],               // 优化: 统一记录错误信息
33
         ];
33
         ];
34
-        $currentTime = time();
35
-        $currentDateTime = date('Y-m-d H:i:s', $currentTime);
36
 
34
 
37
         // --- 数据库查询部分 (保持不变,已优化) ---
35
         // --- 数据库查询部分 (保持不变,已优化) ---
38
         // 1. 查询用户
36
         // 1. 查询用户
@@ -61,27 +59,29 @@ class Taskorderguquan
61
 
59
 
62
         // 4. 查询已存在的贡献值记录
60
         // 4. 查询已存在的贡献值记录
63
         $gongXianListRaw = Db::name("user_sign_gongxian")
61
         $gongXianListRaw = Db::name("user_sign_gongxian")
62
+            ->where('status', '!=', -1)
64
             // 优化: 如果记录非常多,可以分批查询或只查相关用户的
63
             // 优化: 如果记录非常多,可以分批查询或只查相关用户的
65
             // ->whereIn('uid', array_merge($userIds, array_column($userList, 'spread_uid'))) // 查询购买者和潜在推广者
64
             // ->whereIn('uid', array_merge($userIds, array_column($userList, 'spread_uid'))) // 查询购买者和潜在推广者
66
-            ->field('uid, order_id, number')
65
+            ->field('uid, order_id, number, status')
67
             ->select()
66
             ->select()
68
             ->toArray();
67
             ->toArray();
69
 
68
 
70
         // 5. 查询已存在的PV记录
69
         // 5. 查询已存在的PV记录
71
         $pvListRaw = Db::name("user_pv_log")
70
         $pvListRaw = Db::name("user_pv_log")
71
+            ->where('status', '!=', -1)
72
             // 优化: 同上
72
             // 优化: 同上
73
             // ->whereIn('uid', $userIds)
73
             // ->whereIn('uid', $userIds)
74
-            ->field('uid, order_id, pv')
74
+            ->field('uid, order_id, pv, status')
75
             ->select()
75
             ->select()
76
             ->toArray();
76
             ->toArray();
77
 
77
 
78
         // --- 数据预处理部分
78
         // --- 数据预处理部分
79
         $existingGongXian = [];
79
         $existingGongXian = [];
80
-        foreach ($gongXianListRaw as $gx) $existingGongXian[$gx['uid'] . '_' . $gx['order_id']] = $gx['number'];
80
+        foreach ($gongXianListRaw as $gx) $existingGongXian[$gx['uid'] . '_' . $gx['order_id']] = ['number' => $gx['number'], 'status' => $gx['status']];
81
         unset($gongXianListRaw);
81
         unset($gongXianListRaw);
82
 
82
 
83
         $existingPv = [];
83
         $existingPv = [];
84
-        foreach ($pvListRaw as $pv) $existingPv[$pv['uid'] . '_' . $pv['order_id']] = $pv['pv'];
84
+        foreach ($pvListRaw as $pv) $existingPv[$pv['uid'] . '_' . $pv['order_id']] = ['pv' => $pv['pv'], 'status' => $pv['status']];
85
         unset($pvListRaw);
85
         unset($pvListRaw);
86
 
86
 
87
         $userOfGoodsByUid = [];
87
         $userOfGoodsByUid = [];
@@ -155,24 +155,28 @@ class Taskorderguquan
155
                             break;
155
                             break;
156
                     }
156
                     }
157
 
157
 
158
+                    $settlementTimeOld = $oldOrder['create_time'] ? date('Y-m-d H:i:s', $oldOrder['create_time']) : strtotime($user['create_time']);
158
                     // --- 收集贡献值插入数据 ---
159
                     // --- 收集贡献值插入数据 ---
159
                     $orderKey = $uid . '_' . $oldOrder['order_id'];
160
                     $orderKey = $uid . '_' . $oldOrder['order_id'];
160
                     if (isset($existingGongXian[$orderKey])) {
161
                     if (isset($existingGongXian[$orderKey])) {
161
                         $result['oldOrderExistGongXian'][] = ['uid' => $uid, 'order_id' => $oldOrder['order_id']];
162
                         $result['oldOrderExistGongXian'][] = ['uid' => $uid, 'order_id' => $oldOrder['order_id']];
162
-                        $userUpdateData[$uid]['contribute'] += $existingGongXian[$orderKey];
163
+                        if ($existingGongXian[$orderKey]['status'] == 1) {
164
+                            $userUpdateData[$uid]['contribute'] += $existingGongXian[$orderKey]['number'];
165
+                        }
163
                         if (!empty($spreadUid) && isset($userUpdateData[$spreadUid])) {
166
                         if (!empty($spreadUid) && isset($userUpdateData[$spreadUid])) {
164
                             if (isset($existingGongXian[$spreadUid . '_' . $oldOrder['order_id']])) {
167
                             if (isset($existingGongXian[$spreadUid . '_' . $oldOrder['order_id']])) {
165
-                                $userUpdateData[$spreadUid]['per_contribute'] += $existingGongXian[$spreadUid . '_' . $oldOrder['order_id']];
168
+                                if ($existingGongXian[$spreadUid . '_' . $oldOrder['order_id']]['status'] == 1) {
169
+                                    $userUpdateData[$spreadUid]['per_contribute'] += $existingGongXian[$spreadUid . '_' . $oldOrder['order_id']]['number'];
170
+                                }
166
                             }
171
                             }
167
                         }
172
                         }
168
                     } else {
173
                     } else {
169
                         if ($totalPv > 0) {
174
                         if ($totalPv > 0) {
170
                             $userUpdateData[$uid]['contribute'] += $totalPv;
175
                             $userUpdateData[$uid]['contribute'] += $totalPv;
171
 
176
 
172
-                            $settlementTimeOld = $oldOrder['create_time'] ? date('Y-m-d H:i:s', $oldOrder['create_time']) : $currentDateTime;
173
                             // --- 收集贡献值插入数据 ---
177
                             // --- 收集贡献值插入数据 ---
174
                             $gongXianBase = [
178
                             $gongXianBase = [
175
-                                "number" => $totalPv, "addtime" => $currentTime, "status" => 1,
179
+                                "number" => $totalPv, "addtime" => strtotime($settlementTimeOld), "status" => 1,
176
                                 "order_type" => 1, "order_id" => $oldOrder['order_id'],
180
                                 "order_type" => 1, "order_id" => $oldOrder['order_id'],
177
                                 "desc" => '', "surplus" => 0, "type" => 1, 'settlement_time' => $settlementTimeOld
181
                                 "desc" => '', "surplus" => 0, "type" => 1, 'settlement_time' => $settlementTimeOld
178
                             ];
182
                             ];
@@ -190,12 +194,13 @@ class Taskorderguquan
190
                     // --- 收集 PV 插入数据 ---
194
                     // --- 收集 PV 插入数据 ---
191
                     if (isset($existingPv[$orderKey])) {
195
                     if (isset($existingPv[$orderKey])) {
192
                         $result['oldOrderExistPv'][] = ['uid' => $uid, 'order_id' => $oldOrder['order_id']];
196
                         $result['oldOrderExistPv'][] = ['uid' => $uid, 'order_id' => $oldOrder['order_id']];
193
-                        $userUpdateData[$uid]['pv'] += $existingGongXian[$orderKey];
194
-
197
+                        if ($existingPv[$orderKey]['status'] == 1) {
198
+                            $userUpdateData[$uid]['pv'] += $existingPv[$orderKey]['pv'];
199
+                        }
195
                     } else {
200
                     } else {
196
                         $userUpdateData[$uid]['pv'] += $totalPv;
201
                         $userUpdateData[$uid]['pv'] += $totalPv;
197
                         $pvDataToInsert[] = [
202
                         $pvDataToInsert[] = [
198
-                            "uid" => $uid, "pv" => $totalPv, "addtime" => $currentTime, "status" => 1,
203
+                            "uid" => $uid, "pv" => $totalPv, "addtime" => strtotime($settlementTimeOld), "status" => 1,
199
                             "order_type" => 0, "order_id" => $oldOrder['order_id'],
204
                             "order_type" => 0, "order_id" => $oldOrder['order_id'],
200
                             "mark" => "1.0系统购买会员专区商品赠送PV", 'settlement_time' => $settlementTimeOld
205
                             "mark" => "1.0系统购买会员专区商品赠送PV", 'settlement_time' => $settlementTimeOld
201
                         ];
206
                         ];
@@ -235,15 +240,19 @@ class Taskorderguquan
235
                     }
240
                     }
236
                     // --- 收集贡献值插入数据 ---
241
                     // --- 收集贡献值插入数据 ---
237
                     $orderKey = $uid . '_' . $order['order_id'];
242
                     $orderKey = $uid . '_' . $order['order_id'];
238
-                    $settlementTimeNew = $order['create_time'] ?: $currentDateTime;
243
+                    $settlementTimeNew = $order['create_time'] ?: date('Y-m-d H:i:s', $user['create_time']);
239
                     // --- 收集贡献值插入数据 ---
244
                     // --- 收集贡献值插入数据 ---
240
                     if (isset($existingGongXian[$orderKey])) {
245
                     if (isset($existingGongXian[$orderKey])) {
241
                         $result['orderExistGongXian'][] = ['uid' => $uid, 'order_id' => $order['order_id']];
246
                         $result['orderExistGongXian'][] = ['uid' => $uid, 'order_id' => $order['order_id']];
242
                         // 累加计算值
247
                         // 累加计算值
243
-                        $userUpdateData[$uid]['contribute'] += $existingGongXian[$orderKey];
248
+                        if ($existingGongXian[$orderKey]['status'] == 1) {
249
+                            $userUpdateData[$uid]['contribute'] += $existingGongXian[$orderKey]['member'];
250
+                        }
244
                         if (!empty($spreadUid) && isset($userUpdateData[$spreadUid])) {
251
                         if (!empty($spreadUid) && isset($userUpdateData[$spreadUid])) {
245
                             if (isset($existingGongXian[$spreadUid . '_' . $order['order_id']])) {
252
                             if (isset($existingGongXian[$spreadUid . '_' . $order['order_id']])) {
246
-                                $userUpdateData[$spreadUid]['per_contribute'] += $existingGongXian[$spreadUid . '_' . $order['order_id']];
253
+                                if ($existingGongXian[$spreadUid . '_' . $order['order_id']]['status'] == 1) {
254
+                                    $userUpdateData[$spreadUid]['per_contribute'] += $existingGongXian[$spreadUid . '_' . $order['order_id']]['member'];
255
+                                }
247
                             }
256
                             }
248
                         }
257
                         }
249
 
258
 
@@ -252,7 +261,7 @@ class Taskorderguquan
252
                             // 累加计算值
261
                             // 累加计算值
253
                             $userUpdateData[$uid]['contribute'] += $totalPv;
262
                             $userUpdateData[$uid]['contribute'] += $totalPv;
254
                             $gongXianBase = [ // 优化: 提取公共字段
263
                             $gongXianBase = [ // 优化: 提取公共字段
255
-                                "number" => $totalPv, "addtime" => $currentTime, "status" => 1,
264
+                                "number" => $totalPv, "addtime" => strtotime($settlementTimeNew), "status" => 1,
256
                                 "order_type" => 1, "order_id" => $order['order_id'],
265
                                 "order_type" => 1, "order_id" => $order['order_id'],
257
                                 "desc" => '', "surplus" => 0, "type" => 1, 'settlement_time' => $settlementTimeNew
266
                                 "desc" => '', "surplus" => 0, "type" => 1, 'settlement_time' => $settlementTimeNew
258
                             ];
267
                             ];
@@ -272,11 +281,13 @@ class Taskorderguquan
272
                     // --- 收集 PV 插入数据 ---
281
                     // --- 收集 PV 插入数据 ---
273
                     if (isset($existingPv[$orderKey])) {
282
                     if (isset($existingPv[$orderKey])) {
274
                         $result['orderExistPv'][] = ['uid' => $uid, 'order_id' => $order['order_id']];
283
                         $result['orderExistPv'][] = ['uid' => $uid, 'order_id' => $order['order_id']];
275
-                        $userUpdateData[$uid]['pv'] += $existingPv[$orderKey];
284
+                        if ($existingPv[$orderKey]['status'] == 1) {
285
+                            $userUpdateData[$uid]['pv'] += $existingPv[$orderKey]['pv'];
286
+                        }
276
                     } else {
287
                     } else {
277
                         $userUpdateData[$uid]['pv'] += $totalPv;
288
                         $userUpdateData[$uid]['pv'] += $totalPv;
278
                         $pvDataToInsert[] = [
289
                         $pvDataToInsert[] = [
279
-                            "uid" => $uid, "pv" => $totalPv, "addtime" => $currentTime, "status" => 1,
290
+                            "uid" => $uid, "pv" => $totalPv, "addtime" => strtotime($settlementTimeNew), "status" => 1,
280
                             "order_type" => 0, // 确认 PV log 的 order_type 是否与贡献一致或有区分
291
                             "order_type" => 0, // 确认 PV log 的 order_type 是否与贡献一致或有区分
281
                             "order_id" => $order['order_id'],
292
                             "order_id" => $order['order_id'],
282
                             "mark" => "2.0系统购买商品赠送PV", // 标记调整为更通用
293
                             "mark" => "2.0系统购买商品赠送PV", // 标记调整为更通用