|
|
@@ -2492,7 +2492,7 @@ class UserRepository extends BaseRepository
|
|
2492
|
2492
|
}
|
|
2493
|
2493
|
public function get_yanglao($member_id){
|
|
2494
|
2494
|
|
|
2495
|
|
-
|
|
|
2495
|
+
|
|
2496
|
2496
|
$data = Db::name("user")
|
|
2497
|
2497
|
->where("uid",$member_id)
|
|
2498
|
2498
|
->field("wechat_user_id,card_id,ali_user_id,annuity_frozen,annuity_num,annuity,create_time,birthday,birthday60,card_number,annuity_yiqu,pay_price")
|
|
|
@@ -2553,7 +2553,7 @@ class UserRepository extends BaseRepository
|
|
2553
|
2553
|
// $data["yinghang"]='https://app.bjtdba.com/uploads/def/20201021/8cb66944101287b8ac9c9b9fb1b13a79.png';
|
|
2554
|
2554
|
$data["add_up"] = 0.00;
|
|
2555
|
2555
|
|
|
2556
|
|
-
|
|
|
2556
|
+
|
|
2557
|
2557
|
|
|
2558
|
2558
|
return $data;
|
|
2559
|
2559
|
}
|
|
|
@@ -3273,9 +3273,9 @@ class UserRepository extends BaseRepository
|
|
3273
|
3273
|
$lowerLevelNumMin = min($lowerLevelNumList);
|
|
3274
|
3274
|
// 获取需要 递归最深的层数,比如 高级合伙人需要递归10层 普通用户需要递归一层
|
|
3275
|
3275
|
$needLower = 0;
|
|
3276
|
|
- // 0 代表要递归无限极
|
|
3277
|
|
- if($lowerLevelNumMax > 0) {
|
|
3278
|
|
- $needLower = $lowerLevelNumMin - 1;
|
|
|
3276
|
+ // 0 代表要递归无限极 -1 代表一级也不查
|
|
|
3277
|
+ if($lowerLevelNumMin > 0) {
|
|
|
3278
|
+ $needLower = $lowerLevelNumMax;
|
|
3279
|
3279
|
}
|
|
3280
|
3280
|
// 最大等级限制
|
|
3281
|
3281
|
$maxLvRestrict = 0;
|
|
|
@@ -3287,28 +3287,17 @@ class UserRepository extends BaseRepository
|
|
3287
|
3287
|
$determineResult = $this->determineUserUpgradeTime($uid);
|
|
3288
|
3288
|
$userData['user_group'] = $determineResult['user_group'];
|
|
3289
|
3289
|
$userData['identity_up_time'] = $determineResult['identity_up_time'];
|
|
3290
|
|
- if ($userData['user_group'] == 1) {
|
|
|
3290
|
+ $startTime = $userData['identity_up_time'];
|
|
|
3291
|
+ $endTime = date('Y-m-d H:i:s');
|
|
|
3292
|
+
|
|
|
3293
|
+ // 如果用户身份 为 用户 或者 升级成业务员的时间为空 则无法计算它的团队贡献值
|
|
|
3294
|
+ if ($userData['user_group'] == 1 || empty($startTime)) {
|
|
3291
|
3295
|
$maxLvRestrict = 2;
|
|
|
3296
|
+ $needLower = -1;
|
|
3292
|
3297
|
}
|
|
3293
|
3298
|
|
|
3294
|
3299
|
// 4、获取下级用户 贡献值
|
|
3295
|
|
- $userContributionSumMap = [];
|
|
3296
|
|
- // 获取用户的直属下级
|
|
3297
|
|
- $uidContributeList = $this->getUidContributeListBySpreadUidList([$uid]);
|
|
3298
|
|
- foreach ($uidContributeList as $uidContribute) {
|
|
3299
|
|
- // 获取每个下级(部门)的个人贡献值
|
|
3300
|
|
- $userContributionSumMap[$uidContribute['uid']] = $this->getContributionSumByLevel(
|
|
3301
|
|
- [$uidContribute['uid']],
|
|
3302
|
|
- $needLower,
|
|
3303
|
|
- $userData['is_old'],
|
|
3304
|
|
- $userData['identity_up_time'] ?? null
|
|
3305
|
|
- );
|
|
3306
|
|
- $userContributionSumMap[$uidContribute['uid']][0] = $uidContribute['contribute'];
|
|
3307
|
|
- ksort($userContributionSumMap[$uidContribute['uid']]);
|
|
3308
|
|
- // 假设 老大的 下级是 张三和李四, 董事(最高级身份)需要循环最深的等级是 3 级 得出来的结果↓ 这样是为了计算大小部门
|
|
3309
|
|
- // $userContributionSumMap[直属下级(部门)张三] =>[0 => 张三个人贡献值, 1 => 张三所有下级用户的个人贡献值, 2 => 张三所有下级用户的下级用户贡献值]
|
|
3310
|
|
- // $userContributionSumMap[直属下级(部门)李四] =>[0 => 李四个人贡献值, 1 => 李四所有下级用户的个人贡献值, 2 => 李四所有下级用户的下级用户贡献值]
|
|
3311
|
|
- }
|
|
|
3300
|
+ $userContributionSumMap = $this->getSubordinateContributeByUid($uid, $startTime, $endTime, $needLower);
|
|
3312
|
3301
|
|
|
3313
|
3302
|
// 5、将用户等级由低到高
|
|
3314
|
3303
|
usort($identityList, function ($a, $b) {
|
|
|
@@ -3704,6 +3693,60 @@ class UserRepository extends BaseRepository
|
|
3704
|
3693
|
return $subordinatesOfCurrentLevelUidList;
|
|
3705
|
3694
|
}
|
|
3706
|
3695
|
|
|
|
3696
|
+
|
|
|
3697
|
+ /**
|
|
|
3698
|
+ * 根据时间和递归层级 获取部门下 每一层级的 贡献值
|
|
|
3699
|
+ * 假设 老大的 下级是 张三和李四, 董事(最高级身份)需要循环最深的等级是 3 级 得出来的结果↓ 这样是为了计算大小部门
|
|
|
3700
|
+ * $userContributionSumMap[直属下级(部门)张三] =>[0 => 张三个人贡献值, 1 => 张三所有下级用户的个人贡献值, 2 => 张三所有下级用户的下级用户贡献值]
|
|
|
3701
|
+ * $userContributionSumMap[直属下级(部门)李四] =>[0 => 李四个人贡献值, 1 => 李四所有下级用户的个人贡献值, 2 => 李四所有下级用户的下级用户贡献值]
|
|
|
3702
|
+ * @param $uid
|
|
|
3703
|
+ * @param null $startTime
|
|
|
3704
|
+ * @param null $endTime
|
|
|
3705
|
+ * @param int $depth
|
|
|
3706
|
+ * @return array
|
|
|
3707
|
+ * @throws DataNotFoundException
|
|
|
3708
|
+ * @throws DbException
|
|
|
3709
|
+ * @throws ModelNotFoundException
|
|
|
3710
|
+ */
|
|
|
3711
|
+ public function getSubordinateContributeByUid($uid, $startTime, $endTime, $depth = 10)
|
|
|
3712
|
+ {
|
|
|
3713
|
+ // 4、获取下级用户 贡献值
|
|
|
3714
|
+ $userContributionSumMap = [];
|
|
|
3715
|
+ if ($depth >= 0 && !empty($startTime)) {
|
|
|
3716
|
+ // 获取用户的直属下级
|
|
|
3717
|
+ $uidContributeList = $this->getUidContributeListBySpreadUidList([$uid]);
|
|
|
3718
|
+ $uidContributeUidList = array_column($uidContributeList, 'uid');
|
|
|
3719
|
+ $subordinatesOfCurrentLevelUidList = $this->getUserContributeByUidList($uidContributeUidList, $startTime, $endTime);
|
|
|
3720
|
+
|
|
|
3721
|
+ foreach ($uidContributeList as $uidContribute) {
|
|
|
3722
|
+ $goOnDepth = $depth;
|
|
|
3723
|
+ // 获取用户规定时间内 所产生的贡献值 第一级
|
|
|
3724
|
+ $userContributionSumMap[$uidContribute['uid']][0] = $subordinatesOfCurrentLevelUidList[$uidContribute['uid']] ?? 0;
|
|
|
3725
|
+ if ($depth == 1) {
|
|
|
3726
|
+ break;
|
|
|
3727
|
+ } else if ($depth > 1){
|
|
|
3728
|
+ $goOnDepth = $depth - 1;
|
|
|
3729
|
+ }
|
|
|
3730
|
+ // 获取每个下级(部门)的个人贡献值 $goOnDepth = 0 时表示无限递归
|
|
|
3731
|
+ $userContributionSumMap[$uidContribute['uid']] = $this->getContributionSumByLevel(
|
|
|
3732
|
+ [$uidContribute['uid']],
|
|
|
3733
|
+ $goOnDepth,
|
|
|
3734
|
+ 0,
|
|
|
3735
|
+ $startTime,
|
|
|
3736
|
+ $endTime
|
|
|
3737
|
+ );
|
|
|
3738
|
+
|
|
|
3739
|
+ if (!empty($userContributionSumMap[$uidContribute['uid']])) {
|
|
|
3740
|
+ ksort($userContributionSumMap[$uidContribute['uid']]);
|
|
|
3741
|
+ }
|
|
|
3742
|
+ // 假设 老大的 下级是 张三和李四, 董事(最高级身份)需要循环最深的等级是 3 级 得出来的结果↓ 这样是为了计算大小部门
|
|
|
3743
|
+ // $userContributionSumMap[直属下级(部门)张三] =>[0 => 张三个人贡献值, 1 => 张三所有下级用户的个人贡献值, 2 => 张三所有下级用户的下级用户贡献值]
|
|
|
3744
|
+ // $userContributionSumMap[直属下级(部门)李四] =>[0 => 李四个人贡献值, 1 => 李四所有下级用户的个人贡献值, 2 => 李四所有下级用户的下级用户贡献值]
|
|
|
3745
|
+ }
|
|
|
3746
|
+ }
|
|
|
3747
|
+ return $userContributionSumMap;
|
|
|
3748
|
+ }
|
|
|
3749
|
+
|
|
3707
|
3750
|
/**
|
|
3708
|
3751
|
* 获取用户 团队贡献值信息
|
|
3709
|
3752
|
* @param $uid
|
|
|
@@ -3736,41 +3779,22 @@ class UserRepository extends BaseRepository
|
|
3736
|
3779
|
|
|
3737
|
3780
|
// 如果用户身份是 用户 则
|
|
3738
|
3781
|
/**
|
|
|
3782
|
+ * 如果用户身份是 用户,则不计算团队贡献值,因计算团队贡献值 需要升级成业务员后 再进行进行统计
|
|
|
3783
|
+ * 如用户也统计团队贡献值可能会导致: 用户进入系统后,不进行消费,团队贡献值确增长迅速,等某时刻 他只要 进行消费,身份就会快速跃迁,不公平
|
|
3739
|
3784
|
* (1)达标贡献值=自己消费产生的贡献值
|
|
3740
|
|
- * (2)团队达标贡献值=小区团队的贡献值(用户的团队贡献值只统计一级);如果团队只有一人,那团队贡献值就是0
|
|
|
3785
|
+ * (2)团队达标贡献值= 不计算团队
|
|
3741
|
3786
|
*/
|
|
3742
|
3787
|
if ($userData['user_group'] == 1) {
|
|
3743
|
|
- $depth = 1;
|
|
|
3788
|
+ $depth = -1;
|
|
3744
|
3789
|
}
|
|
3745
|
3790
|
|
|
3746
|
3791
|
// 4、获取下级用户 贡献值
|
|
3747
|
|
- $userContributionSumMap = [];
|
|
3748
|
|
- // 获取用户的直属下级
|
|
3749
|
|
- $uidContributeList = $this->getUidContributeListBySpreadUidList([$uid]);
|
|
3750
|
|
- $uidContributeUidList = array_column($uidContributeList, 'uid');
|
|
3751
|
|
- // TODO 身份是用户的 $startTime = null
|
|
3752
|
|
- $subordinatesOfCurrentLevelUidList = $this->getUserContributeByUidList($uidContributeUidList, $startTime, $endTime);
|
|
3753
|
|
-
|
|
3754
|
|
- foreach ($uidContributeList as $uidContribute) {
|
|
3755
|
|
- // 获取每个下级(部门)的个人贡献值
|
|
3756
|
|
- $userContributionSumMap[$uidContribute['uid']] = $this->getContributionSumByLevel(
|
|
3757
|
|
- [$uidContribute['uid']],
|
|
3758
|
|
- $depth,
|
|
3759
|
|
- $userData['is_old'],
|
|
3760
|
|
- $startTime,
|
|
3761
|
|
- $endTime
|
|
3762
|
|
- );
|
|
3763
|
|
- $userContributionSumMap[$uidContribute['uid']][0] = $subordinatesOfCurrentLevelUidList[$uidContribute['uid']];
|
|
3764
|
|
- ksort($userContributionSumMap[$uidContribute['uid']]);
|
|
3765
|
|
- // 假设 老大的 下级是 张三和李四, 董事(最高级身份)需要循环最深的等级是 3 级 得出来的结果↓ 这样是为了计算大小部门
|
|
3766
|
|
- // $userContributionSumMap[直属下级(部门)张三] =>[0 => 张三个人贡献值, 1 => 张三所有下级用户的个人贡献值, 2 => 张三所有下级用户的下级用户贡献值]
|
|
3767
|
|
- // $userContributionSumMap[直属下级(部门)李四] =>[0 => 李四个人贡献值, 1 => 李四所有下级用户的个人贡献值, 2 => 李四所有下级用户的下级用户贡献值]
|
|
3768
|
|
- }
|
|
3769
|
|
-
|
|
|
3792
|
+ $userContributionSumMap = $this->getSubordinateContributeByUid($uid, $startTime, $endTime, $depth);
|
|
3770
|
3793
|
$subordinateContribution = [];
|
|
3771
|
3794
|
foreach ($userContributionSumMap as $key => $value) {
|
|
3772
|
3795
|
$subordinateContribution[$key] = array_sum($value);
|
|
3773
|
3796
|
}
|
|
|
3797
|
+
|
|
3774
|
3798
|
$dqYj = 0;
|
|
3775
|
3799
|
$arriveNumTeam = 0;
|
|
3776
|
3800
|
if (!empty($subordinateContribution)) {
|