Files
fastmovieai/fastmovie-admin/plugin/article/app/control/controller/AgreementController.php
T
李建琦 eae151fd57 FastMovieAI AI短剧创作平台 二开基线
- 源码: xhadmincn/FastMovieAI (Apache 2.0)
- 二开: Docker部署, Swoole改Select, route.php修复, 补update/VERSION
- vendor/示例资源已gitignore
2026-08-26 18:37:36 +08:00

178 lines
5.6 KiB
PHP

<?php
namespace plugin\article\app\control\controller;
use app\expose\build\builder\FormBuilder;
use app\expose\enum\SubmitEvent;
use plugin\article\app\Basic;
use plugin\article\app\model\PluginArticle;
use plugin\article\app\model\PluginArticleContent;
use support\Request;
use app\expose\helper\Config;
class AgreementController extends Basic
{
public function privacy(Request $request)
{
$alias = 'privacy';
if ($request->method() === 'POST') {
return $this->saveAgreement($request->post(), $alias, $request->channels_uid);
}
return $this->showAgreementForm($alias);
}
public function user(Request $request)
{
$alias = 'user';
if ($request->method() === 'POST') {
return $this->saveAgreement($request->post(), $alias, $request->channels_uid);
}
return $this->showAgreementForm($alias);
}
public function guide(Request $request)
{
$alias = 'guide';
if ($request->method() === 'POST') {
return $this->saveAgreement($request->post(), $alias, $request->channels_uid);
}
return $this->showAgreementForm($alias);
}
public function help(Request $request)
{
$alias = 'help';
if ($request->method() === 'POST') {
return $this->saveAgreement($request->post(), $alias, $request->channels_uid);
}
return $this->showAgreementForm($alias);
}
public function points(Request $request)
{
$alias = 'points';
if ($request->method() === 'POST') {
return $this->saveAgreement($request->post(), $alias, $request->channels_uid);
}
return $this->showAgreementForm($alias);
}
public function terms(Request $request)
{
$alias = 'terms';
if ($request->method() === 'POST') {
return $this->saveAgreement($request->post(), $alias, $request->channels_uid);
}
return $this->showAgreementForm($alias);
}
public function about(Request $request)
{
$alias = 'about';
if ($request->method() === 'POST') {
return $this->saveAgreement($request->post(), $alias, $request->channels_uid);
}
return $this->showAgreementForm($alias);
}
public function cloning(Request $request)
{
$alias = 'cloning';
if ($request->method() === 'POST') {
return $this->saveAgreement($request->post(), $alias, $request->channels_uid);
}
return $this->showAgreementForm($alias);
}
protected function saveAgreement(array $data, string $alias, $channels_uid)
{
$article = PluginArticle::where(['alias' => $alias])->find();
if (!$article) {
$article = new PluginArticle;
$article->alias = $alias;
$article->channels_uid = $channels_uid;
}
$article->title = $data['title'];
$article->save();
$content = PluginArticleContent::where(['article_id' => $article->id])->find();
if (!$content) {
$content = new PluginArticleContent;
$content->article_id = $article->id;
}
$content->content = $data['content'];
$result = $content->save();
$this->cacheHtml($article->id);
if ($result) {
return $this->success('保存成功1');
} else {
return $this->fail('保存失败');
}
}
protected function showAgreementForm(string $alias)
{
$builder = $this->getFormBuilder($alias);
$article = PluginArticle::where('alias', $alias)->find();
if ($article) {
$content = PluginArticleContent::where('article_id', $article->id)->find();
$article->content = $content->content ?? '';
$builder->setData($article->toArray());
}
return $this->resData($builder);
}
protected function getFormBuilder(string $alias)
{
$builder = new FormBuilder(null, null, ['size' => 'large','submitEvent' => SubmitEvent::SILENT]);
$builder->add('title', '标题', 'input', '', [
'required' => true,
'props' => [
'maxlength' => 100,
'show-word-limit' => true
]
]);
$builder->add('alias', '名称', 'input', $alias, [
'props' => [
'disabled' => true
]
]);
$builder->add('content', '内容', 'wangeditor', '', [
'required' => true,
'props' => [
'class' => 'vh-60'
]
]);
return $builder;
}
public function cacheHtml($id)
{
$PluginArticle = PluginArticle::alias('a')->where(['a.id' => $id])->join('plugin_article_content c', 'c.article_id=a.id')->field('a.*,c.content')->find();
$config = new Config('basic', '');
if (!$PluginArticle->source) {
$PluginArticle->source = $config['web_name'];
}
if ($config['logo_use'] == 'image') {
$PluginArticle->web_logo = $config['web_logo_light'];
} else {
$PluginArticle->web_logo = '/vite.svg';
}
$PluginArticle->web_title = "{$PluginArticle->title} - {$config['web_title']}";
$html = view(base_path('plugin/article/public/template.html'), $PluginArticle->toArray(), null, '')->rawBody();
$path = public_path('article/' . $id . '.html');
file_put_contents($path, $html);
if ($PluginArticle->alias) {
$path = public_path('article/' . $PluginArticle->alias . '.html');
file_put_contents($path, $html);
}
}
}