display('_display', '')->content('
初始化信息前清空对应的信息记录
')->addable(true);
$recordFields = [
'banner' => '轮播',
'news' => '新闻资讯',
'product' => '产品',
'cases' => '案例',
'job' => '招聘',
'nav' => '导航',
'info' => '基础信息',
];
foreach ($recordFields as $field => $title) {
if (isset($demoData['tables'][$field])) {
$builder->switch($field, "初始化$title")->optionsYesNo()->defaultValue(true);
}
}
$builder->formClass('wide');
$builder->useDialog();
$builder->pageTitle('初始化演示数据');
return $builder->perform(false, function (Form $form) use ($recordFields, $demoData) {
AdminPermission::demoPostCheck();
$data = $form->dataForming();
$filterRecordFields = [];
foreach ($recordFields as $field => $title) {
if (empty($demoData['tables'][$field]) || empty($data[$field])) {
continue;
}
if (empty($demoData['tables'][$field]['records'])) {
continue;
}
if (empty($demoData['tables'][$field]['where'])) {
$demoData['tables'][$field]['where'] = [];
}
$filterRecordFields[$field] = $title;
}
foreach ($filterRecordFields as $field => $title) {
$recordInfo = $demoData['tables'][$field];
switch ($field) {
case 'product':
case 'cases':
case 'job':
case 'news':
$model = CmsModelUtil::getByName($field);
$cat = CmsCatUtil::getByUrl($field);
BizException::throwsIfEmpty($title . "栏目不存在(需要设置访问路径为 $field )", $cat);
$where = array_merge(
['modelId' => $model['id']],
$recordInfo['where']
);
BizException::throwsIf($title . '数据表不为空', ModelUtil::count("cms_content", $where) > 0);
break;
case 'banner':
case 'nav':
BizException::throwsIf($title . '数据表不为空', ModelUtil::count($field, $recordInfo['where']) > 0);
break;
case 'info':
break;
}
}
ModelUtil::transactionBegin();
foreach ($filterRecordFields as $field => $title) {
$recordInfo = $demoData['tables'][$field];
foreach ($recordInfo['records'] as $k => $record) {
switch ($field) {
case 'product':
case 'cases':
case 'job':
case 'news':
$model = CmsModelUtil::getByName($field);
$cat = CmsCatUtil::getByUrl($field);
$data = array_merge([
'modelId' => $model['id'],
'catId' => $cat['id'],
], $record);
if (empty($data['_data'])) {
$data['_data'] = [
'content' => ''
];
}
$dataData = $data['_data'];
unset($data['_data']);
if (!isset($data['status'])) {
$data['status'] = CmsModelContentStatus::SHOW;
}
if (!isset($data['postTime'])) {
$data['postTime'] = date('Y-m-d H:i:s', strtotime('2021-01-01 00:00:00') + $k * 10);
}
if (!isset($data['isRecommend'])) {
$data['isRecommend'] = true;
}
if (!ModelUtil::exists('cms_content', $data)) {
CmsContentUtil::insert($model, $data, $dataData);
}
break;
case 'banner':
case 'nav':
$data = array_merge($recordInfo['where'], $record);
if (!ModelUtil::exists($field, $data)) {
ModelUtil::insert($field, $data);
}
break;
case 'info':
modstart_config()->set($k, $record);
break;
}
}
}
ModelUtil::transactionCommit();
ModStart::clearCache();
return Response::generateSuccess('操作成功');
});
}
}