优化部分代码,增加微信公众号模板
Some checks failed
Tests / PHP 8.2 (push) Has been cancelled
Tests / PHP 8.3 (push) Has been cancelled
Tests / PHP 8.4 (push) Has been cancelled

This commit is contained in:
李琦
2026-08-13 19:02:05 +08:00
parent 2f5e298d6b
commit 6e2769c528
14 changed files with 1578 additions and 0 deletions

View File

@@ -0,0 +1,62 @@
<?php
namespace App\Http\Controllers\Api;
use App\BaseApp\BaseController;
use App\Service\WechatAccountService;
use Illuminate\Http\JsonResponse;
/**
* 公众号账号配置控制器CRUDSecret 加密入库)/ 默认账号切换 / 连通性测试
* list/option/detail 走基类Service 内已做脱敏create/update 覆盖走加密逻辑
*/
class WechatAccountController extends BaseController
{
public function __construct()
{
parent::__construct();
$this->service = WechatAccountService::getInstance();
}
/**
* 新增账号覆盖基类Secret 加密、AppID 查重在 Service 内处理)
* @Method POST
*/
public function create(): JsonResponse
{
return jok($this->service->create(request()->post()), '创建成功');
}
/**
* 更新账号app_secret 传空 = 不修改密钥)
* @Method POST
*/
public function update(): JsonResponse
{
$params = request()->post();
$id = (int) ($params['id'] ?? 0);
if ($id <= 0) {
return jerr('参数错误');
}
unset($params['id']);
return jok($this->service->update($id, $params), '更新成功');
}
/**
* 设为默认发布账号
* @Method POST
*/
public function setDefault(): JsonResponse
{
return jok($this->service->setDefault(request()->post()), '设置成功');
}
/**
* 测试连通性appid+secret 直连微信换 token 验证)
* @Method POST
*/
public function testConnection(): JsonResponse
{
return jok($this->service->testConnection(request()->post()), '连接成功,凭据有效');
}
}

View File

@@ -0,0 +1,97 @@
<?php
namespace App\Http\Controllers\Api;
use App\BaseApp\BaseController;
use App\Service\WechatArticleService;
use Illuminate\Http\JsonResponse;
/**
* 公众号图文控制器CRUD / 版本流水 / 版本回退 / 一键发布 / 发布状态
* 图文正文content_md体量大且含任意字符create/update 覆盖基类直接透传给 Service 白名单处理
*/
class WechatArticleController extends BaseController
{
public function __construct()
{
parent::__construct();
$this->service = WechatArticleService::getInstance();
}
/**
* @Method NO
*/
public function option(): mixed
{
return jerr('不支持');
}
/**
* 新增图文(标题必填在 Service 校验;创建即落 v1 版本流水)
* @Method POST
*/
public function create(): JsonResponse
{
return jok($this->service->create(request()->post()), '创建成功');
}
/**
* 更新图文(版本号 +1 并落「修改」流水)
* @Method POST
*/
public function update(): JsonResponse
{
$params = request()->post();
$id = (int) ($params['id'] ?? 0);
if ($id <= 0) {
return jerr('参数错误');
}
unset($params['id']);
return jok($this->service->update($id, $params), '更新成功');
}
/**
* 版本流水分页(?article_id=
* @Method GET
*/
public function versionList(): JsonResponse
{
return jok($this->service->versionList((int) request()->get('article_id', 0)), '获取成功');
}
/**
* 单版本详情(含正文快照,回退前预览)
* @Method GET
*/
public function versionDetail(): JsonResponse
{
return jok($this->service->versionDetail((int) request()->get('id', 0)), '获取成功');
}
/**
* 版本回退 {id, version_id}
* @Method POST
*/
public function rollback(): JsonResponse
{
return jok($this->service->rollback(request()->post()), '回退成功');
}
/**
* 一键发布 {id, content_html, account_id?}content_html 为前端渲染好的内联样式 HTML
* @Method POST
*/
public function publish(): JsonResponse
{
return jok($this->service->publish(request()->post()), '已提交发布,正在审核');
}
/**
* 查询发布状态并回填(?id=
* @Method GET
*/
public function publishStatus(): JsonResponse
{
return jok($this->service->publishStatus((int) request()->get('id', 0)), '获取成功');
}
}

View File

@@ -0,0 +1,44 @@
<?php
namespace App\Http\Controllers\Api;
use App\BaseApp\BaseController;
use App\Service\WechatThemeService;
use Illuminate\Http\JsonResponse;
/**
* 自定义排版主题控制器:图文编辑器「我的模板」导入/列表/更新/删除
* list/delete 走基类create/update 覆盖直传 Service清洗校验都在 Service 内)
*/
class WechatThemeController extends BaseController
{
public function __construct()
{
parent::__construct();
$this->service = WechatThemeService::getInstance();
}
/**
* 导入模板JSON 清洗入库)
* @Method POST
*/
public function create(): JsonResponse
{
return jok($this->service->create(request()->post()), '导入成功');
}
/**
* 更新模板(名称/色板/样式整体覆盖)
* @Method POST
*/
public function update(): JsonResponse
{
$params = request()->post();
$id = (int) ($params['id'] ?? 0);
if ($id <= 0) {
return jerr('参数错误');
}
unset($params['id']);
return jok($this->service->update($id, $params), '更新成功');
}
}