Browse Source

完善合伙人分红功能

sunxbiao 1 year ago
parent
commit
4ce9f3e2f1
1 changed files with 58 additions and 19 deletions
  1. 58 19
      app/controller/api/store/merchant/TaskPartnerProfits.php

+ 58 - 19
app/controller/api/store/merchant/TaskPartnerProfits.php

@@ -78,8 +78,36 @@ class TaskPartnerProfits
78 78
 
79 79
     public function partnerProfits($startTime = '', $endTime = '')
80 80
     {
81
-        $startTime = '2025-03-10';
82
-        $endTime = '2025-03-30';
81
+
82
+        // 由于分红错误 需要对数据进行撤回
83
+        //        $user_bill_list = Db::name("user_bill")
84
+        //            ->where("title", '合伙人分佣')
85
+        //            ->where("status", 1)
86
+        //            ->whereBetween('create_time', ['2025-04-07 16:46:56', '2025-04-07 16:47:02'])
87
+        //            ->select()
88
+        //            ->toArray();
89
+        //        $user_bill_uid_list = array_column($user_bill_list, null, 'uid');
90
+        //
91
+        //        $user_sign_fugou_list = Db::name("user_sign_fugou")
92
+        //            ->where("mark", '复购金')
93
+        //            ->where("status", 1)
94
+        //            ->whereBetween('settlement_time', ['2025-04-07 16:46:56', '2025-04-07 16:47:02'])
95
+        //            ->select()
96
+        //            ->toArray();
97
+        //        $user_sign_fugou_uid_list = array_column($user_sign_fugou_list, null, 'uid');
98
+        //
99
+        //        $old_user_weekaward_list = Db::name("old_user_weekaward")
100
+        ////            ->where("mark", '复购金')
101
+        ////            ->where("status", 1)
102
+        //            ->whereBetween('create_time', [1744015616, 1744015622])
103
+        //            ->select()
104
+        //            ->toArray();
105
+        //        $old_user_weekaward_list = array_column($old_user_weekaward_list, null, 'uid');
106
+
107
+        //        return json($user_bill_list);
108
+
109
+        $startTime = '2025-03-31';
110
+        $endTime = '2025-04-06';
83 111
         // 查询测试人员账号信息
84 112
         //18973958920
85 113
         //15186694339
@@ -250,14 +278,14 @@ class TaskPartnerProfits
250 278
                 //返回是数组,下标0是最小的值(业绩小的),下标1是最大的值(业绩大的)
251 279
                 $userPvSmallNum = $value['dividerPeoplePv'][$v]['sumOfOthers'] ?? 0;
252 280
                 //                $myMixMoney = round($amount * ($userPvSmallNum / $sumOfOthersAll), 2);
253
-                $myMixMoney = floor(($amount * (floor(($userPvSmallNum / $sumOfOthersAll) * 1000) / 1000)) * 100) / 100;
281
+                $myMixMoney = floor(($amount * (floor(($userPvSmallNum / $sumOfOthersAll) * 100000) / 100000)) * 100) / 100;
254 282
 
255 283
                 //个人双区总佣金 权重 计算
256 284
                 $myBill = $value['dividerPeoplePv'][$v]['maxValue'] ?? 0;
257 285
                 //中级合伙人。userid=17可以分到双区可分红的金额
258 286
                 //可分红的佣金 * (中级合伙人个人的双区总业绩 / 当前等级所有合伙人的双联盟业绩) = 当前用户可以获取到的分红佣金(双区联盟总业绩加权佣金),287742 * (61.95/431032)=41.36
259 287
                 //                $myWeightMoney = round($amount * ($myBill / $maxValueAll), 2);
260
-                $myWeightMoney = floor(($amount * (floor((($myBill + $userPvSmallNum) / ($maxValueAll + $sumOfOthersAll)) * 1000) / 1000)) * 100) / 100;
288
+                $myWeightMoney = floor(($amount * (floor((($myBill + $userPvSmallNum) / ($maxValueAll + $sumOfOthersAll)) * 100000) / 100000)) * 100) / 100;
261 289
 
262 290
 
263 291
                 $salesArr[$key]['dividerPeoplePv'][$v]['myWeightMoney'] = $myWeightMoney;
@@ -269,8 +297,19 @@ class TaskPartnerProfits
269 297
                 $allAward = $myWeightMoney + $myMixMoney;
270 298
 
271 299
                 //90%给佣金,10给复购金
272
-                $yj_90 = $allAward * 0.9;
273
-                $fg_10 = $allAward * 0.1;
300
+                $yj_90 = floor($allAward * 0.9 * 100) / 100;
301
+                $fg_10 = floor($allAward * 0.1 * 100) / 100;
302
+
303
+                //                $yj_90 = bcsub($yj_90, $user_bill_uid_list[$v]['number'] ?? 0.00, 2);
304
+                //
305
+                //                $fg_10 = bcsub($fg_10, $user_sign_fugou_uid_list[$v]['number'] ?? 0.00, 2);
306
+                //
307
+                //                if ($yj_90 < 0) {
308
+                //                    $testRecord['yj_fushu'][] = ['uid' => $v, 'num' => floor($allAward * 0.9 * 100) / 100, 'exist' => $user_bill_uid_list[$v]['number'] ?? 0.00, 'yj' => $yj_90];
309
+                //                }
310
+                //                if ($fg_10 < 0) {
311
+                //                    $testRecord['fg_fushu'][] = ['uid' => $v, 'num' => floor($allAward * 0.1 * 100) / 100, 'exist' => $user_sign_fugou_uid_list[$v]['number'] ?? 0.00, 'fg' => $fg_10];
312
+                //                }
274 313
 
275 314
 
276 315
                 $userdatassss = db::name("old_user_jbp")->where("id", $v)->find();
@@ -309,7 +348,7 @@ class TaskPartnerProfits
309 348
                 $this->bill_user_log111111($v, "合伙人分佣", $yj_90, "合伙人分佣明细入账", 11);//联创分佣明细2.0系统
310 349
                 $this->fugou_user_log($v, $fg_10, 16, 1, 1);//复购金明细入账
311 350
             }
