Przeglądaj źródła

Merge branch 'master' of https://git.bjtdba.com/shop/php

xialei 1 rok temu
rodzic
commit
34cb768ba6

+ 165 - 7
app/common/repositories/user/UserRepository.php

@@ -2587,7 +2587,7 @@ class UserRepository extends BaseRepository
2587
 
2587
 
2588
         return $age;
2588
         return $age;
2589
     }
2589
     }
2590
-    public function yanglaolog($where,$page=1, $limit=10,$month=''){
2590
+    public function yanglaolog($where,$page=1, $limit=10,$month='',$is_shixiao = 0){
2591
         $where1 = [];
2591
         $where1 = [];
2592
         if(!empty($where)){
2592
         if(!empty($where)){
2593
             foreach($where as $key => $value){
2593
             foreach($where as $key => $value){
@@ -2602,7 +2602,10 @@ class UserRepository extends BaseRepository
2602
             ->when($month!='',function ($q) use ($month){
2602
             ->when($month!='',function ($q) use ($month){
2603
                 $q->whereLike('a.create_time',$month.'%');
2603
                 $q->whereLike('a.create_time',$month.'%');
2604
             });
2604
             });
2605
-        $query -> where('a.status','<>','-1');
2605
+
2606
+        if($is_shixiao == 0){
2607
+            $query -> where('a.status','<>','-1');
2608
+        }
2606
         $query_sql1 = clone $query;
2609
         $query_sql1 = clone $query;
2607
         $query_sql2 = clone $query;
2610
         $query_sql2 = clone $query;
2608
         $query_sql3 = clone $query;
2611
         $query_sql3 = clone $query;
@@ -3280,12 +3283,59 @@ class UserRepository extends BaseRepository
3280
 
3283
 
3281
         // 3、获取个人贡献值
3284
         // 3、获取个人贡献值
3282
         $userData = $this->dao->get($uid)->toArray();
3285
         $userData = $this->dao->get($uid)->toArray();
3283
-        if ($userData['is_old'] == 1 && $userData['user_group'] > 1 && empty($userData['identity_up_time'])) {
3284
-            if (empty($userData['create_time'])) {
3285
-                return $userData['user_group'];
3286
+        // 这一步骤是为了 确定用户升级时间,因为后边的团队贡献值,需要查询 用户 升级为业务员后 所产生的团队贡献值
3287
+        if (empty($userData['identity_up_time'])) {
3288
+            // 老用户的身份 升级时间已无法确定, 则采用用户的创建时间
3289
+            if ($userData['is_old'] == 1 && $userData['user_group'] > 1) {
3290
+                if (empty($userData['create_time'])) {
3291
+                    return $userData['user_group'];
3292
+                }
3293
+                $userData['identity_up_time'] = $userData['create_time'];
3294
+                $this->dao->update($uid, ['identity_up_time' => $userData['identity_up_time']]);
3295
+            }
3296
+            // 如果是新用户 则 根绝他的贡献值记录表 确认成为业务员的时间
3297
+            if ($userData['is_old'] == 0) {
3298
+                $upArriveNumOwn = 0;
3299
+                $yeWuYuanId = 0;
3300
+                foreach ($identityList as $value) {
3301
+                    if ($value['user_group_name'] == '业务员') {
3302
+                        $upArriveNumOwn = $value['arrive_num_own'];
3303
+                        $yeWuYuanId = $value['user_group_id'];
3304
+                        break;
3305
+                    }
3306
+                }
3307
+                if (!empty($upArriveNumOwn)) {
3308
+                    $userSignGongxianList = Db::name('user_sign_gongxian')
3309
+                        ->where('uid', $uid)
3310
+                        ->where('status', 1) // 贡献值状态1-有效 0-失效 -1待确认
3311
+                        ->whereNotNull('settlement_time') // `settlement_time` datetime DEFAULT NULL COMMENT '结算时间',
3312
+                        ->order('id asc')
3313
+                        ->field('uid, number, type, settlement_time') // 只需要下级的uid和贡献值
3314
+                        ->select()
3315
+                        ->toArray();
3316
+                    $myArriveNumOwn = 0;
3317
+                    $myIdentityUpTime = '';
3318
+                    foreach ($userSignGongxianList as $value) {
3319
+                        if ($value['type'] == 1) {
3320
+                            $myArriveNumOwn += $value['number'];
3321
+                        } else {
3322
+                            $myArriveNumOwn -= $value['number'];
3323
+                        }
3324
+                        if ($myArriveNumOwn >= $upArriveNumOwn) {
3325
+                            $myIdentityUpTime = $value['settlement_time'];
3326
+                            break;
3327
+                        }
3328
+                    }
3329
+                    if (!empty($myIdentityUpTime) && !empty($yeWuYuanId)) {
3330
+                        $userData['identity_up_time'] = $myIdentityUpTime;
3331
+                        $userData['user_group'] = $yeWuYuanId;
3332
+                        $this->dao->update($uid, [
3333
+                            'identity_up_time' => $myIdentityUpTime,
3334
+                            'user_group' => $yeWuYuanId
3335
+                        ]);
3336
+                    }
3337
+                }
3286
             }
3338
             }
3287
-            $userData['identity_up_time'] = $userData['create_time'];
3288
-            $this->dao->update($uid, ['identity_up_time' => $userData['identity_up_time']]);
3289
         }
3339
         }
3290
         if ($userData['user_group'] == 1) {
3340
         if ($userData['user_group'] == 1) {
3291
             $maxLvRestrict = 2;
3341
             $maxLvRestrict = 2;
@@ -3532,4 +3582,112 @@ class UserRepository extends BaseRepository
3532
 
3582
 
3533
         return $levelContributions;
3583
         return $levelContributions;
3534
     }
3584
     }
3585
+
3586
+    public function getUserContributeInfoByDepth($uid, $depth = 10)
3587
+    {
3588
+        // 3、获取个人贡献值
3589
+        $userData = $this->dao->get($uid)->toArray();
3590
+        // 这一步骤是为了 确定用户升级时间,因为后边的团队贡献值,需要查询 用户 升级为业务员后 所产生的团队贡献值
3591
+        if (empty($userData['identity_up_time'])) {
3592
+            // 老用户的身份 升级时间已无法确定, 则采用用户的创建时间
3593
+            if ($userData['is_old'] == 1 && $userData['user_group'] > 1) {
3594
+                if (empty($userData['create_time'])) {
3595
+                    return $userData['user_group'];
3596
+                }
3597
+                $userData['identity_up_time'] = $userData['create_time'];
3598
+                $this->dao->update($uid, ['identity_up_time' => $userData['identity_up_time']]);
3599
+            }
3600
+            // 如果是新用户 则 根绝他的贡献值记录表 确认成为业务员的时间
3601
+            if ($userData['is_old'] == 0) {
3602
+                $upArriveNumOwn = 0;
3603
+                $yeWuYuanId = 0;
3604
+                // 1、获取所有等级信息
3605
+                /** @var UserIdentityRepository $identityRepository */
3606
+                $identityRepository = app()->make(UserIdentityRepository::class);
3607
+                $identityList = $identityRepository->getIdentityList();
3608
+                foreach ($identityList as $value) {
3609
+                    if ($value['user_group_name'] == '业务员') {
3610
+                        $upArriveNumOwn = $value['arrive_num_own'];
3611
+                        $yeWuYuanId = $value['user_group_id'];
3612
+                        break;
3613
+                    }
3614
+                }
3615
+                if (!empty($upArriveNumOwn)) {
3616
+                    $userSignGongxianList = Db::name('user_sign_gongxian')
3617
+                        ->where('uid', $uid)
3618
+                        ->where('status', 1) // 贡献值状态1-有效 0-失效 -1待确认
3619
+                        ->whereNotNull('settlement_time') // `settlement_time` datetime DEFAULT NULL COMMENT '结算时间',
3620
+                        ->order('id asc')
3621
+                        ->field('uid, number, type, settlement_time') // 只需要下级的uid和贡献值
3622
+                        ->select()
3623
+                        ->toArray();
3624
+                    $myArriveNumOwn = 0;
3625
+                    $myIdentityUpTime = '';
3626
+                    foreach ($userSignGongxianList as $value) {
3627
+                        if ($value['type'] == 1) {
3628
+                            $myArriveNumOwn += $value['number'];
3629
+                        } else {
3630
+                            $myArriveNumOwn -= $value['number'];
3631
+                        }
3632
+                        if ($myArriveNumOwn >= $upArriveNumOwn) {
3633
+                            $myIdentityUpTime = $value['settlement_time'];
3634
+                            break;
3635
+                        }
3636
+                    }
3637
+                    if (!empty($myIdentityUpTime) && !empty($yeWuYuanId)) {
3638
+                        $userData['identity_up_time'] = $myIdentityUpTime;
3639
+                        $userData['user_group'] = $yeWuYuanId;
3640
+                        $this->dao->update($uid, [
3641
+                            'identity_up_time' => $userData['identity_up_time'],
3642
+                            'user_group' => $yeWuYuanId
3643
+                        ]);
3644
+                    }
3645
+                }
3646
+            }
3647
+        }
3648
+
3649
+        // 如果用户身份是  用户  则
3650
+        /**
3651
+         * (1)达标贡献值=自己消费产生的贡献值
3652
+         * (2)团队达标贡献值=小区团队的贡献值(用户的团队贡献值只统计一级);如果团队只有一人,那团队贡献值就是0
3653
+         */
3654
+        if ($userData['user_group'] == 1) {
3655
+            $depth = 1;
3656
+        }
3657
+
3658
+        // 4、获取下级用户 贡献值
3659
+        $userContributionSumMap = [];
3660
+        // 获取用户的直属下级
3661
+        $uidContributeList = $this->getUidContributeListBySpreadUidList([$uid]);
3662
+        foreach ($uidContributeList as $uidContribute) {
3663
+            // 获取每个下级(部门)的个人贡献值
3664
+            $userContributionSumMap[$uidContribute['uid']] = $this->getContributionSumByLevel(
3665
+                [$uidContribute['uid']],
3666
+                $depth,
3667
+                $userData['is_old'],
3668
+                $userData['identity_up_time'] ?? null
3669
+            );
3670
+            $userContributionSumMap[$uidContribute['uid']][0] = $uidContribute['contribute'];
3671
+            // 假设 老大的 下级是 张三和李四, 董事(最高级身份)需要循环最深的等级是 3 级    得出来的结果↓  这样是为了计算大小部门
3672
+            // $userContributionSumMap[直属下级(部门)张三] =>[0 => 张三个人贡献值, 1 => 张三所有下级用户的个人贡献值, 2 => 张三所有下级用户的下级用户贡献值]
3673
+            // $userContributionSumMap[直属下级(部门)李四] =>[0 => 李四个人贡献值, 1 => 李四所有下级用户的个人贡献值, 2 => 李四所有下级用户的下级用户贡献值]
3674
+        }
3675
+
3676
+        $subordinateContribution = [];
3677
+        foreach ($userContributionSumMap as $key => $value) {
3678
+            $subordinateContribution[$key] = array_sum($value);
3679
+        }
3680
+        $arriveNumTeam = 0;
3681
+        if (!empty($subordinateContribution)) {
3682
+            // 大区业绩
3683
+            $dqYj = max($subordinateContribution);
3684
+            // 总业绩
3685
+            $zYj = array_sum($subordinateContribution);
3686
+            // 小区团体业绩
3687
+            $arriveNumTeam = bcsub($zYj, $dqYj, 2);
3688
+        }
3689
+
3690
+        return ['arriveNumTeam' => $arriveNumTeam, 'contribute' => $userData['contribute'], 'per_contribute' => $userData['per_contribute']];
3691
+
3692
+    }
3535
 }
3693
 }

+ 69 - 16
app/controller/api/user/User.php

@@ -219,17 +219,23 @@ class User extends BaseController
219
 
219
 
220
         if ($pm==0){
220
         if ($pm==0){
221
 
221
 
222
-            $data = DB::name('user_sign_hongbao')->where($where)->where(['type' => 1,'status' => 1])->field('id,mark,number,type,addtime,order_id')->page($page, $limit)->order("id desc")->select();
222
+            $data = DB::name('user_sign_hongbao')->where($where)->where('type',1)->where('status',1)->field('id,mark,number,type,addtime,order_id,status')->page($page, $limit)->order("id desc")->select();
223
         }
223
         }
224
         if($pm==1){
224
         if($pm==1){
225
             $data = DB::name('user_sign_hongbao')->where($where)->where(['type' => 2,'status' => 1])->field('id,mark,number,type,addtime,order_id')->page($page, $limit)->order("id desc")->select();
225
             $data = DB::name('user_sign_hongbao')->where($where)->where(['type' => 2,'status' => 1])->field('id,mark,number,type,addtime,order_id')->page($page, $limit)->order("id desc")->select();
226
 
226
 
227
         }
227
         }
228
         if($pm==2){
228
         if($pm==2){
229
-            $data = DB::name('user_sign_hongbao')->where($where)->where('status', -1)->field('id,mark,number,type,addtime,order_id')->page($page, $limit)->order("id desc")->select();
230
-
229
+            $data = DB::name('user_sign_hongbao')->where($where)->where('type',1)->where([['status','in','-1,0']])->field('id,mark,number,type,addtime,order_id,status')->page($page, $limit)->order("id desc")->select();
230
+            if($data){
231
+                $data = $data->toArray();
232
+                foreach ($data as $k=>$v){
233
+                    if($v['status'] == 0){
234
+                        $data[$k]['mark'] = '(失效)' . $v['mark'];
235
+                    }
236
+                }
237
+            }
231
         }
238
         }
232
-        log::info("=======date==={$data}");
233
         return app("json")->success($data);
239
         return app("json")->success($data);
234
     }
240
     }
235
 
241
 
@@ -310,6 +316,19 @@ class User extends BaseController
310
         log::info("============gongxianinfo");
316
         log::info("============gongxianinfo");
311
         $user = $this->request->userInfo();
317
         $user = $this->request->userInfo();
312
         if($user->uid>0){
318
         if($user->uid>0){
319
+            $con = DB::name('user')->where('uid', $user->uid)->find();
320
+            // 先去更新一下用户身份
321
+            $number = Db::name("system_config_value")->where(["config_key" => "team_commission_recursion_depth"])->value("value");
322
+            $this->repository->setUserIdentity($user->uid);
323
+            $result = $this->repository->getUserContributeInfoByDepth($user->uid, $number);
324
+            $data = [
325
+                'no_total_source' => Db::name('user_sign_gongxian')->where('status', -1)->where('uid', $user->uid)->sum('number'),
326
+                'team_gongxian_num' => $result['arriveNumTeam'],
327
+                'zhitui' => $con['per_contribute'],
328
+                'total_source' => $con['contribute']
329
+            ];
330
+            return app('json')->success($data);
331
+
313
 
332
 
314
            // $dateObj=DB::name('user_sign_gongxian')->where('uid', $user->uid)->where("status",1)->select();
333
            // $dateObj=DB::name('user_sign_gongxian')->where('uid', $user->uid)->where("status",1)->select();
315
             $con = DB::name('user')->where('uid', $user->uid)->find();
334
             $con = DB::name('user')->where('uid', $user->uid)->find();
@@ -408,17 +427,24 @@ class User extends BaseController
408
 
427
 
409
         if ($pm==0){
428
         if ($pm==0){
410
 
429
 
411
-            $data = DB::name('user_sign_gongxian')->where($where)->where('status', 1)->where('number', '<>',0)->field('id,mark,number,addtime,order_id')->page($page, $limit)->order("id desc")->select();
430
+            $data = DB::name('user_sign_gongxian')->where($where)->where('status',1)->where('number', '<>',0)->field('id,mark,number,addtime,order_id,status')->page($page, $limit)->order("id desc")->select();
431
+
412
         }
432
         }
413
 //        if($pm==1){
433
 //        if($pm==1){
414
 //            $data = DB::name('user_sign_gongxian')->where($where)->where('pm', 2)->field('id,mark,number,pm,addtime,order_id')->page($page, $limit)->order("id desc")->select();
434
 //            $data = DB::name('user_sign_gongxian')->where($where)->where('pm', 2)->field('id,mark,number,pm,addtime,order_id')->page($page, $limit)->order("id desc")->select();
415
 //
435
 //
416
 //        }
436
 //        }
417
         if($pm==2){
437
         if($pm==2){
418
-            $data = DB::name('user_sign_gongxian')->where($where)->where('number', '<>',0)->where('status', -1)->field('id,mark,number,addtime,order_id')->page($page, $limit)->order("id desc")->select();
419
-
438
+            $data = DB::name('user_sign_gongxian')->where($where)->where('number', '<>',0)->where([['status','in','-1,0']])->field('id,mark,number,addtime,order_id,status')->page($page, $limit)->order("id desc")->select();
439
+            if($data){
440
+                $data = $data->toArray();
441
+                foreach ($data as $k=>$v){
442
+                    if($v['status'] == 0){
443
+                        $data[$k]['mark'] = '(失效)' . $v['mark'];
444
+                    }
445
+                }
446
+            }
420
         }
447
         }
421
-        log::info("=======date==={$data}");
422
         return app("json")->success($data);
448
         return app("json")->success($data);
423
     }
449
     }
424
 
450
 
@@ -490,15 +516,23 @@ class User extends BaseController
490
         $where['uid'] = $uid;
516
         $where['uid'] = $uid;
491
 
517
 
492
         if ($pm==0){
518
         if ($pm==0){
493
-            $data = DB::name('user_sign_fugou')->where($where)->where('type', 1)->where('status', 1)->field('id,mark,number,type,addtime,order_id')->page($page, $limit)->order("id desc")->select();
519
+            $data = DB::name('user_sign_fugou')->where($where)->where('type', 1)->where('status',1)->field('id,mark,number,type,addtime,order_id,status')->page($page, $limit)->order("id desc")->select();
520
+
494
         }
521
         }
495
         if($pm==1){
522
         if($pm==1){
496
             $data = DB::name('user_sign_fugou')->where($where)->where('type', 2)->field('id,mark,number,type,addtime,order_id')->page($page, $limit)->order("id desc")->select();
523
             $data = DB::name('user_sign_fugou')->where($where)->where('type', 2)->field('id,mark,number,type,addtime,order_id')->page($page, $limit)->order("id desc")->select();
497
         }
524
         }
498
         if($pm==2){
525
         if($pm==2){
499
-            $data = DB::name('user_sign_fugou')->where($where)->where('status', -1)->field('id,mark,number,type,addtime,order_id')->page($page, $limit)->order("id desc")->select();
526
+            $data = DB::name('user_sign_fugou')->where($where)->where('type', 1)->where([['status','in','-1,0']])->field('id,mark,number,type,addtime,order_id,status')->page($page, $limit)->order("id desc")->select();
527
+            if($data){
528
+                $data = $data->toArray();
529
+                foreach ($data as $k=>$v){
530
+                    if($v['status'] == 0){
531
+                        $data[$k]['mark'] = '(失效)' . $v['mark'];
532
+                    }
533
+                }
534
+            }
500
         }
535
         }
501
-        log::info("=======date==={$data}");
502
         return app("json")->success($data);
536
         return app("json")->success($data);
503
     }
537
     }
