hasPagePermission()) { return $this->fail('权限不足'); } return $this->run(fn () => $this->data((new QywxPromotionContactApiService())->tagOptions())); } public function createTag() { if (!$this->hasPagePermission()) { return $this->fail('权限不足'); } if (!$this->request->isPost()) { return $this->fail('请使用 POST 创建标签'); } $name = $this->request->post('name', ''); if (!is_string($name)) { return $this->fail('标签名称格式不正确'); } return $this->run(fn () => $this->data((new QywxPromotionContactApiService())->createTag($name))); } public function uploadWelcomeMedia() { if (!$this->hasPagePermission()) { return $this->fail('权限不足'); } return $this->run(fn () => $this->data((new QywxPromotionMediaService())->upload( $this->request->file('file'), (string) $this->request->post('type', ''), $this->adminId ))); } public function overview() { if (!$this->hasPagePermission()) { return $this->fail('权限不足,无法访问企业微信获客助手'); } return $this->run(fn () => $this->data(WecomPromotionLogic::overview( $this->adminId, $this->adminInfo, $this->request->domain() ))); } public function savePool() { if (!$this->hasPagePermission()) { return $this->fail('权限不足'); } return $this->run(fn () => $this->success('分流方案已保存', WecomPromotionLogic::savePool( $this->request->post(), $this->adminId, $this->adminInfo ))); } public function saveWidget() { if (!$this->hasPagePermission()) { return $this->fail('权限不足'); } return $this->run(fn () => $this->success('浮窗配置已保存', WecomPromotionLogic::saveWidget( $this->request->post(), $this->adminId, $this->adminInfo ))); } public function batchSetOperators() { if (!$this->hasPagePermission()) { return $this->fail('权限不足'); } return $this->run(fn () => $this->success('方案操作人已批量更新', WecomPromotionLogic::batchSetOperators( $this->request->post(), $this->adminId, $this->adminInfo ))); } public function deletePool() { if (!$this->hasPagePermission()) { return $this->fail('权限不足'); } $id = (int) $this->request->post('id', 0); return $this->run(function () use ($id) { WecomPromotionLogic::deletePool($id, $this->adminId, $this->adminInfo); return $this->success('分流方案及企业微信官方获客链接已永久删除'); }); } public function saveLink() { if (!$this->hasPagePermission()) { return $this->fail('权限不足'); } return $this->run(fn () => $this->success('获客助手链接已保存', WecomPromotionLogic::saveLink( $this->request->post(), $this->adminId, $this->adminInfo ))); } public function saveMember() { if (!$this->hasPagePermission()) { return $this->fail('权限不足'); } return $this->run(fn () => $this->success('成员分流规则已保存', WecomPromotionLogic::saveMember( $this->request->post(), $this->adminId, $this->adminInfo ))); } public function toggleMember() { if (!$this->hasPagePermission()) { return $this->fail('权限不足'); } $id = (int) $this->request->post('id', 0); $status = (int) $this->request->post('status', 0); return $this->run(fn () => $this->success( '成员状态已更新', WecomPromotionLogic::toggleMember($id, $status, $this->adminId, $this->adminInfo) )); } public function checkApiPermission() { if (!$this->hasPagePermission()) { return $this->fail('权限不足'); } return $this->run(fn () => $this->success('获客助手 API 权限验证通过', WecomPromotionLogic::checkApiPermission())); } public function syncRemoteLinks() { if (!$this->hasPagePermission()) { return $this->fail('权限不足'); } $poolId = (int) $this->request->post('pool_id', 0); return $this->run(fn () => $this->success('企业微信获客链接同步完成', WecomPromotionLogic::syncRemoteLinks( $poolId, $this->adminId, $this->adminInfo ))); } public function remoteLinkDetail() { if (!$this->hasPagePermission()) { return $this->fail('权限不足'); } $id = (int) $this->request->get('id', 0); return $this->run(fn () => $this->data(WecomPromotionLogic::remoteLinkDetail( $id, $this->adminId, $this->adminInfo ))); } public function deleteRemoteLink() { if (!$this->hasPagePermission()) { return $this->fail('权限不足'); } $id = (int) $this->request->post('id', 0); return $this->run(function () use ($id) { WecomPromotionLogic::deleteRemoteLink($id, $this->adminId, $this->adminInfo); return $this->success('企业微信获客链接已永久删除,本地审计记录已保留'); }); } public function syncCustomers() { if (!$this->hasPagePermission()) { return $this->fail('权限不足'); } return $this->run(fn () => $this->success('获客客户同步完成', WecomAcquisitionCustomerLogic::sync( $this->request->post(), $this->adminId, $this->adminInfo ))); } public function customerStatistics() { if (!$this->hasPagePermission()) { return $this->fail('权限不足'); } return $this->run(fn () => $this->data(WecomAcquisitionCustomerLogic::statistics( $this->request->get(), $this->adminId, $this->adminInfo ))); } public function toggleLink() { if (!$this->hasPagePermission()) { return $this->fail('权限不足'); } $id = (int) $this->request->post('id', 0); $status = (int) $this->request->post('status', 0); return $this->run(function () use ($id, $status) { WecomPromotionLogic::toggleLink($id, $status, $this->adminId, $this->adminInfo); return $this->success('状态已更新'); }); } public function deleteLink() { if (!$this->hasPagePermission()) { return $this->fail('权限不足'); } $id = (int) $this->request->post('id', 0); return $this->run(function () use ($id) { WecomPromotionLogic::deleteLink($id, $this->adminId, $this->adminInfo); return $this->success('获客助手链接已删除'); }); } private function run(callable $callback) { try { return $callback(); } catch (\Throwable $e) { return $this->fail($e->getMessage()); } } private function hasPagePermission(): bool { if ((int) ($this->adminInfo['root'] ?? 0) === 1) { return true; } return in_array(self::PAGE_PERMISSION, AuthLogic::getAuthByAdminId($this->adminId), true); } }