206 lines
5.8 KiB
PHP
206 lines
5.8 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace app\adminapi\controller\firstvisit;
|
|
|
|
use app\adminapi\controller\BaseAdminController;
|
|
use app\adminapi\logic\auth\AuthLogic;
|
|
use app\adminapi\logic\firstvisit\WecomAcquisitionCustomerLogic;
|
|
use app\adminapi\logic\firstvisit\WecomPromotionLogic;
|
|
|
|
class WecomPromotionController extends BaseAdminController
|
|
{
|
|
private const PAGE_PERMISSION = 'firstvisit.wecomPromotion/overview';
|
|
|
|
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 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 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);
|
|
}
|
|
}
|