312
-
351
+            $salesArr['cs'] = $testRecord;
313 352
         }
314 353
         return json($salesArr);
315 354
     }
@@ -320,13 +359,13 @@ class TaskPartnerProfits
320 359
     public function getSpreadUserUidListByUidList(array $uidList)
321 360
     {
322 361
         $son_ids = Db::name("user")
323
-            ->whereIn("spread_uid", $uidList)
324
-            ->field("uid,spread_uid")
362
+            ->whereIn("level_id", $uidList)
363
+            ->field("uid,level_id")
325 364
             ->select()
326 365
             ->toArray();
327 366
         $new_array_ids = [];
328 367
         foreach ($son_ids as $key => $value) {
329
-            $new_array_ids[$value['spread_uid']][] = $value['uid'];
368
+            $new_array_ids[$value['level_id']][] = $value['uid'];
330 369
         }
331 370
         return $new_array_ids;
332 371
     }
@@ -354,8 +393,8 @@ class TaskPartnerProfits
354 393
     public function getSpreadUserUidAccountListByUidList($uid, $account = '')
355 394
     {
356 395
         $son_ids = Db::name("user")
357
-            ->where("spread_uid", $uid)
358
-            ->field("uid,spread_uid,account")
396
+            ->where("level_id", $uid)
397
+            ->field("uid,level_id,account")
359 398
             ->select()
360 399
             ->toArray();
361 400
         $new_array_ids = [];
@@ -363,7 +402,7 @@ class TaskPartnerProfits
363 402
             $childList = $this->getSpreadUserUidAccountListByUidList($value['uid'], $value['account']);
364 403
             $new_array_ids[] = [
365 404
                 '当前用户ID' => $value['uid'],
366
-                '当前用户的上级用户ID' => $value['spread_uid'],
405
+                '当前用户的上级用户ID' => $value['level_id'],
367 406
                 '用户账号(手机号)' => $value['account'],
368 407
                 '当前用户的下级用户列表' => $childList
369 408
             ];
@@ -381,7 +420,7 @@ class TaskPartnerProfits
381 420
     private function getSubordinatesRecursively(int $uid, array &$subordinates = []): array
382 421
     {
383 422
         $subUidList = Db::name("user")
384
-            ->where("spread_uid", $uid)  // 直接使用 $uid, 不需要 whereIn
423
+            ->where("level_id", $uid)  // 直接使用 $uid, 不需要 whereIn
385 424
             ->field("uid") //只需要查询uid
386 425
             ->select()
387 426
             ->toArray();
@@ -405,7 +444,7 @@ class TaskPartnerProfits
405 444
     public function getAllSubordinates(int $uid, array &$allSubordinates = []): array
406 445
     {
407 446
         $subUidList = Db::name("user")
408
-            ->where("spread_uid", $uid)
447
+            ->where("level_id", $uid)
409 448
             ->column("uid");  // 使用 column 方法直接获取 uid 数组
410 449
 
411 450
         if (!empty($subUidList)) {
@@ -439,7 +478,7 @@ class TaskPartnerProfits
439 478
                 }
440 479
                 $processed[] = $currentUid;
441 480
                 $subUidList = Db::name("user")
442
-                    ->where("spread_uid", $currentUid)
481
+                    ->where("level_id", $currentUid)
443 482
                     ->column("uid");
444 483
 
445 484
                 if (!empty($subUidList)) {
@@ -470,8 +509,8 @@ class TaskPartnerProfits
470 509
             if (empty($currentUids)) continue;  //没有新的需要处理的
471 510
             $processed = array_merge($processed, $currentUids);//记录
472 511
             $subUidList = Db::name("user")
473
-                ->whereIn("spread_uid", $currentUids)
474
-                ->field("uid,spread_uid") // 需要查询 spread_uid 用于后续分组
512
+                ->whereIn("level_id", $currentUids)
513
+                ->field("uid,level_id") // 需要查询 level_id 用于后续分组
475 514
                 ->select()
476 515
                 ->toArray();
477 516
 
@@ -487,7 +526,7 @@ class TaskPartnerProfits
487 526
         }
488 527
         $allSubordinatesMap = [];
489 528
         foreach ($allSubordinates as $item) {
490
-            $allSubordinatesMap[$item['spread_uid']][] = $item['uid'];
529
+            $allSubordinatesMap[$item['level_id']][] = $item['uid'];
491 530
         }
492 531
 
493 532
         //3. 递归的将查到的下级进行分组