|
|
|
@ -282,6 +282,19 @@ class ResourceSharingService extends BaseApiService |
|
|
|
// 应用权限过滤 |
|
|
|
$model = $this->applyPermissionFilter($model, $permissions, $person_id, $shared_scope, $shared_by, $assignee_role_ids); |
|
|
|
|
|
|
|
// 全部资源场景下,固定按最近一次分配记录去重 |
|
|
|
if ($shared_scope === 'all') { |
|
|
|
$latestAssignmentSub = $this->assignmentModel |
|
|
|
->alias('sub') |
|
|
|
->field('MAX(id) as latest_id, resource_id') |
|
|
|
->group('resource_id') |
|
|
|
->buildSql(); |
|
|
|
|
|
|
|
$model = $model |
|
|
|
->join([$latestAssignmentSub => 'latest'], 'ra.id = latest.latest_id') |
|
|
|
->field('ra.*'); |
|
|
|
} |
|
|
|
|
|
|
|
// 处理查询条件 - CustomerResources模型的字段 |
|
|
|
$resource_conditions = []; |
|
|
|
|
|
|
|
@ -478,6 +491,28 @@ class ResourceSharingService extends BaseApiService |
|
|
|
$resource_ids = array_column($list['data'], 'resource_id'); |
|
|
|
$resource_ids = array_unique(array_filter($resource_ids)); |
|
|
|
|
|
|
|
// 映射 legacy 表中的资源共享记录 ID,兼容旧接口依赖 |
|
|
|
$resource_sharing_map = []; |
|
|
|
if (!empty($resource_ids)) { |
|
|
|
$legacy_records = $this->model |
|
|
|
->whereIn('resource_id', $resource_ids) |
|
|
|
->order('id', 'desc') |
|
|
|
->field('resource_id, id') |
|
|
|
->select() |
|
|
|
->toArray(); |
|
|
|
|
|
|
|
foreach ($legacy_records as $record) { |
|
|
|
$resourceId = (int) ($record['resource_id'] ?? 0); |
|
|
|
$recordId = (int) ($record['id'] ?? 0); |
|
|
|
if ($resourceId === 0 || $recordId === 0) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
if (!isset($resource_sharing_map[$resourceId])) { |
|
|
|
$resource_sharing_map[$resourceId] = $recordId; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 获取分配人员ID列表 |
|
|
|
$shared_by_ids = array_column($list['data'], 'assigned_by'); |
|
|
|
$shared_by_ids = array_unique(array_filter($shared_by_ids)); |
|
|
|
@ -505,6 +540,45 @@ class ResourceSharingService extends BaseApiService |
|
|
|
$consultant_names = $personnel->whereIn('id', $consultant_ids)->column('name', 'id'); |
|
|
|
} |
|
|
|
|
|
|
|
// 查询销售老师信息(从资源分配表获取) |
|
|
|
$sales_teachers = []; |
|
|
|
if (!empty($resource_ids)) { |
|
|
|
$assignment_model = new \app\model\resource_assignment\ResourceAssignment(); |
|
|
|
$assignments = $assignment_model |
|
|
|
->whereIn('resource_id', $resource_ids) |
|
|
|
->where('assignee_type', 'user') |
|
|
|
->field('resource_id, assignee_id') |
|
|
|
->select() |
|
|
|
->toArray(); |
|
|
|
|
|
|
|
// 获取所有销售人员ID |
|
|
|
$sales_teacher_ids = array_unique(array_column($assignments, 'assignee_id')); |
|
|
|
$sales_teacher_names = []; |
|
|
|
if (!empty($sales_teacher_ids)) { |
|
|
|
$personnel = new \app\model\personnel\Personnel(); |
|
|
|
$sales_teacher_names = $personnel->whereIn('id', $sales_teacher_ids)->column('name', 'id'); |
|
|
|
} |
|
|
|
|
|
|
|
// 按resource_id组织销售老师名称 |
|
|
|
foreach ($assignments as $assignment) { |
|
|
|
$resource_id = $assignment['resource_id']; |
|
|
|
$assignee_id = $assignment['assignee_id']; |
|
|
|
$teacher_name = $sales_teacher_names[$assignee_id] ?? ''; |
|
|
|
|
|
|
|
if (!isset($sales_teachers[$resource_id])) { |
|
|
|
$sales_teachers[$resource_id] = []; |
|
|
|
} |
|
|
|
if (!empty($teacher_name)) { |
|
|
|
$sales_teachers[$resource_id][] = $teacher_name; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 将数组转为字符串 |
|
|
|
foreach ($sales_teachers as $resource_id => &$teachers) { |
|
|
|
$teachers = implode('、', array_unique($teachers)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 查询最近沟通记录 |
|
|
|
$communication_times = []; |
|
|
|
if (!empty($resource_ids)) { |
|
|
|
@ -601,6 +675,10 @@ class ResourceSharingService extends BaseApiService |
|
|
|
|
|
|
|
// 处理每条数据 |
|
|
|
foreach ($list['data'] as &$item) { |
|
|
|
$resourceId = (int) ($item['resource_id'] ?? 0); |
|
|
|
$legacyResourceSharingId = $resource_sharing_map[$resourceId] ?? null; |
|
|
|
$item['resource_sharing_id'] = $legacyResourceSharingId; |
|
|
|
|
|
|
|
if (!empty($item['customerResource'])) { |
|
|
|
// 确保数据类型转换:数据库中的数值需要转换为字符串 |
|
|
|
$source_value = (string) $item['customerResource']['source']; |
|
|
|
@ -611,12 +689,23 @@ class ResourceSharingService extends BaseApiService |
|
|
|
$item['customerResource']['source_channel'] = get_dict_value('SourceChannel', $source_channel_value); |
|
|
|
$item['customerResource']['campus_name'] = $campus_names[$item['customerResource']['campus']] ?? ''; |
|
|
|
|
|
|
|
if ($legacyResourceSharingId !== null) { |
|
|
|
$item['customerResource']['resource_sharing_id'] = $legacyResourceSharingId; |
|
|
|
} |
|
|
|
|
|
|
|
if (!empty($item['customerResource']['consultant'])) { |
|
|
|
$item['customerResource']['consultant_name'] = $consultant_names[$item['customerResource']['consultant']] ?? ''; |
|
|
|
} else { |
|
|
|
$item['customerResource']['consultant_name'] = ''; |
|
|
|
} |
|
|
|
|
|
|
|
// 添加市场老师字段(与consultant_name相同) |
|
|
|
$item['customerResource']['market_teacher'] = $item['customerResource']['consultant_name']; |
|
|
|
|
|
|
|
// 添加销售老师字段(从资源分配表获取的拼接字符串) |
|
|
|
$resource_id = $item['resource_id']; |
|
|
|
$item['customerResource']['sales_teacher'] = $sales_teachers[$resource_id] ?? ''; |
|
|
|
|
|
|
|
$item['customerResource']['communication_time'] = $communication_times[$item['resource_id']] ?? ''; |
|
|
|
|
|
|
|
$resource_id = $item['resource_id']; |
|
|
|
@ -970,6 +1059,45 @@ class ResourceSharingService extends BaseApiService |
|
|
|
$consultant_names = $personnel->whereIn('id', $consultant_ids)->column('name', 'id'); |
|
|
|
} |
|
|
|
|
|
|
|
// 查询销售老师信息(从资源分配表获取) |
|
|
|
$sales_teachers = []; |
|
|
|
if (!empty($resource_ids)) { |
|
|
|
$assignment_model = new \app\model\resource_assignment\ResourceAssignment(); |
|
|
|
$assignments = $assignment_model |
|
|
|
->whereIn('resource_id', $resource_ids) |
|
|
|
->where('assignee_type', 'user') |
|
|
|
->field('resource_id, assignee_id') |
|
|
|
->select() |
|
|
|
->toArray(); |
|
|
|
|
|
|
|
// 获取所有销售人员ID |
|
|
|
$sales_teacher_ids = array_unique(array_column($assignments, 'assignee_id')); |
|
|
|
$sales_teacher_names = []; |
|
|
|
if (!empty($sales_teacher_ids)) { |
|
|
|
$personnel = new \app\model\personnel\Personnel(); |
|
|
|
$sales_teacher_names = $personnel->whereIn('id', $sales_teacher_ids)->column('name', 'id'); |
|
|
|
} |
|
|
|
|
|
|
|
// 按resource_id组织销售老师名称 |
|
|
|
foreach ($assignments as $assignment) { |
|
|
|
$resource_id = $assignment['resource_id']; |
|
|
|
$assignee_id = $assignment['assignee_id']; |
|
|
|
$teacher_name = $sales_teacher_names[$assignee_id] ?? ''; |
|
|
|
|
|
|
|
if (!isset($sales_teachers[$resource_id])) { |
|
|
|
$sales_teachers[$resource_id] = []; |
|
|
|
} |
|
|
|
if (!empty($teacher_name)) { |
|
|
|
$sales_teachers[$resource_id][] = $teacher_name; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 将数组转为字符串 |
|
|
|
foreach ($sales_teachers as $resource_id => &$teachers) { |
|
|
|
$teachers = implode('、', array_unique($teachers)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 查询最近沟通记录 |
|
|
|
$communication_times = []; |
|
|
|
if (!empty($resource_ids)) { |
|
|
|
|