待办事项

pull/6/head
张萌 2 years ago
parent 8a89f22b5a
commit d02ff850de

@ -45,7 +45,7 @@ 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'])) {
@ -56,8 +56,8 @@ class Message extends ApiCommon
/**
* 系统通知
*
* @author Michael_xu
* @return
* @author Michael_xu
*/
public function index()
{
@ -83,144 +83,170 @@ 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() );
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;
} 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());
}
}
@ -241,7 +267,7 @@ class Message extends ApiCommon
unset($param['types']);
$param['user_id'] = $userId;
if ($getCount == true) $param['getCount'] = 1;
$messageLogic= new MessageLogic();
$messageLogic = new MessageLogic();
$data = $messageLogic->todayLeads($param);
@ -266,7 +292,7 @@ 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]);
@ -290,7 +316,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'] = $userId;
$data = $messageLogic->todayBusiness($param);
@ -301,8 +327,8 @@ class Message extends ApiCommon
/**
* 分配给我的线索
* @author Michael_xu
* @return
* @author Michael_xu
*/
public function followLeads($getCount = false)
{
@ -312,7 +338,7 @@ 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]);
@ -322,8 +348,8 @@ class Message extends ApiCommon
/**
* 分配给我的客户
* @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') {
@ -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') {
@ -369,8 +395,8 @@ class Message extends ApiCommon
/**
* 待审核回款
* @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') {
@ -404,7 +430,7 @@ class Message extends ApiCommon
# 清除与模型无关的数据
unset($param['types']);
$param['user_id'] = $userId;
$messageLogic=new MessageLogic();
$messageLogic = new MessageLogic();
$data = $messageLogic->checkInvoice($param);
if ($types == 'list') return resultArray(['data' => $data]);
@ -412,18 +438,41 @@ class Message extends ApiCommon
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;
$userInfo = $this->userInfo;
$types = $param['types'];
$type = $param['type'] ? : 1;
$isSub = $param['isSub'] ? : '';
$type = $param['type'] ?: 1;
$isSub = $param['isSub'] ?: '';
unset($param['types']);
unset($param['type']);
unset($param['isSub']);
@ -463,16 +512,16 @@ class Message extends ApiCommon
/**
* 即将到期合同
* @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());
@ -503,9 +554,38 @@ class Message extends ApiCommon
}
/**
* 待进入客户池
* 新增商机
* @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)
{
@ -514,7 +594,7 @@ class Message extends ApiCommon
$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']);
@ -529,13 +609,13 @@ class Message extends ApiCommon
$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);
}
@ -639,7 +719,7 @@ class Message extends ApiCommon
# 处理分配给我的线索、客户
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;
# 线索
@ -656,8 +736,8 @@ class Message extends ApiCommon
# 处理待审核合同、回款、发票
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') {
@ -681,10 +761,10 @@ class Message extends ApiCommon
if ($type == 'endContract') {
$configModel = new \app\crm\model\ConfigData();
$configInfo = $configModel->getData();
$expireDay = $configInfo['contract_day'] ? : '7';
$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');
@ -713,11 +793,11 @@ 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]);
@ -731,48 +811,49 @@ class Message extends ApiCommon
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['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' => '操作成功!']);
}
}

@ -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

@ -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 {
@ -126,6 +128,7 @@ class Business extends Common
$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) {
@ -171,18 +175,18 @@ class Business extends Common
# 商机组和商机状态搜索
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,14 +314,14 @@ 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'] : '';
}
@ -328,7 +332,7 @@ class Business extends Common
$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) {
foreach ($param as $key => $value) {
// 处理地址类型字段数据
if (in_array($key, $positionField)) {
if (!empty($value)) {
@ -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,14 +484,14 @@ 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'] : '';
}
@ -498,7 +502,7 @@ class Business extends Common
$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) {
foreach ($param as $key => $value) {
// 处理地址类型字段数据
if (in_array($key, $positionField)) {
if (!empty($value)) {
@ -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']);
@ -756,8 +760,8 @@ class Business extends Common
$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];
@ -899,7 +903,7 @@ 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');

@ -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']],
@ -406,6 +408,8 @@ return [
'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']],

Loading…
Cancel
Save