377 lines
11 KiB
PHP
377 lines
11 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace app\admin\controller;
|
|
|
|
use app\admin\BaseController;
|
|
use think\exception\ValidateException;
|
|
use think\facade\Db;
|
|
use think\response\Json;
|
|
use app\model\System\SystemSiteSetting;
|
|
use app\model\System\SystemSiteSettings;
|
|
use app\model\Tenant\Tenant;
|
|
|
|
class SiteSettingsController extends BaseController
|
|
{
|
|
/**
|
|
* 获取指定站点设置列表
|
|
* @return Json
|
|
*/
|
|
public function getNormalInfos()
|
|
{
|
|
// 获取当前租户ID
|
|
$tid = $this->request->param('tid', 0, 'int');
|
|
|
|
// 查询站点设置
|
|
$siteSetting = SystemSiteSetting::where('delete_time', null)
|
|
->where('tid', $tid)
|
|
->find();
|
|
|
|
// 如果没有数据,返回空值结构
|
|
if (!$siteSetting) {
|
|
$data = [
|
|
'sitename' => '',
|
|
'logo' => '',
|
|
'logow' => '',
|
|
'description' => '',
|
|
'copyright' => '',
|
|
'companyname' => '',
|
|
'icp' => ''
|
|
];
|
|
} else {
|
|
$data = [
|
|
'sitename' => $siteSetting->sitename ?? '',
|
|
'logo' => $siteSetting->logo ?? '',
|
|
'logow' => $siteSetting->logow ?? '',
|
|
'description' => $siteSetting->description ?? '',
|
|
'copyright' => $siteSetting->copyright ?? '',
|
|
'companyname' => $siteSetting->companyname ?? '',
|
|
'icp' => $siteSetting->icp ?? ''
|
|
];
|
|
}
|
|
|
|
$this->logSuccess('站点设置管理', '查看基本信息配置', [], $this->getAdminUserInfo());
|
|
|
|
return json([
|
|
'code' => 200,
|
|
'msg' => '获取成功',
|
|
'data' => $data
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 保存基本信息
|
|
* @return Json
|
|
*/
|
|
public function saveNormalInfos()
|
|
{
|
|
$params = $this->request->param();
|
|
$rawData = isset($params['data']) ? json_decode($params['data'], true) : $params;
|
|
$tid = $params['tid'] ?? 0;
|
|
|
|
// 查找或创建记录
|
|
$siteSetting = SystemSiteSetting::where('delete_time', null)
|
|
->where('tid', $tid)
|
|
->find();
|
|
|
|
if (!$siteSetting) {
|
|
$siteSetting = new SystemSiteSetting();
|
|
$siteSetting->tid = $tid;
|
|
$siteSetting->create_time = date('Y-m-d H:i:s');
|
|
}
|
|
|
|
// 更新字段
|
|
if (isset($rawData['sitename'])) {
|
|
$siteSetting->sitename = (string)$rawData['sitename'];
|
|
}
|
|
if (isset($rawData['logo'])) {
|
|
$siteSetting->logo = (string)$rawData['logo'];
|
|
}
|
|
if (isset($rawData['logow'])) {
|
|
$siteSetting->logow = (string)$rawData['logow'];
|
|
}
|
|
if (isset($rawData['description'])) {
|
|
$siteSetting->description = (string)$rawData['description'];
|
|
}
|
|
if (isset($rawData['copyright'])) {
|
|
$siteSetting->copyright = (string)$rawData['copyright'];
|
|
}
|
|
if (isset($rawData['companyname'])) {
|
|
$siteSetting->companyname = (string)$rawData['companyname'];
|
|
}
|
|
if (isset($rawData['icp'])) {
|
|
$siteSetting->icp = (string)$rawData['icp'];
|
|
}
|
|
|
|
$siteSetting->update_time = date('Y-m-d H:i:s');
|
|
$siteSetting->save();
|
|
|
|
$this->logSuccess('站点设置管理', '保存基本信息', ['tid' => $tid], $this->getAdminUserInfo());
|
|
|
|
return json(['code' => 200, 'msg' => '基本信息保存成功']);
|
|
}
|
|
|
|
/**
|
|
* 获取登录验证数据
|
|
* @return Json
|
|
*/
|
|
public function getVerifyInfos()
|
|
{
|
|
// 定义你需要的 label 列表
|
|
$targetLabels = [
|
|
'openVerify',
|
|
'verifyModel',
|
|
'geetest3ID',
|
|
'geetest3KEY',
|
|
'geetest4ID',
|
|
'geetest4KEY'
|
|
];
|
|
|
|
$legalInfos = SystemSiteSettings::where('delete_time', null)
|
|
->whereIn('label', $targetLabels) // 仅筛选指定的 label
|
|
->field('label, value')
|
|
->select();
|
|
|
|
$this->logSuccess('站点设置管理', '查看登录验证数据', [], $this->getAdminUserInfo());
|
|
|
|
return json([
|
|
'code' => 200,
|
|
'msg' => '获取成功',
|
|
'data' => $legalInfos->toArray()
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 保存登录验证数据
|
|
* @return Json
|
|
*/
|
|
public function saveVerifyInfos()
|
|
{
|
|
$params = $this->request->param();
|
|
$allowedLabels = ['openVerify', 'verifyModel', 'geetest3ID', 'geetest3KEY', 'geetest4ID', 'geetest4KEY'];
|
|
|
|
foreach ($allowedLabels as $label) {
|
|
if (isset($params[$label])) {
|
|
$val = $params[$label];
|
|
if (is_bool($val)) {
|
|
$val = $val ? '1' : '0';
|
|
}
|
|
|
|
SystemSiteSettings::where('label', $label)->update([
|
|
'value' => (string)$val
|
|
]);
|
|
}
|
|
}
|
|
|
|
$this->logSuccess('站点设置管理', '保存登录验证配置', $params, $this->getAdminUserInfo());
|
|
|
|
return json(['code' => 200, 'msg' => '保存成功']);
|
|
}
|
|
|
|
/**
|
|
* 获取法律声明和隐私条款
|
|
* @return Json
|
|
*/
|
|
public function getLegalInfos()
|
|
{
|
|
// 定义你需要的 label 列表
|
|
$targetLabels = [
|
|
'legalNotice',
|
|
'privacyTerms'
|
|
];
|
|
|
|
$legalInfos = SystemSiteSettings::where('delete_time', null)
|
|
->whereIn('label', $targetLabels) // 仅筛选指定的 label
|
|
->field('label, value')
|
|
->select();
|
|
|
|
$this->logSuccess('站点设置管理', '查看法律声明和隐私条款', [], $this->getAdminUserInfo());
|
|
|
|
return json([
|
|
'code' => 200,
|
|
'msg' => '获取成功',
|
|
'data' => $legalInfos->toArray()
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 保存法律声明和隐私条款
|
|
* @return Json
|
|
*/
|
|
public function saveLegalInfos()
|
|
{
|
|
$params = $this->request->param();
|
|
$rawData = isset($params['data']) ? json_decode($params['data'], true) : $params;
|
|
$allowedLabels = ['legalNotice', 'privacyTerms'];
|
|
|
|
foreach ($allowedLabels as $label) {
|
|
if (isset($rawData[$label])) {
|
|
SystemSiteSettings::update(
|
|
['value' => (string)$rawData[$label]],
|
|
['label' => $label]
|
|
);
|
|
}
|
|
}
|
|
|
|
$this->logSuccess('站点设置管理', '保存法律声明和隐私条款', ['labels' => $allowedLabels], $this->getAdminUserInfo());
|
|
|
|
return json(['code' => 200, 'msg' => '法律声明和隐私条款保存成功']);
|
|
}
|
|
|
|
/**
|
|
* 获取企业信息
|
|
* @return Json
|
|
*/
|
|
public function getCompanyInfos()
|
|
{
|
|
// 获取当前租户ID
|
|
$tid = $this->request->param('tid', 0, 'int');
|
|
|
|
// 查询租户信息
|
|
$tenant = Tenant::where('delete_time', null)
|
|
->where('id', $tid)
|
|
->find();
|
|
|
|
// 如果没有数据,返回空值结构
|
|
if (!$tenant) {
|
|
$data = [
|
|
'contact_phone' => '',
|
|
'contact_email' => '',
|
|
'address' => '',
|
|
'worktime' => ''
|
|
];
|
|
} else {
|
|
$data = [
|
|
'contact_phone' => $tenant->contact_phone ?? '',
|
|
'contact_email' => $tenant->contact_email ?? '',
|
|
'address' => $tenant->address ?? '',
|
|
'worktime' => $tenant->worktime ?? ''
|
|
];
|
|
}
|
|
|
|
$this->logSuccess('站点设置管理', '查看企业信息', [], $this->getAdminUserInfo());
|
|
|
|
return json([
|
|
'code' => 200,
|
|
'msg' => '获取成功',
|
|
'data' => $data
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 保存企业信息
|
|
* @return Json
|
|
*/
|
|
public function saveCompanyInfos()
|
|
{
|
|
$params = $this->request->param();
|
|
$tid = $params['tid'] ?? 0;
|
|
|
|
// 查找租户记录
|
|
$tenant = Tenant::where('delete_time', null)
|
|
->where('id', $tid)
|
|
->find();
|
|
|
|
if (!$tenant) {
|
|
return json([
|
|
'code' => 404,
|
|
'msg' => '租户不存在'
|
|
]);
|
|
}
|
|
|
|
// 更新字段
|
|
if (isset($params['contact_phone'])) {
|
|
$tenant->contact_phone = (string)$params['contact_phone'];
|
|
}
|
|
if (isset($params['contact_email'])) {
|
|
$tenant->contact_email = (string)$params['contact_email'];
|
|
}
|
|
if (isset($params['address'])) {
|
|
$tenant->address = (string)$params['address'];
|
|
}
|
|
if (isset($params['worktime'])) {
|
|
$tenant->worktime = (string)$params['worktime'];
|
|
}
|
|
|
|
$tenant->save();
|
|
|
|
$this->logSuccess('站点设置管理', '保存企业信息', ['tid' => $tid], $this->getAdminUserInfo());
|
|
|
|
return json(['code' => 200, 'msg' => '企业信息保存成功']);
|
|
}
|
|
|
|
/**
|
|
* 获取企业SEO
|
|
* @return Json
|
|
*/
|
|
public function getCompanySeo()
|
|
{
|
|
// 获取当前租户ID
|
|
$tid = $this->getTenantId();
|
|
|
|
// 直接根据 ID 查询租户记录
|
|
$tenant = Tenant::where('delete_time', null)
|
|
->where('id', $tid)
|
|
->field('seoTitle, seoKeywords, seoDescription')
|
|
->find();
|
|
|
|
// 如果没有数据,返回默认空值
|
|
if (!$tenant) {
|
|
$data = [
|
|
'seoTitle' => '',
|
|
'seoKeywords' => '',
|
|
'seoDescription' => ''
|
|
];
|
|
} else {
|
|
// 直接读取模型对象的属性
|
|
$data = [
|
|
'seoTitle' => $tenant->seoTitle ?? '',
|
|
'seoKeywords' => $tenant->seoKeywords ?? '',
|
|
'seoDescription' => $tenant->seoDescription ?? ''
|
|
];
|
|
}
|
|
|
|
$this->logSuccess('站点设置管理', '查看企业SEO', ['tid' => $tid], $this->getAdminUserInfo());
|
|
|
|
return json([
|
|
'code' => 200,
|
|
'msg' => '获取成功',
|
|
'data' => $data
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 保存企业SEO
|
|
* @return Json
|
|
*/
|
|
public function saveCompanySeo()
|
|
{
|
|
$params = $this->request->param();
|
|
|
|
$id = $this->getTenantId();
|
|
|
|
$tenant = Tenant::where('delete_time', null)
|
|
->where('id', $id)
|
|
->find();
|
|
|
|
if (!$tenant) {
|
|
return json(['code' => 404, 'msg' => '租户不存在']);
|
|
}
|
|
|
|
// 构建更新数据
|
|
$updateData = [];
|
|
if (isset($params['seoTitle'])) $updateData['seoTitle'] = (string)$params['seoTitle'];
|
|
if (isset($params['seoKeywords'])) $updateData['seoKeywords'] = (string)$params['seoKeywords'];
|
|
if (isset($params['seoDescription'])) $updateData['seoDescription'] = (string)$params['seoDescription'];
|
|
|
|
if (!empty($updateData)) {
|
|
$tenant->save($updateData);
|
|
}
|
|
|
|
$this->logSuccess('站点设置管理', '保存企业SEO', ['tid' => $id], $this->getAdminUserInfo());
|
|
|
|
return json(['code' => 200, 'msg' => '企业SEO保存成功']);
|
|
}
|
|
}
|