|  | @@ -72,28 +72,29 @@ class CustomService
 | 
	
		
			
				|  |  |              }];
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (!empty($params['report_status'])) {
 | 
	
		
			
				|  |  | -            if ($params['report_status'] == -1) {
 | 
	
		
			
				|  |  | -                //待审核
 | 
	
		
			
				|  |  | -                $where[] = ['check_status', '=', 1];
 | 
	
		
			
				|  |  | -            } else {
 | 
	
		
			
				|  |  | -                $where[] = ['check_status', '=', 2];
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if ($params['report_status'] == 1) {
 | 
	
		
			
				|  |  | -                //已报备
 | 
	
		
			
				|  |  | -                $where[] = [function($query) use ($diffNums, $currentTime) {
 | 
	
		
			
				|  |  | -                    $query->whereRaw("((visit_time + {$diffNums}) - {$currentTime} > 0)")->where('current_status', '=', 1);
 | 
	
		
			
				|  |  | -                }];
 | 
	
		
			
				|  |  | -            } else if ($params['report_status'] == 3) {
 | 
	
		
			
				|  |  | -                //已锁定
 | 
	
		
			
				|  |  | -                $where[] = [function($query) {
 | 
	
		
			
				|  |  | -                    $query->whereIn('current_status', [2,3,4]);
 | 
	
		
			
				|  |  | -                }];
 | 
	
		
			
				|  |  | -            } else if ($params['report_status'] == 2) {
 | 
	
		
			
				|  |  | -                //已失效
 | 
	
		
			
				|  |  | -                $where[] = [function($query) use ($diffNums, $currentTime){
 | 
	
		
			
				|  |  | -                    $query->orWhere('current_status', '=', -1)->orWhereRaw("((visit_time + {$diffNums}) - {$currentTime} <= 0 AND current_status = 1 AND check_status = 2)");
 | 
	
		
			
				|  |  | -                }];
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +            $where[] = ['check_status', '=', $params['report_status']];
 | 
	
		
			
				|  |  | +//            if ($params['report_status'] == -1) {
 | 
	
		
			
				|  |  | +//                //待审核
 | 
	
		
			
				|  |  | +//                $where[] = ['check_status', '=', 1];
 | 
	
		
			
				|  |  | +//            } else {
 | 
	
		
			
				|  |  | +//                $where[] = ['check_status', '=', 2];
 | 
	
		
			
				|  |  | +//            }
 | 
	
		
			
				|  |  | +//            if ($params['report_status'] == 1) {
 | 
	
		
			
				|  |  | +//                //已报备
 | 
	
		
			
				|  |  | +//                $where[] = [function($query) use ($diffNums, $currentTime) {
 | 
	
		
			
				|  |  | +//                    $query->whereRaw("((visit_time + {$diffNums}) - {$currentTime} > 0)")->where('current_status', '=', 1);
 | 
	
		
			
				|  |  | +//                }];
 | 
	
		
			
				|  |  | +//            } else if ($params['report_status'] == 3) {
 | 
	
		
			
				|  |  | +//                //已锁定
 | 
	
		
			
				|  |  | +//                $where[] = [function($query) {
 | 
	
		
			
				|  |  | +//                    $query->whereIn('current_status', [2,3,4]);
 | 
	
		
			
				|  |  | +//                }];
 | 
	
		
			
				|  |  | +//            } else if ($params['report_status'] == 2) {
 | 
	
		
			
				|  |  | +//                //已失效
 | 
	
		
			
				|  |  | +//                $where[] = [function($query) use ($diffNums, $currentTime){
 | 
	
		
			
				|  |  | +//                    $query->orWhere('current_status', '=', -1)->orWhereRaw("((visit_time + {$diffNums}) - {$currentTime} <= 0 AND current_status = 1 AND check_status = 2)");
 | 
	
		
			
				|  |  | +//                }];
 | 
	
		
			
				|  |  | +//            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (!empty($params['consultant_name'])) {
 | 
	
		
			
				|  |  |              $consultantIds = Consultant::where('name', 'like', "%{$params['consultant_name']}%")->pluck('id');
 | 
	
	
		
			
				|  | @@ -131,9 +132,13 @@ class CustomService
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (!empty($params['current_status'])) {
 | 
	
		
			
				|  |  |              $currentStatus = $params['current_status'];
 | 
	
		
			
				|  |  | -            $where[] = [function($query) use ($currentStatus){
 | 
	
		
			
				|  |  | -                $query->where('current_status', '=', $currentStatus)->where('check_status', '=', 2);
 | 
	
		
			
				|  |  | -            }];
 | 
	
		
			
				|  |  | +            if ($currentStatus == 1) {
 | 
	
		
			
				|  |  | +                $where[] = ['current_status', '=', $currentStatus];
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                $where[] = [function($query) use ($currentStatus){
 | 
	
		
			
				|  |  | +                    $query->where('current_status', '=', $currentStatus)->where('check_status', '<>', 1);
 | 
	
		
			
				|  |  | +                }];
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (!empty($params['consultant_id'])) {
 | 
	
		
			
				|  |  |              $where[] = ['consultant_id', '=', $params['consultant_id']];
 | 
	
	
		
			
				|  | @@ -203,6 +208,24 @@ class CustomService
 | 
	
		
			
				|  |  |                  $where[] = ['level', '=', ($params['level'] + 1)];
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        if (!empty($params['belong_status'])) {
 | 
	
		
			
				|  |  | +            $belongStatus = $params['belong_status'];
 | 
	
		
			
				|  |  | +            if ($belongStatus == 1) {
 | 
	
		
			
				|  |  | +                //未流入公池
 | 
	
		
			
				|  |  | +                $where[] = ['belong_status', '=', 1];
 | 
	
		
			
				|  |  | +                $where[] = [function($query) use ($diffNums, $currentTime){
 | 
	
		
			
				|  |  | +                    $query->orWhereRaw("check_status IN (-1, 1)")
 | 
	
		
			
				|  |  | +                        ->orWhereRaw("check_status = 2 AND current_status IN (-1,3,4)")
 | 
	
		
			
				|  |  | +                        ->orWhereRaw("((visit_time + {$diffNums}) - {$currentTime} > 0 AND current_status = 2 AND check_status = 2)");
 | 
	
		
			
				|  |  | +                }];
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                //已经流入公池
 | 
	
		
			
				|  |  | +                $where[] = [function($query) use ($diffNums, $currentTime){
 | 
	
		
			
				|  |  | +                    $query->orWhereRaw("((visit_time + {$diffNums}) - {$currentTime} <= 0 AND current_status = 2 AND check_status = 2 AND belong_status = 1)")->whereOr('belong_status','<>', 1);
 | 
	
		
			
				|  |  | +                }];
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          return $where;
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -303,6 +326,7 @@ class CustomService
 | 
	
		
			
				|  |  |              'check_status' => 1,
 | 
	
		
			
				|  |  |              'visit_time' => $params['visit_time'] ?? null,
 | 
	
		
			
				|  |  |              'note' => $params['note'] ?? '',
 | 
	
		
			
				|  |  | +            'belong_status' => 1,
 | 
	
		
			
				|  |  |              'current_status' => $params['current_status'] ?? null,
 | 
	
		
			
				|  |  |              'created_at' => time()
 | 
	
		
			
				|  |  |          ];
 | 
	
	
		
			
				|  | @@ -533,15 +557,21 @@ class CustomService
 | 
	
		
			
				|  |  |      public static function moveCustom($params)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |          $userId = JwtToken::getCurrentId();
 | 
	
		
			
				|  |  | -        $currentConsultantId = $params['consultant_id']; //当前顾问
 | 
	
		
			
				|  |  | +        $moveType = $params['move_type'] ?? 0;
 | 
	
		
			
				|  |  | +        if ($moveType == 1) {
 | 
	
		
			
				|  |  | +            $currentDeptId = $params['dept_id'];
 | 
	
		
			
				|  |  | +            $currentConsultantId = 0;
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            $currentConsultantId = $params['consultant_id'] ?? 0; //当前顾问
 | 
	
		
			
				|  |  | +            $consultantInfo = Consultant::firstWhere(['id' => $currentConsultantId]);
 | 
	
		
			
				|  |  | +            if (empty($consultantInfo)) {
 | 
	
		
			
				|  |  | +                return json_fail('顾问不存在');
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            $currentDeptId = $consultantInfo->dept_id; //当前部门
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          $consultantIds = $params['move_consultant_id'] ?? [];
 | 
	
		
			
				|  |  |          $customIds = $params['move_market_customer_id'] ?? [];
 | 
	
		
			
				|  |  |          $note = $params['note'] ?? '';
 | 
	
		
			
				|  |  | -        $consultantInfo = Consultant::firstWhere(['id' => $currentConsultantId]);
 | 
	
		
			
				|  |  | -        if (empty($consultantInfo)) {
 | 
	
		
			
				|  |  | -            return json_fail('顾问不存在');
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        $currentDeptId = $consultantInfo->dept_id; //当前部门
 | 
	
		
			
				|  |  |          $logsInertData  = [];
 | 
	
		
			
				|  |  |          $now = time();
 | 
	
		
			
				|  |  |          $whereCustom = [];
 | 
	
	
		
			
				|  | @@ -580,6 +610,13 @@ class CustomService
 | 
	
		
			
				|  |  |          $result = false;
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  |              foreach ($customList as $item) {
 | 
	
		
			
				|  |  | +                if ($currentConsultantId != 0) {
 | 
	
		
			
				|  |  | +                    //移交至指定顾问
 | 
	
		
			
				|  |  | +                    $item->visit_time = time();
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  | +                    //移交至其他团队
 | 
	
		
			
				|  |  | +                    $item->visit_time = time() - self::DIFF_TIME;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  $item->consultant_id = $currentConsultantId;
 | 
	
		
			
				|  |  |                  $item->dept_id = $currentDeptId;
 | 
	
		
			
				|  |  |                  $item->save();
 | 
	
	
		
			
				|  | @@ -682,16 +719,26 @@ class CustomService
 | 
	
		
			
				|  |  |                  $query->whereBetween('created_at', $createdDate);
 | 
	
		
			
				|  |  |              }];
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        $paginator = MarketCustomerLogs::with(['custom', 'beforeMan', 'currentMan', 'opBackPerson', 'opFrontPerson'])
 | 
	
		
			
				|  |  | -            ->whereHas('custom', function ($query) use ($whereCustom) {
 | 
	
		
			
				|  |  | -                $query->where($whereCustom);
 | 
	
		
			
				|  |  | -            })
 | 
	
		
			
				|  |  | -            ->whereHas('currentMan', function ($query) use ($whereCurrent) {
 | 
	
		
			
				|  |  | -                $query->where($whereCurrent);
 | 
	
		
			
				|  |  | -            })
 | 
	
		
			
				|  |  | -            ->whereHas('beforeMan', function ($query) use ($whereBefore) {
 | 
	
		
			
				|  |  | -                $query->where($whereBefore);
 | 
	
		
			
				|  |  | -            })
 | 
	
		
			
				|  |  | +        $paginator = MarketCustomerLogs::with(['custom' => function($query) {
 | 
	
		
			
				|  |  | +            $query->select('id', 'name', 'mobile');
 | 
	
		
			
				|  |  | +        }, 'beforeMan' => function($query) {
 | 
	
		
			
				|  |  | +            $query->select('id', 'name', 'mobile');
 | 
	
		
			
				|  |  | +        }, 'currentMan' => function($query) {
 | 
	
		
			
				|  |  | +            $query->select('id', 'name', 'mobile');
 | 
	
		
			
				|  |  | +        }, 'beforeDept' => function($query) {
 | 
	
		
			
				|  |  | +            $query->select('dept_id', 'dept_name');
 | 
	
		
			
				|  |  | +        }, 'currentDept' => function($query) {
 | 
	
		
			
				|  |  | +            $query->select('dept_id', 'dept_name');
 | 
	
		
			
				|  |  | +        }])
 | 
	
		
			
				|  |  | +//            ->whereHas('custom', function ($query) use ($whereCustom) {
 | 
	
		
			
				|  |  | +//                $query->where($whereCustom);
 | 
	
		
			
				|  |  | +//            })
 | 
	
		
			
				|  |  | +//            ->whereHas('currentMan', function ($query) use ($whereCurrent) {
 | 
	
		
			
				|  |  | +//                $query->where($whereCurrent);
 | 
	
		
			
				|  |  | +//            })
 | 
	
		
			
				|  |  | +//            ->whereHas('beforeMan', function ($query) use ($whereBefore) {
 | 
	
		
			
				|  |  | +//                $query->where($whereBefore);
 | 
	
		
			
				|  |  | +//            })
 | 
	
		
			
				|  |  |              ->where($where)
 | 
	
		
			
				|  |  |              ->orderBy('created_at', 'desc')
 | 
	
		
			
				|  |  |              ->paginate($limit, '*', 'page', $page);
 | 
	
	
		
			
				|  | @@ -731,7 +778,7 @@ class CustomService
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          $status = $info->check_status;
 | 
	
		
			
				|  |  |          if ($status != 1) {
 | 
	
		
			
				|  |  | -            return json_fail('客户不是待审核状态');
 | 
	
		
			
				|  |  | +            return json_fail('客户不是待转到访状态');
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          $mobile = $info->mobile;
 | 
	
		
			
				|  |  |          if ($checkStatus == 2) {
 | 
	
	
		
			
				|  | @@ -743,10 +790,15 @@ class CustomService
 | 
	
		
			
				|  |  |          Db::beginTransaction();
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  |              $info->check_status = $checkStatus;
 | 
	
		
			
				|  |  | +            $info->current_status = $checkStatus;
 | 
	
		
			
				|  |  |              if ($checkStatus == -1) {
 | 
	
		
			
				|  |  |                  //拒绝录入拒绝理由
 | 
	
		
			
				|  |  |                  $info->check_note = $params['note'] ?? '无拒绝理由';
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            if ($checkStatus == 2) {
 | 
	
		
			
				|  |  | +                //更新到访保护期时间
 | 
	
		
			
				|  |  | +                $info->visit_time = time();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              $info->check_time = time();
 | 
	
		
			
				|  |  |              $info->check_admin_id = $adminId;
 | 
	
		
			
				|  |  |              $result = $info->save();
 | 
	
	
		
			
				|  | @@ -757,7 +809,7 @@ class CustomService
 | 
	
		
			
				|  |  |                      ['check_status', '=', 1],
 | 
	
		
			
				|  |  |                      ['id', '<>', $customId]
 | 
	
		
			
				|  |  |                  ];
 | 
	
		
			
				|  |  | -                MarketCustomer::where($where)->update(['check_time' => time(),'check_status' => -1,'check_note' => '客户已经被其他顾问报备']);
 | 
	
		
			
				|  |  | +                MarketCustomer::where($where)->update(['check_time' => time(),'check_status' => -1, 'current_status' => -1,'check_note' => '客户已经被其他登记']);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              Db::commit();
 | 
	
		
			
				|  |  |          }catch (BusinessException|\Exception $e){
 | 
	
	
		
			
				|  | @@ -765,9 +817,9 @@ class CustomService
 | 
	
		
			
				|  |  |              return json_fail($e->getMessage());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if ($result) {
 | 
	
		
			
				|  |  | -            return json_success('审核成功');
 | 
	
		
			
				|  |  | +            return json_success('操作成功');
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  | -            return json_fail('审核失败');
 | 
	
		
			
				|  |  | +            return json_fail('操作失败');
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -786,14 +838,18 @@ class CustomService
 | 
	
		
			
				|  |  |          $where = self::commonSearch($params);
 | 
	
		
			
				|  |  |          //客户总数
 | 
	
		
			
				|  |  |          $total = MarketCustomer::where($where)->count();
 | 
	
		
			
				|  |  | -        //待审核
 | 
	
		
			
				|  |  | -        $checkTotal = MarketCustomer::where($where)->where('check_status', 1)->count();
 | 
	
		
			
				|  |  | +        //公池客户
 | 
	
		
			
				|  |  | +        $pubTotal = MarketCustomer::where($where)->where([[function($query){
 | 
	
		
			
				|  |  | +            $diffNums = self::DIFF_TIME;
 | 
	
		
			
				|  |  | +            $query->orWhereRaw("((visit_time + {$diffNums}) - UNIX_TIMESTAMP() <= 0 AND current_status = 2 AND check_status = 2 AND belong_status = 1)")->whereOr('belong_status','<>', 1);
 | 
	
		
			
				|  |  | +        }]])->count();
 | 
	
		
			
				|  |  |          //已报备
 | 
	
		
			
				|  |  | -        $reportTotal = MarketCustomer::where($where)->where(
 | 
	
		
			
				|  |  | +        $checkTotal = MarketCustomer::where($where)->where('check_status', 1)->count();
 | 
	
		
			
				|  |  | +        //已到访
 | 
	
		
			
				|  |  | +        $visitTotal = MarketCustomer::where($where)->where(
 | 
	
		
			
				|  |  |              [[function($query) {
 | 
	
		
			
				|  |  | -                $currentTime = time();
 | 
	
		
			
				|  |  |                  $diffNums = self::DIFF_TIME;
 | 
	
		
			
				|  |  | -                $query->whereRaw("((visit_time + {$diffNums}) - {$currentTime} > 0) AND current_status = 1 AND check_status = 2");
 | 
	
		
			
				|  |  | +                $query->whereRaw("((visit_time + {$diffNums}) - UNIX_TIMESTAMP() > 0) AND current_status = 2 AND check_status = 2")->where('belong_status', 1);
 | 
	
		
			
				|  |  |              }]]
 | 
	
		
			
				|  |  |          )->count();
 | 
	
		
			
				|  |  |          //已来电
 | 
	
	
		
			
				|  | @@ -801,31 +857,35 @@ class CustomService
 | 
	
		
			
				|  |  |              $query->where('check_status', '=', 2)->where('current_status', '=', 1);
 | 
	
		
			
				|  |  |          }]])->count();
 | 
	
		
			
				|  |  |          //已到访
 | 
	
		
			
				|  |  | -        $visitTotal = MarketCustomer::where($where)->where([[function($query) {
 | 
	
		
			
				|  |  | -            $query->where('check_status', '=', 2)->where('current_status', '=', 2);
 | 
	
		
			
				|  |  | -        }]])->count();
 | 
	
		
			
				|  |  | +//        $visitTotal = MarketCustomer::where($where)->where([[function($query) {
 | 
	
		
			
				|  |  | +//            $query->where('check_status', '=', 2)->where('current_status', '=', 2);
 | 
	
		
			
				|  |  | +//        }]])->count();
 | 
	
		
			
				|  |  |          //已缴费
 | 
	
		
			
				|  |  |          $payTotal = MarketCustomer::where($where)->where([[function($query) {
 | 
	
		
			
				|  |  | -            $query->where('check_status', '=', 2)->where('current_status', '=', 3);
 | 
	
		
			
				|  |  | +            $query->where('check_status', '=', 2)->where('current_status', '=', 3)->where('belong_status', 1);
 | 
	
		
			
				|  |  |          }]])->count();
 | 
	
		
			
				|  |  |          //已成交
 | 
	
		
			
				|  |  |          $dealTotal = MarketCustomer::where($where)->where([[function($query) {
 | 
	
		
			
				|  |  | -            $query->where('check_status', '=', 2)->where('current_status', '=', 4);
 | 
	
		
			
				|  |  | +            $query->where('check_status', '=', 2)->where('current_status', '=', 4)->where('belong_status', 1);
 | 
	
		
			
				|  |  |          }]])->count();
 | 
	
		
			
				|  |  | -        //已到访 + 已缴费 + 已成交 / 客户总数
 | 
	
		
			
				|  |  | +        //已缴费 + 已成交 / 客户总数
 | 
	
		
			
				|  |  | +        //报备失败
 | 
	
		
			
				|  |  | +        $failTotal = MarketCustomer::where($where)->where('current_status', -1)->count();
 | 
	
		
			
				|  |  |          $rant = 0;
 | 
	
		
			
				|  |  |          if ($total > 0) {
 | 
	
		
			
				|  |  | -            $rant = $payTotal + $dealTotal / $total;
 | 
	
		
			
				|  |  | +            $rant = ($payTotal + $dealTotal) / $total;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          $rant = sprintf('%.2f', $rant);
 | 
	
		
			
				|  |  |          $data = [
 | 
	
		
			
				|  |  |              'total' => $total,
 | 
	
		
			
				|  |  | +            'pub_total' => $pubTotal,
 | 
	
		
			
				|  |  |              'check_total' => $checkTotal,
 | 
	
		
			
				|  |  | -            'report_total' => $reportTotal,
 | 
	
		
			
				|  |  | +            'report_total' => 0,
 | 
	
		
			
				|  |  |              'mobile_total' => $mobileTotal,
 | 
	
		
			
				|  |  |              'visit_total' => $visitTotal,
 | 
	
		
			
				|  |  |              'pay_total' => $payTotal,
 | 
	
		
			
				|  |  |              'deal_total' => $dealTotal,
 | 
	
		
			
				|  |  | +            'fail_total' => $failTotal,
 | 
	
		
			
				|  |  |              'rant' => $rant,
 | 
	
		
			
				|  |  |          ];
 | 
	
		
			
				|  |  |          return json_success('请求成功', $data);
 |