Explorar el Código

完善合伙人分红功能

sunxbiao hace 1 año
padre
commit
4ce9f3e2f1
Se han modificado 1 ficheros con 58 adiciones y 19 borrados
  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
     public function partnerProfits($startTime = '', $endTime = '')
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
         //18973958920
112
         //18973958920
85
         //15186694339
113
         //15186694339
@@ -250,14 +278,14 @@ class TaskPartnerProfits
250
                 //返回是数组,下标0是最小的值(业绩小的),下标1是最大的值(业绩大的)
278
                 //返回是数组,下标0是最小的值(业绩小的),下标1是最大的值(业绩大的)
251
                 $userPvSmallNum = $value['dividerPeoplePv'][$v]['sumOfOthers'] ?? 0;
279
                 $userPvSmallNum = $value['dividerPeoplePv'][$v]['sumOfOthers'] ?? 0;
252
                 //                $myMixMoney = round($amount * ($userPvSmallNum / $sumOfOthersAll), 2);
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
                 $myBill = $value['dividerPeoplePv'][$v]['maxValue'] ?? 0;
284
                 $myBill = $value['dividerPeoplePv'][$v]['maxValue'] ?? 0;
257
                 //中级合伙人。userid=17可以分到双区可分红的金额
285
                 //中级合伙人。userid=17可以分到双区可分红的金额
258
                 //可分红的佣金 * (中级合伙人个人的双区总业绩 / 当前等级所有合伙人的双联盟业绩) = 当前用户可以获取到的分红佣金(双区联盟总业绩加权佣金),287742 * (61.95/431032)=41.36
286
                 //可分红的佣金 * (中级合伙人个人的双区总业绩 / 当前等级所有合伙人的双联盟业绩) = 当前用户可以获取到的分红佣金(双区联盟总业绩加权佣金),287742 * (61.95/431032)=41.36
259
                 //                $myWeightMoney = round($amount * ($myBill / $maxValueAll), 2);
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
                 $salesArr[$key]['dividerPeoplePv'][$v]['myWeightMoney'] = $myWeightMoney;
291
                 $salesArr[$key]['dividerPeoplePv'][$v]['myWeightMoney'] = $myWeightMoney;
@@ -269,8 +297,19 @@ class TaskPartnerProfits
269
                 $allAward = $myWeightMoney + $myMixMoney;
297
                 $allAward = $myWeightMoney + $myMixMoney;
270
 
298
 
271
                 //90%给佣金,10给复购金
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
                 $userdatassss = db::name("old_user_jbp")->where("id", $v)->find();
315
                 $userdatassss = db::name("old_user_jbp")->where("id", $v)->find();
@@ -309,7 +348,7 @@ class TaskPartnerProfits
309
                 $this->bill_user_log111111($v, "合伙人分佣", $yj_90, "合伙人分佣明细入账", 11);//联创分佣明细2.0系统
348
                 $this->bill_user_log111111($v, "合伙人分佣", $yj_90, "合伙人分佣明细入账", 11);//联创分佣明细2.0系统
310
                 $this->fugou_user_log($v, $fg_10, 16, 1, 1);//复购金明细入账
349
                 $this->fugou_user_log($v, $fg_10, 16, 1, 1);//复购金明细入账
311
             }
350
             }
312
-
351
+            $salesArr['cs'] = $testRecord;
313
         }
352
         }
314
         return json($salesArr);
353
         return json($salesArr);
315
     }
354
     }
@@ -320,13 +359,13 @@ class TaskPartnerProfits
320
     public function getSpreadUserUidListByUidList(array $uidList)
359
     public function getSpreadUserUidListByUidList(array $uidList)