504
 
538
 
@@ -1143,8 +1177,16 @@ class User extends BaseController
1143
         if ($source > -1) {
1177
         if ($source > -1) {
1144
             $where['source'] = $source;
1178
             $where['source'] = $source;
1145
         }
1179
         }
1146
-        $res = $this->repository->yanglaolog($where, $page, $limit, $month);
1180
+        $res = $this->repository->yanglaolog($where, $page, $limit, $month,1);
1147
         if ($res) {
1181
         if ($res) {
1182
+            $res['list'] = $res['list']->toArray();
1183
+            if($res['list']){
1184
+                foreach ($res['list'] as $k=>$v){
1185
+                    if($v['status'] == -1){
1186
+                        $res['list'][$k]['mer_name'] = $v['mer_name'] . '(失效)';
1187
+                    }
1188
+                }
1189
+            }
1148
             return app('json')->success($res);
1190
             return app('json')->success($res);
1149
         } else {
1191
         } else {
1150
             return app('json')->fail('获取失败');
1192
             return app('json')->fail('获取失败');
@@ -2182,17 +2224,24 @@ class User extends BaseController
2182
 //        }
2224
 //        }
2183
         if ($pm==0){
2225
         if ($pm==0){
2184
 
2226
 
2185
-            $data = DB::name('user_sign_score')->where($where)->where('pm', 1)->where('status', 1)->field('id,mark,reward_socre,pm,addtime,order_id')->page($page, $limit)->order("id desc")->select();
2227
+            $data = DB::name('user_sign_score')->where($where)->where('pm', 1)->where('status',1)->field('id,mark,reward_socre,pm,addtime,order_id,status')->page($page, $limit)->order("id desc")->select();
2228
+
2186
         }
2229
         }
2187
         if($pm==1){
2230
         if($pm==1){
2188
             $data = DB::name('user_sign_score')->where($where)->where('pm', 2)->where('status', 1)->field('id,mark,reward_socre,pm,addtime,order_id')->page($page, $limit)->order("id desc")->select();
2231
             $data = DB::name('user_sign_score')->where($where)->where('pm', 2)->where('status', 1)->field('id,mark,reward_socre,pm,addtime,order_id')->page($page, $limit)->order("id desc")->select();
2189
 
2232
 
2190
         }
2233
         }
2191
         if($pm==2){
2234
         if($pm==2){
2192
-            $data = DB::name('user_sign_score')->where($where)->where('status', -1)->field('id,mark,reward_socre,pm,addtime,order_id')->page($page, $limit)->order("id desc")->select();
2193
-
2235
+            $data = DB::name('user_sign_score')->where($where)->where([['status','in','-1,0']])->field('id,mark,reward_socre,pm,addtime,order_id,status')->page($page, $limit)->order("id desc")->select();
2236
+            if($data){
2237
+                $data = $data->toArray();
2238
+                foreach ($data as $k=>$v){
2239
+                    if($v['status'] == 0){
2240
+                        $data[$k]['mark'] = '(失效)' . $v['mark'];
2241
+                    }
2242
+                }
2243
+            }
2194
         }
2244
         }
2195
-        log::info("=======date==={$data}");
2196
         return app("json")->success($data);
2245
         return app("json")->success($data);
2197
 
2246
 
2198
     }
2247
     }
@@ -2264,6 +2313,10 @@ class User extends BaseController
2264
             if ($v['status'] == 1) {
2313
             if ($v['status'] == 1) {
2265
 //                $v['create_time'] = $v['take_time'];
2314
 //                $v['create_time'] = $v['take_time'];
2266
             }
2315
             }
2316
+            if ($v['status'] == -1) {
2317
+                $v['mark'] = '(失效)' . $v['mark'];
2318
+                $v['status'] = 0;
2319
+            }
2267
 
2320
 
2268
             $data_arr[] = $v;
2321
             $data_arr[] = $v;
2269
         }
2322
         }