From d02ff850dedcb594eb4ff0982278fb8809a584b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=90=8C?= <494089941@qq.com> Date: Thu, 2 Mar 2023 20:59:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=85=E5=8A=9E=E4=BA=8B=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/crm/controller/Message.php | 487 ++++++++++++++----------- application/crm/logic/MessageLogic.php | 19 + application/crm/model/Business.php | 178 ++++----- config/route_crm.php | 42 ++- 4 files changed, 417 insertions(+), 309 deletions(-) diff --git a/application/crm/controller/Message.php b/application/crm/controller/Message.php index 643e07e..79e220f 100644 --- a/application/crm/controller/Message.php +++ b/application/crm/controller/Message.php @@ -28,7 +28,7 @@ class Message extends ApiCommon { $action = [ 'permission' => [], - 'allow' => [ + 'allow' => [ 'num', 'todayleads', 'todaycustomer', @@ -45,19 +45,19 @@ class Message extends ApiCommon 'alldeal' ] ]; - Hook::listen('check_auth',$action); + Hook::listen('check_auth', $action); $request = Request::instance(); $a = strtolower($request->action()); if (!in_array($a, $action['permission'])) { parent::_initialize(); } } - + /** * 系统通知 * - * @author Michael_xu * @return + * @author Michael_xu */ public function index() { @@ -69,7 +69,7 @@ class Message extends ApiCommon $data = $messageModel->getDataList($param); return resultArray(['data' => $data]); } - + /** * 消息数 * @@ -83,150 +83,176 @@ class Message extends ApiCommon $configData = $configDataModel->getData(); $data = []; # 今日需联系线索 - $todayLeadsTime = cache('todayLeadsTime'.$userInfo['id']); - $todayLeadsCount = cache('todayLeadsCount'.$userInfo['id']); + $todayLeadsTime = cache('todayLeadsTime' . $userInfo['id']); + $todayLeadsCount = cache('todayLeadsCount' . $userInfo['id']); if (time() <= $todayLeadsTime) { $data['todayLeads'] = (int)$todayLeadsCount; } else { $todayLeads = $this->todayLeads(true); - $data['todayLeads'] = $todayLeads['dataCount'] ? : 0; - cache('todayLeadsCount'.$userInfo['id'], $data['todayLeads']); - cache('todayLeadsTime'.$userInfo['id'], time() ); + $data['todayLeads'] = $todayLeads['dataCount'] ?: 0; + cache('todayLeadsCount' . $userInfo['id'], $data['todayLeads']); + cache('todayLeadsTime' . $userInfo['id'], time()); } # 今日需联系客户 - $todayCustomerTime = cache('todayCustomerTime'.$userInfo['id']); - $todayCustomerCount = cache('todayCustomerCount'.$userInfo['id']); + $todayCustomerTime = cache('todayCustomerTime' . $userInfo['id']); + $todayCustomerCount = cache('todayCustomerCount' . $userInfo['id']); if (time() <= $todayCustomerTime) { $data['todayCustomer'] = (int)$todayCustomerCount; } else { $todayCustomer = $this->todayCustomer(true); - $data['todayCustomer'] = $todayCustomer['dataCount'] ? : 0; - cache('todayCustomerCount'.$userInfo['id'], $data['todayCustomer']); - cache('todayCustomerTime'.$userInfo['id'], time() ); + $data['todayCustomer'] = $todayCustomer['dataCount'] ?: 0; + cache('todayCustomerCount' . $userInfo['id'], $data['todayCustomer']); + cache('todayCustomerTime' . $userInfo['id'], time()); } # 今日需联系商机 - $todayBusinessTime = cache('todayBusinessTime'.$userInfo['id']); - $todayBusinessCount = cache('todayBusinessCount'.$userInfo['id']); + $todayBusinessTime = cache('todayBusinessTime' . $userInfo['id']); + $todayBusinessCount = cache('todayBusinessCount' . $userInfo['id']); if (time() <= $todayBusinessTime) { $data['todayBusiness'] = (int)$todayBusinessCount; } else { $todayBusiness = $this->todayBusiness(true); - $data['todayBusiness'] = $todayBusiness['dataCount'] ? : 0; - cache('todayBusinessCount'.$userInfo['id'], $data['todayBusiness']); - cache('todayBusinessTime'.$userInfo['id'], time() ); + $data['todayBusiness'] = $todayBusiness['dataCount'] ?: 0; + cache('todayBusinessCount' . $userInfo['id'], $data['todayBusiness']); + cache('todayBusinessTime' . $userInfo['id'], time()); } # 分配给我的线索 - $followLeadsTime = cache('followLeadsTime'.$userInfo['id']); - $followLeadsCount = cache('followLeadsCount'.$userInfo['id']); + $followLeadsTime = cache('followLeadsTime' . $userInfo['id']); + $followLeadsCount = cache('followLeadsCount' . $userInfo['id']); if (time() <= $followLeadsTime) { $data['followLeads'] = (int)$followLeadsCount; } else { $followLeads = $this->followLeads(true); - $data['followLeads'] = $followLeads['dataCount'] ? : 0; - cache('followLeadsCount'.$userInfo['id'], $data['followLeads']); - cache('followLeadsTime'.$userInfo['id'], time() ); + $data['followLeads'] = $followLeads['dataCount'] ?: 0; + cache('followLeadsCount' . $userInfo['id'], $data['followLeads']); + cache('followLeadsTime' . $userInfo['id'], time()); } # 分配给我的客户 - $followCustomerTime = cache('followCustomerTime'.$userInfo['id']); - $followCustomerCount = cache('followCustomerCount'.$userInfo['id']); + $followCustomerTime = cache('followCustomerTime' . $userInfo['id']); + $followCustomerCount = cache('followCustomerCount' . $userInfo['id']); if (time() <= $followCustomerTime) { $data['followCustomer'] = (int)$followCustomerCount; } else { $followCustomer = $this->followCustomer(true); - $data['followCustomer'] = $followCustomer['dataCount'] ? : 0; - cache('followCustomerCount'.$userInfo['id'], $data['followCustomer']); - cache('followCustomerTime'.$userInfo['id'], time() ); + $data['followCustomer'] = $followCustomer['dataCount'] ?: 0; + cache('followCustomerCount' . $userInfo['id'], $data['followCustomer']); + cache('followCustomerTime' . $userInfo['id'], time()); } # 待审核合同 - $checkContractTime = cache('checkContractTime'.$userInfo['id']); - $checkContractCount = cache('checkContractCount'.$userInfo['id']); + $checkContractTime = cache('checkContractTime' . $userInfo['id']); + $checkContractCount = cache('checkContractCount' . $userInfo['id']); if (time() <= $checkContractTime) { $data['checkContract'] = (int)$checkContractCount; } else { $checkContract = $this->checkContract(true); - $data['checkContract'] = $checkContract['dataCount'] ? : 0; - cache('checkContractCount'.$userInfo['id'], $data['checkContract']); - cache('checkContractTime'.$userInfo['id'], time() ); + $data['checkContract'] = $checkContract['dataCount'] ?: 0; + cache('checkContractCount' . $userInfo['id'], $data['checkContract']); + cache('checkContractTime' . $userInfo['id'], time()); } # 待审核回款 - $checkReceivablesTime = cache('checkReceivablesTime'.$userInfo['id']); - $checkReceivablesCount = cache('checkReceivablesCount'.$userInfo['id']); + $checkReceivablesTime = cache('checkReceivablesTime' . $userInfo['id']); + $checkReceivablesCount = cache('checkReceivablesCount' . $userInfo['id']); if (time() <= $checkReceivablesTime) { $data['checkReceivables'] = (int)$checkReceivablesCount; } else { $checkReceivables = $this->checkReceivables(true); - $data['checkReceivables'] = $checkReceivables['dataCount'] ? : 0; - cache('checkReceivablesCount'.$userInfo['id'], $data['checkReceivables']); - cache('checkReceivablesTime'.$userInfo['id'], time() ); + $data['checkReceivables'] = $checkReceivables['dataCount'] ?: 0; + cache('checkReceivablesCount' . $userInfo['id'], $data['checkReceivables']); + cache('checkReceivablesTime' . $userInfo['id'], time()); } # 待审核发票 - $checkInvoiceTime = cache('checkInvoiceTime'.$userInfo['id']); - $checkInvoiceCount = cache('checkInvoiceCount'.$userInfo['id']); + $checkInvoiceTime = cache('checkInvoiceTime' . $userInfo['id']); + $checkInvoiceCount = cache('checkInvoiceCount' . $userInfo['id']); if (time() <= $checkInvoiceTime) { $data['checkInvoice'] = (int)$checkInvoiceCount; } else { $checkInvoice = $this->checkInvoice(true); - $data['checkInvoice'] = $checkInvoice['dataCount'] ? : 0; + $data['checkInvoice'] = $checkInvoice['dataCount'] ?: 0; + + cache('checkInvoiceCount' . $userInfo['id'], $data['checkInvoice']); + cache('checkInvoiceTime' . $userInfo['id'], time()); + } + # 待审核商机 + $checkBusinessTime = cache('checkBusinessTime' . $userInfo['id']); + $checkBusinessCount = cache('checkBusinessCount' . $userInfo['id']); + if (time() <= $checkBusinessTime) { + $data['checkBusiness'] = (int)$checkBusinessCount; - cache('checkInvoiceCount'.$userInfo['id'], $data['checkInvoice']); - cache('checkInvoiceTime'.$userInfo['id'], time() ); + } else { + $checkBusiness = $this->checkBusiness(true); + $data['checkBusiness'] = $checkBusiness['dataCount'] ?: 0; + + cache('checkBusinessCount' . $userInfo['id'], $data['checkBusiness']); + cache('checkBusinessTime' . $userInfo['id'], time()); } # 待回款提醒 - $remindReceivablesPlanTime = cache('remindReceivablesPlanTime'.$userInfo['id']); - $remindReceivablesPlanCount = cache('remindReceivablesPlanCount'.$userInfo['id']); + $remindReceivablesPlanTime = cache('remindReceivablesPlanTime' . $userInfo['id']); + $remindReceivablesPlanCount = cache('remindReceivablesPlanCount' . $userInfo['id']); if (time() <= $remindReceivablesPlanTime) { $data['remindReceivablesPlan'] = (int)$remindReceivablesPlanCount; } else { $remindReceivablesPlan = $this->remindReceivablesPlan(true); - $data['remindReceivablesPlan'] = $remindReceivablesPlan['dataCount'] ? : 0; - cache('remindReceivablesPlanCount'.$userInfo['id'], $data['remindReceivablesPlan']); - cache('remindReceivablesPlanTime'.$userInfo['id'], time() ); + $data['remindReceivablesPlan'] = $remindReceivablesPlan['dataCount'] ?: 0; + cache('remindReceivablesPlanCount' . $userInfo['id'], $data['remindReceivablesPlan']); + cache('remindReceivablesPlanTime' . $userInfo['id'], time()); } if ($configData['visit_config'] == 1) { # 待回访合同 - $visitContractTime = cache('visitContractTime'.$userInfo['id']); - $visitContractCount = cache('visitContractCount'.$userInfo['id']); + $visitContractTime = cache('visitContractTime' . $userInfo['id']); + $visitContractCount = cache('visitContractCount' . $userInfo['id']); if (time() <= $visitContractTime) { $data['returnVisitRemind'] = (int)$visitContractCount; } else { $visitContract = $this->visitContract(true); - $data['returnVisitRemind'] = $visitContract['dataCount'] ? : 0; - cache('visitContractCount'.$userInfo['id'], $data['returnVisitRemind']); - cache('visitContractTime'.$userInfo['id'], time() ); + $data['returnVisitRemind'] = $visitContract['dataCount'] ?: 0; + cache('visitContractCount' . $userInfo['id'], $data['returnVisitRemind']); + cache('visitContractTime' . $userInfo['id'], time()); } } # 即将到期合同 if ($configData['contract_config'] == 1) { - $endContractTime = cache('endContractTime'.$userInfo['id']); - $endContractCount = cache('endContractCount'.$userInfo['id']); + $endContractTime = cache('endContractTime' . $userInfo['id']); + $endContractCount = cache('endContractCount' . $userInfo['id']); if (time() <= $endContractTime) { $data['endContract'] = (int)$endContractCount; } else { $endContract = $this->endContract(true); - $data['endContract'] = $endContract['dataCount'] ? : 0; - cache('endContractCount'.$userInfo['id'], $data['endContract']); - cache('endContractTime'.$userInfo['id'], time() ); + $data['endContract'] = $endContract['dataCount'] ?: 0; + cache('endContractCount' . $userInfo['id'], $data['endContract']); + cache('endContractTime' . $userInfo['id'], time()); } } + + # 新增商机 + $newBusinessTime = cache('newBusinessTime' . $userInfo['id']); + $newBusinessCount = cache('newBusinessCount' . $userInfo['id']); + if (time() <= $newBusinessTime) { + $data['newBusiness'] = (int)$newBusinessCount; + } else { + $newBusiness = $this->newBusiness(true); + $data['newBusiness'] = $newBusiness['dataCount'] ?: 0; + cache('newBusinessCount' . $userInfo['id'], $data['newBusiness']); + cache('newBusinessTime' . $userInfo['id'], time()); + } + # 待进入公海提醒 $pool = db('crm_customer_pool')->where(['status' => 1, 'remind_conf' => 1])->count(); if (!empty($pool)) { - $remindCustomerTime = cache('remindCustomerTime'.$userInfo['id']); - $remindCustomerCount = cache('remindCustomerCount'.$userInfo['id']); + $remindCustomerTime = cache('remindCustomerTime' . $userInfo['id']); + $remindCustomerCount = cache('remindCustomerCount' . $userInfo['id']); if (time() <= $remindCustomerTime) { $data['putInPoolRemind'] = (int)$remindCustomerCount; } else { $remindCustomer = $this->remindCustomer(true); $data['putInPoolRemind'] = !empty($remindCustomer['dataCount']) ? $remindCustomer['dataCount'] : 0; - cache('remindCustomerCount'.$userInfo['id'], $data['putInPoolRemind']); - cache('remindCustomerTime'.$userInfo['id'], time() ); + cache('remindCustomerCount' . $userInfo['id'], $data['putInPoolRemind']); + cache('remindCustomerTime' . $userInfo['id'], time()); } } - + return resultArray(['data' => $data]); } - + /** * 今日需联系线索 * @@ -235,21 +261,21 @@ class Message extends ApiCommon */ public function todayLeads($getCount = false) { - $param = $this->param; + $param = $this->param; $userId = $this->userInfo['id']; - $types = $param['types']; + $types = $param['types']; unset($param['types']); $param['user_id'] = $userId; if ($getCount == true) $param['getCount'] = 1; - $messageLogic= new MessageLogic(); + $messageLogic = new MessageLogic(); $data = $messageLogic->todayLeads($param); - + if ($types == 'list') return resultArray(['data' => $data]); - + return $data; } - + /** * 今日需联系客户 * @@ -266,14 +292,14 @@ class Message extends ApiCommon } unset($param['types']); $param['user_id'] = $userId; - $messageLogic= new MessageLogic(); + $messageLogic = new MessageLogic(); $data = $messageLogic->remindCustomer($param); if ($types == 'list') { return resultArray(['data' => $data]); } return $data; } - + /** * 今日需联系商机 * @@ -285,24 +311,24 @@ class Message extends ApiCommon */ public function todayBusiness($getCount = false) { - $param = $this->param; - $userId = $this->userInfo['id']; - $types = $param['types']; + $param = $this->param; + $userId = $this->userInfo['id']; + $types = $param['types']; unset($param['types']); if ($getCount == true) $param['getCount'] = 1; - $messageLogic= new MessageLogic(); + $messageLogic = new MessageLogic(); $param['user_id'] = $userId; $data = $messageLogic->todayBusiness($param); - + if ($types == 'list') return resultArray(['data' => $data]); - + return $data; } - + /** * 分配给我的线索 - * @author Michael_xu * @return + * @author Michael_xu */ public function followLeads($getCount = false) { @@ -312,18 +338,18 @@ class Message extends ApiCommon unset($param['types']); if ($getCount == true) $param['getCount'] = 1; $param['user_id'] = $userInfo['id']; - $messageLogic=new MessageLogic(); + $messageLogic = new MessageLogic(); $data = $messageLogic->followLeads($param); if ($types == 'list') { return resultArray(['data' => $data]); } return $data; } - + /** * 分配给我的客户 - * @author Michael_xu * @return + * @author Michael_xu */ public function followCustomer($getCount = false) { @@ -334,7 +360,7 @@ class Message extends ApiCommon $param['getCount'] = 1; } unset($param['types']); - $messageLogic=new MessageLogic(); + $messageLogic = new MessageLogic(); $param['user_id'] = $userInfo['id']; $data = $messageLogic->followCustomer($param); if ($types == 'list') { @@ -342,7 +368,7 @@ class Message extends ApiCommon } return $data; } - + /** * 待审核合同 * @@ -358,7 +384,7 @@ class Message extends ApiCommon if ($getCount == true) { $param['getCount'] = 1; } - $messageLogic=new MessageLogic(); + $messageLogic = new MessageLogic(); $param['user_id'] = $userInfo['id']; $data = $messageLogic->checkContract($param); if ($types == 'list') { @@ -366,11 +392,11 @@ class Message extends ApiCommon } return $data; } - + /** * 待审核回款 - * @author Michael_xu * @return + * @author Michael_xu */ public function checkReceivables($getCount = false) { @@ -379,7 +405,7 @@ class Message extends ApiCommon $types = $param['types']; unset($param['types']); if ($getCount == true) $param['getCount'] = 1; - $messageLogic=new MessageLogic(); + $messageLogic = new MessageLogic(); $param['user_id'] = $userInfo['id']; $data = $messageLogic->checkReceivables($param); if ($types == 'list') { @@ -387,7 +413,7 @@ class Message extends ApiCommon } return $data; } - + /** * 待审核发票 * @@ -397,40 +423,63 @@ class Message extends ApiCommon */ public function checkInvoice($getCount = false) { - $param = $this->param; + $param = $this->param; $userId = $this->userInfo['id']; - $types = $param['types']; + $types = $param['types']; if ($getCount == true) $param['getCount'] = 1; # 清除与模型无关的数据 unset($param['types']); $param['user_id'] = $userId; - $messageLogic=new MessageLogic(); + $messageLogic = new MessageLogic(); $data = $messageLogic->checkInvoice($param); - + + if ($types == 'list') return resultArray(['data' => $data]); + + return $data; + } + + /** + * 待审核商机 + * + * @return array|\think\response\Json + * @throws \think\exception\DbException + */ + public function checkBusiness($getCount = false) + { + $param = $this->param; + $userId = $this->userInfo['id']; + $types = $param['types']; + if ($getCount == true) $param['getCount'] = 1; + # 清除与模型无关的数据 + unset($param['types']); + $param['user_id'] = $userId; + $messageLogic = new MessageLogic(); + $data = $messageLogic->checkBusiness($param); + if ($types == 'list') return resultArray(['data' => $data]); - + return $data; } - + /** * 待回款提醒 - * @author Michael_xu * @return + * @author Michael_xu */ public function remindReceivablesPlan($getCount = false) { - $param = $this->param; + $param = $this->param; $userInfo = $this->userInfo; - $types = $param['types']; - $type = $param['type'] ? : 1; - $isSub = $param['isSub'] ? : ''; + $types = $param['types']; + $type = $param['type'] ?: 1; + $isSub = $param['isSub'] ?: ''; unset($param['types']); unset($param['type']); unset($param['isSub']); $receivablesPlanModel = model('ReceivablesPlan'); - + if ($getCount == true) $param['getCount'] = 1; - + $param['owner_user_id'] = $userInfo['id']; if ($isSub) { $param['owner_user_id'] = ['in', getSubUserId(false)]; @@ -460,19 +509,19 @@ class Message extends ApiCommon } return $data; } - + /** * 即将到期合同 - * @author Michael_xu * @return + * @author Michael_xu */ public function endContract($getCount = false) { $param = $this->param; $userInfo = $this->userInfo; $types = $param['types']; - $type = $param['type'] ? : 1; - $isSub = $param['isSub'] ? : ''; + $type = $param['type'] ?: 1; + $isSub = $param['isSub'] ?: ''; if ($getCount == true) $param['getCount'] = 1; unset($param['types']); unset($param['type']); @@ -480,19 +529,21 @@ class Message extends ApiCommon $contractModel = model('Contract'); $configModel = new \app\crm\model\ConfigData(); $configInfo = $configModel->getData(); - $expireDay = $configInfo['contract_day'] ? : '7'; + $expireDay = $configInfo['contract_day'] ?: '7'; // 合同到期不提醒 if (empty($configInfo['contract_config'])) return resultArray(['data' => []]); $param['owner_user_id'] = $userInfo['id']; if ($isSub) { - $param['owner_user_id'] = array('in',getSubUserId(false)); + $param['owner_user_id'] = array('in', getSubUserId(false)); } switch ($type) { case '1' : - $param['end_time'] = array('between',array(date('Y-m-d',time()),date('Y-m-d',time()+86400*$expireDay))); + $param['end_time'] = array('between', array(date('Y-m-d', time()), date('Y-m-d', time() + 86400 * $expireDay))); $param['expire_remind'] = 0; break; - case '2' : $param['end_time'] = array('lt',date('Y-m-d',time())); break; + case '2' : + $param['end_time'] = array('lt', date('Y-m-d', time())); + break; } $data = $contractModel->getDataList($param); // p($contractModel->getLastSql()); @@ -501,41 +552,70 @@ class Message extends ApiCommon } return $data; } - + /** - * 待进入客户池 + * 新增商机 + * @return * @author Michael_xu + */ + public function newBusiness($getCount = false) + { + $param = $this->param; + $userInfo = $this->userInfo; + $types = $param['types']; + $type = $param['type'] ?: 1; + $isSub = $param['isSub'] ?: ''; + if ($getCount == true) $param['getCount'] = 1; + unset($param['types']); + unset($param['type']); + unset($param['isSub']); + $businessModel = model('Business'); + $param['owner_user_id'] = $userInfo['id']; + if ($isSub) { + $param['owner_user_id'] = array('in', getSubUserId(false)); + } + $data = $businessModel->getDataList($param); +// p($contractModel->getLastSql()); + if ($types == 'list') { + return resultArray(['data' => $data]); + } + return $data; + } + + /** + * 待进入客户池 * @return + * @author Michael_xu */ public function remindCustomer($getCount = false) { $customerModel = model('Customer'); - + $param = $this->param; $userInfo = $this->userInfo; $types = $param['types']; - $isSub = $param['isSub'] ? : ''; + $isSub = $param['isSub'] ?: ''; if ($getCount == true) $param['getCount'] = 1; unset($param['types']); unset($param['type']); unset($param['isSub']); unset($param['deal_status']); unset($param['owner_user_id']); - + # 负责人 $param['owner_user_id'] = !empty($isSub) ? ['in', getSubUserId(false, 0, $userInfo['id'])] : $userInfo['id']; - + # 是否提醒 $data = []; $remind = db('crm_customer_pool')->where(['status' => 1, 'remind_conf' => 1])->count(); if (!empty($remind)) { - $whereData = $param ? : []; + $whereData = $param ?: []; $whereData['is_remind'] = 1; $whereData['user_id'] = $userInfo['id']; $whereData['pool_remain'] = 0; - $whereData['scene_id'] = db('admin_scene')->where(['types' => 'crm_customer','bydata' => 'me'])->value('scene_id'); + $whereData['scene_id'] = db('admin_scene')->where(['types' => 'crm_customer', 'bydata' => 'me'])->value('scene_id'); if ($isSub) { - $whereData['scene_id'] = db('admin_scene')->where(['types' => 'crm_customer','bydata' => 'sub'])->value('scene_id'); + $whereData['scene_id'] = db('admin_scene')->where(['types' => 'crm_customer', 'bydata' => 'sub'])->value('scene_id'); } $data = $customerModel->getDataList($whereData); } @@ -544,7 +624,7 @@ class Message extends ApiCommon } return $data; } - + /** * 待回访合同 * @@ -556,30 +636,30 @@ class Message extends ApiCommon */ public function visitContract($getCount = false) { - $param = $this->param; - $userId = $this->userInfo['id']; - $isSub = !empty($param['isSub']) ? $param['isSub'] : 0; - $types = !empty($param['types']) ? $param['types'] : ''; + $param = $this->param; + $userId = $this->userInfo['id']; + $isSub = !empty($param['isSub']) ? $param['isSub'] : 0; + $types = !empty($param['types']) ? $param['types'] : ''; if ($getCount == true) $param['getCount'] = 1; unset($param['isSub']); unset($param['types']); - - $param['is_visit'] = 0; # 未回访 + + $param['is_visit'] = 0; # 未回访 $param['check_status'] = 2; # 审核通过 - + $contractModel = new \app\crm\model\Contract(); - + # 负责人 $param['owner_user_id'] = !empty($isSub) ? ['in', getSubUserId(false)] : $userId; - + $param['user_id'] = $userId; $data = $contractModel->getDataList($param); - + if ($types == 'list') return resultArray(['data' => $data]); - + return $data; } - + /** * 全部标记已处理 * @@ -589,16 +669,16 @@ class Message extends ApiCommon */ public function allDeal() { - $type = $this->param['type']; + $type = $this->param['type']; $typeId = !empty($this->param['type_id']) ? $this->param['type_id'] : ''; - $isSub = !empty($this->param['isSub']) ? $this->param['isSub'] : 0; + $isSub = !empty($this->param['isSub']) ? $this->param['isSub'] : 0; $userId = $this->userInfo['id']; - + if (empty($type)) return resultArray(['error' => '缺少模块类型参数']); - + # 获得今日开始和结束时间戳 $todayTime = getTimeByType('today'); - + # 处理今日需联系线索、客户、商机 if (in_array($type, ['todayLeads', 'todayCustomer', 'todayBusiness'])) { # 负责人 @@ -607,14 +687,14 @@ class Message extends ApiCommon $where['next_time'] = ['between', [$todayTime[0], $todayTime[1]]]; # 是否已处理(联系) $where['is_dealt'] = 0; - + # 线索 if ($type == 'todayLeads') { $leadsId = !empty($typeId) ? $typeId : Db::name('crm_leads')->where($where)->column('leads_id'); Db::name('crm_leads')->whereIn('leads_id', $leadsId)->update([ 'last_time' => time(), - 'is_dealt' => 1, - 'follow' => '已跟进' + 'is_dealt' => 1, + 'follow' => '已跟进' ]); } # 客户 @@ -622,8 +702,8 @@ class Message extends ApiCommon $customerId = !empty($typeId) ? $typeId : Db::name('crm_customer')->where($where)->column('customer_id'); Db::name('crm_customer')->whereIn('customer_id', $customerId)->update([ 'last_time' => time(), - 'is_dealt' => 1, - 'follow' => '已跟进' + 'is_dealt' => 1, + 'follow' => '已跟进' ]); } # 商机 @@ -631,17 +711,17 @@ class Message extends ApiCommon $businessId = !empty($typeId) ? $typeId : Db::name('crm_business')->where($where)->column('business_id'); Db::name('crm_business')->whereIn('business_id', $businessId)->update([ 'last_time' => time(), - 'is_dealt' => 1 + 'is_dealt' => 1 ]); } } - + # 处理分配给我的线索、客户 if (in_array($type, ['followLeads', 'followCustomer'])) { $where['owner_user_id'] = $userId; - $where['follow'] = [['neq','已跟进'], null, 'or']; + $where['follow'] = [['neq', '已跟进'], null, 'or']; $where['is_allocation'] = 1; - + # 线索 if ($type == 'followLeads') { $leadsId = !empty($typeId) ? $typeId : Db::name('crm_leads')->where($where)->column('leads_id'); @@ -653,12 +733,12 @@ class Message extends ApiCommon Db::name('crm_customer')->whereIn('customer_id', $customerId)->update(['follow' => '已跟进']); } } - + # 处理待审核合同、回款、发票 if (in_array($type, ['checkContract', 'checkReceivables', 'checkInvoice'])) { - $where['check_status'] = ['lt','2']; - $where['check_user_id'] = ['like',',%' . $userId . '%,']; - + $where['check_status'] = ['lt', '2']; + $where['check_user_id'] = ['like', ',%' . $userId . '%,']; + # 合同 if ($type == 'checkContract') { $contractId = !empty($typeId) ? $typeId : Db::name('crm_contract')->where($where)->column('contract_id'); @@ -674,33 +754,33 @@ class Message extends ApiCommon $invoiceId = !empty($typeId) ? $typeId : Db::name('crm_invoice')->where($where)->column('invoice_id'); db('crm_dealt_relation')->where('user_id', $userId)->where('types', 'crm_invoice')->whereIn('types_id', $invoiceId)->delete(); } - + } - + # 处理到期合同 if ($type == 'endContract') { $configModel = new \app\crm\model\ConfigData(); - $configInfo = $configModel->getData(); - $expireDay = $configInfo['contract_day'] ? : '7'; - + $configInfo = $configModel->getData(); + $expireDay = $configInfo['contract_day'] ?: '7'; + $where['owner_user_id'] = $userId; - $where['end_time'] = ['between', [date('Y-m-d',time()), date('Y-m-d',time()+86400*$expireDay)]]; + $where['end_time'] = ['between', [date('Y-m-d', time()), date('Y-m-d', time() + 86400 * $expireDay)]]; $where['expire_remind'] = 1; - + $contractId = !empty($typeId) ? $typeId : Db::name('crm_contract')->where($where)->column('contract_id'); Db::name('crm_contract')->whereIn('contract_id', $contractId)->update(['expire_remind' => 0]); } - + # 处理待回访合同 if ($type == 'returnVisitRemind') { $where['owner_user_id'] = !empty($isSub) ? ['in', getSubUserId(false)] : $userId; # 负责人 - $where['is_visit'] = 0; # 未回访 - $where['check_status'] = 2; # 审核通过 - + $where['is_visit'] = 0; # 未回访 + $where['check_status'] = 2; # 审核通过 + $contractId = !empty($typeId) ? $typeId : Db::name('crm_contract')->where($where)->column('contract_id'); Db::name('crm_contract')->whereIn('contract_id', $contractId)->update(['is_visit' => 1]); } - + # 处理待进入公海 if ($type == 'putInPoolRemind') { if (!empty($typeId)) { @@ -713,66 +793,67 @@ class Message extends ApiCommon $whereData['is_remind'] = 1; $whereData['user_id'] = $userId; $whereData['pool_remain'] = 0; - $whereData['scene_id'] = db('admin_scene')->where(['types' => 'crm_customer','bydata' => empty($isSub) ? 'me' : 'sub'])->value('scene_id'); + $whereData['scene_id'] = db('admin_scene')->where(['types' => 'crm_customer', 'bydata' => empty($isSub) ? 'me' : 'sub'])->value('scene_id'); $whereData['owner_user_id'] = !empty($isSub) ? ['in', getSubUserId(false, 0, $userId)] : $userId; $poolCustomers = (new \app\crm\model\Customer())->getDataList($whereData); $ids = []; - foreach ($poolCustomers['list'] AS $key => $value) { + foreach ($poolCustomers['list'] as $key => $value) { if (!empty($value['customer_id'])) $ids[] = $value['customer_id']; } if (!empty($ids)) Db::name('crm_customer')->whereIn('customer_id', $ids)->update(['pool_remain' => 1]); } } } - + # 带回款提醒 if ($type == 'remindReceivablesPlan') { $planId = []; if (!empty($typeId)) { $planId = $typeId; } else { - $param['owner_user_id'] = $isSub ? ['in',getSubUserId(false)] : $userId; + $param['owner_user_id'] = $isSub ? ['in', getSubUserId(false)] : $userId; $param['receivables_id'] = 0; - $param['check_status'] = ['lt', 2]; - $param['remind_date'] = ['elt', date('Y-m-d',time())]; - $param['return_date'] = ['egt', date('Y-m-d',time())]; - $param['types'] = 1; - $param['page'] = 1; - $param['limit'] = 1000; - $receivablesPlanModel = model('ReceivablesPlan'); + $param['check_status'] = ['lt', 2]; + $param['remind_date'] = ['elt', date('Y-m-d', time())]; + $param['return_date'] = ['egt', date('Y-m-d', time())]; + $param['types'] = 1; + $param['page'] = 1; + $param['limit'] = 1000; + $receivablesPlanModel = model('ReceivablesPlan'); $data = $receivablesPlanModel->getDataList($param); - foreach ($data['list'] AS $key => $value) { + foreach ($data['list'] as $key => $value) { $planId[] = $value['plan_id']; } } if (!empty($planId)) db('crm_receivables_plan')->whereIn('plan_id', $planId)->update(['is_dealt' => 1]); } - - cache::rm('todayLeadsCount'.$userId); - cache::rm('todayCustomerCount'.$userId); - cache::rm('todayBusinessCount'.$userId); - cache::rm('followLeadsCount'.$userId); - cache::rm('followCustomerCount'.$userId); - cache::rm('checkContractCount'.$userId); - cache::rm('checkReceivablesCount'.$userId); - cache::rm('checkInvoiceCount'.$userId); - cache::rm('remindReceivablesPlanCount'.$userId); - cache::rm('visitContractCount'.$userId); - cache::rm('endContractCount'.$userId); - cache::rm('remindCustomerCount'.$userId); - - cache::rm('todayLeadsTime'.$userId); - cache::rm('todayCustomerTime'.$userId); - cache::rm('todayBusinessTime'.$userId); - cache::rm('followLeadsTime'.$userId); - cache::rm('followCustomerTime'.$userId); - cache::rm('checkContractTime'.$userId); - cache::rm('checkReceivablesTime'.$userId); - cache::rm('checkInvoiceTime'.$userId); - cache::rm('remindReceivablesPlanTime'.$userId); - cache::rm('visitContractTime'.$userId); - cache::rm('endContractTime'.$userId); - cache::rm('remindCustomerTime'.$userId); + + cache::rm('todayLeadsCount' . $userId); + cache::rm('todayCustomerCount' . $userId); + cache::rm('todayBusinessCount' . $userId); + cache::rm('followLeadsCount' . $userId); + cache::rm('followCustomerCount' . $userId); + cache::rm('checkContractCount' . $userId); + cache::rm('checkReceivablesCount' . $userId); + cache::rm('checkInvoiceCount' . $userId); + cache::rm('remindReceivablesPlanCount' . $userId); + cache::rm('visitContractCount' . $userId); + cache::rm('endContractCount' . $userId); + cache::rm('remindCustomerCount' . $userId); + + cache::rm('todayLeadsTime' . $userId); + cache::rm('todayCustomerTime' . $userId); + cache::rm('todayBusinessTime' . $userId); + cache::rm('followLeadsTime' . $userId); + cache::rm('followCustomerTime' . $userId); + cache::rm('checkContractTime' . $userId); + cache::rm('checkReceivablesTime' . $userId); + cache::rm('checkInvoiceTime' . $userId); + cache::rm('checkBusinessTime' . $userId); + cache::rm('remindReceivablesPlanTime' . $userId); + cache::rm('visitContractTime' . $userId); + cache::rm('endContractTime' . $userId); + cache::rm('remindCustomerTime' . $userId); return resultArray(['data' => '操作成功!']); } } \ No newline at end of file diff --git a/application/crm/logic/MessageLogic.php b/application/crm/logic/MessageLogic.php index 5a902dc..6954442 100644 --- a/application/crm/logic/MessageLogic.php +++ b/application/crm/logic/MessageLogic.php @@ -167,6 +167,25 @@ class MessageLogic extends Common $data = (new InvoiceLogic())->index($request); return $data; } + + /** + *待审核商机 + * + * @author alvin guogaobo + * @version 1.0 版本号 + * @since 2021/5/26 0026 13:35 + */ + public function checkBusiness($param){ + $type = !empty($param['type']) ? $param['type'] : 1; + $isSub = 1; + unset($param['type']); + $businessModel = model('Business'); + $request = $this->whereCheck($param, $type,$isSub); + $request['isMessage'] = true; + $data = $businessModel->getDataList($request); + return $data; + } + /** * 审批查询条件 * @param $param diff --git a/application/crm/model/Business.php b/application/crm/model/Business.php index 794498b..11e091c 100644 --- a/application/crm/model/Business.php +++ b/application/crm/model/Business.php @@ -49,6 +49,7 @@ class Business extends Common $businessTypeId = $request['typesId']; // 针对mobile $businessStatusId = $request['statusId']; // 针对mobile $overdue = $request['overdue']; // 待办事项下需联系商机(逾期) + $isMessage = !empty($request['isMessage']); unset($request['scene_id']); unset($request['search']); unset($request['user_id']); @@ -60,6 +61,7 @@ class Business extends Common unset($request['typesId']); unset($request['statusId']); unset($request['overdue']); + unset($request['isMessage']); $request = $this->fmtRequest($request); $requestMap = $request['map'] ?: []; $sceneModel = new \app\admin\model\Scene(); @@ -80,28 +82,28 @@ class Business extends Common } if (isset($requestMap['type_id'])) { $requestMap['type_id']['value'] = $requestMap['type_id']['type_id']; - if(in_array($requestMap['type_id']['status_id'],[1,2,3])){ - $requestMap['is_end']=$requestMap['type_id']['status_id']; - }else{ + if (in_array($requestMap['type_id']['status_id'], [1, 2, 3])) { + $requestMap['is_end'] = $requestMap['type_id']['status_id']; + } else { if ($requestMap['type_id']['status_id']) $requestMap['status_id']['value'] = $requestMap['type_id']['status_id']; - $requestMap['is_end']=0; + $requestMap['is_end'] = 0; } } if ($sceneMap['type_id']) { $requestMap['type_id']['value'] = $sceneMap['type_id']['type_id']; - if(in_array($sceneMap['type_id']['status_id'],[1,2,3])){ - $sceneMap['is_end']=$sceneMap['type_id']['status_id']; - }else{ + if (in_array($sceneMap['type_id']['status_id'], [1, 2, 3])) { + $sceneMap['is_end'] = $sceneMap['type_id']['status_id']; + } else { if ($sceneMap['type_id']['status_id']) $requestMap['status_id']['value'] = $sceneMap['type_id']['status_id']; - $sceneMap['is_end']=0; + $sceneMap['is_end'] = 0; } unset($sceneMap['type_id']); } $partMap = []; - $teamMap=$requestMap['team_id']; + $teamMap = $requestMap['team_id']; //团队成员 高级筛选 - if($teamMap){ - $partMap= advancedQueryFormatForTeam($teamMap,'business',''); + if ($teamMap) { + $partMap = advancedQueryFormatForTeam($teamMap, 'business', ''); unset($requestMap['team_id']); $map = $requestMap ? array_merge($sceneMap, $requestMap) : $sceneMap; } else { @@ -110,22 +112,23 @@ class Business extends Common //高级筛选 $map = advancedQuery($map, 'crm', 'business', 'index'); $authMap = []; - $a = 'index'; - if ($is_excel) $a = 'excelExport'; - $auth_user_ids = $userModel->getUserByPer('crm', 'business', $a); - if (isset($map['business.owner_user_id'])) { - if (!is_array($map['business.owner_user_id'][1])) { - $map['business.owner_user_id'][1] = [$map['business.owner_user_id'][1]]; - } - if (in_array($map['business.owner_user_id'][0], ['neq', 'notin'])) { - $auth_user_ids = array_diff($auth_user_ids, $map['business.owner_user_id'][1]) ?: []; //取差集 - } else { - $auth_user_ids = array_intersect($map['business.owner_user_id'][1], $auth_user_ids) ?: []; //取交集 - } - unset($map['business.owner_user_id']); - $auth_user_ids = array_merge(array_unique(array_filter($auth_user_ids))) ?: ['-1']; - $authMap['business.owner_user_id'] = array('in', $auth_user_ids); + $a = 'index'; + if ($is_excel) $a = 'excelExport'; + $auth_user_ids = $userModel->getUserByPer('crm', 'business', $a); + if (isset($map['business.owner_user_id'])) { + if (!is_array($map['business.owner_user_id'][1])) { + $map['business.owner_user_id'][1] = [$map['business.owner_user_id'][1]]; + } + if (in_array($map['business.owner_user_id'][0], ['neq', 'notin'])) { + $auth_user_ids = array_diff($auth_user_ids, $map['business.owner_user_id'][1]) ?: []; //取差集 } else { + $auth_user_ids = array_intersect($map['business.owner_user_id'][1], $auth_user_ids) ?: []; //取交集 + } + unset($map['business.owner_user_id']); + $auth_user_ids = array_merge(array_unique(array_filter($auth_user_ids))) ?: ['-1']; + $authMap['business.owner_user_id'] = array('in', $auth_user_ids); + } else { + if (!$isMessage) { $authMapData = []; $authMapData['auth_user_ids'] = $auth_user_ids; $authMapData['user_id'] = $user_id; @@ -135,6 +138,7 @@ class Business extends Common ->whereOr('business.rw_user_id', array('like', '%,' . $authMapData['user_id'] . ',%')); }; } + } //联系人商机 if ($contacts_id) { @@ -167,22 +171,22 @@ class Business extends Common } else { $order = 'business.update_time desc'; } - + # 商机组和商机状态搜索 - if (!empty($businessTypeId)) $map['business.type_id'] = ['eq', $businessTypeId]; + if (!empty($businessTypeId)) $map['business.type_id'] = ['eq', $businessTypeId]; if (!empty($businessStatusId)) { - if(preg_match("/^[1-9][0-9]*$/" ,$businessStatusId)){ - $map['is_end']=0; + if (preg_match("/^[1-9][0-9]*$/", $businessStatusId)) { + $map['is_end'] = 0; $map['business.status_id'] = ['eq', $businessStatusId]; - }else{ - $map['is_end']=abs($businessStatusId); + } else { + $map['is_end'] = abs($businessStatusId); } } // 待办事项下需联系商机(逾期) $overdueWhere = ''; if (!empty($overdue)) { - $overdueWhere = "(FROM_UNIXTIME(`business`.`last_time`,'%Y-%m-%d') < FROM_UNIXTIME(`business`.`next_time`,'%Y-%m-%d') OR (ISNULL(`business`.`last_time`) AND `business`.`next_time` < ".time()."))"; + $overdueWhere = "(FROM_UNIXTIME(`business`.`last_time`,'%Y-%m-%d') < FROM_UNIXTIME(`business`.`next_time`,'%Y-%m-%d') OR (ISNULL(`business`.`last_time`) AND `business`.`next_time` < " . time() . "))"; } $readAuthIds = $userModel->getUserByPer('crm', 'business', 'read'); @@ -215,7 +219,7 @@ class Business extends Common # 扩展数据 $extraData = []; - $list=getFieldData($list,'crm_business',$user_id); + $list = getFieldData($list, 'crm_business', $user_id); foreach ($list as $k => $v) { $list[$k]['customer_id_info']['customer_id'] = $v['customer_id']; $list[$k]['customer_id_info']['name'] = $v['customer_name']; @@ -310,31 +314,31 @@ class Business extends Common // 处理日期(date)类型 $dateField = $fieldModel->getFieldByFormType('crm_business', 'date'); if (!empty($dateField)) { - foreach ($param AS $key => $value) { + foreach ($param as $key => $value) { if (in_array($key, $dateField) && empty($value)) $param[$key] = null; } } // 处理手写签名类型 $handwritingField = $fieldModel->getFieldByFormType('crm_business', 'handwriting_sign'); if (!empty($handwritingField)) { - foreach ($param AS $key => $value) { + foreach ($param as $key => $value) { if (in_array($key, $handwritingField)) { $param[$key] = !empty($value['file_id']) ? $value['file_id'] : ''; } } } // 处理地址、定位、日期区间、明细表格类型字段 - $positionField = $fieldModel->getFieldByFormType($this->name, 'position'); - $locationField = $fieldModel->getFieldByFormType($this->name, 'location'); + $positionField = $fieldModel->getFieldByFormType($this->name, 'position'); + $locationField = $fieldModel->getFieldByFormType($this->name, 'location'); $dateIntervalField = $fieldModel->getFieldByFormType($this->name, 'date_interval'); - $detailTableField = $fieldModel->getFieldByFormType($this->name, 'detail_table'); - foreach ($param AS $key => $value) { + $detailTableField = $fieldModel->getFieldByFormType($this->name, 'detail_table'); + foreach ($param as $key => $value) { // 处理地址类型字段数据 if (in_array($key, $positionField)) { if (!empty($value)) { $businessData[] = [ - 'field' => $key, - 'content' => json_encode($value, JSON_NUMERIC_CHECK), + 'field' => $key, + 'content' => json_encode($value, JSON_NUMERIC_CHECK), 'create_time' => time() ]; $positionNames = array_column($value, 'name'); @@ -347,8 +351,8 @@ class Business extends Common if (in_array($key, $locationField)) { if (!empty($value)) { $businessData[] = [ - 'field' => $key, - 'content' => json_encode($value, JSON_NUMERIC_CHECK), + 'field' => $key, + 'content' => json_encode($value, JSON_NUMERIC_CHECK), 'create_time' => time() ]; $param[$key] = $value['address']; @@ -360,8 +364,8 @@ class Business extends Common if (in_array($key, $dateIntervalField)) { if (!empty($value)) { $businessData[] = [ - 'field' => $key, - 'content' => json_encode($value, JSON_NUMERIC_CHECK), + 'field' => $key, + 'content' => json_encode($value, JSON_NUMERIC_CHECK), 'create_time' => time() ]; $param[$key] = implode('_', $value); @@ -373,8 +377,8 @@ class Business extends Common if (in_array($key, $detailTableField)) { if (!empty($value)) { $businessData[] = [ - 'field' => $key, - 'content' => json_encode($value, JSON_NUMERIC_CHECK), + 'field' => $key, + 'content' => json_encode($value, JSON_NUMERIC_CHECK), 'create_time' => time() ]; $param[$key] = $key; @@ -391,7 +395,7 @@ class Business extends Common $param['discount_rate'] = $param['discount_rate'] ?: '0.00'; if ($this->data($param)->allowField(true)->save()) { updateActionLog($param['create_user_id'], 'crm_business', $this->business_id, '', '', '创建了商机'); - RecordActionLog($param['create_user_id'],'crm_business','save',$param['name'],'','','新增了商机'.$param['name']); + RecordActionLog($param['create_user_id'], 'crm_business', 'save', $param['name'], '', '', '新增了商机' . $param['name']); $business_id = $this->business_id; $data['business_id'] = $business_id; if ($param['product']) { @@ -480,31 +484,31 @@ class Business extends Common // 处理日期(date)类型 $dateField = $fieldModel->getFieldByFormType('crm_business', 'date'); if (!empty($dateField)) { - foreach ($param AS $key => $value) { + foreach ($param as $key => $value) { if (in_array($key, $dateField) && empty($value)) $param[$key] = null; } } // 处理手写签名类型 $handwritingField = $fieldModel->getFieldByFormType('crm_business', 'handwriting_sign'); if (!empty($handwritingField)) { - foreach ($param AS $key => $value) { + foreach ($param as $key => $value) { if (in_array($key, $handwritingField)) { $param[$key] = !empty($value['file_id']) ? $value['file_id'] : ''; } } } // 处理地址、定位、日期区间、明细表格类型字段 - $positionField = $fieldModel->getFieldByFormType($this->name, 'position'); - $locationField = $fieldModel->getFieldByFormType($this->name, 'location'); + $positionField = $fieldModel->getFieldByFormType($this->name, 'position'); + $locationField = $fieldModel->getFieldByFormType($this->name, 'location'); $dateIntervalField = $fieldModel->getFieldByFormType($this->name, 'date_interval'); - $detailTableField = $fieldModel->getFieldByFormType($this->name, 'detail_table'); - foreach ($param AS $key => $value) { + $detailTableField = $fieldModel->getFieldByFormType($this->name, 'detail_table'); + foreach ($param as $key => $value) { // 处理地址类型字段数据 if (in_array($key, $positionField)) { if (!empty($value)) { $businessData[] = [ - 'field' => $key, - 'content' => json_encode($value, JSON_NUMERIC_CHECK), + 'field' => $key, + 'content' => json_encode($value, JSON_NUMERIC_CHECK), 'create_time' => time() ]; $positionNames = array_column($value, 'name'); @@ -517,8 +521,8 @@ class Business extends Common if (in_array($key, $locationField)) { if (!empty($value)) { $businessData[] = [ - 'field' => $key, - 'content' => json_encode($value, JSON_NUMERIC_CHECK), + 'field' => $key, + 'content' => json_encode($value, JSON_NUMERIC_CHECK), 'create_time' => time() ]; $param[$key] = $value['address']; @@ -530,8 +534,8 @@ class Business extends Common if (in_array($key, $dateIntervalField)) { if (!empty($value)) { $businessData[] = [ - 'field' => $key, - 'content' => json_encode($value, JSON_NUMERIC_CHECK), + 'field' => $key, + 'content' => json_encode($value, JSON_NUMERIC_CHECK), 'create_time' => time() ]; $param[$key] = implode('_', $value); @@ -543,8 +547,8 @@ class Business extends Common if (in_array($key, $detailTableField)) { if (!empty($value)) { $businessData[] = [ - 'field' => $key, - 'content' => json_encode($value, JSON_NUMERIC_CHECK), + 'field' => $key, + 'content' => json_encode($value, JSON_NUMERIC_CHECK), 'create_time' => time() ]; $param[$key] = $key; @@ -572,7 +576,7 @@ class Business extends Common $resProduct = $productModel->createObject('crm_business', $param, $business_id); //修改记录 updateActionLog($param['user_id'], 'crm_business', $business_id, $dataInfo, $param); - RecordActionLog($param['user_id'], 'crm_business', 'update',$dataInfo['name'], $dataInfo, $param); + RecordActionLog($param['user_id'], 'crm_business', 'update', $dataInfo['name'], $dataInfo, $param); // 添加商机扩展数据 db('crm_business_data')->where('business_id', $business_id)->delete(); array_walk($businessData, function (&$val) use ($business_id) { @@ -598,38 +602,38 @@ class Business extends Common * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ - public function getDataById($id = '', $userId = 0,$model='') + public function getDataById($id = '', $userId = 0, $model = '') { $dataInfo = db('crm_business')->where('business_id', $id)->find(); if (!$dataInfo) { $this->error = '暂无此数据'; return false; } - if(empty($model) && $model!='update'){ + if (empty($model) && $model != 'update') { $grantData = getFieldGrantData($userId); foreach ($grantData['crm_business'] as $key => $value) { foreach ($value as $ke => $va) { - if($va['maskType']!=0){ + if ($va['maskType'] != 0) { $fieldGrant[$ke]['maskType'] = $va['maskType']; $fieldGrant[$ke]['form_type'] = $va['form_type']; $fieldGrant[$ke]['field'] = $va['field']; } } } - foreach ($fieldGrant AS $key => $val){ + foreach ($fieldGrant as $key => $val) { //掩码相关类型字段 - if ($val['maskType']!=0 && $val['form_type'] == 'mobile') { + if ($val['maskType'] != 0 && $val['form_type'] == 'mobile') { $pattern = "/(1[3458]{1}[0-9])[0-9]{4}([0-9]{4})/i"; $rs = preg_replace($pattern, "$1****$2", $dataInfo[$val['field']]); $dataInfo[$val['field']] = !empty($dataInfo[$val['field']]) ? (string)$rs : null; - } elseif ($val['maskType']!=0 && $val['form_type'] == 'email') { + } elseif ($val['maskType'] != 0 && $val['form_type'] == 'email') { $email_array = explode("@", $dataInfo[$val['field']]); $prevfix = (strlen($email_array[0]) < 4) ? "" : substr($dataInfo[$val['field']], 0, 2); //邮箱前缀 $str = preg_replace('/([\d\w+_-]{0,100})@/', "***@", $dataInfo[$val['field']], -1, $count); $rs = $prevfix . $str; - $dataInfo[$val['field']] = !empty($dataInfo[$val['field']]) ?$rs: null; - } elseif ($val['maskType']!=0 && in_array($val['form_type'],['position','floatnumber'])) { - $dataInfo[$val['field']] = !empty($dataInfo[$val['field']]) ? (string)substr_replace($dataInfo[$val['field']], '*****',0,strlen($dataInfo[$val['field']])) : null; + $dataInfo[$val['field']] = !empty($dataInfo[$val['field']]) ? $rs : null; + } elseif ($val['maskType'] != 0 && in_array($val['form_type'], ['position', 'floatnumber'])) { + $dataInfo[$val['field']] = !empty($dataInfo[$val['field']]) ? (string)substr_replace($dataInfo[$val['field']], '*****', 0, strlen($dataInfo[$val['field']])) : null; } } } @@ -654,8 +658,8 @@ class Business extends Common foreach ($datetimeField as $key => $val) { $dataInfo[$val] = !empty($dataInfo[$val]) ? date('Y-m-d H:i:s', $dataInfo[$val]) : null; } - if($dataInfo['is_end']!=1){ - $dataInfo['statusRemark']=db('crm_business_log')->where(['business_id'=>$id,'is_end'=>$dataInfo['is_end']])->value('remark'); + if ($dataInfo['is_end'] != 1) { + $dataInfo['statusRemark'] = db('crm_business_log')->where(['business_id' => $id, 'is_end' => $dataInfo['is_end']])->value('remark'); } $dataInfo['next_time'] = !empty($dataInfo['next_time']) ? date('Y-m-d H:i:s', $dataInfo['next_time']) : null; $dataInfo['create_time'] = !empty($dataInfo['create_time']) ? date('Y-m-d H:i:s', $dataInfo['create_time']) : null; @@ -665,7 +669,7 @@ class Business extends Common if (!empty($userId)) { $grantData = getFieldGrantData($userId); $userLevel = isSuperAdministrators($userId); - foreach ($dataInfo AS $key => $value) { + foreach ($dataInfo as $key => $value) { if (!$userLevel && !empty($grantData['crm_business'])) { $status = getFieldGrantStatus($key, $grantData['crm_business']); @@ -712,7 +716,7 @@ class Business extends Common $map['create_time'] = $where['create_time']; $map['owner_user_id'] = ['in', $userIds]; $map['type_id'] = $type_id; - + $sql_a = CrmBusinessModel::field([ 'SUM(CASE WHEN is_end = 1 THEN money ELSE 0 END) AS sum_ying', 'SUM(CASE WHEN is_end = 2 THEN money ELSE 0 END) AS sum_shu', @@ -737,7 +741,7 @@ class Business extends Common ->select(); $res = queryCache($sql, 200); $res = array_column($res, null, 'status_id'); - + $sum_money = 0; $count = 0; # 商机数总和 $moneyCount = 0; # 金额总和 @@ -745,22 +749,22 @@ class Business extends Common $v['count'] = $res[$v['status_id']]['count'] ?: 0; $v['money'] = $res[$v['status_id']]['sum'] ?: 0; $v['status_name'] = $v['name']; - + $statusList[$k] = $v; - + $sum_money += $v['money']; $moneyCount += $v['money']; $count += $v['count']; } - + $data['list'] = $statusList; $data['sum_ying'] = $res_a[0]['sum_ying'] ?: 0; $data['sum_shu'] = $res_a[0]['sum_shu'] ?: 0; - $data['count_ying']=$res_a[0]['count_ying']?:0; - $data['count_shu']=$res_a[0]['count_shu']?:0; + $data['count_ying'] = $res_a[0]['count_ying'] ?: 0; + $data['count_shu'] = $res_a[0]['count_shu'] ?: 0; $data['sum_money'] = $sum_money ?: 0; $data['total'] = ['name' => '合计', 'money_count' => $moneyCount, 'count' => $count]; - + return $data ?: []; } @@ -899,12 +903,12 @@ class Business extends Common public function getSystemInfo($id) { # 商机 - $business = Db::name('crm_business')->field(['create_user_id' ,'owner_user_id', 'create_time', 'update_time', 'last_time'])->where('business_id', $id)->find(); + $business = Db::name('crm_business')->field(['create_user_id', 'owner_user_id', 'create_time', 'update_time', 'last_time'])->where('business_id', $id)->find(); # 创建人 $realname = Db::name('admin_user')->where('id', $business['create_user_id'])->value('realname'); - + # zjf 20210726 - $userModel = new \app\admin\model\User(); + $userModel = new \app\admin\model\User(); $ownerUserInfo = $userModel->getUserById($business['owner_user_id']); # 负责人部门 $ownerStructureName = $ownerUserInfo['structure_name']; diff --git a/config/route_crm.php b/config/route_crm.php index 973af3a..84ba21f 100644 --- a/config/route_crm.php +++ b/config/route_crm.php @@ -189,6 +189,8 @@ return [ 'crm/business/count' => ['crm/business/count', ['method' => 'POST']], // 【商机】菜单数量 'crm/business/setPrimary' => ['crm/business/setPrimary', ['method' => 'POST']], + // 【商机】审批 + 'crm/business/check' => ['crm/business/check', ['method' => 'POST']], // 【合同】列表 'crm/contract/index' => ['crm/contract/index', ['method' => 'POST']], @@ -301,8 +303,8 @@ return [ 'crm/invoice/resetInvoiceStatus' => ['crm/invoice/resetInvoiceStatus', ['method' => 'POST']], // 【发票】导出 'crm/invoice/excelExport' => ['crm/invoice/excelExport', ['method' => 'POST']], - - + + // 【发票-开户行】列表 'crm/invoiceInfo/index' => ['crm/invoiceInfo/index', ['method' => 'POST']], // 【发票-开户行】详情 @@ -386,7 +388,7 @@ return [ 'crm/index/autoNumberStatus' => ['crm/index/autoNumberStatus', ['method' => 'POST']], // 【商机阶段列表】 'crm/index/businessList' => ['crm/index/businessList', ['method' => 'POST']], - + // 【获取仪表盘布局】 'crm/index/dashboard' => ['crm/index/dashboard', ['method' => 'POST']], // 【修改仪表盘布局】 @@ -394,20 +396,22 @@ return [ // 【待办事项】今日需联系 - 'crm/message/todayLeads' => ['crm/message/todayLeads', ['method' => 'POST']], - 'crm/message/todayCustomer' => ['crm/message/todayCustomer', ['method' => 'POST']], - 'crm/message/todayBusiness' => ['crm/message/todayBusiness', ['method' => 'POST']], - 'crm/message/num' => ['crm/message/num', ['method' => 'POST']], - 'crm/message/followLeads' => ['crm/message/followLeads', ['method' => 'POST']], - 'crm/message/followCustomer' => ['crm/message/followCustomer', ['method' => 'POST']], - 'crm/message/checkContract' => ['crm/message/checkContract', ['method' => 'POST']], - 'crm/message/checkReceivables' => ['crm/message/checkReceivables', ['method' => 'POST']], + 'crm/message/todayLeads' => ['crm/message/todayLeads', ['method' => 'POST']], + 'crm/message/todayCustomer' => ['crm/message/todayCustomer', ['method' => 'POST']], + 'crm/message/todayBusiness' => ['crm/message/todayBusiness', ['method' => 'POST']], + 'crm/message/num' => ['crm/message/num', ['method' => 'POST']], + 'crm/message/followLeads' => ['crm/message/followLeads', ['method' => 'POST']], + 'crm/message/followCustomer' => ['crm/message/followCustomer', ['method' => 'POST']], + 'crm/message/checkContract' => ['crm/message/checkContract', ['method' => 'POST']], + 'crm/message/checkReceivables' => ['crm/message/checkReceivables', ['method' => 'POST']], 'crm/message/remindReceivablesPlan' => ['crm/message/remindReceivablesPlan', ['method' => 'POST']], - 'crm/message/endContract' => ['crm/message/endContract', ['method' => 'POST']], - 'crm/message/remindCustomer' => ['crm/message/remindCustomer', ['method' => 'POST']], - 'crm/message/checkInvoice' => ['crm/message/checkInvoice', ['method' => 'POST']], - 'crm/message/visitContract' => ['crm/message/visitContract', ['method' => 'POST']], - 'crm/message/allDeal' => ['crm/message/allDeal', ['method' => 'POST']], + 'crm/message/endContract' => ['crm/message/endContract', ['method' => 'POST']], + 'crm/message/remindCustomer' => ['crm/message/remindCustomer', ['method' => 'POST']], + 'crm/message/checkInvoice' => ['crm/message/checkInvoice', ['method' => 'POST']], + 'crm/message/checkBusiness' => ['crm/message/checkBusiness', ['method' => 'POST']], + 'crm/message/newBusiness' => ['crm/message/newBusiness', ['method' => 'POST']], + 'crm/message/visitContract' => ['crm/message/visitContract', ['method' => 'POST']], + 'crm/message/allDeal' => ['crm/message/allDeal', ['method' => 'POST']], // 【客户】标记跟进 'crm/customer/setFollow' => ['crm/customer/setFollow', ['method' => 'POST']], @@ -481,14 +485,14 @@ return [ 'crm/preview/previewPdf' => ['crm/preview/previewPdf', ['method' => 'POST']], //【打印】下载打印文件 'crm/printing/down' => ['crm/printing/down', ['method' => 'POST']], - + //跟进记录导入模板 'crm/activity/excelDownload' => ['crm/activity/excelDownload', ['method' => 'POST']], //跟进记录导入 'crm/activity/excelImport' => ['crm/activity/excelImport', ['method' => 'POST']], //跟进记录导出 'crm/activity/excelExport' => ['crm/activity/excelExport', ['method' => 'POST']], - + //市场活动列表 'crm/market/index' => ['crm/market/index', ['method' => 'POST']], //市场活动添加 @@ -517,7 +521,7 @@ return [ 'crm/market/marketGetField' => ['crm/market/marketGetField', ['method' => 'POST']], //【通用】快捷编辑 'crm/common/quickEdit' => ['crm/common/quickEdit', ['method' => 'POST']], - + //手机导航列表 'crm/setting/appMenuConfig' => ['crm/setting/appMenuConfig', ['method' => 'POST']], //办公数量