fix: bug修复
This commit is contained in:
@@ -10,7 +10,8 @@ use think\Cookie;
|
||||
use app\common\controller\BaseController as Controller;
|
||||
|
||||
//<!--#include file="([0-9a-zA-Z/._-]+?)\.html" -->
|
||||
class BaseController extends Controller {
|
||||
class BaseController extends Controller
|
||||
{
|
||||
|
||||
//当前用户
|
||||
protected $customer_id = 0;
|
||||
@@ -18,23 +19,30 @@ class BaseController extends Controller {
|
||||
# 当前国家编码
|
||||
protected $country_code = 'ZH';
|
||||
|
||||
public function __construct() {
|
||||
protected $customer_info = [];
|
||||
protected $categoryList = [];
|
||||
protected $country_list = [];
|
||||
protected $productCategory = [];
|
||||
|
||||
protected $nav_header = [];
|
||||
protected $nav_footer = [];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
// 初始化
|
||||
protected function _initialize() {
|
||||
protected function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
|
||||
if ($this->check_true_login())
|
||||
{
|
||||
if ($this->check_true_login()) {
|
||||
$customer_info = json_decode(Cookie::get('c'), true);
|
||||
$this->view->assign('customer_info', $customer_info);
|
||||
$this->customer_id = $customer_info['id'];
|
||||
$this->customer_id = $customer_info['id'];
|
||||
$this->customer_info = $customer_info;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
$this->_logout();
|
||||
}
|
||||
|
||||
@@ -43,11 +51,67 @@ class BaseController extends Controller {
|
||||
$this->view->assign('seo_description', (string) Config::get('website_seo_description'));
|
||||
// $this->categoryList = $this->cacheGet('productCategoryList');
|
||||
if (empty($this->productCategory)) {
|
||||
$this->categoryList = Loader::model('ProductCategory')->getList(['stat' => 0, 'siteid' => $this->siteid,'isshow'=>1, 'country_code' => $this->country_code], ['sort' => 'asc', 'id' => 'asc'], ['id', 'pid', 'haschild', 'name', 'shortname', 'sort', 'description', 'isshow', 'recommend', 'picture', 'icon', 'image', 'm_icon', 'unique_id']);
|
||||
// $this->categoryList = Loader::model('ProductCategory')->getList(['stat' => 0, 'siteid' => $this->siteid, 'isshow' => 1, 'country_code' => $this->country_code], ['sort' => 'asc', 'id' => 'asc'], ['id', 'pid', 'haschild', 'name', 'shortname', 'sort', 'description', 'isshow', 'recommend', 'picture', 'icon', 'image', 'm_icon', 'unique_id']);
|
||||
$this->categoryList = \think\Db::name('product_category')->alias('pc')
|
||||
->field([
|
||||
'pc.id',
|
||||
'pc.pid',
|
||||
'pc.haschild',
|
||||
'pc.name',
|
||||
'pc.shortname',
|
||||
'pc.sort',
|
||||
'pc.description',
|
||||
'pc.isshow',
|
||||
'pc.recommend',
|
||||
'pc.picture',
|
||||
'pc.icon',
|
||||
'pc.image',
|
||||
'pc.m_icon',
|
||||
'pc.unique_id'
|
||||
])
|
||||
->where('pc.stat', '=', 0)
|
||||
->where('pc.siteid', '=', $this->siteid)
|
||||
->where('pc.isshow', '=', 1)
|
||||
->where('pc.haschild', '=', 0)
|
||||
->where('pc.country_code', '=', $this->country_code)
|
||||
->whereExists(function($query) {
|
||||
$query->name('product')->alias('p')
|
||||
->where('p.stat', '=', 0)
|
||||
->where('p.is_show', '=', 0)
|
||||
->where('p.country_code', '=', $this->country_code)
|
||||
->where('p.cid=pc.id');
|
||||
})
|
||||
->union(function($query) {
|
||||
$query->name('product_category')->alias('uni_pc')
|
||||
->field([
|
||||
'uni_pc.id',
|
||||
'uni_pc.pid',
|
||||
'uni_pc.haschild',
|
||||
'uni_pc.name',
|
||||
'uni_pc.shortname',
|
||||
'uni_pc.sort',
|
||||
'uni_pc.description',
|
||||
'uni_pc.isshow',
|
||||
'uni_pc.recommend',
|
||||
'uni_pc.picture',
|
||||
'uni_pc.icon',
|
||||
'uni_pc.image',
|
||||
'uni_pc.m_icon',
|
||||
'uni_pc.unique_id'
|
||||
])
|
||||
->where('uni_pc.stat', '=', 0)
|
||||
->where('uni_pc.siteid', '=', $this->siteid)
|
||||
->where('uni_pc.isshow', '=', 1)
|
||||
->where('uni_pc.haschild', '=', 1)
|
||||
->where('uni_pc.country_code', '=', $this->country_code);
|
||||
})
|
||||
->order(['sort' => 'asc', 'id' => 'asc'])
|
||||
->select();
|
||||
$this->cacheTag('ProductCategoryTag')->set('productCategoryList', $this->categoryList);
|
||||
}
|
||||
|
||||
$this->productCategory = $this->list_to_tree($this->categoryList);
|
||||
$this->categoryList = collection($this->categoryList);
|
||||
$this->productCategory = $this->buildTreeForCategory($this->categoryList, 0);
|
||||
|
||||
// tiaoshi($this->productCategory[0]['child'][0]['child']);die;
|
||||
if ($this->cacheHas('country_list')) {
|
||||
$this->country_list = $this->cacheGet('country_list');
|
||||
@@ -88,7 +152,27 @@ class BaseController extends Controller {
|
||||
$this->view->assign('productCategory', $this->productCategory);
|
||||
$this->view->assign('allCategoryList', $this->categoryList);
|
||||
}
|
||||
|
||||
|
||||
// 组装分类树状结构
|
||||
private function buildTreeForCategory($data, $pid=0)
|
||||
{
|
||||
$tree = [];
|
||||
foreach ($data as $val) {
|
||||
if ($val['pid'] == $pid) {
|
||||
$children = $this->buildTreeForCategory($data, $val['id']);
|
||||
if (!empty($children)) {
|
||||
$val['child'] = $children;
|
||||
}
|
||||
if (empty($children) && $val['haschild'] == 1) {
|
||||
continue;
|
||||
}
|
||||
$tree[] = $val;
|
||||
}
|
||||
}
|
||||
|
||||
return $tree;
|
||||
}
|
||||
|
||||
protected function buildTree($data, $pid = 0)
|
||||
{
|
||||
$tree = [];
|
||||
@@ -131,7 +215,8 @@ class BaseController extends Controller {
|
||||
}
|
||||
|
||||
//导航初始化
|
||||
private function navInit(){
|
||||
private function navInit()
|
||||
{
|
||||
// 读取缓存数据
|
||||
//$header = $this->cacheGet('cache_common_nav_header_key');
|
||||
//$footer = $this->cacheGet('cache_common_nav_footer_key');
|
||||
@@ -142,34 +227,30 @@ class BaseController extends Controller {
|
||||
// 缓存没数据则从数据库重新读取,顶部菜单
|
||||
//if(empty($header))
|
||||
//{
|
||||
$headerData = Loader::model('Navigation')->field($field)->where(array('nav_type'=>'header', 'stat'=>0, 'pid'=>0, 'country_code' => $this->country_code))->order('sort')->select();
|
||||
$header = self::navDataDealWith($headerData);
|
||||
if(!empty($header))
|
||||
{
|
||||
foreach($header as &$v)
|
||||
{
|
||||
$childData = Loader::model('Navigation')->field($field)->where(array('nav_type'=>'header', 'stat'=>0, 'pid'=>$v['id'], 'country_code' => $this->country_code))->order('sort')->select();
|
||||
$v['items'] = self::navDataDealWith($childData);
|
||||
}
|
||||
$headerData = Loader::model('Navigation')->field($field)->where(array('nav_type' => 'header', 'stat' => 0, 'pid' => 0, 'country_code' => $this->country_code))->order('sort')->select();
|
||||
$header = self::navDataDealWith($headerData);
|
||||
if (!empty($header)) {
|
||||
foreach ($header as &$v) {
|
||||
$childData = Loader::model('Navigation')->field($field)->where(array('nav_type' => 'header', 'stat' => 0, 'pid' => $v['id'], 'country_code' => $this->country_code))->order('sort')->select();
|
||||
$v['items'] = self::navDataDealWith($childData);
|
||||
}
|
||||
//$this->cacheSet('cache_common_nav_header_key', $header, 3600);
|
||||
|
||||
//}
|
||||
|
||||
}
|
||||
//$this->cacheSet('cache_common_nav_header_key', $header, 3600);
|
||||
|
||||
//}
|
||||
|
||||
// 底部导航
|
||||
//if(empty($footer))
|
||||
//{
|
||||
$footerdata = Loader::model('Navigation')->field($field)->where(array('nav_type'=>'footer', 'stat'=>0, 'pid'=>0, 'country_code' => $this->country_code))->order('sort')->select();
|
||||
$footer = self::navDataDealWith($footerdata);
|
||||
if(!empty($footer))
|
||||
{
|
||||
foreach($footer as &$v)
|
||||
{
|
||||
$childData = Loader::model('Navigation')->field($field)->where(array('nav_type'=>'footer', 'stat'=>0, 'pid'=>$v['id'], 'country_code' => $this->country_code))->order('sort')->select();
|
||||
$v['items'] = self::navDataDealWith($childData);
|
||||
}
|
||||
}
|
||||
//$this->cacheSet('cache_common_nav_footer_key', $footer, 3600);
|
||||
$footerdata = Loader::model('Navigation')->field($field)->where(array('nav_type' => 'footer', 'stat' => 0, 'pid' => 0, 'country_code' => $this->country_code))->order('sort')->select();
|
||||
$footer = self::navDataDealWith($footerdata);
|
||||
if (!empty($footer)) {
|
||||
foreach ($footer as &$v) {
|
||||
$childData = Loader::model('Navigation')->field($field)->where(array('nav_type' => 'footer', 'stat' => 0, 'pid' => $v['id'], 'country_code' => $this->country_code))->order('sort')->select();
|
||||
$v['items'] = self::navDataDealWith($childData);
|
||||
}
|
||||
}
|
||||
//$this->cacheSet('cache_common_nav_footer_key', $footer, 3600);
|
||||
//}
|
||||
|
||||
return [
|
||||
@@ -187,13 +268,10 @@ class BaseController extends Controller {
|
||||
*/
|
||||
public function NavDataDealWith($data)
|
||||
{
|
||||
if(!empty($data) && is_array($data))
|
||||
{
|
||||
foreach($data as $k=>&$v)
|
||||
{
|
||||
if (!empty($data) && is_array($data)) {
|
||||
foreach ($data as $k => &$v) {
|
||||
// url处理
|
||||
switch($v['data_type'])
|
||||
{
|
||||
switch ($v['data_type']) {
|
||||
// 文章分类
|
||||
case 'article':
|
||||
$v['url'] = 'article/detail/'.$v['value'].'.html';
|
||||
@@ -208,12 +286,11 @@ class BaseController extends Controller {
|
||||
case 'goods_category':
|
||||
$category = Loader::model('ProductCategory')->getRow(['stat' => 0, 'id' => $v['value'], 'country_code' => $this->country_code], null, ['id' => 'asc']);
|
||||
//echo $category['pid']."<pre>=="; print_r($category);
|
||||
if($category['pid'] == 0) {
|
||||
$v['url'] = 'product/catelists/'.$v['value'].'.html';
|
||||
if ($category['pid'] == 0) {
|
||||
$v['url'] = 'product/catelists/' . $v['value'] . '.html';
|
||||
} else {
|
||||
$v['url'] = 'product/subcategory/' . $v['value'] . '.html';
|
||||
}
|
||||
else{
|
||||
$v['url'] = 'product/subcategory/'.$v['value'].'.html';
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -263,12 +340,12 @@ class BaseController extends Controller {
|
||||
private function check_login_token($customer_id, $curr_time, $p)
|
||||
{
|
||||
$expire = 86400 * 30;
|
||||
if (time() - $curr_time > $expire)
|
||||
if (time() - $curr_time > $expire) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$temp_p = $this->make_pwd($customer_id, $curr_time);
|
||||
if ($temp_p !== $p)
|
||||
{
|
||||
if ($temp_p !== $p) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -309,8 +386,7 @@ class BaseController extends Controller {
|
||||
protected function check_true_login()
|
||||
{
|
||||
// 校验用户是否登录,且校验cookie合法性
|
||||
if (!$this->check_login())
|
||||
{
|
||||
if (!$this->check_login()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -323,8 +399,9 @@ class BaseController extends Controller {
|
||||
|
||||
protected function _logout()
|
||||
{
|
||||
if (Cookie::has('c'))
|
||||
if (Cookie::has('c')) {
|
||||
Cookie::delete('c');
|
||||
}
|
||||
|
||||
$this->customer_id = 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user