From e359661ac4e2ab0cab010a434f14429002f70aff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9F=B3=E6=B8=85=E7=88=BD?= Date: Tue, 13 May 2025 15:06:24 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=81=E5=9F=9F=E6=93=8D=E7=9B=98=E6=89=8B?= =?UTF-8?q?=20-=20=E5=8A=A8=E6=80=81=E8=8E=B7=E5=8F=96=E6=B5=81=E9=87=8F?= =?UTF-8?q?=E6=9D=A5=E6=BA=90=E7=9A=84selection=20=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E5=99=A8=E5=88=97=E8=A1=A8=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cunkebao/app/traffic-pool/page.tsx | 44 +++++++++++++++--- Server/application/cunkebao/config/route.php | 3 +- ...> GetPotentialTypeSectionV1Controller.php} | 13 ++++-- .../GetTrafficSourceSectionV1Controller.php | 45 +++++++++++++++++++ 4 files changed, 95 insertions(+), 10 deletions(-) rename Server/application/cunkebao/controller/traffic/{GetPotentialTypeListV1Controller.php => GetPotentialTypeSectionV1Controller.php} (79%) create mode 100644 Server/application/cunkebao/controller/traffic/GetTrafficSourceSectionV1Controller.php 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