321
     {
360
     {
322
         $son_ids = Db::name("user")
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
             ->select()
364
             ->select()
326
             ->toArray();
365
             ->toArray();
327
         $new_array_ids = [];
366
         $new_array_ids = [];
328
         foreach ($son_ids as $key => $value) {
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
         return $new_array_ids;
370
         return $new_array_ids;
332
     }
371
     }
@@ -354,8 +393,8 @@ class TaskPartnerProfits
354
     public function getSpreadUserUidAccountListByUidList($uid, $account = '')
393
     public function getSpreadUserUidAccountListByUidList($uid, $account = '')
355
     {
394
     {
356
         $son_ids = Db::name("user")
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
             ->select()
398
             ->select()
360
             ->toArray();
399
             ->toArray();
361
         $new_array_ids = [];
400
         $new_array_ids = [];
@@ -363,7 +402,7 @@ class TaskPartnerProfits
363
             $childList = $this->getSpreadUserUidAccountListByUidList($value['uid'], $value['account']);
402
             $childList = $this->getSpreadUserUidAccountListByUidList($value['uid'], $value['account']);
364
             $new_array_ids[] = [
403
             $new_array_ids[] = [
365
                 '当前用户ID' => $value['uid'],
404
                 '当前用户ID' => $value['uid'],
366
-                '当前用户的上级用户ID' => $value['spread_uid'],
405
+                '当前用户的上级用户ID' => $value['level_id'],
367
                 '用户账号(手机号)' => $value['account'],
406
                 '用户账号(手机号)' => $value['account'],
368
                 '当前用户的下级用户列表' => $childList
407
                 '当前用户的下级用户列表' => $childList
369
             ];
408
             ];
@@ -381,7 +420,7 @@ class TaskPartnerProfits
381
     private function getSubordinatesRecursively(int $uid, array &$subordinates = []): array
420
     private function getSubordinatesRecursively(int $uid, array &$subordinates = []): array
382
     {
421
     {
383
         $subUidList = Db::name("user")
422
         $subUidList = Db::name("user")
384
-            ->where("spread_uid", $uid)  // 直接使用 $uid, 不需要 whereIn
423
+            ->where("level_id", $uid)  // 直接使用 $uid, 不需要 whereIn
385
             ->field("uid") //只需要查询uid
424
             ->field("uid") //只需要查询uid
386
             ->select()
425
             ->select()
387
             ->toArray();
426
             ->toArray();
@@ -405,7 +444,7 @@ class TaskPartnerProfits
405
     public function getAllSubordinates(int $uid, array &$allSubordinates = []): array
444
     public function getAllSubordinates(int $uid, array &$allSubordinates = []): array
406
     {
445
     {
407
         $subUidList = Db::name("user")
446
         $subUidList = Db::name("user")
408
-            ->where("spread_uid", $uid)
447
+            ->where("level_id", $uid)
409
             ->column("uid");  // 使用 column 方法直接获取 uid 数组
448
             ->column("uid");  // 使用 column 方法直接获取 uid 数组
410
 
449
 
411
         if (!empty($subUidList)) {
450
         if (!empty($subUidList)) {
@@ -439,7 +478,7 @@ class TaskPartnerProfits
439
                 }
478
                 }
440
                 $processed[] = $currentUid;
479
                 $processed[] = $currentUid;
441
                 $subUidList = Db::name("user")
480
                 $subUidList = Db::name("user")
442
-                    ->where("spread_uid", $currentUid)
481
+                    ->where("level_id", $currentUid)
443
                     ->column("uid");
482
                     ->column("uid");
444
 
483
 
445
                 if (!empty($subUidList)) {
484
                 if (!empty($subUidList)) {
@@ -470,8 +509,8 @@ class TaskPartnerProfits
470
             if (empty($currentUids)) continue;  //没有新的需要处理的
509
             if (empty($currentUids)) continue;  //没有新的需要处理的
471
             $processed = array_merge($processed, $currentUids);//记录
510
             $processed = array_merge($processed, $currentUids);//记录
472
             $subUidList = Db::name("user")
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
                 ->select()
514
                 ->select()
476
                 ->toArray();
515
                 ->toArray();
477
 
516
 
@@ -487,7 +526,7 @@ class TaskPartnerProfits
487
         }
526
         }
488
         $allSubordinatesMap = [];
527
         $allSubordinatesMap = [];
489
         foreach ($allSubordinates as $item) {
528
         foreach ($allSubordinates as $item) {
490
-            $allSubordinatesMap[$item['spread_uid']][] = $item['uid'];
529
+            $allSubordinatesMap[$item['level_id']][] = $item['uid'];
491
         }
530
         }
492
 
531
 
493
         //3. 递归的将查到的下级进行分组
532
         //3. 递归的将查到的下级进行分组