From 1709fc2dd1d16439bc404401dfe37f11b8aab51e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=90=8C?= <494089941@qq.com> Date: Mon, 6 Mar 2023 10:27:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=85=E5=AE=A1=E6=89=B9=E5=85=AC=E6=B5=B7?= =?UTF-8?q?=E6=B1=A0=E5=AE=A2=E6=88=B7=E6=8D=9E=E5=8F=96=20=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/crm/controller/CustomerPool.php | 2 +- application/crm/model/CustomerCheck.php | 213 ++------------------ 2 files changed, 18 insertions(+), 197 deletions(-) diff --git a/application/crm/controller/CustomerPool.php b/application/crm/controller/CustomerPool.php index 8ee24a8..ed00862 100644 --- a/application/crm/controller/CustomerPool.php +++ b/application/crm/controller/CustomerPool.php @@ -427,7 +427,7 @@ class CustomerPool extends ApiCommon return resultArray(['error' => $examineStepModel->getError()]); } //审批主体详情 - $dataInfo = db('crm_customer_check')->where('customer_id', 'in', $param['customer_id'])->find(); + $dataInfo = db('crm_customer_check')->where('customer_check_id', 'in', $param['customer_check_id'])->find(); $flowInfo = $examineFlowModel->getDataById($dataInfo['flow_id']); $is_end = 0; // 1审批结束 diff --git a/application/crm/model/CustomerCheck.php b/application/crm/model/CustomerCheck.php index 03f99af..7cf6622 100644 --- a/application/crm/model/CustomerCheck.php +++ b/application/crm/model/CustomerCheck.php @@ -29,25 +29,16 @@ class CustomerCheck extends Common public function getDataList($request) { $userModel = new \app\admin\model\User(); - $structureModel = new \app\admin\model\Structure(); $fieldModel = new \app\admin\model\Field(); - $search = $request['search']; - $user_id = $request['user_id']; - $scene_id = (int)$request['scene_id']; - $contacts_id = $request['contacts_id']; + $customer_check_id= $request['customer_check_id']; $order_field = $request['order_field']; $order_type = $request['order_type']; - $is_excel = $request['is_excel']; //导出 $getCount = $request['getCount']; - $businessTypeId = $request['typesId']; // 针对mobile - $businessStatusId = $request['statusId']; // 针对mobile - $overdue = $request['overdue']; // 待办事项下需联系商机(逾期) - $businessIdArray = $request['businessIdArray']; // 待办事项提醒参数 - $isMessage = !empty($request['isMessage']); + $customerCheckIdArray = $request['customerCheckIdArray']; // 待办事项提醒参数 unset($request['scene_id']); unset($request['search']); unset($request['user_id']); - unset($request['contacts_id']); + unset($request['$customer_check_id']); unset($request['order_field']); unset($request['order_type']); unset($request['is_excel']); @@ -56,228 +47,58 @@ class CustomerCheck extends Common unset($request['statusId']); unset($request['overdue']); unset($request['isMessage']); - unset($request['businessIdArray']); + unset($request['customerCheckIdArray']); $request = $this->fmtRequest($request); $requestMap = $request['map'] ?: []; - $sceneModel = new \app\admin\model\Scene(); # getCount是代办事项传来的参数,代办事项不需要使用场景 $sceneMap = []; - if (empty($getCount)) { - if ($scene_id) { - //自定义场景 - $sceneMap = $sceneModel->getDataById($scene_id, $user_id, 'business') ?: []; - } else { - //默认场景 - $sceneMap = $sceneModel->getDefaultData('crm_business', $user_id) ?: []; - } - } - if ($search || $search == '0') { - //普通筛选 - $sceneMap['name'] = ['condition' => 'contains', 'value' => $search, 'form_type' => 'text', 'name' => '商机名称']; - } - 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 ($requestMap['type_id']['status_id']) $requestMap['status_id']['value'] = $requestMap['type_id']['status_id']; - $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 ($sceneMap['type_id']['status_id']) $requestMap['status_id']['value'] = $sceneMap['type_id']['status_id']; - $sceneMap['is_end'] = 0; - } - unset($sceneMap['type_id']); - } + + $partMap = []; $teamMap = $requestMap['team_id']; //团队成员 高级筛选 if ($teamMap) { - $partMap = advancedQueryFormatForTeam($teamMap, 'business', ''); + $partMap = advancedQueryFormatForTeam($teamMap, 'customer_check', ''); unset($requestMap['team_id']); $map = $requestMap ? array_merge($sceneMap, $requestMap) : $sceneMap; } else { $map = $requestMap ? array_merge($sceneMap, $requestMap) : $sceneMap; } - //高级筛选 - $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); - } else { - if (!$isMessage) { - $authMapData = []; - $authMapData['auth_user_ids'] = $auth_user_ids; - $authMapData['user_id'] = $user_id; - $authMap = function ($query) use ($authMapData) { - $query->where('business.owner_user_id', array('in', $authMapData['auth_user_ids'])) - ->whereOr('business.ro_user_id', array('like', '%,' . $authMapData['user_id'] . ',%')) - ->whereOr('business.rw_user_id', array('like', '%,' . $authMapData['user_id'] . ',%')); - }; - } - } - - //联系人商机 - if ($contacts_id) { - $business_id = Db::name('crm_contacts_business')->where(['contacts_id' => $contacts_id])->column('business_id'); - if ($business_id) { - $map['business.business_id'] = array('in', $business_id); - } else { - $map['business.business_id'] = array('eq', -1); - } - } - //列表展示字段 - $indexField = $fieldModel->getIndexField('crm_business', $user_id, 1) ?: array('name'); - if (!empty($indexField)) { - foreach ($indexField as $key => $value) { - if ($value == 'business.customer_name') unset($indexField[(int)$key]); - } - } - $userField = $fieldModel->getFieldByFormType('crm_business', 'user'); //人员类型 - $structureField = $fieldModel->getFieldByFormType('crm_business', 'structure'); //部门类型 -// $fieldGrant = db('admin_field_mask')->where('types', 'business')->select(); - # 处理人员和部门类型的排序报错问题(前端传来的是包含_name的别名字段) - $temporaryField = str_replace('_name', '', $order_field); - if (in_array($temporaryField, $userField) || in_array($temporaryField, $structureField)) { - $order_field = $temporaryField; - } //排序 if ($order_type && $order_field) { - $order = $fieldModel->getOrderByFormtype('crm_business', 'business', $order_field, $order_type); + $order = $fieldModel->getOrderByFormtype('crm_customer_check', 'customer_check', $order_field, $order_type); } else { - $order = 'business.update_time desc'; + $order = 'customer_check.update_time desc'; } - # 商机组和商机状态搜索 - if (!empty($businessTypeId)) $map['business.type_id'] = ['eq', $businessTypeId]; - if (!empty($businessStatusId)) { - if (preg_match("/^[1-9][0-9]*$/", $businessStatusId)) { - $map['is_end'] = 0; - $map['business.status_id'] = ['eq', $businessStatusId]; - } else { - $map['is_end'] = abs($businessStatusId); - } - } # 待办事项查询参数 $dealtWhere = []; - if (!empty($businessIdArray)) $dealtWhere['business.business_id'] = ['in', $businessIdArray]; - // 待办事项下需联系商机(逾期) - $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() . "))"; - } - - $readAuthIds = $userModel->getUserByPer('crm', 'business', 'read'); - $updateAuthIds = $userModel->getUserByPer('crm', 'business', 'update'); - $deleteAuthIds = $userModel->getUserByPer('crm', 'business', 'delete'); - $dataCount = db('crm_business') - ->alias('business') - ->join('__CRM_CUSTOMER__ customer', 'business.customer_id = customer.customer_id', 'LEFT') - ->where($map)->where($partMap)->where($authMap)->where($overdueWhere)->where($dealtWhere)->count('business_id'); + if (!empty($customerCheckIdArray)) $dealtWhere['customer_check.customer_check_id'] = ['in', $customerCheckIdArray]; + $dataCount = db('crm_customer_check') + ->alias('customer_check') + ->join('__CRM_CUSTOMER__ customer', 'customer_check.customer_check_id = customer.customer_id', 'LEFT') + ->where($map)->where($partMap)->where($dealtWhere)->count('customer_check_id'); if (!empty($getCount) && $getCount == 1) { $data['dataCount'] = !empty($dataCount) ? $dataCount : 0; - # 商机总金额 - $sumMoney = Db::name('crm_business')->alias('business') - ->whereIn('is_end', [0, 1])->where($map)->where($partMap)->where($authMap)->sum('money'); - $data['extraData']['money'] = ['businessSumMoney' => !empty($sumMoney) ? sprintf("%.2f", $sumMoney) : 0.00]; return $data; } - $list = db('crm_business') - ->alias('business') + $list = db('crm_customer_check') + ->alias('customer_check') ->join('__CRM_CUSTOMER__ customer', 'business.customer_id = customer.customer_id', 'LEFT') ->where($map) ->where($partMap) - ->where($authMap) - ->where($overdueWhere) ->where($dealtWhere) ->limit($request['offset'], $request['length']) - ->field('business.*,customer.name as customer_name') + ->field('customer_check.*,customer.name as customer_name') ->orderRaw($order) ->select(); - $endStatus = ['1' => '赢单', '2' => '输单', '3' => '无效']; # 扩展数据 $extraData = []; - - $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']; - $list[$k]['create_user_id_info'] = isset($v['create_user_id']) ? $userModel->getUserById($v['create_user_id']) : []; - $list[$k]['owner_user_id_info'] = isset($v['owner_user_id']) ? $userModel->getUserById($v['owner_user_id']) : []; - $list[$k]['create_user_name'] = !empty($list[$k]['create_user_id_info']['realname']) ? $list[$k]['create_user_id_info']['realname'] : ''; - $list[$k]['owner_user_name'] = !empty($list[$k]['owner_user_id_info']['realname']) ? $list[$k]['owner_user_id_info']['realname'] : ''; - - $statusInfo = []; - $status_count = 0; - if (!$v['is_end']) { - $statusInfo = db('crm_business_status')->where('status_id', $v['status_id'])->find(); - if ($statusInfo['order_id'] < 99) { - $status_count = db('crm_business_status')->where('type_id', ['eq', $v['type_id']])->count(); - } - //进度 - $list[$k]['status_progress'] = [$statusInfo['order_id'], $status_count + 1]; - } else { - $statusInfo['name'] = $endStatus[$v['is_end']]; - } - $list[$k]['status_id_info'] = $statusInfo['name'];//销售阶段 - $list[$k]['type_id_info'] = db('crm_business_type')->where('type_id', $v['type_id'])->value('name');//商机状态组 - - //权限 - $roPre = $userModel->rwPre($user_id, $v['ro_user_id'], $v['rw_user_id'], 'read'); - $rwPre = $userModel->rwPre($user_id, $v['ro_user_id'], $v['rw_user_id'], 'update'); - $permission = []; - $is_read = 0; - $is_update = 0; - $is_delete = 0; - if (in_array($v['owner_user_id'], $readAuthIds) || $roPre || $rwPre) $is_read = 1; - if (in_array($v['owner_user_id'], $updateAuthIds) || $rwPre) $is_update = 1; - if (in_array($v['owner_user_id'], $deleteAuthIds)) $is_delete = 1; - $permission['is_read'] = $is_read; - $permission['is_update'] = $is_update; - $permission['is_delete'] = $is_delete; - $list[$k]['permission'] = $permission; - # 下次联系时间 - $list[$k]['next_time'] = !empty($v['next_time']) ? date('Y-m-d H:i:s', $v['next_time']) : null; - # 关注 - $starWhere = ['user_id' => $user_id, 'target_id' => $v['business_id'], 'type' => 'crm_business']; - $star = Db::name('crm_star')->where($starWhere)->value('star_id'); - $list[$k]['star'] = !empty($star) ? 1 : 0; - # 日期 - $list[$k]['create_time'] = !empty($v['create_time']) ? date('Y-m-d H:i:s', $v['create_time']) : null; - $list[$k]['update_time'] = !empty($v['update_time']) ? date('Y-m-d H:i:s', $v['update_time']) : null; - $list[$k]['last_time'] = !empty($v['last_time']) ? date('Y-m-d H:i:s', $v['last_time']) : null; - - # 系统字段 负责人部门 zjf 20210726 - $list[$k]['owner_user_structure_name'] = $list[$k]['owner_user_id_info']['structure_name']; - } $data = []; $data['list'] = $list ?: []; $data['dataCount'] = $dataCount ?: 0; - # 商机总金额 - $sumMoney = Db::name('crm_business')->alias('business') - ->join('__CRM_CUSTOMER__ customer', 'business.customer_id = customer.customer_id', 'LEFT') - ->whereIn('is_end', [0, 1])->where($map)->where($partMap)->where($authMap)->sum('money'); - $data['extraData']['money'] = ['businessSumMoney' => !empty($sumMoney) ? sprintf("%.2f", $sumMoney) : 0.00]; return $data; }