Merge pull request '客户类型公海设置' (#33) from zm into master

Reviewed-on: mengfucius/wkcrm#33
pull/40/head
张萌 2 years ago
commit fa411cad4d

@ -14,9 +14,9 @@ class PoolConfigLogic
* 公海配置列表 * 公海配置列表
* *
* @param array $param page 页码limit 每页条数 * @param array $param page 页码limit 每页条数
* @author fanqi
* @since 2021-03-30
* @return array * @return array
* @since 2021-03-30
* @author fanqi
*/ */
public function getPoolList($param) public function getPoolList($param)
{ {
@ -33,11 +33,11 @@ class PoolConfigLogic
# 统计公海下的客户数量 # 统计公海下的客户数量
$customerData = []; $customerData = [];
$customerList = db('crm_customer_pool_relation')->field(['pool_id', 'count(customer_id) AS customer_count'])->group('pool_id')->select(); $customerList = db('crm_customer_pool_relation')->field(['pool_id', 'count(customer_id) AS customer_count'])->group('pool_id')->select();
foreach ($customerList AS $key => $value) { foreach ($customerList as $key => $value) {
$customerData[$value['pool_id']] = $value['customer_count']; $customerData[$value['pool_id']] = $value['customer_count'];
} }
foreach ($list AS $key => $value) { foreach ($list as $key => $value) {
# 公海管理员 # 公海管理员
$adminUserIds = trim($value['admin_user_ids'], ','); $adminUserIds = trim($value['admin_user_ids'], ',');
$adminUserNames = db('admin_user')->whereIn('id', $adminUserIds)->column('realname'); $adminUserNames = db('admin_user')->whereIn('id', $adminUserIds)->column('realname');
@ -66,9 +66,9 @@ class PoolConfigLogic
* 设置多公海配置 * 设置多公海配置
* *
* @param $param * @param $param
* @author fanqi
* @since 2021-03-30
* @return bool * @return bool
* @since 2021-03-30
* @author fanqi
*/ */
public function setPoolConfig($param) public function setPoolConfig($param)
{ {
@ -111,7 +111,7 @@ class PoolConfigLogic
'department_ids' => !empty($param['department_ids']) ? ',' . $param['department_ids'] . ',' : '', 'department_ids' => !empty($param['department_ids']) ? ',' . $param['department_ids'] . ',' : '',
'status' => 1, 'status' => 1,
'before_owner_conf' => $param['before_owner_conf'], 'before_owner_conf' => $param['before_owner_conf'],
'before_owner_day' => $param['before_owner_day'], 'before_owner_day' => $param['before_owner_day'],
'receive_conf' => $param['receive_conf'], 'receive_conf' => $param['receive_conf'],
'receive_count' => $param['receive_count'], 'receive_count' => $param['receive_count'],
'remind_conf' => $param['remind_conf'], 'remind_conf' => $param['remind_conf'],
@ -161,9 +161,9 @@ class PoolConfigLogic
* 公海配置详情 * 公海配置详情
* *
* @param int $poolId 公海ID * @param int $poolId 公海ID
* @author fanqi
* @since 2021-03-30
* @return array|bool * @return array|bool
* @since 2021-03-30
* @author fanqi
*/ */
public function readPool($poolId) public function readPool($poolId)
{ {
@ -181,7 +181,7 @@ class PoolConfigLogic
$adminUserIds = trim($data['admin_user_ids'], ','); $adminUserIds = trim($data['admin_user_ids'], ',');
$data['admin_user_ids'] = $adminUserIds; $data['admin_user_ids'] = $adminUserIds;
$data['admin_user_info'] = db('admin_user')->field(['id', 'realname', 'thumb_img'])->whereIn('id', $adminUserIds)->select(); $data['admin_user_info'] = db('admin_user')->field(['id', 'realname', 'thumb_img'])->whereIn('id', $adminUserIds)->select();
foreach ($data['admin_user_info'] AS $key => $value) { foreach ($data['admin_user_info'] as $key => $value) {
$data['admin_user_info'][$key]['thumb_img'] = getFullPath($value['thumb_img']); $data['admin_user_info'][$key]['thumb_img'] = getFullPath($value['thumb_img']);
} }
@ -189,7 +189,7 @@ class PoolConfigLogic
$userIds = trim($data['user_ids'], ','); $userIds = trim($data['user_ids'], ',');
$data['user_ids'] = $userIds; $data['user_ids'] = $userIds;
$data['user_info'] = db('admin_user')->field(['id', 'realname', 'thumb_img'])->whereIn('id', $userIds)->select(); $data['user_info'] = db('admin_user')->field(['id', 'realname', 'thumb_img'])->whereIn('id', $userIds)->select();
foreach ($data['user_info'] AS $key => $value) { foreach ($data['user_info'] as $key => $value) {
$data['user_info'][$key]['thumb_img'] = getFullPath($value['thumb_img']); $data['user_info'][$key]['thumb_img'] = getFullPath($value['thumb_img']);
} }
@ -203,7 +203,7 @@ class PoolConfigLogic
# 公海规则 # 公海规则
$data['rule'] = db('crm_customer_pool_rule')->where('pool_id', $data['pool_id'])->select(); $data['rule'] = db('crm_customer_pool_rule')->where('pool_id', $data['pool_id'])->select();
foreach ($data['rule'] AS $key => $value) { foreach ($data['rule'] as $key => $value) {
if (!empty($value['level'])) { if (!empty($value['level'])) {
$data['rule'][$key]['level'] = json_decode($value['level'], true); $data['rule'][$key]['level'] = json_decode($value['level'], true);
$data['rule'][$key]['level_setting'] = json_decode($value['level'], true); $data['rule'][$key]['level_setting'] = json_decode($value['level'], true);
@ -220,9 +220,9 @@ class PoolConfigLogic
* 变更公海配置状态 * 变更公海配置状态
* *
* @param array $param pool_id 公海ID, status 状态1启用、0停用 * @param array $param pool_id 公海ID, status 状态1启用、0停用
* @author fanqi
* @since 2021-03-30
* @return false|int|string * @return false|int|string
* @since 2021-03-30
* @author fanqi
*/ */
public function changePoolStatus($param) public function changePoolStatus($param)
{ {
@ -246,9 +246,9 @@ class PoolConfigLogic
* 删除公海配置 * 删除公海配置
* *
* @param int $poolId 公海ID * @param int $poolId 公海ID
* @author fanqi
* @since 2021-03-30
* @return bool * @return bool
* @since 2021-03-30
* @author fanqi
*/ */
public function deletePool($poolId) public function deletePool($poolId)
{ {
@ -294,9 +294,9 @@ class PoolConfigLogic
* 转移公海客户 * 转移公海客户
* *
* @param array $param source_pool_id 源公海IDtarget_pool_id 目标公海ID * @param array $param source_pool_id 源公海IDtarget_pool_id 目标公海ID
* @author fanqi
* @since 2021-03-30
* @return bool * @return bool
* @since 2021-03-30
* @author fanqi
*/ */
public function transferPool($param) public function transferPool($param)
{ {
@ -313,7 +313,7 @@ class PoolConfigLogic
$diffCustomerIds = array_diff($sourceCustomerIds, $targetCustomerIds); $diffCustomerIds = array_diff($sourceCustomerIds, $targetCustomerIds);
$data = []; $data = [];
foreach ($diffCustomerIds AS $key => $value) { foreach ($diffCustomerIds as $key => $value) {
$data[] = [ $data[] = [
'customer_id' => $value, 'customer_id' => $value,
'pool_id' => $param['target_pool_id'] 'pool_id' => $param['target_pool_id']
@ -340,9 +340,9 @@ class PoolConfigLogic
/** /**
* 获取客户级别列表 * 获取客户级别列表
* *
* @author fanqi
* @since 2021-04-22
* @return array * @return array
* @since 2021-04-22
* @author fanqi
*/ */
public function getCustomerLevel() public function getCustomerLevel()
{ {
@ -357,9 +357,9 @@ class PoolConfigLogic
* 获取公海字段列表 * 获取公海字段列表
* *
* @param array $param pool_id 公海ID * @param array $param pool_id 公海ID
* @author fanqi
* @since 2021-04-29
* @return bool|PDOStatement|string|Collection * @return bool|PDOStatement|string|Collection
* @since 2021-04-29
* @author fanqi
*/ */
public function getPoolFieldList($param) public function getPoolFieldList($param)
{ {
@ -369,75 +369,75 @@ class PoolConfigLogic
$data = db('admin_field')->field(['field', 'name', 'form_type', 'is_hidden', 'is_null', 'is_unique'])->where(['types' => 'crm_customer'])->select(); $data = db('admin_field')->field(['field', 'name', 'form_type', 'is_hidden', 'is_null', 'is_unique'])->where(['types' => 'crm_customer'])->select();
$address = [ $address = [
'field' => 'address', 'field' => 'address',
'name' => '省、市、区/县', 'name' => '省、市、区/县',
'form_type' => 'customer_address', 'form_type' => 'customer_address',
'is_hidden' => 0, 'is_hidden' => 0,
'is_null' => 0, 'is_null' => 0,
'is_unique' => 0, 'is_unique' => 0,
]; ];
$detailAddress = [ $detailAddress = [
'field' => 'detail_address', 'field' => 'detail_address',
'name' => '详细地址', 'name' => '详细地址',
'form_type' => 'text', 'form_type' => 'text',
'is_hidden' => 0, 'is_hidden' => 0,
'is_null' => 0, 'is_null' => 0,
'is_unique' => 0, 'is_unique' => 0,
]; ];
$lastRecord = [ $lastRecord = [
'field' => 'last_record', 'field' => 'last_record',
'name' => '最后跟进记录', 'name' => '最后跟进记录',
'form_type' => 'text', 'form_type' => 'text',
'is_hidden' => 0, 'is_hidden' => 0,
'is_null' => 0, 'is_null' => 0,
'is_unique' => 0, 'is_unique' => 0,
]; ];
$lastTime = [ $lastTime = [
'field' => 'last_time', 'field' => 'last_time',
'name' => '最后跟进时间', 'name' => '最后跟进时间',
'form_type' => 'datetime', 'form_type' => 'datetime',
'is_hidden' => 0, 'is_hidden' => 0,
'is_null' => 0, 'is_null' => 0,
'is_unique' => 0, 'is_unique' => 0,
]; ];
$beforeOwnerUser = [ $beforeOwnerUser = [
'field' => 'before_owner_user_id', 'field' => 'before_owner_user_id',
'name' => '前负责人', 'name' => '前负责人',
'form_type' => 'user', 'form_type' => 'user',
'is_hidden' => 0, 'is_hidden' => 0,
'is_null' => 0, 'is_null' => 0,
'is_unique' => 0, 'is_unique' => 0,
]; ];
$intoPoolTime = [ $intoPoolTime = [
'field' => 'into_pool_time', 'field' => 'into_pool_time',
'name' => '进入公海时间', 'name' => '进入公海时间',
'form_type' => 'datetime', 'form_type' => 'datetime',
'is_hidden' => 0, 'is_hidden' => 0,
'is_null' => 0, 'is_null' => 0,
'is_unique' => 0, 'is_unique' => 0,
]; ];
$createTime = [ $createTime = [
'field' => 'create_time', 'field' => 'create_time',
'name' => '创建时间', 'name' => '创建时间',
'form_type' => 'datetime', 'form_type' => 'datetime',
'is_hidden' => 0, 'is_hidden' => 0,
'is_null' => 0, 'is_null' => 0,
'is_unique' => 0, 'is_unique' => 0,
]; ];
$updateTime = [ $updateTime = [
'field' => 'update_time', 'field' => 'update_time',
'name' => '更新时间', 'name' => '更新时间',
'form_type' => 'datetime', 'form_type' => 'datetime',
'is_hidden' => 0, 'is_hidden' => 0,
'is_null' => 0, 'is_null' => 0,
'is_unique' => 0, 'is_unique' => 0,
]; ];
$createUser = [ $createUser = [
'field' => 'create_user_id', 'field' => 'create_user_id',
'name' => '创建人', 'name' => '创建人',
'form_type' => 'user', 'form_type' => 'user',
'is_hidden' => 0, 'is_hidden' => 0,
'is_null' => 0, 'is_null' => 0,
'is_unique' => 0, 'is_unique' => 0,
]; ];
array_push($data, $address, $detailAddress, $lastRecord, $lastTime, $createTime, $updateTime, $createUser, $beforeOwnerUser, $intoPoolTime); array_push($data, $address, $detailAddress, $lastRecord, $lastTime, $createTime, $updateTime, $createUser, $beforeOwnerUser, $intoPoolTime);
@ -451,15 +451,15 @@ class PoolConfigLogic
* *
* @param array $rules 规则数据 * @param array $rules 规则数据
* @param int $poolId 公海ID * @param int $poolId 公海ID
* @author fanqi
* @since 2021-03-30
* @return array * @return array
* @since 2021-03-30
* @author fanqi
*/ */
private function getPoolRule($rules, $poolId) private function getPoolRule($rules, $poolId)
{ {
$result = []; $result = [];
foreach ($rules AS $key => $value) { foreach ($rules as $key => $value) {
$result[] = [ $result[] = [
'pool_id' => $poolId, 'pool_id' => $poolId,
'type' => $value['type'], 'type' => $value['type'],
@ -467,7 +467,8 @@ class PoolConfigLogic
'business_handle' => $value['business_handle'], 'business_handle' => $value['business_handle'],
'level_conf' => $value['level_conf'], 'level_conf' => $value['level_conf'],
'level' => json_encode($value['level']), 'level' => json_encode($value['level']),
'limit_day' => !empty($value['limit_day']) ? $value['limit_day'] : 0 'limit_day' => !empty($value['limit_day']) ? $value['limit_day'] : 0,
'customer_type'=>$value['customer_type'],
]; ];
} }
@ -479,23 +480,23 @@ class PoolConfigLogic
* *
* @param array $fields 字段列表 * @param array $fields 字段列表
* @param int $poolId 公海ID * @param int $poolId 公海ID
* @author fanqi
* @since 2021-03-30
* @return array * @return array
* @since 2021-03-30
* @author fanqi
*/ */
private function getPoolField($fields, $poolId) private function getPoolField($fields, $poolId)
{ {
$result = []; $result = [];
foreach ($fields AS $key => $value) { foreach ($fields as $key => $value) {
$result[] = [ $result[] = [
'pool_id' => $poolId, 'pool_id' => $poolId,
'name' => $value['name'], 'name' => $value['name'],
'field_name' => $value['field'], 'field_name' => $value['field'],
'form_type' => $value['form_type'], 'form_type' => $value['form_type'],
'is_hidden' => $value['is_hidden'], 'is_hidden' => $value['is_hidden'],
'is_null' => $value['is_null'], 'is_null' => $value['is_null'],
'is_unique' => $value['is_unique'] 'is_unique' => $value['is_unique']
]; ];
} }

@ -23,20 +23,20 @@ class PoolCommand extends Command
{ {
protected $timer; protected $timer;
protected $interval = 10; protected $interval = 10;
protected function configure() protected function configure()
{ {
$this->setName('pool') $this->setName('pool')
->addArgument('status', Argument::REQUIRED, 'start/stop/reload/status/connections') ->addArgument('status', Argument::REQUIRED, 'start/stop/reload/status/connections')
->addOption('d', null, Option::VALUE_NONE, 'daemon守护进程方式启动') ->addOption('d', null, Option::VALUE_NONE, 'daemon守护进程方式启动')
->setDescription('公海回收定时器'); ->setDescription('公海回收定时器');
// 读取数据库配置文件 // 读取数据库配置文件
$filename = ROOT_PATH . 'config' . DS . 'database.php'; $filename = ROOT_PATH . 'config' . DS . 'database.php';
// 重新加载数据库配置文件 // 重新加载数据库配置文件
Config::load($filename, 'database'); Config::load($filename, 'database');
} }
/** /**
* 初始化 * 初始化
* *
@ -46,16 +46,16 @@ class PoolCommand extends Command
protected function init(Input $input, Output $output) protected function init(Input $input, Output $output)
{ {
global $argv; global $argv;
$argv[1] = $input->getArgument('status') ?: 'start'; $argv[1] = $input->getArgument('status') ?: 'start';
if ($input->hasOption('d')) { if ($input->hasOption('d')) {
$argv[2] = '-d'; $argv[2] = '-d';
} else { } else {
unset($argv[2]); unset($argv[2]);
} }
} }
/** /**
* 停止定时器 * 停止定时器
*/ */
@ -63,7 +63,7 @@ class PoolCommand extends Command
{ {
Timer::del($this->timer); Timer::del($this->timer);
} }
/** /**
* 启动定时器 * 启动定时器
*/ */
@ -75,22 +75,22 @@ class PoolCommand extends Command
# 公海规则 # 公海规则
$ruleList = db('crm_customer_pool_rule')->alias('rule')->field('rule.*') $ruleList = db('crm_customer_pool_rule')->alias('rule')->field('rule.*')
->join('__CRM_CUSTOMER_POOL__ pool', 'pool.pool_id = rule.pool_id', 'LEFT')->where('pool.status', 1)->select(); ->join('__CRM_CUSTOMER_POOL__ pool', 'pool.pool_id = rule.pool_id', 'LEFT')->where('pool.status', 1)->select();
if (!empty($ruleList)) { if (!empty($ruleList)) {
# 符合公海条件的客户IDS # 符合公海条件的客户IDS
$customerIds = $this->getQueryCondition($ruleList); $customerIds = $this->getQueryCondition($ruleList);
# 整理客户公海关联数据 # 整理客户公海关联数据
$poolRelationData = $this->getCustomerPoolRelationData($customerIds); $poolRelationData = $this->getCustomerPoolRelationData($customerIds);
# 整理修改客户数据的条件(进入公海时间,前负责人... # 整理修改客户数据的条件(进入公海时间,前负责人...
$customerWhere = $this->getCustomerQueryCondition($customerIds); $customerWhere = $this->getCustomerQueryCondition($customerIds);
Db::startTrans(); Db::startTrans();
try { try {
# 将客户退回公海 # 将客户退回公海
if (!empty($poolRelationData)) Db::name('crm_customer_pool_relation')->insertAll($poolRelationData); if (!empty($poolRelationData)) Db::name('crm_customer_pool_relation')->insertAll($poolRelationData);
# 修改客户数据 # 修改客户数据
if (!empty($customerWhere)) { if (!empty($customerWhere)) {
Db::name('crm_customer')->whereIn('customer_id', $customerWhere)->exp('before_owner_user_id', 'owner_user_id')->update([ Db::name('crm_customer')->whereIn('customer_id', $customerWhere)->exp('before_owner_user_id', 'owner_user_id')->update([
@ -100,10 +100,10 @@ class PoolCommand extends Command
'into_pool_time' => time() 'into_pool_time' => time()
]); ]);
} }
$this->updateInfo($ruleList,$customerWhere); $this->updateInfo($ruleList, $customerWhere);
# 删除联系人的负责人 # 删除联系人的负责人
Db::name('crm_contacts')->whereIn('customer_id', $customerWhere)->update(['owner_user_id' => '']); Db::name('crm_contacts')->whereIn('customer_id', $customerWhere)->update(['owner_user_id' => '']);
Db::commit(); Db::commit();
} catch (\Exception $e) { } catch (\Exception $e) {
Db::rollback(); Db::rollback();
@ -112,6 +112,7 @@ class PoolCommand extends Command
} }
}); });
} }
/** /**
* 自动入公海操作记录 * 自动入公海操作记录
* @param $ruleList * @param $ruleList
@ -136,21 +137,20 @@ class PoolCommand extends Command
if ($v['type'] == 1) updateActionLog(0, 'crm_customer', $val, '', '', '超过' . $time . '天无新建跟进记录自动进入公海'); if ($v['type'] == 1) updateActionLog(0, 'crm_customer', $val, '', '', '超过' . $time . '天无新建跟进记录自动进入公海');
if ($v['type'] == 2) updateActionLog(0, 'crm_customer', $val, '', '', '超过' . $time . '天无新建商机自动进入公海'); if ($v['type'] == 2) updateActionLog(0, 'crm_customer', $val, '', '', '超过' . $time . '天无新建商机自动进入公海');
if ($v['type'] == 3) updateActionLog(0, 'crm_customer', $val, '', '', '超过' . $time . '天未成交自动进入公海'); if ($v['type'] == 3) updateActionLog(0, 'crm_customer', $val, '', '', '超过' . $time . '天未成交自动进入公海');
} }
} }
} }
protected function execute(Input $input, Output $output) protected function execute(Input $input, Output $output)
{ {
# 动态修改运行时参数 # 动态修改运行时参数
set_time_limit(0); set_time_limit(0);
ini_set('memory_limit', '512M'); ini_set('memory_limit', '512M');
$this->init($input, $output); $this->init($input, $output);
# 创建定时器任务 # 创建定时器任务
$task = new Worker(); $task = new Worker();
$task->name = 'pool'; $task->name = 'pool';
@ -158,7 +158,7 @@ class PoolCommand extends Command
$task->onWorkerStart = [$this, 'start']; $task->onWorkerStart = [$this, 'start'];
$task->runAll(); $task->runAll();
} }
/** /**
* 整理修改客户数据的条件 * 整理修改客户数据的条件
* *
@ -170,16 +170,16 @@ class PoolCommand extends Command
private function getCustomerQueryCondition($customerIds) private function getCustomerQueryCondition($customerIds)
{ {
$result = []; $result = [];
foreach ($customerIds as $k1 => $v1) { foreach ($customerIds as $k1 => $v1) {
foreach ($v1 as $k2 => $v2) { foreach ($v1 as $k2 => $v2) {
$result[] = $v2; $result[] = $v2;
} }
} }
return array_unique($result); return array_unique($result);
} }
/** /**
* 客户公海关联数据 * 客户公海关联数据
* *
@ -191,27 +191,27 @@ class PoolCommand extends Command
private function getCustomerPoolRelationData($customerIds) private function getCustomerPoolRelationData($customerIds)
{ {
$result = []; $result = [];
# 用于排重 # 用于排重
$repeat = []; $repeat = [];
foreach ($customerIds as $k1 => $v1) { foreach ($customerIds as $k1 => $v1) {
$customerArray = array_unique($v1); $customerArray = array_unique($v1);
foreach ($customerArray as $k2 => $v2) { foreach ($customerArray as $k2 => $v2) {
if (!empty($repeat[$k1][$v2])) continue; if (!empty($repeat[$k1][$v2])) continue;
$result[] = [ $result[] = [
'pool_id' => $k1, 'pool_id' => $k1,
'customer_id' => $v2 'customer_id' => $v2
]; ];
$repeat[$k1][$v2] = $v2; $repeat[$k1][$v2] = $v2;
} }
} }
return $result; return $result;
} }
/** /**
* 获取符合公海条件的客户 * 获取符合公海条件的客户
* *
@ -223,18 +223,18 @@ class PoolCommand extends Command
private function getQueryCondition($rules) private function getQueryCondition($rules)
{ {
$result = []; $result = [];
foreach ($rules as $k => $v) { foreach ($rules as $k => $v) {
if (!isset($result[$v['pool_id']])) $result[$v['pool_id']] = []; if (!isset($result[$v['pool_id']])) $result[$v['pool_id']] = [];
if ($v['type'] == 1) $result[$v['pool_id']] = array_merge($result[$v['pool_id']], $this->getFollowUpQueryResult($v['level_conf'], $v['level'], $v['deal_handle'], $v['business_handle'])); if ($v['type'] == 1) $result[$v['pool_id']] = array_merge($result[$v['pool_id']], $this->getFollowUpQueryResult($v['level_conf'], $v['level'], $v['deal_handle'], $v['business_handle'], $v['customer_type']));
if ($v['type'] == 2) $result[$v['pool_id']] = array_merge($result[$v['pool_id']], $this->getBusinessQueryResult($v['level_conf'], $v['level'], $v['deal_handle'])); if ($v['type'] == 2) $result[$v['pool_id']] = array_merge($result[$v['pool_id']], $this->getBusinessQueryResult($v['level_conf'], $v['level'], $v['deal_handle'], $v['customer_type']));
if ($v['type'] == 3) $result[$v['pool_id']] = array_merge($result[$v['pool_id']], $this->getDealQueryResult($v['level_conf'], $v['level'], $v['business_handle'])); if ($v['type'] == 3) $result[$v['pool_id']] = array_merge($result[$v['pool_id']], $this->getDealQueryResult($v['level_conf'], $v['level'], $v['business_handle'], $v['customer_type']));
} }
return $result; return $result;
} }
/** /**
* N天内无新建跟进记录的客户 * N天内无新建跟进记录的客户
* *
@ -246,14 +246,14 @@ class PoolCommand extends Command
* @since 2021-04-01 * @since 2021-04-01
* @author fanqi * @author fanqi
*/ */
private function getFollowUpQueryResult($type, $levels, $dealStatus, $businessStatus) private function getFollowUpQueryResult($type, $levels, $dealStatus, $businessStatus, $customerType)
{ {
# 转换格式 # 转换格式
$levels = json_decode($levels, true); $levels = json_decode($levels, true);
# 默认条件 # 默认条件
$where = "`customer`.`owner_user_id` > 0"; $where = "`customer`.`owner_user_id` > 0";
# 所有用户,不区分级别 # 所有用户,不区分级别
if ($type == 1) { if ($type == 1) {
foreach ($levels as $k1 => $v1) { foreach ($levels as $k1 => $v1) {
@ -263,7 +263,7 @@ class PoolCommand extends Command
} }
} }
} }
# 根据用户级别设置条件 # 根据用户级别设置条件
if ($type == 2) { if ($type == 2) {
foreach ($levels as $k1 => $v1) { foreach ($levels as $k1 => $v1) {
@ -276,29 +276,35 @@ class PoolCommand extends Command
} }
} }
} }
# 获取最小天数,对于没有设置级别的客户数据使用 # 获取最小天数,对于没有设置级别的客户数据使用
$minLimit = $this->getMinDay($levels); $minLimit = $this->getMinDay($levels);
$minTime = (time() - 24 * 60 * 60 * $minLimit); $minTime = (time() - 24 * 60 * 60 * $minLimit);
$where .= " OR ((!`customer`.`level` AND `customer`.`last_time` < " . $minTime . " AND `customer`.`last_time` > `customer`.`obtain_time`) OR (!`customer`.`level` AND `customer`.`obtain_time` < " . $minTime . " AND `customer`.`obtain_time` > `customer`.`last_time`) OR (!`customer`.`level` AND `customer`.`obtain_time` < " . $minTime . " AND ISNULL(`customer`.`last_time`))) )"; $where .= " OR ((!`customer`.`level` AND `customer`.`last_time` < " . $minTime . " AND `customer`.`last_time` > `customer`.`obtain_time`) OR (!`customer`.`level` AND `customer`.`obtain_time` < " . $minTime . " AND `customer`.`obtain_time` > `customer`.`last_time`) OR (!`customer`.`level` AND `customer`.`obtain_time` < " . $minTime . " AND ISNULL(`customer`.`last_time`))) )";
} }
# 选择不进入公海的客户(已成交客户) # 选择不进入公海的客户(已成交客户)
if (!empty($dealStatus)) $where .= " AND (`customer`.`deal_status` <> '已成交' OR ISNULL(`customer`.`deal_status`))"; if (!empty($dealStatus)) $where .= " AND (`customer`.`deal_status` <> '已成交' OR ISNULL(`customer`.`deal_status`))";
# 选择不进入公海的客户(有商机客户) # 选择不进入公海的客户(有商机客户)
if (!empty($businessStatus)) $where .= " AND ISNULL(`business`.`customer_id`)"; if (!empty($businessStatus)) $where .= " AND ISNULL(`business`.`customer_id`)";
# 锁定的客户不提醒 # 锁定的客户不提醒
$where .= " AND `customer`.`is_lock` = 0"; $where .= " AND `customer`.`is_lock` = 0";
# 过滤客户类型
if (!empty($customerType)) {
$where .= "And `customer`.`customer_type` in " . $customerType;
}
# 查询符合条件的客户 # 查询符合条件的客户
return db('crm_customer') return db('crm_customer')
->alias('customer')->join('__CRM_BUSINESS__ business', 'business.customer_id = customer.customer_id', 'LEFT') ->alias('customer')->join('__CRM_BUSINESS__ business', 'business.customer_id = customer.customer_id', 'LEFT')
->where($where)->column('customer.customer_id'); ->where($where)->column('customer.customer_id');
} }
/** /**
* N天内无新建商机的客户 * N天内无新建商机的客户
* *
@ -309,14 +315,14 @@ class PoolCommand extends Command
* @since 2021-04-01 * @since 2021-04-01
* @author fanqi * @author fanqi
*/ */
private function getBusinessQueryResult($type, $levels, $dealStatus) private function getBusinessQueryResult($type, $levels, $dealStatus, $customerType)
{ {
# 转换格式 # 转换格式
$levels = json_decode($levels, true); $levels = json_decode($levels, true);
# 默认条件 # 默认条件
$where = "`customer`.`owner_user_id` > 0"; $where = "`customer`.`owner_user_id` > 0";
# 所有用户,不区分级别 # 所有用户,不区分级别
if ($type == 1) { if ($type == 1) {
foreach ($levels as $k1 => $v1) { foreach ($levels as $k1 => $v1) {
@ -326,7 +332,7 @@ class PoolCommand extends Command
} }
} }
} }
# 根据用户级别设置条件 # 根据用户级别设置条件
if ($type == 2) { if ($type == 2) {
foreach ($levels as $k1 => $v1) { foreach ($levels as $k1 => $v1) {
@ -339,26 +345,30 @@ class PoolCommand extends Command
} }
} }
} }
# 获取最小天数,对于没有设置级别的客户数据使用 # 获取最小天数,对于没有设置级别的客户数据使用
$minLimit = $this->getMinDay($levels); $minLimit = $this->getMinDay($levels);
$minTime = (time() - 24 * 60 * 60 * $minLimit); $minTime = (time() - 24 * 60 * 60 * $minLimit);
$where .= " OR ((ISNULL(`business`.`customer_id`) AND `customer`.`obtain_time` < " . $minTime . " AND !`customer`.`level`) OR (`customer`.`obtain_time` < " . $minTime . " AND `customer`.`obtain_time` > `business`.`create_time` AND !`customer`.`level`) OR (`business`.`create_time` < " . $minTime . " AND `business`.`create_time` > `customer`.`obtain_time` AND !`customer`.`level`)) )"; $where .= " OR ((ISNULL(`business`.`customer_id`) AND `customer`.`obtain_time` < " . $minTime . " AND !`customer`.`level`) OR (`customer`.`obtain_time` < " . $minTime . " AND `customer`.`obtain_time` > `business`.`create_time` AND !`customer`.`level`) OR (`business`.`create_time` < " . $minTime . " AND `business`.`create_time` > `customer`.`obtain_time` AND !`customer`.`level`)) )";
} }
# 选择不进入公海的客户(已成交客户) # 选择不进入公海的客户(已成交客户)
if (!empty($dealStatus)) $where .= " AND (`customer`.`deal_status` <> '已成交' OR ISNULL(`customer`.`deal_status`))"; if (!empty($dealStatus)) $where .= " AND (`customer`.`deal_status` <> '已成交' OR ISNULL(`customer`.`deal_status`))";
# 锁定的客户不提醒 # 锁定的客户不提醒
$where .= " AND `customer`.`is_lock` = 0"; $where .= " AND `customer`.`is_lock` = 0";
# 过滤客户类型
if (!empty($customerType)) {
$where .= "And `customer`.`customer_type` in " . $customerType;
}
# 查询匹配条件的客户 # 查询匹配条件的客户
return db('crm_customer')->alias('customer') return db('crm_customer')->alias('customer')
->join('__CRM_BUSINESS__ business', 'business.customer_id = customer.customer_id', 'LEFT') ->join('__CRM_BUSINESS__ business', 'business.customer_id = customer.customer_id', 'LEFT')
->where($where)->column('customer.customer_id'); ->where($where)->column('customer.customer_id');
} }
/** /**
* N天内没有成交的客户 * N天内没有成交的客户
* *
@ -369,14 +379,14 @@ class PoolCommand extends Command
* @since 2021-04-01 * @since 2021-04-01
* @author fanqi * @author fanqi
*/ */
private function getDealQueryResult($type, $levels, $businessStatus) private function getDealQueryResult($type, $levels, $businessStatus, $customerType)
{ {
# 转换格式 # 转换格式
$levels = json_decode($levels, true); $levels = json_decode($levels, true);
# 默认条件 # 默认条件
$where = "`customer`.`owner_user_id` > 0"; $where = "`customer`.`owner_user_id` > 0";
# 所有用户,不区分级别 # 所有用户,不区分级别
if ($type == 1) { if ($type == 1) {
foreach ($levels as $k1 => $v1) { foreach ($levels as $k1 => $v1) {
@ -386,7 +396,7 @@ class PoolCommand extends Command
} }
} }
} }
# 根据用户级别设置条件 # 根据用户级别设置条件
if ($type == 2) { if ($type == 2) {
foreach ($levels as $k1 => $v1) { foreach ($levels as $k1 => $v1) {
@ -399,27 +409,31 @@ class PoolCommand extends Command
} }
} }
} }
# 获取最小天数,对于没有设置级别的客户数据使用 # 获取最小天数,对于没有设置级别的客户数据使用
$minLimit = $this->getMinDay($levels); $minLimit = $this->getMinDay($levels);
$minTime = (time() - 24 * 60 * 60 * $minLimit); $minTime = (time() - 24 * 60 * 60 * $minLimit);
$where .= " OR ((ISNULL(`contract`.`customer_id`) AND `customer`.`obtain_time` < " . $minTime . " AND !`customer`.`level`) OR (`customer`.`obtain_time` < " . $minTime . " AND `customer`.`obtain_time` > `contract`.`create_time` AND !`customer`.`level`) OR (`contract`.`create_time` < " . $minTime . " AND `contract`.`create_time` > `customer`.`obtain_time` AND !`customer`.`level`)) )"; $where .= " OR ((ISNULL(`contract`.`customer_id`) AND `customer`.`obtain_time` < " . $minTime . " AND !`customer`.`level`) OR (`customer`.`obtain_time` < " . $minTime . " AND `customer`.`obtain_time` > `contract`.`create_time` AND !`customer`.`level`) OR (`contract`.`create_time` < " . $minTime . " AND `contract`.`create_time` > `customer`.`obtain_time` AND !`customer`.`level`)) )";
} }
# 选择不进入公海的客户(有商机客户) # 选择不进入公海的客户(有商机客户)
if (!empty($businessStatus)) $where .= " AND ISNULL(`business`.`customer_id`)"; if (!empty($businessStatus)) $where .= " AND ISNULL(`business`.`customer_id`)";
# 锁定的客户不提醒 # 锁定的客户不提醒
$where .= " AND `customer`.`is_lock` = 0"; $where .= " AND `customer`.`is_lock` = 0";
# 过滤客户类型
if (!empty($customerType)) {
$where .= "And `customer`.`customer_type` in " . $customerType;
}
# 查询符合条件的客户 # 查询符合条件的客户
return db('crm_customer')->alias('customer') return db('crm_customer')->alias('customer')
->join('__CRM_BUSINESS__ business', 'business.customer_id = customer.customer_id', 'LEFT') ->join('__CRM_BUSINESS__ business', 'business.customer_id = customer.customer_id', 'LEFT')
->join('__CRM_CONTRACT__ contract', 'contract.customer_id = customer.customer_id', 'LEFT') ->join('__CRM_CONTRACT__ contract', 'contract.customer_id = customer.customer_id', 'LEFT')
->where($where)->column('customer.customer_id'); ->where($where)->column('customer.customer_id');
} }
/** /**
* 获取公海规则最小数字(最快进入公海天数) * 获取公海规则最小数字(最快进入公海天数)
* *
@ -431,11 +445,11 @@ class PoolCommand extends Command
private function getMinDay($data) private function getMinDay($data)
{ {
$number = 1; $number = 1;
foreach ($data as $k1 => $v1) { foreach ($data as $k1 => $v1) {
if (empty($number) || $v1['limit_day'] < $number) $number = $v1['limit_day']; if (empty($number) || $v1['limit_day'] < $number) $number = $v1['limit_day'];
} }
return $number; return $number;
} }
} }

@ -127,9 +127,9 @@ class Customer extends ApiCommon
$customerCheck = db('crm_customer_check')->where(['customer_id' => $param['id']])->where(['check_status' => 0])->find(); $customerCheck = db('crm_customer_check')->where(['customer_id' => $param['id']])->where(['check_status' => 0])->find();
if (!empty($customerCheck)) { if (!empty($customerCheck)) {
$data['flow_id'] = $customerCheck['flow_id']; $data['flow_id'] = $customerCheck['flow_id'];
$data['owner_user_id']=$customerCheck['user_id']; $data['owner_user_id'] = $customerCheck['user_id'];
$data['customer_check_id']=$customerCheck['customer_check_id']; $data['customer_check_id'] = $customerCheck['customer_check_id'];
$data['apply_user_name']=db('admin_user')->where('id', $customerCheck['create_user_id'])->column("username"); $data['apply_user_name'] = db('admin_user')->where('id', $customerCheck['create_user_id'])->column("username");
} }
return resultArray(['data' => $data]); return resultArray(['data' => $data]);
} }
@ -1175,4 +1175,20 @@ class Customer extends ApiCommon
return resultArray(['data' => $data]); return resultArray(['data' => $data]);
} }
/**
* 客户类型列表
*
* @return \think\response\Json
* @since 2021-03-29
* @author fanqi
*/
public function Type()
{
$data = db('admin_field')->where(['types' => 'crm_customer', 'field' => 'crm_lthugd'])->value('options');
$data = explode(',', $data);
return resultArray(['data' => $data]);
}
} }

@ -54,7 +54,7 @@ class CustomerPool extends ApiCommon
parent::_initialize(); parent::_initialize();
} }
} }
/** /**
* 公海列表 * 公海列表
* *
@ -65,12 +65,12 @@ class CustomerPool extends ApiCommon
public function index() public function index()
{ {
if (empty($this->param['pool_id'])) return resultArray(['error' => '缺少公海ID']); if (empty($this->param['pool_id'])) return resultArray(['error' => '缺少公海ID']);
$data = (new CustomerPoolLogic())->getPoolList($this->param); $data = (new CustomerPoolLogic())->getPoolList($this->param);
return resultArray(['data' => $data]); return resultArray(['data' => $data]);
} }
/** /**
* 详情 * 详情
* *
@ -81,16 +81,16 @@ class CustomerPool extends ApiCommon
public function read() public function read()
{ {
if (empty($this->param['pool_id']) || empty($this->param['customer_id'])) return resultArray(['error' => '参数错误!']); if (empty($this->param['pool_id']) || empty($this->param['customer_id'])) return resultArray(['error' => '参数错误!']);
$userInfo = $this->userInfo; $userInfo = $this->userInfo;
$param = $this->param; $param = $this->param;
$param['user_id'] = $userInfo['id']; $param['user_id'] = $userInfo['id'];
$data = (new CustomerPoolLogic())->getPoolData($param); $data = (new CustomerPoolLogic())->getPoolData($param);
return resultArray(['data' => $data]); return resultArray(['data' => $data]);
} }
/** /**
* 删除公海客户 * 删除公海客户
* *
@ -101,16 +101,16 @@ class CustomerPool extends ApiCommon
public function delete() public function delete()
{ {
if (empty($this->param['id'])) return resultArray(['error' => '请选择要删除的客户!']); if (empty($this->param['id'])) return resultArray(['error' => '请选择要删除的客户!']);
$this->param['user_id'] = $this->userInfo['id']; $this->param['user_id'] = $this->userInfo['id'];
$result = (new CustomerPoolLogic())->deletePoolCustomer($this->param); $result = (new CustomerPoolLogic())->deletePoolCustomer($this->param);
if (!empty($result)) return resultArray(['error' => $result]); if (!empty($result)) return resultArray(['error' => $result]);
return resultArray(['data' => '删除成功!']); return resultArray(['data' => '删除成功!']);
} }
/** /**
* 公海池列表 * 公海池列表
* *
@ -121,10 +121,10 @@ class CustomerPool extends ApiCommon
public function pondList() public function pondList()
{ {
$data = (new CustomerPoolLogic())->getPondList(['user_id' => $this->userInfo['id'], 'structure_id' => $this->userInfo['structure_id']]); $data = (new CustomerPoolLogic())->getPondList(['user_id' => $this->userInfo['id'], 'structure_id' => $this->userInfo['structure_id']]);
return resultArray(['data' => $data]); return resultArray(['data' => $data]);
} }
/** /**
* 公海字段 * 公海字段
* *
@ -135,16 +135,16 @@ class CustomerPool extends ApiCommon
public function field() public function field()
{ {
if (empty($this->param['pool_id'])) return resultArray(['error' => '缺少公海ID']); if (empty($this->param['pool_id'])) return resultArray(['error' => '缺少公海ID']);
$userInfo = $this->userInfo; $userInfo = $this->userInfo;
$param = $this->param; $param = $this->param;
$param['user_id'] = $userInfo['id']; $param['user_id'] = $userInfo['id'];
$data = (new CustomerPoolLogic())->getFieldList($param); $data = (new CustomerPoolLogic())->getFieldList($param);
return resultArray(['data' => $data]); return resultArray(['data' => $data]);
} }
/** /**
* 高级筛选字段列表 * 高级筛选字段列表
* *
@ -155,12 +155,12 @@ class CustomerPool extends ApiCommon
public function advanced() public function advanced()
{ {
if (empty($this->param['types'])) return resultArray(['error' => '缺少模块类型!']); if (empty($this->param['types'])) return resultArray(['error' => '缺少模块类型!']);
$data = (new CustomerPoolLogic())->getAdvancedFilterFieldList($this->param); $data = (new CustomerPoolLogic())->getAdvancedFilterFieldList($this->param);
return resultArray(['data' => $data]); return resultArray(['data' => $data]);
} }
/** /**
* 领取公海池客户 * 领取公海池客户
* *
@ -171,17 +171,17 @@ class CustomerPool extends ApiCommon
public function receive() public function receive()
{ {
if (empty($this->param['customer_id'])) return resultArray(['error' => '请选择要领取的公海客户!']); if (empty($this->param['customer_id'])) return resultArray(['error' => '请选择要领取的公海客户!']);
$param = $this->param; $param = $this->param;
$param['user_id'] = $this->userInfo['id']; $param['user_id'] = $this->userInfo['id'];
$result = (new CustomerPoolLogic())->customerReceiveExamine($param); $result = (new CustomerPoolLogic())->customerReceiveExamine($param);
if (!empty($result)) return resultArray(['error' => $result]); if (!empty($result)) return resultArray(['error' => $result]);
return resultArray(['data' => '领取成功!']); return resultArray(['data' => '领取成功!']);
} }
/** /**
* 分配公海客户 * 分配公海客户
* *
@ -193,14 +193,14 @@ class CustomerPool extends ApiCommon
{ {
if (empty($this->param['customer_id'])) return resultArray(['error' => '请选择要分配的公海客户!']); if (empty($this->param['customer_id'])) return resultArray(['error' => '请选择要分配的公海客户!']);
if (empty($this->param['user_id'])) return resultArray(['error' => '请选择要分配的员工!']); if (empty($this->param['user_id'])) return resultArray(['error' => '请选择要分配的员工!']);
$result = (new CustomerPoolLogic())->distributeCustomer($this->param); $result = (new CustomerPoolLogic())->distributeCustomer($this->param);
if (!empty($result)) return resultArray(['error' => $result]); if (!empty($result)) return resultArray(['error' => $result]);
return resultArray(['data' => '分配成功!']); return resultArray(['data' => '分配成功!']);
} }
// 公海客户导入模板下载 // 公海客户导入模板下载
public function excelDownload($save_path = '') public function excelDownload($save_path = '')
{ {
@ -209,11 +209,11 @@ class CustomerPool extends ApiCommon
$field_list = $this->fieldsData($param); $field_list = $this->fieldsData($param);
$excelModel->excelImportDownload($field_list, 'crm_pool', $save_path); $excelModel->excelImportDownload($field_list, 'crm_pool', $save_path);
} }
// 导入 // 导入
public function import() public function import()
{ {
$param = $this->param; $param = $this->param;
$userInfo = $this->userInfo; $userInfo = $this->userInfo;
$excelModel = new \app\admin\model\Excel(); $excelModel = new \app\admin\model\Excel();
@ -227,7 +227,7 @@ class CustomerPool extends ApiCommon
RecordActionLog($userInfo['id'], 'crm_customer', 'excel', '导入公海客户', '', '', '导入公海客户'); RecordActionLog($userInfo['id'], 'crm_customer', 'excel', '导入公海客户', '', '', '导入公海客户');
return resultArray(['data' => $excelModel->getError()]); return resultArray(['data' => $excelModel->getError()]);
} }
// 导出 // 导出
public function export() public function export()
{ {
@ -260,7 +260,7 @@ class CustomerPool extends ApiCommon
RecordActionLog($userInfo['id'], 'crm_customer', 'excelexport', $action_name, '', '', '导出客户'); RecordActionLog($userInfo['id'], 'crm_customer', 'excelexport', $action_name, '', '', '导出客户');
return resultArray(['error' => 'error']); return resultArray(['error' => 'error']);
} }
/** /**
* 公海权限 * 公海权限
* *
@ -273,12 +273,12 @@ class CustomerPool extends ApiCommon
$param = $this->param; $param = $this->param;
$param['user_id'] = $this->userInfo['id']; $param['user_id'] = $this->userInfo['id'];
$param['structure_id'] = $this->userInfo['structure_id']; $param['structure_id'] = $this->userInfo['structure_id'];
$data = (new CustomerPoolLogic())->getAuthorityData($param); $data = (new CustomerPoolLogic())->getAuthorityData($param);
return resultArray(['data' => $data]); return resultArray(['data' => $data]);
} }
/** /**
* 公海字段样式 * 公海字段样式
* *
@ -289,16 +289,16 @@ class CustomerPool extends ApiCommon
public function fieldConfig() public function fieldConfig()
{ {
if (empty($this->param['pool_id'])) return resultArray(['error' => '缺少公海ID']); if (empty($this->param['pool_id'])) return resultArray(['error' => '缺少公海ID']);
$param = $this->param; $param = $this->param;
$userInfo = $this->userInfo; $userInfo = $this->userInfo;
$param['user_id'] = $userInfo['id']; $param['user_id'] = $userInfo['id'];
$data = (new CustomerPoolLogic())->getFieldConfigIndex($param); $data = (new CustomerPoolLogic())->getFieldConfigIndex($param);
return resultArray(['data' => $data]); return resultArray(['data' => $data]);
} }
/** /**
* 设置公海字段宽度 * 设置公海字段宽度
* *
@ -311,16 +311,16 @@ class CustomerPool extends ApiCommon
if (empty($this->param['pool_id'])) return resultArray(['error' => '缺少公海ID']); if (empty($this->param['pool_id'])) return resultArray(['error' => '缺少公海ID']);
if (empty($this->param['field'])) return resultArray(['error' => '缺少字段名称!']); if (empty($this->param['field'])) return resultArray(['error' => '缺少字段名称!']);
if (empty($this->param['width'])) return resultArray(['error' => '缺少宽度值!']); if (empty($this->param['width'])) return resultArray(['error' => '缺少宽度值!']);
$param = $this->param; $param = $this->param;
$userInfo = $this->userInfo; $userInfo = $this->userInfo;
$param['user_id'] = $userInfo['id']; $param['user_id'] = $userInfo['id'];
(new CustomerPoolLogic())->setFieldWidth($param); (new CustomerPoolLogic())->setFieldWidth($param);
return resultArray(['data' => '操作成功!']); return resultArray(['data' => '操作成功!']);
} }
/** /**
* 设置公海字段样式 * 设置公海字段样式
* *
@ -332,16 +332,16 @@ class CustomerPool extends ApiCommon
{ {
if (empty($this->param['pool_id'])) return resultArray(['缺少公海ID']); if (empty($this->param['pool_id'])) return resultArray(['缺少公海ID']);
if (empty($this->param['value']) && empty($this->param['hide_value'])) return resultArray(['error' => '字段参数错误!']); if (empty($this->param['value']) && empty($this->param['hide_value'])) return resultArray(['error' => '字段参数错误!']);
$param = $this->param; $param = $this->param;
$userInfo = $this->userInfo; $userInfo = $this->userInfo;
$param['user_id'] = $userInfo['id']; $param['user_id'] = $userInfo['id'];
(new CustomerPoolLogic())->setFieldConfig($param); (new CustomerPoolLogic())->setFieldConfig($param);
return resultArray(['data' => '操作成功!']); return resultArray(['data' => '操作成功!']);
} }
/** /**
* 导入模板 * 导入模板
* @param $param * @param $param
@ -352,38 +352,38 @@ class CustomerPool extends ApiCommon
*/ */
public function fieldsData($param) public function fieldsData($param)
{ {
$where=['pool_id' => $param['pool_id'], 'is_hidden' => 0, $where = ['pool_id' => $param['pool_id'], 'is_hidden' => 0,
'field_name' => ['not in', ['deal_status','create_user_id']]]; 'field_name' => ['not in', ['deal_status', 'create_user_id']]];
if($param['is_excel']==1){ if ($param['is_excel'] == 1) {
$where=['pool_id' => $param['pool_id'], 'is_hidden' => 0, $where = ['pool_id' => $param['pool_id'], 'is_hidden' => 0,
'field_name' => ['not in', ['deal_status']]]; 'field_name' => ['not in', ['deal_status']]];
} }
$pool_list = db('crm_customer_pool_field_setting')->where($where)->field('field_name as field,form_type,name')->select(); $pool_list = db('crm_customer_pool_field_setting')->where($where)->field('field_name as field,form_type,name')->select();
$fieldParam['types'] = 'crm_customer'; $fieldParam['types'] = 'crm_customer';
$fieldParam['action'] = 'excel'; $fieldParam['action'] = 'excel';
$setting = []; $setting = [];
$list=[]; $list = [];
foreach ($pool_list as $k => &$v) { foreach ($pool_list as $k => &$v) {
switch ($v['field']) { switch ($v['field']) {
case 'address': case 'address':
if($param['is_excel']!=1){ if ($param['is_excel'] != 1) {
$v['field'] = 'customer_address'; $v['field'] = 'customer_address';
$v['form_type'] = 'map_address'; $v['form_type'] = 'map_address';
$list[]=$v; $list[] = $v;
unset($pool_list[$k]); unset($pool_list[$k]);
} }
break; break;
case 'detail_address': case 'detail_address':
if($param['is_excel']!=1){ if ($param['is_excel'] != 1) {
unset($pool_list[$k]); unset($pool_list[$k]);
} }
break; break;
case ($v['form_type'] == 'select') || ($v['form_type'] == 'checkbox') : case ($v['form_type'] == 'select') || ($v['form_type'] == 'checkbox') :
$set= db('admin_field')->where(['types' => 'crm_customer', 'field' => $v['field']])->find(); $set = db('admin_field')->where(['types' => 'crm_customer', 'field' => $v['field']])->find();
$pool_list[$k]['setting'] = explode(chr(10), $set['setting']); $pool_list[$k]['setting'] = explode(chr(10), $set['setting']);
break; break;
default : default :
if($param['is_excel']!=1){ if ($param['is_excel'] != 1) {
$pool_list[$k]['setting'] = []; $pool_list[$k]['setting'] = [];
} }
break; break;
@ -398,7 +398,7 @@ class CustomerPool extends ApiCommon
// } // }
// } // }
} }
$pool_list=array_merge($pool_list,$list); $pool_list = array_merge($pool_list, $list);
return $pool_list; return $pool_list;
} }
@ -440,7 +440,7 @@ class CustomerPool extends ApiCommon
$checkData['check_time'] = time(); $checkData['check_time'] = time();
$checkData['content'] = $param['content']; $checkData['content'] = $param['content'];
$checkData['flow_id'] = $dataInfo['flow_id']; $checkData['flow_id'] = $dataInfo['flow_id'];
$checkData['order_id'] = $dataInfo['order_id'] ? : 1; $checkData['order_id'] = $dataInfo['order_id'] ?: 1;
$checkData['status'] = $status; $checkData['status'] = $status;
if ($status == 1) { if ($status == 1) {
@ -448,8 +448,8 @@ class CustomerPool extends ApiCommon
//固定流程 //固定流程
//获取下一审批信息 //获取下一审批信息
$nextStepData = $examineStepModel->nextStepUser($dataInfo['owner_user_id'], $dataInfo['flow_id'], 'crm_customer_check', $param['id'], $dataInfo['order_id'], $user_id); $nextStepData = $examineStepModel->nextStepUser($dataInfo['owner_user_id'], $dataInfo['flow_id'], 'crm_customer_check', $param['id'], $dataInfo['order_id'], $user_id);
$next_user_ids = $nextStepData['next_user_ids'] ? : []; $next_user_ids = $nextStepData['next_user_ids'] ?: [];
$customerCheckData['order_id'] = $nextStepData['order_id'] ? : ''; $customerCheckData['order_id'] = $nextStepData['order_id'] ?: '';
if (!$next_user_ids) { if (!$next_user_ids) {
$is_end = 1; $is_end = 1;
//审批结束 //审批结束
@ -462,7 +462,7 @@ class CustomerPool extends ApiCommon
} else { } else {
//自选流程 //自选流程
$is_end = $param['is_end'] ? 1 : ''; $is_end = $param['is_end'] ? 1 : '';
$check_user_id = $param['check_user_id'] ? : ''; $check_user_id = $param['check_user_id'] ?: '';
if ($is_end !== 1 && empty($check_user_id)) { if ($is_end !== 1 && empty($check_user_id)) {
return resultArray(['error' => '请选择下一审批人']); return resultArray(['error' => '请选择下一审批人']);
} }
@ -481,7 +481,7 @@ class CustomerPool extends ApiCommon
// $examineRecordModel->setEnd(['types' => 'crm_contract','types_id' => $param['id']]); // $examineRecordModel->setEnd(['types' => 'crm_contract','types_id' => $param['id']]);
} }
//已审批人ID //已审批人ID
$customerCheckData['flow_user_id'] = stringToArray($dataInfo['flow_user_id']) ? arrayToString(array_merge(stringToArray($dataInfo['flow_user_id']),[$user_id])) : arrayToString([$user_id]); $customerCheckData['flow_user_id'] = stringToArray($dataInfo['flow_user_id']) ? arrayToString(array_merge(stringToArray($dataInfo['flow_user_id']), [$user_id])) : arrayToString([$user_id]);
$resCustomerCheck = db('crm_customer_check')->where(['customer_check_id' => $param['id']])->update($customerCheckData); $resCustomerCheck = db('crm_customer_check')->where(['customer_check_id' => $param['id']])->update($customerCheckData);
if ($resCustomerCheck) { if ($resCustomerCheck) {
//审批记录 //审批记录
@ -499,8 +499,8 @@ class CustomerPool extends ApiCommon
); );
$customerData = []; $customerData = [];
$customerData['user_id']=$dataInfo['user_id']; $customerData['user_id'] = $dataInfo['user_id'];
$customerData['customer_id']=$dataInfo['customer_id']; $customerData['customer_id'] = $dataInfo['customer_id'];
$result = (new CustomerPoolLogic())->receiveCustomers($customerData); $result = (new CustomerPoolLogic())->receiveCustomers($customerData);
@ -536,4 +536,20 @@ class CustomerPool extends ApiCommon
return resultArray(['error' => '审批失败,请重试!']); return resultArray(['error' => '审批失败,请重试!']);
} }
} }
/**
* 总经理公海池消息提醒
*
* @return Json
* @since 2021-04-14
* @author fanqi
*/
public function num()
{
$customerPoolCount = db('crm_customer_pool_relation')->where("pool_id",array('eq',3))
->count();
return resultArray(['data' => $customerPoolCount]);
}
} }

@ -162,7 +162,7 @@ class Customer extends Common
$groupNameArray = db('admin_group')->where("pid", array("eq", 2))->where("id", array("in", $groupIds))->column("title"); $groupNameArray = db('admin_group')->where("pid", array("eq", 2))->where("id", array("in", $groupIds))->column("title");
if ($groupNameArray) if ($groupNameArray)
$map['customer.crm_role'] = array('in', $groupNameArray); $map['customer.crm_roziuw'] = array('in', $groupNameArray);
} }
# 代办事项 - 待进入公海 # 代办事项 - 待进入公海
$remindWhere = []; $remindWhere = [];

@ -56,6 +56,8 @@ return [
'crm/customer/poolAuthority' => ['crm/customer/poolAuthority', ['method' => 'POST']], 'crm/customer/poolAuthority' => ['crm/customer/poolAuthority', ['method' => 'POST']],
// 【客户】级别列表 // 【客户】级别列表
'crm/customer/level' => ['crm/customer/level', ['method' => 'POST']], 'crm/customer/level' => ['crm/customer/level', ['method' => 'POST']],
// 【客户】类型列表
'crm/customer/type' => ['crm/customer/type', ['method' => 'POST']],
// 【客户】公海列表 // 【客户】公海列表
'crm/customerPool/index' => ['crm/customerPool/index', ['method' => 'POST']], 'crm/customerPool/index' => ['crm/customerPool/index', ['method' => 'POST']],
@ -89,6 +91,8 @@ return [
'crm/customerPool/setFieldWidth' => ['crm/customerPool/setFieldWidth', ['method' => 'POST']], 'crm/customerPool/setFieldWidth' => ['crm/customerPool/setFieldWidth', ['method' => 'POST']],
// 【客户】设置公海字段配置 // 【客户】设置公海字段配置
'crm/customerPool/setFieldConfig' => ['crm/customerPool/setFieldConfig', ['method' => 'POST']], 'crm/customerPool/setFieldConfig' => ['crm/customerPool/setFieldConfig', ['method' => 'POST']],
// 【客户】总经理客户公海池消息
'crm/customerPool/num' => ['crm/customerPool/num', ['method' => 'POST']],
// 【客户】回访 // 【客户】回访
'crm/visit/index' => ['crm/visit/index', ['method' => 'POST']], 'crm/visit/index' => ['crm/visit/index', ['method' => 'POST']],

Loading…
Cancel
Save