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