WIN-2308041133\Administrator hai 2 meses
pai
achega
9fe2ed6763
Modificáronse 1 ficheiros con 52 adicións e 18 borrados
  1. 52 18
      app/services/order/StoreOrderSuccessServices.php

+ 52 - 18
app/services/order/StoreOrderSuccessServices.php

@@ -242,39 +242,73 @@ class StoreOrderSuccessServices extends BaseServices
                             @file_put_contents('quanju4.txt', 'fake_id小组没有成员,新成员成为第一人\r\n', 8);
                             @file_put_contents('quanju4.txt', 'fake_id小组没有成员,新成员成为第一人\r\n', 8);
                         }
                         }
                     } else {
                     } else {
-                        // 小组已满,需要滑落到该小组最后一人的 fake_id 下
+                        // 小组已满,需要滑落到该小组最后一人的直推下级小组
+                        // 最后一人的直推下级小组 = 最后一人的uid作为fake_id的小组
                         $lastMember = end($spreadFakeIdGroup);
                         $lastMember = end($spreadFakeIdGroup);
                         @file_put_contents('quanju4.txt', $lastMember['uid'] . "-小组最后一人uid\r\n", 8);
                         @file_put_contents('quanju4.txt', $lastMember['uid'] . "-小组最后一人uid\r\n", 8);
-                        @file_put_contents('quanju4.txt', $lastMember['fake_pid'] . "-最后一人的fake_id\r\n", 8);
 
 
-                        // 查找最后一人的 fake_id 对应的小组
-                        $lastMemberFakeIdGroup = $giftGroupService->getList([
+                        // 查找最后一人的uid作为fake_id的小组
+                        $lastMemberUidFakeIdGroup = $giftGroupService->getList([
                             'product_id' => $product_id,
                             'product_id' => $product_id,
-                            'fake_pid' => $lastMember['fake_pid']
+                            'fake_pid' => $lastMember['uid']
                         ], '*', 0, 0, 'create_time ASC');
                         ], '*', 0, 0, 'create_time ASC');
 
 
-                        @file_put_contents('quanju4.txt', count($lastMemberFakeIdGroup) . "-最后一人的fake_id小组人数\r\n", 8);
+                        @file_put_contents('quanju4.txt', count($lastMemberUidFakeIdGroup) . "-fake_id=" . $lastMember['uid'] . "的小组人数\r\n", 8);
 
 
-                        if (count($lastMemberFakeIdGroup) < $groupMaxNum) {
+                        if (count($lastMemberUidFakeIdGroup) < $groupMaxNum) {
                             // 该小组未满,新成员加入该小组
                             // 该小组未满,新成员加入该小组
-                            if (count($lastMemberFakeIdGroup) > 0) {
+                            if (count($lastMemberUidFakeIdGroup) > 0) {
                                 // 该小组已有成员,新成员的group_pid是该小组的最后一人
                                 // 该小组已有成员,新成员的group_pid是该小组的最后一人
-                                $lastSubMember = end($lastMemberFakeIdGroup);
+                                $lastSubMember = end($lastMemberUidFakeIdGroup);
                                 $data['group_pid'] = $lastSubMember['uid'];
                                 $data['group_pid'] = $lastSubMember['uid'];
-                                $data['fake_pid'] = $lastMember['fake_pid'];
-                                @file_put_contents('quanju4.txt', $lastSubMember['uid'] . "-fake_id小组最后一人,新成员group_pid\r\n", 8);
+                                $data['fake_pid'] = $lastMember['uid'];
+                                @file_put_contents('quanju4.txt', $lastSubMember['uid'] . "-fake_id小组最后一人,新成员group_pid,fake_pid=" . $lastMember['uid'] . "\r\n", 8);
                             } else {
                             } else {
                                 // 该小组没有成员,新成员成为第一人
                                 // 该小组没有成员,新成员成为第一人
                                 $data['group_pid'] = 0;
                                 $data['group_pid'] = 0;
-                                $data['fake_pid'] = $lastMember['fake_pid'];
-                                @file_put_contents('quanju4.txt', '最后一人的fake_id小组没有成员,新成员成为第一人\r\n', 8);
+                                $data['fake_pid'] = $lastMember['uid'];
+                                @file_put_contents('quanju4.txt', '最后一人的uid作为fake_id小组没有成员,新成员成为第一人,fake_pid='. $lastMember['uid'] . "\r\n", 8);
                             }
                             }
                         } else {
                         } else {
-                            // 该小组也满了,继续滑落(最后一人的 fake_id 可能不等于自己的 fake_pid)
-                            // 这种情况下,最后一人的 fake_pid 就是滑落后的上级
-                            $data['group_pid'] = 0;
-                            $data['fake_pid'] = $lastMember['fake_pid'];
-                            @file_put_contents('quanju4.txt', '最后一人的fake_id小组已满,新成员fake_pid=' . $lastMember['fake_pid'] . "\r\n", 8);
+                            // 该小组也满了,从37的直推小组倒数第二人开始找
+                            // 从后往前遍历37的直推小组,找到第一个未满的uid作为fake_id的小组
+                            $foundGroup = false;
+                            for ($i = count($spreadFakeIdGroup) - 2; $i >= 0; $i--) {
+                                $prevMember = $spreadFakeIdGroup[$i];
+                                @file_put_contents('quanju4.txt', $prevMember['uid'] . "-检查倒数第" . (count($spreadFakeIdGroup) - $i) . "人的uid\r\n", 8);
+
+                                // 查找该人的uid作为fake_id的小组
+                                $prevMemberUidFakeIdGroup = $giftGroupService->getList([
+                                    'product_id' => $product_id,
+                                    'fake_pid' => $prevMember['uid']
+                                ], '*', 0, 0, 'create_time ASC');
+
+                                @file_put_contents('quanju4.txt', count($prevMemberUidFakeIdGroup) . "-fake_id=" . $prevMember['uid'] . "的小组人数\r\n", 8);
+
+                                if (count($prevMemberUidFakeIdGroup) < $groupMaxNum) {
+                                    // 该小组未满,新成员加入该小组
+                                    if (count($prevMemberUidFakeIdGroup) > 0) {
+                                        $lastSubMember = end($prevMemberUidFakeIdGroup);
+                                        $data['group_pid'] = $lastSubMember['uid'];
+                                        $data['fake_pid'] = $prevMember['uid'];
+                                        @file_put_contents('quanju4.txt', $lastSubMember['uid'] . "-fake_id小组最后一人,新成员group_pid,fake_pid=" . $prevMember['uid'] . "\r\n", 8);
+                                    } else {
+                                        $data['group_pid'] = 0;
+                                        $data['fake_pid'] = $prevMember['uid'];
+                                        @file_put_contents('quanju4.txt', '倒数人的uid作为fake_id小组没有成员,新成员成为第一人,fake_pid=' . $prevMember['uid'] . "\r\n", 8);
+                                    }
+                                    $foundGroup = true;
+                                    break;
+                                }
+                            }
+
+                            // 如果所有倒数人的小组都满了,新成员以最后一个倒数人的uid作为fake_id,group_pid=0
+                            if (!$foundGroup) {
+                                $firstPrevMember = $spreadFakeIdGroup[0];
+                                $data['group_pid'] = 0;
+                                $data['fake_pid'] = $firstPrevMember['uid'];
+                                @file_put_contents('quanju4.txt', '所有倒数人的小组都满了,新成员fake_pid=' . $firstPrevMember['uid'] . "\r\n", 8);
+                            }
                         }
                         }
                     }
                     }
                 } else {
                 } else {