You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wkcrm/application/crm/logic/MessageLogic.php

273 lines
8.8 KiB

3 years ago
<?php
namespace app\crm\logic;
use app\admin\model\Common;
use app\crm\model\Customer;
use think\Db;
use function foo\func;
class MessageLogic extends Common
{
/**
*
* 今日续联系线索列表
* @param $param
*
* @author alvin guogaobo
* @version 1.0 版本号
* @since 2021/5/24 0024 11:43
*/
public function todayLeads($param)
{
$type = !empty($param['type']) ? $param['type'] : 1;
$isSub = !empty($param['isSub']) ? $param['isSub'] : 0;
$todayTime = getTimeByType('today');
unset($param['type']);
unset($param['isSub']);
$request = $this->where($param, $type, $isSub, $todayTime);
$leadsModel = new \app\crm\model\Leads();
$data = $leadsModel->getDataList($request);
return $data;
}
/**
* 客户
* @param $request
*
* @author alvin guogaobo
* @version 1.0 版本号
* @since 2021/5/25 0025 09:17
*/
public function remindCustomer($param)
{
$type = $param['type'] ?: 1;
$isSub = $param['isSub'] ?: '';
$todayTime = getTimeByType('today');
unset($param['type']);
unset($param['isSub']);
$request = $this->where($param, $type, $isSub, $todayTime);
$customerModel = model('Customer');
$data = $customerModel->getDataList($request);
return $data;
}
/**
*
* @param $param
*
* @author alvin guogaobo
* @version 1.0 版本号
* @since 2021/5/26 0026 10:13
*/
public function todayBusiness($param)
{
$type = !empty($param['type']) ? $param['type'] : 1;
$isSub = !empty($param['isSub']) ? $param['isSub'] : 0;
$todayTime = getTimeByType('today');
unset($param['type']);
unset($param['isSub']);
$request = $this->where($param, $type, $isSub, $todayTime);
$businessModel = new \app\crm\model\Business();
$data = $businessModel->getDataList($request);
return $data;
}
/**
* 分配给我的线索
* @param $param
*
* @author alvin guogaobo
* @version 1.0 版本号
* @since 2021/5/26 0026 10:32
*/
public function followLeads($param)
{
$type = $param['type'] ?: 1;
unset($param['type']);
$request = $this->where($param, $type, '', '');
$leadsModel = model('Leads');
$data = $leadsModel->getDataList($request);
return $data;
}
/**
* 分配给我的客户
* @param $param
*
* @author alvin guogaobo
* @version 1.0 版本号
* @since 2021/5/26 0026 10:36
*/
public function followCustomer($param)
{
$type = $param['type'] ?: 1;
$isSub = $param['isSub'] ?: '';
unset($param['type']);
unset($param['isSub']);
$request = $this->where($param, $type, $isSub, '');
unset($param['user_id']);
$customerModel = model('Customer');
$data = $customerModel->getDataList($request);
return $data;
}
/**
* @param $param
*
* @author alvin guogaobo
* @version 1.0 版本号
* @since 2021/5/26 0026 11:42
*/
public function checkContract($param)
{
$type = $param['type'] ?: 1;
unset($param['type']);
$contractModel = model('Contract');
$request = $this->whereCheck($param, $type);
$request['isMessage'] = true;
$data = $contractModel->getDataList($request);
return $data;
}
/**
* 待审核回款
* @param $param
*
* @author alvin guogaobo
* @version 1.0 版本号
* @since 2021/5/26 0026 11:48
*/
public function checkReceivables($param){
$type = $param['type'] ? : 1;
$isSub = 1;
unset($param['type']);
$receivablesModel = model('Receivables');
$request = $this->whereCheck($param, $type,$isSub);
$request['isMessage'] = true;
$data = $receivablesModel->getDataList($request);
return $data;
}
/**
*待审核发票
*
* @author alvin guogaobo
* @version 1.0 版本号
* @since 2021/5/26 0026 13:35
*/
public function checkInvoice($param){
$type = !empty($param['type']) ? $param['type'] : 1;
$isSub = 2;
# 清除与模型无关的数据
unset($param['type']);
$request = $this->whereCheck($param, $type,$isSub);
$request['isMessage'] = true;
$data = (new InvoiceLogic())->index($request);
return $data;
}
/**
* 审批查询条件
* @param $param
* @param $type
*
* @author alvin guogaobo
* @version 1.0 版本号
* @since 2021/5/26 0026 11:43
*/
public function whereCheck($param, $type,$isSub='')
{
if(empty($isSub)){
switch ($type) {
case '1' :
$param['check_status'] = ['lt', '2'];
$param['check_user_id'] = ['like', '%,' . $param['user_id'] . ',%'];
# 要提醒的合同ID
$contractIdArray = db('crm_dealt_relation')->where(['types' => ['eq', 'crm_contract'], 'user_id' => ['eq', $param['user_id']]])->column('types_id');
$param['contractIdArray'] = !empty($contractIdArray) ? $contractIdArray : -1;
break;
case '2' :
$param['flow_user_id'] = ['like', '%,' . $param['user_id'] . ',%'];
break;
}
}else if($isSub==1){
switch ($type) {
case '1' :
# 待审核、审核中
$param['check_status'] = ['lt','2'];
$param['check_user_id'] = ['like','%,'.$param['user_id'].',%'];
# 要提醒的回款ID
$receivablesIdArray = db('crm_dealt_relation')->where(['types' => ['eq', 'crm_receivables'], 'user_id' => ['eq', $param['user_id']]])->column('types_id');
$param['receivablesIdArray'] = !empty($receivablesIdArray) ? $receivablesIdArray : -1;
break;
case '2' :
# 全部
$param['flow_user_id'] = ['like','%,'.$param['user_id'].',%'];
break;
}
}elseif($isSub==2){
switch ($type) {
case '1' :
# 待审核、审核中
$param['check_status'] = ['lt', 2];
$param['check_user_id'] = ['like', '%,'. $param['user_id'] .',%'];
# 要提醒的发票ID
$invoiceIdArray = db('crm_dealt_relation')->where(['types' => ['eq', 'crm_invoice'], 'user_id' => ['eq', $param['user_id']]])->column('types_id');
$param['invoiceIdArray'] = !empty($invoiceIdArray) ? $invoiceIdArray : -1;
$param['dealt'] = 1;
break;
case '2' :
# 全部
$param['flow_user_id'] = ['like', '%,'. $param['user_id'] .',%'];
$param['dealt'] = 1;
break;
}
}
return $param;
}
/**
* 负责人查询条件
* @param $param
*
* @author alvin guogaobo
* @version 1.0 版本号
* @since 2021/5/24 0024 09:46
*/
public function where($param, $type, $isSub, $todayTime)
{
# 负责人
$param['owner_user_id'] = !empty($isSub) ? ['in', getSubUserId(false, 0, $param['user_id'])] : ['eq', $param['user_id']];
# 类型1今日需联系2已逾期3已联系
if (empty($isSub) && empty($todayTime)) {
switch ($type) {
case '1' :
$param['follow'] = [['neq', '已跟进'], null, 'or'];
$param['is_allocation'] = 1;
break;
case '2' :
$param['follow'] = ['eq', '已跟进'];
$param['is_allocation'] = 1;
break;
}
} else {
switch ($type) {
case '1' :
$param['next_time'] = ['between', [$todayTime[0], $todayTime[1]]];
$param['is_dealt'] = ['neq', 1];
break;
case '2' :
$param['next_time'] = ['between', [1, time()]];
$param['overdue'] = true;
$param['is_dealt'] = ['neq', 1];
break;
case '3' :
$param['last_time'] = ['between', [$todayTime[0], $todayTime[1]]];
break;
}
}
return $param;
}
}