127 lines
4.0 KiB
PHP
Executable File
127 lines
4.0 KiB
PHP
Executable File
<?php
|
|
|
|
namespace app\controller;
|
|
|
|
use app\model\{Article as MArticle, CasesModel, Category, Block, Message, Article, Slide};
|
|
use Exception;
|
|
use think\exception\ValidateException;
|
|
use think\facade\Db;
|
|
use think\facade\View;
|
|
use app\service\Tool;
|
|
|
|
class Index extends Base
|
|
{
|
|
public function index()
|
|
{
|
|
$category = Category::getIndex();
|
|
$categoryId = $category['id'] ?? 0;
|
|
$blocks = Block::getByCategoryId($categoryId);
|
|
|
|
$this->news();
|
|
$this->cases();
|
|
$this->companyHistory($blocks['company_history_list']['value']);
|
|
|
|
$this->data['categoryId'] = $categoryId;
|
|
$this->data['blocks'] = Block::convertValue($blocks);
|
|
$this->data['category'] = $category;
|
|
$this->data['topCategoryId'] = Category::firstGradeById($category['id']);
|
|
$this->data['isIndex'] = true;
|
|
$this->data['slide'] = Slide::getList();
|
|
$this->setSeo($this->system['seo_title'], $this->system['seo_keywords'], $this->system['seo_description']);
|
|
return $this->view();
|
|
}
|
|
|
|
// 新闻
|
|
private function news()
|
|
{
|
|
$newsCategory = Category::where('parent_id', Category::CATEGORY_NEWS)
|
|
->order('sort', 'asc')
|
|
->column('id,title,route,url');
|
|
|
|
$sql = '';
|
|
foreach ($newsCategory as $cate) {
|
|
$sql .= empty($sql) ? '' : ' union ';
|
|
$sql .= '(select `id`,`title`,`summary`,`category_id`,`src`,`src_mobile`,`create_time` from bee_article where `category_id` = '.$cate['id'].' order by `top` desc, `sort` desc limit 5)';
|
|
}
|
|
|
|
$res = Db::query($sql);
|
|
$list = [];
|
|
|
|
foreach (array_column($newsCategory, 'id') as $categoryId) {
|
|
if (!isset($list[$categoryId])) {
|
|
$list[$categoryId] = [];
|
|
}
|
|
foreach ($res as $re) {
|
|
if ($re['category_id'] == $categoryId) {
|
|
$list[$categoryId][] = $re;
|
|
}
|
|
}
|
|
}
|
|
|
|
$this->data['newsCategory'] = $newsCategory;
|
|
$this->data['newsList'] = $list;
|
|
}
|
|
|
|
// 案例
|
|
private function cases()
|
|
{
|
|
$casesList = CasesModel::where('home', 1)->order('sort', 'desc')
|
|
->order('id', 'desc')->limit(4)->select();
|
|
|
|
$this->data['casesList'] = $casesList;
|
|
}
|
|
|
|
private function companyHistory(string $companyHistory)
|
|
{
|
|
$companyHistory = nl2br($companyHistory);
|
|
$companyHistory = explode('<br />', $companyHistory);
|
|
$companyHistoryList = [];
|
|
foreach ($companyHistory as $v) {
|
|
$arr = explode(';', $v);
|
|
$companyHistoryList[] = [
|
|
'year' => $arr[0] ?? '',
|
|
'desc' => $arr[1] ?? ''
|
|
];
|
|
}
|
|
$this->data['companyHistoryList'] = $companyHistoryList;
|
|
}
|
|
|
|
/**
|
|
* 留言
|
|
*
|
|
* @throws Exception
|
|
*/
|
|
public function message()
|
|
{
|
|
if ($this->request->isPost()) {
|
|
$item = input('item/a', [], 'strip_tags');
|
|
$validate = $this->validateByApi($item, [
|
|
'code|验证码' => 'require',
|
|
'name|姓名' => 'require',
|
|
'email|邮箱' => 'email',
|
|
'tel|联系方式' => 'require|mobile',
|
|
'content|留言内容' => 'require',
|
|
]);
|
|
if ($validate !== true) {
|
|
return $validate;
|
|
}
|
|
|
|
if (!captcha_check($item['code'])) {
|
|
return $this->json(4001, '验证码错误');
|
|
}
|
|
|
|
Message::create([
|
|
'name' => $item['name'],
|
|
'tel' => $item['tel'],
|
|
'email' => $item['email'],
|
|
'content' => $item['content'],
|
|
'ip' => request()->ip(),
|
|
'create_time' => time(),
|
|
]);
|
|
return $this->json();
|
|
} else {
|
|
return $this->json('请求错误');
|
|
}
|
|
}
|
|
|
|
} |