diff --git a/Cunkebao/app/traffic-pool/page.tsx b/Cunkebao/app/traffic-pool/page.tsx index 942e1b49..13f7cd0d 100644 --- a/Cunkebao/app/traffic-pool/page.tsx +++ b/Cunkebao/app/traffic-pool/page.tsx @@ -51,6 +51,11 @@ interface StatusType { code: string } +interface SourceType { + id: number + name: string +} + interface ApiResponse { code: number msg: string @@ -97,6 +102,7 @@ export default function TrafficPoolPage() { const [activeCategory, setActiveCategory] = useState("potential") const [sourceFilter, setSourceFilter] = useState("all") const [statusTypes, setStatusTypes] = useState([]) + const [sourceTypes, setSourceTypes] = useState([]) const [statusFilter, setStatusFilter] = useState("all") const [searchQuery, setSearchQuery] = useState("") const [currentPage, setCurrentPage] = useState(1) @@ -239,6 +245,33 @@ export default function TrafficPoolPage() { } }, []) + const fetchSourceTypes = useCallback(async () => { + try { + const response = await api.get>('/v1/traffic/pool/sources', { + headers: { + Authorization: `Bearer ${localStorage.getItem('token')}` + } + } as any) + + if (response.code === 200) { + setSourceTypes(response.data) + } else { + toast({ + title: "获取来源列表失败", + description: response.msg || "请稍后重试", + variant: "destructive", + }) + } + } catch (error) { + console.error("获取来源列表失败:", error) + toast({ + title: "获取来源列表失败", + description: "请检查网络连接或稍后重试", + variant: "destructive", + }) + } + }, []) + // 处理搜索 const handleSearch = useCallback(() => { setUsers([]) @@ -272,6 +305,7 @@ export default function TrafficPoolPage() { // 初始化数据 useEffect(() => { fetchStatusTypes() + fetchSourceTypes() fetchUsers(1, true) }, []) @@ -371,11 +405,11 @@ export default function TrafficPoolPage() { 全部来源 - 抖音直播 - 小红书 - 朋友圈 - 视频号 - 公众号 + {sourceTypes.map((source) => ( + + {source.name} + + ))} diff --git a/Server/application/cunkebao/config/route.php b/Server/application/cunkebao/config/route.php index b5315429..d2bfa6c7 100644 --- a/Server/application/cunkebao/config/route.php +++ b/Server/application/cunkebao/config/route.php @@ -42,7 +42,8 @@ Route::group('v1/', function () { // 流量池相关 Route::group('traffic/pool', function () { Route::get('', 'app\cunkebao\controller\traffic\GetPotentialListWithInCompanyV1Controller@index'); - Route::get('types', 'app\cunkebao\controller\traffic\GetPotentialTypeListV1Controller@index'); + Route::get('types', 'app\cunkebao\controller\traffic\GetPotentialTypeSectionV1Controller@index'); + Route::get('sources', 'app\cunkebao\controller\traffic\GetTrafficSourceSectionV1Controller@index'); }); // 工作台相关 diff --git a/Server/application/cunkebao/controller/traffic/GetPotentialTypeListV1Controller.php b/Server/application/cunkebao/controller/traffic/GetPotentialTypeSectionV1Controller.php similarity index 79% rename from Server/application/cunkebao/controller/traffic/GetPotentialTypeListV1Controller.php rename to Server/application/cunkebao/controller/traffic/GetPotentialTypeSectionV1Controller.php index 16f5dbc9..56cd9b31 100644 --- a/Server/application/cunkebao/controller/traffic/GetPotentialTypeListV1Controller.php +++ b/Server/application/cunkebao/controller/traffic/GetPotentialTypeSectionV1Controller.php @@ -10,9 +10,14 @@ use library\ResponseHelper; /** * 流量池控制器 */ -class GetPotentialTypeListV1Controller extends BaseController +class GetPotentialTypeSectionV1Controller extends BaseController { - protected function getTypeList(): array + /** + * 返回流量处理状态选项 + * + * @return array[] + */ + protected function getTypeSectionCols(): array { return [ [ @@ -39,7 +44,7 @@ class GetPotentialTypeListV1Controller extends BaseController } /** - * 潜在客户的全部状态 + * 获取流量池状态筛选列表 * * @return \think\response\Json */ @@ -47,7 +52,7 @@ class GetPotentialTypeListV1Controller extends BaseController { try { return ResponseHelper::success( - $this->getTypeList() + $this->getTypeSectionCols() ); } catch (\Exception $e) { return ResponseHelper::error($e->getMessage(), $e->getCode()); diff --git a/Server/application/cunkebao/controller/traffic/GetTrafficSourceSectionV1Controller.php b/Server/application/cunkebao/controller/traffic/GetTrafficSourceSectionV1Controller.php new file mode 100644 index 00000000..273e395b --- /dev/null +++ b/Server/application/cunkebao/controller/traffic/GetTrafficSourceSectionV1Controller.php @@ -0,0 +1,45 @@ + $this->getUserInfo('companyId') + ] + ) + ->field('fromd name,id')->group('fromd')->select()->toArray(); + } + + /** + * 获取流量来源筛选列表 + * + * @return \think\response\Json + */ + public function index() + { + try { + return ResponseHelper::success( + $this->getSourceSectionCols() + ); + } catch (\Exception $e) { + return ResponseHelper::error($e->getMessage(), $e->getCode()); + } + } +} \ No newline at end of file