feat: 英文移动端nas
This commit is contained in:
@@ -15,6 +15,9 @@ class BaseController extends Controller {
|
||||
//当前用户
|
||||
protected $customer_id = 0;
|
||||
|
||||
// 当前国家编码
|
||||
protected $country_code = 'US';
|
||||
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
}
|
||||
@@ -71,6 +74,47 @@ class BaseController extends Controller {
|
||||
$this->view->assign('allCategoryList', $this->categoryList);
|
||||
}
|
||||
|
||||
protected function buildTree($data, $pid = 0)
|
||||
{
|
||||
$tree = [];
|
||||
foreach ($data as $val) {
|
||||
if ($val['pid'] == $pid) {
|
||||
$children = $this->buildTree($data, $val['id']);
|
||||
if (!empty($children)) {
|
||||
$val['items'] = $children;
|
||||
}
|
||||
$tree[] = $val;
|
||||
}
|
||||
}
|
||||
|
||||
return $tree;
|
||||
}
|
||||
|
||||
/**
|
||||
* nasNavigation 获取并组装nas专题页的top导航和footer
|
||||
*/
|
||||
protected function nasNavigation()
|
||||
{
|
||||
$navs = Loader::model('Navigation')->field([
|
||||
'id',
|
||||
'pid',
|
||||
'name',
|
||||
'url',
|
||||
'value',
|
||||
'data_type',
|
||||
'is_new_window_open',
|
||||
])
|
||||
->where('stat', '=', 0)
|
||||
->where('nav_type', '=', 'tops_nas_header')
|
||||
->where('country_code', '=', $this->country_code)
|
||||
->order('sort')
|
||||
->select();
|
||||
|
||||
$navs_array = collection($navs)->toArray();
|
||||
$header = $this->NavDataDealWith($navs_array);
|
||||
$this->assign('nav_header', $this->buildTree($header));
|
||||
}
|
||||
|
||||
//导航初始化
|
||||
private function navInit(){
|
||||
// 读取缓存数据
|
||||
|
||||
@@ -1,12 +1,252 @@
|
||||
<?php
|
||||
namespace app\usmobile\controller;
|
||||
|
||||
use think\Loader;
|
||||
|
||||
class TopsNas extends BaseController
|
||||
{
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
parent::nasNavigation();
|
||||
}
|
||||
|
||||
// 获取指定banner
|
||||
private function getBanners($typeids)
|
||||
{
|
||||
$banners = Loader::model("Banner")->alias('b')->field([
|
||||
'b.id',
|
||||
'b.typeid',
|
||||
'bt.name' => 'typename',
|
||||
'bt.description' => 'typedesc',
|
||||
'b.name',
|
||||
'b.categoryid',
|
||||
'b.url',
|
||||
'b.picture',
|
||||
'b.alt',
|
||||
'b.style',
|
||||
'b.description' => 'desc',
|
||||
'b.descolor',
|
||||
'b.btncolor',
|
||||
'b.videourl',
|
||||
])
|
||||
->join('banner_type bt', 'bt.stat= 0 and bt.id=b.typeid')
|
||||
->where('b.stat', '=', 0)
|
||||
->where('b.typeid', 'in', $typeids)
|
||||
->order(['sort' => 'asc', 'id' => 'asc'])
|
||||
->select();
|
||||
|
||||
$chucks = [];
|
||||
foreach ($banners as $val) {
|
||||
if (empty($chucks['typeid_' . $val['typeid']])) {
|
||||
$chucks['typeid_' . $val['typeid']]['id'] = $val['typeid'];
|
||||
$chucks['typeid_' . $val['typeid']]['name'] = $val['typename'];
|
||||
$chucks['typeid_' . $val['typeid']]['desc'] = $val['typedesc'];
|
||||
$chucks['typeid_' . $val['typeid']]['banners'] = [];
|
||||
}
|
||||
|
||||
$link = $val['url'];
|
||||
if (empty($val['url']) && !empty($val['categoryid'])) {
|
||||
$link = url_rewrite('productsub', ['id' => $val['categoryid']]);
|
||||
}
|
||||
$chucks['typeid_' . $val['typeid']]['banners'][] = [
|
||||
'id' => $val['id'],
|
||||
'name' => $val['name'],
|
||||
'link' => $link,
|
||||
'picture' => $val['picture'],
|
||||
'alt' => $val['alt'],
|
||||
'style' => $val['style'],
|
||||
'desc' => $val['desc'],
|
||||
'desc_color' => $val['descolor'],
|
||||
'btn_color' => $val['btncolor'],
|
||||
'video_url' => $val['videourl'],
|
||||
];
|
||||
}
|
||||
|
||||
return $chucks;
|
||||
}
|
||||
|
||||
public function helper()
|
||||
{
|
||||
// 获取分类
|
||||
$categorys = $this->getCategoryTree(77);
|
||||
// 获取文章
|
||||
$articles = $this->getArticleByCategory($categorys, 3);
|
||||
// 组装数据
|
||||
foreach ($categorys as $key => &$val) {
|
||||
if (!isset($val['articles'])) {
|
||||
$val['articles'] = [];
|
||||
}
|
||||
if (isset($articles['cid_' . $val['id']])) {
|
||||
$items = $articles['cid_' . $val['id']];
|
||||
foreach ($items as $k => $v) {
|
||||
$val['articles'][] = [
|
||||
'id' => $v['id'],
|
||||
'name' => $v['name']
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
unset($val);
|
||||
$this->assign('categorys', $categorys);
|
||||
|
||||
$banners = $this->getBanners(128);
|
||||
if (!empty($banners)) {
|
||||
$banners = $banners['typeid_128']['banners'];
|
||||
}
|
||||
$this->assign('banners', $banners);
|
||||
$this->assign('banners_size', count($banners));
|
||||
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
public function helper_search()
|
||||
{
|
||||
$base_category = 77;
|
||||
$keywords = request()->param('keywords');
|
||||
$articles = Loader::model('Article')
|
||||
->field([
|
||||
'id',
|
||||
'name',
|
||||
'sort',
|
||||
])
|
||||
->where('stat', '=', 0)
|
||||
->where('country_code', '=', $this->country_code)
|
||||
->where('cid', 'in', function ($query) use ($base_category) {
|
||||
$query->name('article_category')
|
||||
->field(['id'])
|
||||
->where('id', '=', $base_category)
|
||||
->whereOr('pid', '=', $base_category);
|
||||
})
|
||||
->where(function ($query) use ($keywords) {
|
||||
if (!empty($keywords)) {
|
||||
$query->where('name', 'like', '%' . $keywords . '%');
|
||||
}
|
||||
})
|
||||
->order(['sort' => 'asc', 'id' => 'desc'])
|
||||
->select();
|
||||
|
||||
return json([
|
||||
'code' => 0,
|
||||
'message' => '获取成功',
|
||||
'data' => $articles
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* getCategoryTree 获取特定文章分类树
|
||||
*/
|
||||
private function getCategoryTree($cid = 36)
|
||||
{
|
||||
// 设备
|
||||
$category = Loader::model('ArticleCategory')
|
||||
->field([
|
||||
'id',
|
||||
'pid',
|
||||
'name',
|
||||
'picture'
|
||||
])
|
||||
->where('isshow', '=', 1)
|
||||
->where('country_code', '=', $this->country_code)
|
||||
->order(['sort' => 'asc'])
|
||||
->select();
|
||||
$category_array = collection($category)->toArray();
|
||||
$category_tree = $this->buildTree($category_array, $cid);
|
||||
return $category_tree;
|
||||
}
|
||||
|
||||
// 根据分类获取文章
|
||||
private function getArticleByCategory($categorys, $limit = null)
|
||||
{
|
||||
if (!is_array($categorys)) {
|
||||
throw new \Exception('请确认分类正确');
|
||||
}
|
||||
if (empty($categorys)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$sub_query = Loader::model('Article')
|
||||
->field([
|
||||
'id',
|
||||
'cid',
|
||||
'name',
|
||||
'sort'
|
||||
])
|
||||
->where('stat', '=', 0)
|
||||
->where('cid', '=', $categorys[0]['id'])
|
||||
->where('country_code', '=', $this->country_code)
|
||||
->order(['sort' => 'asc', 'id' => 'desc']);
|
||||
if (!empty($limit)) {
|
||||
$sub_query = $sub_query->limit($limit);
|
||||
}
|
||||
$sub_query = $sub_query->buildSql();
|
||||
|
||||
$model = \think\Db::table($sub_query . ' a');
|
||||
foreach ($categorys as $key => $val) {
|
||||
if ($key == 0) continue;
|
||||
$model->union(function ($query) use ($val, $limit) {
|
||||
$query->name('article')->field([
|
||||
'id',
|
||||
'cid',
|
||||
'name',
|
||||
'sort'
|
||||
])
|
||||
->where('stat', '=', 0)
|
||||
->where('cid', '=', $val['id'])
|
||||
->where('country_code', '=', $this->country_code)
|
||||
->order(['sort' => 'asc', 'id' => 'desc']);
|
||||
if (!empty($limit)) {
|
||||
$query->limit($limit);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$map = [];
|
||||
$data = $data = $model->select();
|
||||
foreach ($data as $key => $val) {
|
||||
$map['cid_' . $val['cid']][] = $val;
|
||||
}
|
||||
return $map;
|
||||
}
|
||||
|
||||
public function helper_detail()
|
||||
{
|
||||
$id = request()->param('id');
|
||||
$article = Loader::model('Article')->where('id', '=', $id)->find();
|
||||
|
||||
if (request()->isAjax()) {
|
||||
return json([
|
||||
'code' => 0,
|
||||
'message' => '获取成功',
|
||||
'data' => $article
|
||||
]);
|
||||
} else {
|
||||
// 获取分类
|
||||
$categorys = $this->getCategoryTree(77);
|
||||
// 获取文章
|
||||
$articles = $this->getArticleByCategory($categorys,);
|
||||
// 组装数据
|
||||
foreach ($categorys as $key => &$val) {
|
||||
if (!isset($val['articles'])) {
|
||||
$val['articles'] = [];
|
||||
}
|
||||
if (isset($articles['cid_' . $val['id']])) {
|
||||
$items = $articles['cid_' . $val['id']];
|
||||
foreach ($items as $k => $v) {
|
||||
$val['articles'][] = [
|
||||
'id' => $v['id'],
|
||||
'name' => $v['name']
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
unset($val);
|
||||
$this->assign('categorys', $categorys);
|
||||
$this->assign('article', $article);
|
||||
$this->assign('cid', request()->param('cid'));
|
||||
}
|
||||
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
public function download()
|
||||
|
||||
Reference in New Issue
Block a user