提交 1af85b7a 编写于 作者: D devil

友情链接,导航列表优化

上级 d0eafbf8
......@@ -50,53 +50,63 @@ class Article extends Common
*/
public function Index()
{
// 参数
$params = input();
// 分页
$number = MyC('admin_page_number', 10, true);
// 条件
$where = ArticleService::ArticleListWhere($params);
// 获取总数
$total = ArticleService::ArticleTotal($where);
// 总数
$total = ArticleService::ArticleTotal($this->form_where);
// 分页
$page_params = array(
'number' => $number,
'total' => $total,
'where' => $params,
'page' => isset($params['page']) ? intval($params['page']) : 1,
'url' => MyUrl('admin/article/index'),
);
$page_params = [
'number' => $this->page_size,
'total' => $total,
'where' => $this->data_request,
'page' => $this->page,
'url' => MyUrl('admin/article/index'),
];
$page = new \base\Page($page_params);
$this->assign('page_html', $page->GetPageHtml());
// 获取列表
$data_params = array(
'm' => $page->GetPageStarNumber(),
'n' => $number,
'where' => $where,
'field' => 'a.*',
);
$data = ArticleService::ArticleList($data_params);
$this->assign('data_list', $data['data']);
// 是否启用
$this->assign('common_is_enable_list', lang('common_is_enable_list'));
// 是否
$this->assign('common_is_text_list', lang('common_is_text_list'));
$data_params = [
'where' => $this->form_where,
'm' => $page->GetPageStarNumber(),
'n' => $this->page_size,
];
$ret = ArticleService::ArticleList($data_params);
// 基础参数赋值
$this->assign('params', $this->data_request);
$this->assign('page_html', $page->GetPageHtml());
$this->assign('data_list', $ret['data']);
return $this->fetch();
}
// 文章分类
$article_category = ArticleService::ArticleCategoryList(['field'=>'id,name']);
$this->assign('article_category_list', $article_category['data']);
/**
* 详情
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-08-05T08:21:54+0800
*/
public function Detail()
{
if(!empty($this->data_request['id']))
{
// 条件
$where = [
['id', '=', intval($this->data_request['id'])],
];
// 参数
$this->assign('params', $params);
// 获取列表
$data_params = [
'm' => 0,
'n' => 1,
'where' => $where,
'is_category' => 1,
];
$ret = ArticleService::ArticleList($data_params);
$data = (empty($ret['data']) || empty($ret['data'][0])) ? [] : $ret['data'][0];
$this->assign('data', $data);
}
return $this->fetch();
}
}
/**
* [SaveInfo 文章添加/编辑页面]
......@@ -108,7 +118,7 @@ class Article extends Common
public function SaveInfo()
{
// 参数
$params = input();
$params = $this->data_request;
// 数据
$data = [];
......@@ -118,8 +128,7 @@ class Article extends Common
$data_params = array(
'm' => 0,
'n' => 1,
'where' => ['a.id'=>intval($params['id'])],
'field' => 'a.*',
'where' => ['id'=>intval($params['id'])],
);
$ret = ArticleService::ArticleList($data_params);
$data = empty($ret['data'][0]) ? [] : $ret['data'][0];
......@@ -168,7 +177,7 @@ class Article extends Common
}
// 开始处理
$params = input();
$params = $this->data_request;
return ArticleService::ArticleSave($params);
}
......@@ -188,7 +197,7 @@ class Article extends Common
}
// 开始处理
$params = input();
$params = $this->data_request;
$params['admin'] = $this->admin;
return ArticleService::ArticleDelete($params);
}
......@@ -209,31 +218,8 @@ class Article extends Common
}
// 开始处理
$params = input();
$params['admin'] = $this->admin;
$params['field'] = 'is_enable';
return ArticleService::ArticleStatusUpdate($params);
}
/**
* [StatusHomeRecommended 是否首页推荐状态更新]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-01-12T22:23:06+0800
*/
public function StatusHomeRecommended()
{
// 是否ajax请求
if(!IS_AJAX)
{
return $this->error('非法访问');
}
// 开始处理
$params = input();
$params = $this->data_request;
$params['admin'] = $this->admin;
$params['field'] = 'is_home_recommended';
return ArticleService::ArticleStatusUpdate($params);
}
}
......
......@@ -41,7 +41,7 @@ class CustomView extends Common
}
/**
* [Index 文章列表]
* [Index 列表]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
......@@ -49,56 +49,63 @@ class CustomView extends Common
*/
public function Index()
{
// 参
$params = input();
// 总
$total = CustomViewService::CustomViewTotal($this->form_where);
// 分页
$number = MyC('admin_page_number', 10, true);
// 条件
$where = CustomViewService::CustomViewListWhere($params);
// 获取总数
$total = CustomViewService::CustomViewTotal($where);
// 分页
$page_params = array(
'number' => $number,
'total' => $total,
'where' => $params,
'page' => isset($params['page']) ? intval($params['page']) : 1,
'url' => MyUrl('admin/customview/index'),
);
$page_params = [
'number' => $this->page_size,
'total' => $total,
'where' => $this->data_request,
'page' => $this->page,
'url' => MyUrl('admin/customview/index'),
];
$page = new \base\Page($page_params);
$this->assign('page_html', $page->GetPageHtml());
// 获取列表
$data_params = array(
'm' => $page->GetPageStarNumber(),
'n' => $number,
'where' => $where,
'field' => '*',
);
$data = CustomViewService::CustomViewList($data_params);
$this->assign('data_list', $data['data']);
// 是否启用
$this->assign('common_is_enable_list', lang('common_is_enable_list'));
// 是否包含头部
$this->assign('common_is_header_list', lang('common_is_header_list'));
// 是否包含尾部
$this->assign('common_is_footer_list', lang('common_is_footer_list'));
// 是否满屏
$this->assign('common_is_full_screen_list', lang('common_is_full_screen_list'));
// 获取数据列表
$data_params = [
'where' => $this->form_where,
'm' => $page->GetPageStarNumber(),
'n' => $this->page_size,
];
$ret = CustomViewService::CustomViewList($data_params);
// 参数
$this->assign('params', $params);
// 基础参数赋值
$this->assign('params', $this->data_request);
$this->assign('page_html', $page->GetPageHtml());
$this->assign('data_list', $ret['data']);
return $this->fetch();
}
/**
* 详情
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-08-05T08:21:54+0800
*/
public function Detail()
{
if(!empty($this->data_request['id']))
{
// 条件
$where = [
['id', '=', intval($this->data_request['id'])],
];
// 获取列表
$data_params = [
'm' => 0,
'n' => 1,
'where' => $where,
];
$ret = CustomViewService::CustomViewList($data_params);
$data = (empty($ret['data']) || empty($ret['data'][0])) ? [] : $ret['data'][0];
$this->assign('data', $data);
}
return $this->fetch();
}
/**
* [SaveInfo 添加/编辑页面]
* @author Devil
......@@ -109,34 +116,28 @@ class CustomView extends Common
public function SaveInfo()
{
// 参数
$params = input();
$params = $this->data_request;
// 数据
$data = [];
if(!empty($params['id']))
{
// 获取列表
$data_params = array(
$data_params = [
'm' => 0,
'n' => 1,
'where' => ['id'=>intval($params['id'])],
'field' => '*',
);
];
$ret = CustomViewService::CustomViewList($data_params);
$data = empty($ret['data'][0]) ? [] : $ret['data'][0];
}
$this->assign('data', $data);
// 是否启用
// 静态资源
$this->assign('common_is_enable_list', lang('common_is_enable_list'));
// 是否包含头部
$this->assign('common_is_header_list', lang('common_is_header_list'));
// 是否包含尾部
$this->assign('common_is_footer_list', lang('common_is_footer_list'));
// 是否满屏
$this->assign('common_is_full_screen_list', lang('common_is_full_screen_list'));
return $this->fetch();
......@@ -158,7 +159,7 @@ class CustomView extends Common
}
// 开始处理
$params = input();
$params = $this->data_request;
return CustomViewService::CustomViewSave($params);
}
......@@ -178,7 +179,7 @@ class CustomView extends Common
}
// 开始处理
$params = input();
$params = $this->data_request;
$params['user_type'] = 'admin';
return CustomViewService::CustomViewDelete($params);
}
......@@ -199,7 +200,7 @@ class CustomView extends Common
}
// 开始处理
$params = input();
$params = $this->data_request;
return CustomViewService::CustomViewStatusUpdate($params);
}
}
......
......@@ -50,8 +50,8 @@ class Link extends Common
public function Index()
{
// 获取导航列表
$data = LinkService::LinkList();
$this->assign('data_list', $data['data']);
$ret = LinkService::LinkList(['where'=>$this->form_where]);
$this->assign('data_list', $ret['data']);
// 是否新窗口打开
$this->assign('common_is_new_window_open_list', lang('common_is_new_window_open_list'));
......@@ -78,7 +78,7 @@ class Link extends Common
}
// 开始处理
$params = input();
$params = $this->data_request;
return LinkService::LinkSave($params);
}
......@@ -98,7 +98,7 @@ class Link extends Common
}
// 开始处理
$params = input();
$params = $this->data_request;
$params['user_type'] = 'admin';
return LinkService::LinkDelete($params);
}
......@@ -119,7 +119,7 @@ class Link extends Common
}
// 开始处理
$params = input();
$params = $this->data_request;
return LinkService::LinkStatusUpdate($params);
}
}
......
......@@ -44,7 +44,7 @@ class Navigation extends Common
$this->IsPower();
// 导航类型
$this->nav_type = input('nav_type', 'header');
$this->nav_type = empty($this->data_request['nav_type']) ? 'header' : $this->data_request['nav_type'];
}
/**
......@@ -57,7 +57,10 @@ class Navigation extends Common
public function Index()
{
// 获取导航列表
$this->assign('data_list', NavigationService::NavList(['nav_type'=>$this->nav_type]));
$where = $this->form_where;
$where[] = ['nav_type', '=', $this->nav_type];
$ret = NavigationService::NavList(['where'=>$where]);
$this->assign('data_list', $ret['data']);
// 一级分类
$this->assign('nav_header_pid_list', NavigationService::LevelOneNav(['nav_type'=>$this->nav_type]));
......@@ -98,13 +101,11 @@ class Navigation extends Common
}
// 开始处理
$params = input();
$params = $this->data_request;
$params['nav_type'] = $this->nav_type;
return NavigationService::NavSave($params);
}
/**
* [Delete 删除]
* @author Devil
......@@ -121,7 +122,7 @@ class Navigation extends Common
}
// 开始处理
$params = input();
$params = $this->data_request;
return NavigationService::NavDelete($params);
}
......@@ -141,7 +142,7 @@ class Navigation extends Common
}
// 开始处理
$params = input();
$params = $this->data_request;
return NavigationService::NavStatusUpdate($params);
}
}
......
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2019 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\admin\form;
use app\service\ArticleService;
/**
* 文章动态表格
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-16
* @desc description
*/
class Article
{
// 基础条件
public $condition_base = [];
/**
* 入口
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-16
* @desc description
* @param [array] $params [输入参数]
*/
public function Run($params = [])
{
return [
// 基础配置
'base' => [
'key_field' => 'id',
'status_field' => 'is_enable',
'is_search' => 1,
'search_url' => MyUrl('admin/article/index'),
'is_delete' => 1,
'delete_url' => MyUrl('admin/article/delete'),
'delete_key' => 'ids',
'detail_title' => '基础信息',
],
// 表单配置
'form' => [
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'align' => 'center',
'width' => 80,
],
[
'label' => '标题',
'view_type' => 'module',
'view_key' => 'article/module/info',
'grid_size' => 'sm',
'search_config' => [
'form_type' => 'input',
'form_name' => 'title',
'where_type' => 'like',
],
],
[
'label' => '跳转url地址',
'view_type' => 'field',
'view_key' => 'jump_url',
'grid_size' => 'sm',
'search_config' => [
'form_type' => 'input',
'where_type' => 'like',
],
],
[
'label' => '分类',
'view_type' => 'field',
'view_key' => 'article_category_name',
'search_config' => [
'form_type' => 'select',
'form_name' => 'article_category_id',
'where_type' => 'in',
'data' => $this->ArticleCategoryList(),
'data_key' => 'id',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => '是否启用',
'view_type' => 'status',
'view_key' => 'is_enable',
'post_url' => MyUrl('admin/article/statusupdate'),
'is_form_su' => 1,
'align' => 'center',
'search_config' => [
'form_type' => 'select',
'where_type' => 'in',
'data' => lang('common_is_enable_list'),
'data_key' => 'id',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => '首页推荐',
'view_type' => 'status',
'view_key' => 'is_home_recommended',
'post_url' => MyUrl('admin/article/statusupdate'),
'align' => 'center',
'search_config' => [
'form_type' => 'select',
'where_type' => 'in',
'data' => lang('common_is_text_list'),
'data_key' => 'id',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => '图片数量',
'view_type' => 'field',
'view_key' => 'images_count',
'search_config' => [
'form_type' => 'section',
],
],
[
'label' => '访问次数',
'view_type' => 'field',
'view_key' => 'access_count',
'search_config' => [
'form_type' => 'section',
],
],
[
'label' => '创建时间',
'view_type' => 'field',
'view_key' => 'add_time',
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => '更新时间',
'view_type' => 'field',
'view_key' => 'upd_time',
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => '操作',
'view_type' => 'operate',
'view_key' => 'article/module/operate',
'align' => 'center',
'fixed' => 'right',
],
],
];
}
/**
* 获取文章分类列表
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-11
* @desc description
*/
public function ArticleCategoryList()
{
$res = ArticleService::ArticleCategoryList(['field'=>'id,name']);
return $res['data'];
}
}
?>
\ No newline at end of file
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2019 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\admin\form;
/**
* 自定义页面动态表格
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-16
* @desc description
*/
class CustomView
{
// 基础条件
public $condition_base = [];
/**
* 入口
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-16
* @desc description
* @param [array] $params [输入参数]
*/
public function Run($params = [])
{
return [
// 基础配置
'base' => [
'key_field' => 'id',
'status_field' => 'is_enable',
'is_search' => 1,
'search_url' => MyUrl('admin/customview/index'),
'is_delete' => 1,
'delete_url' => MyUrl('admin/customview/delete'),
'delete_key' => 'ids',
'detail_title' => '基础信息',
],
// 表单配置
'form' => [
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'align' => 'center',
'width' => 80,
],
[
'label' => '标题',
'view_type' => 'module',
'view_key' => 'customview/module/info',
'grid_size' => 'lg',
'search_config' => [
'form_type' => 'input',
'form_name' => 'title',
'where_type' => 'like',
],
],
[
'label' => '是否启用',
'view_type' => 'status',
'view_key' => 'is_enable',
'post_url' => MyUrl('admin/customview/statusupdate'),
'is_form_su' => 1,
'align' => 'center',
'search_config' => [
'form_type' => 'select',
'where_type' => 'in',
'data' => lang('common_is_enable_list'),
'data_key' => 'id',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => '是否头部',
'view_type' => 'status',
'view_key' => 'is_header',
'post_url' => MyUrl('admin/customview/statusupdate'),
'align' => 'center',
'search_config' => [
'form_type' => 'select',
'where_type' => 'in',
'data' => lang('common_is_header_list'),
'data_key' => 'id',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => '是否尾部',
'view_type' => 'status',
'view_key' => 'is_footer',
'post_url' => MyUrl('admin/customview/statusupdate'),
'align' => 'center',
'search_config' => [
'form_type' => 'select',
'where_type' => 'in',
'data' => lang('common_is_footer_list'),
'data_key' => 'id',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => '是否满屏',
'view_type' => 'status',
'view_key' => 'is_full_screen',
'post_url' => MyUrl('admin/customview/statusupdate'),
'align' => 'center',
'search_config' => [
'form_type' => 'select',
'where_type' => 'in',
'data' => lang('common_is_full_screen_list'),
'data_key' => 'id',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => '图片数量',
'view_type' => 'field',
'view_key' => 'images_count',
'search_config' => [
'form_type' => 'section',
],
],
[
'label' => '访问次数',
'view_type' => 'field',
'view_key' => 'access_count',
'search_config' => [
'form_type' => 'section',
],
],
[
'label' => '创建时间',
'view_type' => 'field',
'view_key' => 'add_time',
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => '更新时间',
'view_type' => 'field',
'view_key' => 'upd_time',
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => '操作',
'view_type' => 'operate',
'view_key' => 'customview/module/operate',
'align' => 'center',
'fixed' => 'right',
],
],
];
}
}
?>
\ No newline at end of file
......@@ -115,7 +115,7 @@ class Goodscomments
'label' => '评论图片',
'view_type' => 'module',
'view_key' => 'goodscomments/module/images',
'width' => 140,
'is_list' => 0,
],
[
'label' => '评分',
......
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2019 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\admin\form;
use app\service\LinkService;
/**
* 友情链接动态表格
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-16
* @desc description
*/
class Link
{
// 基础条件
public $condition_base = [];
/**
* 入口
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-16
* @desc description
* @param [array] $params [输入参数]
*/
public function Run($params = [])
{
return [
// 基础配置
'base' => [
'key_field' => 'id',
'status_field' => 'is_enable',
'is_search' => 1,
'search_url' => MyUrl('admin/link/index'),
'is_delete' => 1,
'delete_url' => MyUrl('admin/link/delete'),
'delete_key' => 'ids',
],
// 表单配置
'form' => [
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'align' => 'center',
'width' => 80,
],
[
'label' => '名称',
'view_type' => 'module',
'view_key' => 'link/module/info',
'grid_size' => 'sm',
'search_config' => [
'form_type' => 'input',
'form_name' => 'name',
'where_type' => 'like',
],
],
[
'label' => 'url地址',
'view_type' => 'module',
'view_key' => 'link/module/url',
'grid_size' => 'lg',
'search_config' => [
'form_type' => 'input',
'form_name' => 'url',
'where_type' => 'like',
],
],
[
'label' => '描述',
'view_type' => 'field',
'view_key' => 'describe',
'search_config' => [
'form_type' => 'input',
'where_type' => 'like',
],
],
[
'label' => '是否启用',
'view_type' => 'status',
'view_key' => 'is_enable',
'post_url' => MyUrl('admin/link/statusupdate'),
'is_form_su' => 1,
'align' => 'center',
'search_config' => [
'form_type' => 'select',
'where_type' => 'in',
'data' => lang('common_is_enable_list'),
'data_key' => 'id',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => '是否新窗口打开',
'view_type' => 'status',
'view_key' => 'is_new_window_open',
'post_url' => MyUrl('admin/link/statusupdate'),
'align' => 'center',
'search_config' => [
'form_type' => 'select',
'where_type' => 'in',
'data' => lang('common_is_new_window_open_list'),
'data_key' => 'id',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => '排序',
'view_type' => 'field',
'view_key' => 'sort',
],
[
'label' => '创建时间',
'view_type' => 'field',
'view_key' => 'add_time',
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => '更新时间',
'view_type' => 'field',
'view_key' => 'upd_time',
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => '操作',
'view_type' => 'operate',
'view_key' => 'link/module/operate',
'align' => 'center',
'fixed' => 'right',
],
],
];
}
}
?>
\ No newline at end of file
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2019 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\admin\form;
/**
* 导航动态表格
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-15
* @desc description
*/
class Navigation
{
// 基础条件
public $condition_base = [];
/**
* 入口
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-15
* @desc description
* @param [array] $params [输入参数]
*/
public function Run($params = [])
{
// 导航类型
$nav_type = empty($params['nav_type']) ? 'header' : trim($params['nav_type']);
// 配置信息
return [
// 基础配置
'base' => [
'key_field' => 'id',
'status_field' => 'is_show',
'is_search' => 1,
'search_url' => MyUrl('admin/navigation/index', ['nav_type'=>$nav_type]),
'is_delete' => 1,
'delete_url' => MyUrl('admin/navigation/delete'),
'delete_key' => 'ids',
],
// 表单配置
'form' => [
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'align' => 'center',
'width' => 80,
],
[
'label' => '导航名称',
'view_type' => 'module',
'view_key' => 'navigation/module/info',
'grid_size' => 'sm',
'search_config' => [
'form_type' => 'input',
'form_name' => 'name',
'where_type' => 'like',
],
],
[
'label' => '导航数据类型',
'view_type' => 'field',
'view_key' => 'data_type_text',
'search_config' => [
'form_type' => 'select',
'form_name' => 'data_type',
'where_type' => 'in',
'data' => lang('common_nav_type_list'),
'data_key' => 'value',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => '状态',
'view_type' => 'status',
'view_key' => 'is_show',
'post_url' => MyUrl('admin/navigation/statusupdate'),
'is_form_su' => 1,
'align' => 'center',
'search_config' => [
'form_type' => 'select',
'where_type' => 'in',
'data' => lang('common_is_show_list'),
'data_key' => 'id',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => '新窗口打开',
'view_type' => 'status',
'view_key' => 'is_new_window_open',
'post_url' => MyUrl('admin/navigation/statusupdate'),
'align' => 'center',
'search_config' => [
'form_type' => 'select',
'where_type' => 'in',
'data' => lang('common_is_new_window_open_list'),
'data_key' => 'id',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => '排序',
'view_type' => 'field',
'view_key' => 'sort',
],
[
'label' => '创建时间',
'view_type' => 'field',
'view_key' => 'add_time',
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => '更新时间',
'view_type' => 'field',
'view_key' => 'upd_time',
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => '操作',
'view_type' => 'operate',
'view_key' => 'navigation/module/operate',
'align' => 'center',
'fixed' => 'right',
],
],
];
}
}
?>
\ No newline at end of file
......@@ -167,7 +167,7 @@ class Orderaftersale
'label' => '凭证',
'view_type' => 'module',
'view_key' => 'orderaftersale/module/voucher',
'width' => 140,
'is_list' => 0,
],
[
'label' => '快递公司',
......
......@@ -10,8 +10,6 @@
// +----------------------------------------------------------------------
namespace app\admin\form;
use app\service\AdminService;
/**
* 角色管理动态表格
* @author Devil
......
......@@ -10,11 +10,6 @@
// +----------------------------------------------------------------------
namespace app\admin\form;
use think\Db;
use app\service\GoodsService;
use app\service\RegionService;
use app\service\BrandService;
/**
* 用户动态表格
* @author Devil
......
<!-- 继承公共的 form -->
{{extend name="public/module/detail" /}}
<!-- 重写数据模块 -->
{{block name="detail_data"}}
<!-- 父级内容 -->
{__block__}
<!-- 详情内容 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">详情内容</div>
<div class="am-panel-bd">
{{if !empty($data['content'])}}
<div class="am-scrollable-vertical am-nowrap-initial">
{{$data.content|raw}}
</div>
{{else /}}
<div class="table-no"><i class="am-icon-warning"></i> 没有相关数据</div>
{{/if}}
</div>
</div>
<!-- 详情图片 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">详情图片</div>
<div class="am-panel-bd">
{{if !empty($data['images'])}}
<div data-am-widget="slider" class="am-slider am-slider-default" data-am-slider='{"controlNav":false}'>
<ul class="am-slides">
{{foreach $data.images as $ik=>$iv}}
<li>
<a href="{{$iv}}" target="_blank">
<img src="{{$iv}}" />
</a>
<div class="am-slider-desc">
<div class="am-slider-counter">
<strong class="am-text-lg">{{$ik+1}}</strong>
<span class="am-margin-right-sm">/{{:count($data['images'])}}</span>
<span>{{$iv}}</span>
</div>
</div>
</li>
{{/foreach}}
</ul>
</div>
{{else /}}
<div class="table-no"><i class="am-icon-warning"></i> 没有相关数据</div>
{{/if}}
</div>
</div>
<!-- SEO信息 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">SEO信息</div>
<div class="am-panel-bd">
{{if !empty($data)}}
<dl class="dl-content">
<dt>SEO标题</dt>
<dd>{{$data.seo_title}}</dd>
<dt>SEO关键字</dt>
<dd>{{$data.seo_keywords}}</dd>
<dt>SEO描述</dt>
<dd>{{$data.seo_desc}}</dd>
</dl>
{{else /}}
<div class="table-no"><i class="am-icon-warning"></i> 没有相关数据</div>
{{/if}}
</div>
</div>
{{/block}}
\ No newline at end of file
{{include file="public/header" /}}
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation form-search" method="post" action="{{:MyUrl('admin/article/index')}}" request-type="form">
<div class="thin">
<div class="am-input-group am-input-group-sm am-fl so">
<input type="text" autocomplete="off" name="keywords" class="am-radius" placeholder="标题关键字" value="{{if !empty($params.keywords)}}{{$params.keywords}}{{/if}}" />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius" type="submit" data-am-loading="{spinner:'circle-o-notch', loadingText:'搜索中...'}">搜索</button>
</span>
</div>
<label class="am-fl thin_sub more-submit">
更多筛选条件
{{if isset($params['is_more']) and $params['is_more'] eq 1}}
<input type="checkbox" name="is_more" value="1" id="is_more" checked />
<i class="am-icon-angle-up"></i>
{{else /}}
<input type="checkbox" name="is_more" value="1" id="is_more" />
<i class="am-icon-angle-down"></i>
{{/if}}
</label>
</div>
<table class="so-list more-where {{if !isset($params['is_more'])}}none{{/if}}">
<tbody>
<tr>
<td>
<span>启用:</span>
<select name="is_enable" class="chosen-select" data-placeholder="是否启用...">
<option value="-1">是否启用...</option>
{{foreach $common_is_enable_list as $v}}
<option value="{{$v.id}}" {{if isset($params['is_enable']) and $params['is_enable'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</td>
<td>
<span>分类:</span>
<select name="article_category_id" class="chosen-select" data-placeholder="文章分类...">
<option value="-1">文章分类...</option>
{{foreach $article_category_list as $v}}
<option value="{{$v.id}}" {{if isset($params['article_category_id']) and $params['article_category_id'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</td>
</tr>
<tr>
<td>
<span>推荐:</span>
<select name="is_home_recommended" class="chosen-select" data-placeholder="首页推荐...">
<option value="-1">首页推荐...</option>
{{foreach $common_is_text_list as $v}}
<option value="{{$v.id}}" {{if isset($params['is_home_recommended']) and $params['is_home_recommended'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</td>
<td class="input">
<span>热度:</span>
<input type="number" name="access_count" class="am-form-field am-input-sm am-radius" placeholder="浏览热度" value="{{if !empty($params.access_count)}}{{$params.access_count}}{{/if}}" data-validation-message="热度有误" />
</td>
</tr>
<tr>
<td class="time">
<span>时间:</span>
<span>
<input type="text" autocomplete="off" name="time_start" class="am-form-field am-input-sm am-radius Wdate" placeholder="起始时间" value="{{if !empty($params.time_start)}}{{$params.time_start}}{{/if}}" data-validation-message="日期格式有误" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd'})" autocomplete="off" /><i class="am-icon-calendar"></i>
</span>
<em class="text-grey">~</em>
<span>
<input type="text" autocomplete="off" name="time_end" class="am-form-field am-input-sm am-radius Wdate" placeholder="结束时间" value="{{if !empty($params.time_end)}}{{$params.time_end}}{{/if}}" pattern="^[0-9]{4}-[0-9]{2}-[0-9]{2}$" data-validation-message="日期格式有误" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd'})" autocomplete="off" /><i class="am-icon-calendar"></i>
</span>
</td>
<td>
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner:'circle-o-notch', loadingText:'搜索中...'}">搜索</button>
<a href="{{:MyUrl('admin/article/index')}}" class="am-btn am-btn-warning am-radius am-btn-sm reset-submit">清除条件</a>
</td>
</tr>
</tbody>
</table>
</form>
<!-- form end -->
<!-- top operation start -->
<div class="am-g am-margin-top-sm">
<a href="{{:MyUrl('admin/article/saveinfo')}}" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus"> 新增</a>
<!-- 顶部操作钩子 -->
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
<div class="plugins-tag">
<span>plugins_view_admin_article_top_operate</span>
</div>
{{/if}}
{{php}}
$hook_name = 'plugins_view_admin_article_top_operate';
$hook_data = Hook::listen($hook_name, ['hook_name'=>$hook_name, 'is_backend'=>true]);
if(!empty($hook_data) && is_array($hook_data))
{
foreach($hook_data as $hook)
{
if(is_string($hook) || is_int($hook))
{
echo htmlspecialchars_decode($hook);
}
}
}
{{/php}}
</div>
<!-- top operation end -->
<!-- list start -->
<div class="am-scrollable-horizontal am-table-scrollable-horizontal am-margin-top-sm">
<table class="am-table am-table-striped am-table-hover am-table-bordered am-text-nowrap am-table-td-fixed-last">
<thead>
<tr>
<th class="am-grid-lg">标题</th>
<th>文章分类</th>
<th>访问热度</th>
<th class="am-text-center">是否启用</th>
<th class="am-text-center">首页推荐</th>
<th class="am-text-center">更多</th>
<th class="am-text-center">操作</th>
</tr>
</thead>
<tbody>
{{if !empty($data_list)}}
{{foreach $data_list as $v}}
<tr id="data-list-{{$v.id}}" {{if $v['is_enable'] eq 0}}class="am-active"{{/if}} data-height="85">
<td class="am-text-middle">
<a href="{{$v.url}}" target="_blank" title="{{$v.title}}" {{if !empty($v['title_color'])}} style="color:{{$v.title_color}};" {{/if}} class="am-nowrap-initial">{{$v.title}}</a>
</td>
<td class="am-text-middle">{{$v.article_category_name}}</td>
<td class="am-text-middle">{{$v.access_count}}</td>
<td class="am-text-middle am-text-center">
<a href="javascript:;" class="am-icon-btn am-icon-check submit-state {{if $v['is_enable'] eq 1}}am-success{{else /}}am-default{{/if}}" data-url="{{:MyUrl('admin/article/StatusUpdate')}}" data-id="{{$v.id}}" data-state="{{$v['is_enable']}}" data-is-update-status="1"></a>
</td>
<td class="am-text-middle am-text-center">
<a href="javascript:;" class="am-icon-btn am-icon-check submit-state {{if $v['is_home_recommended'] eq 1}}am-success{{else /}}am-default{{/if}}" data-url="{{:MyUrl('admin/article/statushomerecommended')}}" data-id="{{$v.id}}" data-state="{{$v['is_home_recommended']}}"></a>
</td>
<td class="am-text-middle">
<p class="am-text-center xo-cursor-pr">
<i class="am-icon-caret-down"></i>
<span data-am-modal="{target: '#my-popup{{$v.id}}'}"> 查看更多</span>
</p>
<div class="am-popup am-radius" id="my-popup{{$v.id}}">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title">详情内容</h4>
<span data-am-modal-close
class="am-close">&times;</span>
</div>
<div class="am-popup-bd">
<dl class="dl-content">
<dt>标题</dt>
<dd class="am-nowrap-initial">{{$v.title}}</dd>
<dt>文章分类</dt>
<dd>{{$v.article_category_name}}</dd>
<dt>访问次数</dt>
<dd>{{$v.access_count}}</dd>
<dt>是否启用</dt>
<dd>{{$v.is_enable_text}}</dd>
<dt>内容</dt>
<dd>
<div class="am-scrollable-vertical am-nowrap-initial">{{$v.content|raw}}</div>
</dd>
<dt>SEO标题</dt>
<dd>{{$v.seo_title}}</dd>
<dt>SEO关键字</dt>
<dd>{{$v.seo_keywords}}</dd>
<dt>SEO描述</dt>
<dd>{{$v.seo_desc}}</dd>
<dt>创建时间</dt>
<dd>{{$v.add_time_time}}</dd>
<dt>更新时间</dt>
<dd>{{$v.upd_time_time}}</dd>
</dl>
</div>
</div>
</div>
</td>
<td class="am-operate-grid">
<div class="am-scrollable-vertical">
<a class="am-btn am-btn-secondary am-btn-xs am-radius am-btn-block" href="{{:MyUrl('admin/article/saveinfo', array_merge($params, ['id'=>$v['id']]))}}">
<i class="am-icon-edit"></i>
<span>编辑</span>
</a>
<button class="am-btn am-btn-danger am-btn-xs am-radius am-btn-block submit-delete" data-url="{{:MyUrl('admin/article/delete')}}" data-id="{{$v.id}}">
<i class="am-icon-trash-o"></i>
<span>删除</span>
</button>
<!-- 文章列表操作钩子 -->
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
<div class="plugins-tag">
<span>plugins_view_admin_article_list_operate</span>
</div>
{{/if}}
{{php}}
$hook_name = 'plugins_view_admin_article_list_operate';
$hook_data = Hook::listen($hook_name, ['hook_name'=>$hook_name, 'is_backend'=>true, 'id'=>$v['id'], 'data'=>$v]);
if(!empty($hook_data) && is_array($hook_data))
{
foreach($hook_data as $hook)
{
if(is_string($hook) || is_int($hook))
{
echo htmlspecialchars_decode($hook);
}
}
}
{{/php}}
</div>
</td>
</tr>
{{/foreach}}
{{/if}}
</tbody>
</table>
{{if empty($data_list)}}
<div class="table-no"><i class="am-icon-warning"></i> 没有相关数据</div>
{{/if}}
</div>
<!-- list end -->
<!-- bottom operation start -->
<div class="am-g am-margin-top-sm">
<!-- 底部操作钩子 -->
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
<div class="plugins-tag">
<span>plugins_view_admin_article_bottom_operate</span>
</div>
{{/if}}
{{php}}
$hook_name = 'plugins_view_admin_article_bottom_operate';
$hook_data = Hook::listen($hook_name, ['hook_name'=>$hook_name, 'is_backend'=>true]);
if(!empty($hook_data) && is_array($hook_data))
{
foreach($hook_data as $hook)
{
if(is_string($hook) || is_int($hook))
{
echo htmlspecialchars_decode($hook);
}
}
}
{{/php}}
</div>
<!-- bottom operation end -->
<!-- page start -->
{{if !empty($data_list)}}
{{$page_html|raw}}
{{/if}}
<!-- page end -->
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
\ No newline at end of file
<!-- 继承公共的 form -->
{{extend name="public/module/form" /}}
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<a href="{{:MyUrl('admin/article/saveinfo')}}" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus"> 新增</a>
<!-- 父级内容 -->
{__block__}
{{/block}}
\ No newline at end of file
<!-- 标题信息 -->
{{if !empty($module_data)}}
<a href="{{:MyUrl('index/article/index', ['id'=>$module_data['id']])}}" target="_blank" title="{{$module_data.title}}" {{if !empty($module_data['title_color'])}}style="color:{{$module_data.title_color}};"{{/if}}>{{$module_data.title}}</a>
{{/if}}
\ No newline at end of file
<!-- 操作栏 -->
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/article/detail', ['id'=>$module_data['id']])}}">
<i class="am-icon-eye"></i>
<span>详情</span>
</button>
<a class="am-btn am-btn-secondary am-btn-xs am-radius am-btn-block" href="{{:MyUrl('admin/article/saveinfo', array('id'=>$module_data['id']))}}">
<i class="am-icon-edit"></i>
<span>编辑</span>
</a>
<button type="button" class="am-btn am-btn-danger am-btn-xs am-radius am-btn-block submit-delete" data-url="{{:MyUrl('admin/article/delete')}}" data-id="{{$module_data.id}}" data-key="ids">
<i class="am-icon-trash-o"></i>
<span>删除</span>
</button>
\ No newline at end of file
<!-- 继承公共的 form -->
{{extend name="public/module/detail" /}}
<!-- 重写数据模块 -->
{{block name="detail_data"}}
<!-- 父级内容 -->
{__block__}
<!-- 详情内容 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">详情内容</div>
<div class="am-panel-bd">
{{if !empty($data['content'])}}
<div class="am-scrollable-vertical am-nowrap-initial">
{{$data.content|raw}}
</div>
{{else /}}
<div class="table-no"><i class="am-icon-warning"></i> 没有相关数据</div>
{{/if}}
</div>
</div>
<!-- 详情图片 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">详情图片</div>
<div class="am-panel-bd">
{{if !empty($data['images'])}}
<div data-am-widget="slider" class="am-slider am-slider-default" data-am-slider='{"controlNav":false}'>
<ul class="am-slides">
{{foreach $data.images as $ik=>$iv}}
<li>
<a href="{{$iv}}" target="_blank">
<img src="{{$iv}}" />
</a>
<div class="am-slider-desc">
<div class="am-slider-counter">
<strong class="am-text-lg">{{$ik+1}}</strong>
<span class="am-margin-right-sm">/{{:count($data['images'])}}</span>
<span>{{$iv}}</span>
</div>
</div>
</li>
{{/foreach}}
</ul>
</div>
{{else /}}
<div class="table-no"><i class="am-icon-warning"></i> 没有相关数据</div>
{{/if}}
</div>
</div>
{{/block}}
\ No newline at end of file
{{include file="public/header" /}}
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation form-search" method="post" action="{{:MyUrl('admin/customview/index')}}" request-type="form">
<div class="thin">
<div class="am-input-group am-input-group-sm am-fl so">
<input type="text" autocomplete="off" name="keywords" class="am-radius" placeholder="标题/型号" value="{{if !empty($params.keywords)}}{{$params.keywords}}{{/if}}" />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius" type="submit" data-am-loading="{spinner:'circle-o-notch', loadingText:'搜索中...'}">搜索</button>
</span>
</div>
<label class="am-fl thin_sub more-submit">
更多筛选条件
{{if isset($params['is_more']) and $params['is_more'] eq 1}}
<input type="checkbox" name="is_more" value="1" id="is_more" checked />
<i class="am-icon-angle-up"></i>
{{else /}}
<input type="checkbox" name="is_more" value="1" id="is_more" />
<i class="am-icon-angle-down"></i>
{{/if}}
</label>
</div>
<table class="so-list more-where {{if !isset($params['is_more'])}}none{{/if}}">
<tbody>
<tr>
<td>
<span>头部:</span>
<select name="is_header" class="chosen-select" data-placeholder="包含头部...">
<option value="-1">包含头部...</option>
{{foreach $common_is_header_list as $v}}
<option value="{{$v.id}}" {{if isset($params['is_header']) and $params['is_header'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</td>
<td>
<span>尾部:</span>
<select name="is_footer" class="chosen-select" data-placeholder="包含尾部...">
<option value="-1">包含尾部...</option>
{{foreach $common_is_footer_list as $v}}
<option value="{{$v.id}}" {{if isset($params['is_footer']) and $params['is_footer'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</td>
</tr>
<tr>
<td>
<span>启用:</span>
<select name="is_enable" class="chosen-select" data-placeholder="是否启用...">
<option value="-1">是否启用...</option>
{{foreach $common_is_enable_list as $v}}
<option value="{{$v.id}}" {{if isset($params['is_enable']) and $params['is_enable'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</td>
<td>
<span>满屏:</span>
<select name="is_full_screen" class="chosen-select" data-placeholder="是否满屏...">
<option value="-1">是否满屏...</option>
{{foreach $common_is_full_screen_list as $v}}
<option value="{{$v.id}}" {{if isset($params['is_full_screen']) and $params['is_full_screen'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</td>
</tr>
<tr>
<td class="time">
<span>时间:</span>
<span>
<input type="text" autocomplete="off" name="time_start" class="am-form-field am-input-sm am-radius Wdate" placeholder="起始时间" value="{{if !empty($params.time_start)}}{{$params.time_start}}{{/if}}" data-validation-message="日期格式有误" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd'})" autocomplete="off" /><i class="am-icon-calendar"></i>
</span>
<em class="text-grey">~</em>
<span>
<input type="text" autocomplete="off" name="time_end" class="am-form-field am-input-sm am-radius Wdate" placeholder="结束时间" value="{{if !empty($params.time_end)}}{{$params.time_end}}{{/if}}" pattern="^[0-9]{4}-[0-9]{2}-[0-9]{2}$" data-validation-message="日期格式有误" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd'})" autocomplete="off" /><i class="am-icon-calendar"></i>
</span>
</td>
<td>
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner:'circle-o-notch', loadingText:'搜索中...'}">搜索</button>
<a href="{{:MyUrl('admin/customview/index')}}" class="am-btn am-btn-warning am-radius am-btn-sm reset-submit">清除条件</a>
</td>
</tr>
</tbody>
</table>
</form>
<!-- form end -->
<!-- operation start -->
<div class="am-g am-margin-top-sm">
<a href="{{:MyUrl('admin/customview/saveinfo')}}" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus"> 新增</a>
</div>
<!-- operation end -->
<!-- list start -->
<div class="am-scrollable-horizontal am-table-scrollable-horizontal am-margin-top-sm">
<table class="am-table am-table-striped am-table-hover am-table-bordered am-text-nowrap am-table-td-fixed-last">
<thead>
<tr>
<th class="am-grid-lg">标题</th>
<th class="am-text-center">是否启用</th>
<th class="am-text-center">是否含头部</th>
<th class="am-text-center">是否含尾部</th>
<th class="am-text-center">是否满屏</th>
<th>访问次数</th>
<th class="am-text-center">更多</th>
<th class="am-text-center" data-width="170">操作</th>
</tr>
</thead>
<tbody>
{{if !empty($data_list)}}
{{foreach $data_list as $v}}
<tr id="data-list-{{$v.id}}" {{if $v['is_enable'] eq 0}}class="am-active"{{/if}}>
<td class="am-text-middle am-nowrap-initial">
<a href="{{:str_replace('admin.php', 'index.php', MyUrl('index/customview/index', array('id'=>$v['id'])))}}" target="_blank" title="{{$v.title}}">{{$v.title}}</a>
</td>
<td class="am-text-middle am-text-center">
<a href="javascript:;" class="am-icon-btn am-icon-check submit-state {{if $v['is_enable'] eq 1}}am-success{{else /}}am-default{{/if}}" data-url="{{:MyUrl('admin/customview/statusupdate')}}" data-id="{{$v.id}}" data-state="{{$v['is_enable']}}" data-field="is_enable" data-is-update-status="1"></a>
</td>
<td class="am-text-middle am-text-center">
<a href="javascript:;" class="am-icon-btn am-icon-check submit-state {{if $v['is_header'] eq 1}}am-success{{else /}}am-default{{/if}}" data-url="{{:MyUrl('admin/customview/statusupdate')}}" data-id="{{$v.id}}" data-state="{{$v['is_header']}}" data-field="is_header"></a>
</td>
<td class="am-text-middle am-text-center">
<a href="javascript:;" class="am-icon-btn am-icon-check submit-state {{if $v['is_footer'] eq 1}}am-success{{else /}}am-default{{/if}}" data-url="{{:MyUrl('admin/customview/statusupdate')}}" data-id="{{$v.id}}" data-state="{{$v['is_footer']}}" data-field="is_footer"></a>
</td>
<td class="am-text-middle am-text-center">
<a href="javascript:;" class="am-icon-btn am-icon-check submit-state {{if $v['is_full_screen'] eq 1}}am-success{{else /}}am-default{{/if}}" data-url="{{:MyUrl('admin/customview/statusupdate')}}" data-id="{{$v.id}}" data-state="{{$v['is_full_screen']}}" data-field="is_full_screen"></a>
</td>
<td class="am-text-middle">{{$v.access_count}}</td>
<td class="am-text-middle">
<p class="am-text-center xo-cursor-pr">
<i class="am-icon-caret-down"></i>
<span data-am-modal="{target: '#my-popup{{$v.id}}'}"> 查看更多</span>
</p>
<div class="am-popup am-radius" id="my-popup{{$v.id}}">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title">详情内容</h4>
<span data-am-modal-close
class="am-close">&times;</span>
</div>
<div class="am-popup-bd">
<dl class="dl-content">
<dt>标题</dt>
<dd class="am-nowrap-initial">{{$v.title}}</dd>
<dt>是否启用</dt>
<dd>{{$v.is_enable_text}}</dd>
<dt>是否含头部</dt>
<dd>{{:lang('common_is_header_list')[$v['is_header']]['name']}}</dd>
<dt>是否含尾部</dt>
<dd>{{:lang('common_is_footer_list')[$v['is_footer']]['name']}}</dd>
<dt>是否满屏</dt>
<dd>{{:lang('common_is_full_screen_list')[$v['is_full_screen']]['name']}}</dd>
<dt>访问次数</dt>
<dd>{{$v.access_count}}</dd>
<dt>内容</dt>
<dd>
<div class="am-scrollable-vertical am-nowrap-initial">{{$v.content|raw}}</div>
</dd>
<dt>创建时间</dt>
<dd>{{$v.add_time_time}}</dd>
<dt>更新时间</dt>
<dd>{{$v.upd_time_time}}</dd>
</dl>
</div>
</div>
</div>
</td>
<td class="am-operate-grid" data-width="170">
<div class="am-scrollable-vertical">
<a class="am-btn am-btn-secondary am-btn-xs am-radius" href="{{:MyUrl('admin/customview/saveinfo', array('id'=>$v['id']))}}">
<i class="am-icon-edit"></i>
<span>编辑</span>
</a>
<button class="am-btn am-btn-danger am-btn-xs am-radius submit-delete" data-url="{{:MyUrl('admin/customview/delete')}}" data-id="{{$v.id}}">
<i class="am-icon-trash-o"></i>
<span>删除</span>
</button>
</div>
</td>
</tr>
{{/foreach}}
{{/if}}
</tbody>
</table>
{{if empty($data_list)}}
<div class="table-no"><i class="am-icon-warning"></i> 没有相关数据</div>
{{/if}}
</div>
<!-- list end -->
<!-- page start -->
{{if !empty($data_list)}}
{{$page_html|raw}}
{{/if}}
<!-- page end -->
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
\ No newline at end of file
<!-- 继承公共的 form -->
{{extend name="public/module/form" /}}
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<a href="{{:MyUrl('admin/customview/saveinfo')}}" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus"> 新增</a>
<!-- 父级内容 -->
{__block__}
{{/block}}
\ No newline at end of file
<!-- 标题信息 -->
{{if !empty($module_data)}}
<a href="{{:MyUrl('index/customview/index', ['id'=>$module_data['id']])}}" target="_blank" title="{{$module_data.title}}">{{$module_data.title}}</a>
{{/if}}
\ No newline at end of file
<!-- 操作栏 -->
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/customview/detail', ['id'=>$module_data['id']])}}">
<i class="am-icon-eye"></i>
<span>详情</span>
</button>
<a class="am-btn am-btn-secondary am-btn-xs am-radius am-btn-block" href="{{:MyUrl('admin/customview/saveinfo', array('id'=>$module_data['id']))}}">
<i class="am-icon-edit"></i>
<span>编辑</span>
</a>
<button type="button" class="am-btn am-btn-danger am-btn-xs am-radius am-btn-block submit-delete" data-url="{{:MyUrl('admin/customview/delete')}}" data-id="{{$module_data.id}}" data-key="ids">
<i class="am-icon-trash-o"></i>
<span>删除</span>
</button>
\ No newline at end of file
......@@ -41,7 +41,7 @@
<div class="am-form-group">
<label>内容{{if IsMobile()}}<span class="am-form-group-label-tips">更多编辑功能请使用电脑访问</span>{{/if}}</label>
<textarea class="am-radius am-validate" name="content" rows="5" minlength="50" maxlength="105000" {{if !IsMobile()}}id="editor-tag" data-url="{{:MyUrl('admin/ueditor/index', ['path_type'=>'customview'])}}" placeholder="内容长度最少 50~105000 个字符" {{else /}} placeholder="内容长度最少 50~105000 个字符更多编辑功能请使用电脑访问" {{/if}} data-validation-message="内容长度最少 50~105000 个字符" required>{{if !empty($data)}}{{$data.content}}{{/if}}</textarea>
<textarea class="am-radius am-validate" name="content" rows="5" minlength="10" maxlength="105000" {{if !IsMobile()}}id="editor-tag" data-url="{{:MyUrl('admin/ueditor/index', ['path_type'=>'customview'])}}" placeholder="内容长度最少 10~105000 个字符" {{else /}} placeholder="内容长度最少 10~105000 个字符更多编辑功能请使用电脑访问" {{/if}} data-validation-message="内容长度最少 10~105000 个字符" required>{{if !empty($data)}}{{$data.content}}{{/if}}</textarea>
</div>
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
......
......@@ -10,9 +10,13 @@
<div class="am-panel am-panel-default">
<div class="am-panel-hd">电脑端详情</div>
<div class="am-panel-bd">
<div class="am-scrollable-vertical am-nowrap-initial">
{{$data.content_web|raw}}
</div>
{{if !empty($data['content_web'])}}
<div class="am-scrollable-vertical am-nowrap-initial">
{{$data.content_web|raw}}
</div>
{{else /}}
<div class="table-no"><i class="am-icon-warning"></i> 没有相关数据</div>
{{/if}}
</div>
</div>
......
<!-- 评论图片 -->
{{if !empty($module_data) and !empty($module_data['images'])}}
<div data-am-widget="slider" class="am-slider am-slider-a1" data-am-slider='{&quot;directionNav&quot;:false, slideshow:false}' >
<div data-am-widget="slider" class="am-slider am-slider-default" data-am-slider='{"controlNav":false}'>
<ul class="am-slides">
{{foreach $module_data.images as $img}}
{{foreach $module_data.images as $ik=>$iv}}
<li>
<a href="{{$img}}" target="_blank">
<img src="{{$img}}" />
<a href="{{$iv}}" target="_blank">
<img src="{{$iv}}" />
</a>
<div class="am-slider-desc">
<div class="am-slider-counter">
<strong class="am-text-lg">{{$ik+1}}</strong>
<span class="am-margin-right-sm">/{{:count($module_data['images'])}}</span>
<span>{{$iv}}</span>
</div>
</div>
</li>
{{/foreach}}
</ul>
......
<!-- 继承公共的 form -->
{{extend name="public/module/detail" /}}
\ No newline at end of file
{{include file="public/header" /}}
<!-- 继承公共的 form -->
{{extend name="public/module/form" /}}
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- operation start -->
<div class="am-g">
<button class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus submit-add" data-am-modal="{target: '#data-save-win'}"> 新增</button>
</div>
<!-- operation end -->
<!-- list start -->
<div class="am-scrollable-horizontal am-table-scrollable-horizontal am-margin-top-sm am-margin-bottom-sm">
<table class="am-table am-table-striped am-table-hover am-table-bordered am-text-nowrap am-table-td-fixed-last">
<thead>
<tr>
<th class="am-grid-sm">名称</th>
<th class="am-grid-sm">描述</th>
<th class="am-text-center">状态</th>
<th class="am-text-center" data-width="170">操作</th>
</tr>
</thead>
<tbody>
{{if !empty($data_list)}}
{{foreach $data_list as $v}}
<tr id="data-list-{{$v.id}}" {{if $v['is_enable'] eq 0}} class="am-active"{{/if}}>
<td class="am-text-middle am-nowrap-initial">{{$v.name}}
<a href="{{$v.url}}" target="_blank">
<i class="am-icon-external-link"></i>
</a>
</td>
<td class="am-text-middle am-nowrap-initial">{{$v.describe}}</td>
<td class="am-text-middle am-text-center">
<a href="javascript:;" class="am-icon-btn am-icon-check submit-state {{if $v['is_enable'] eq 1}}am-success{{else /}}am-default{{/if}}" data-url="{{:MyUrl('admin/link/statusupdate')}}" data-id="{{$v.id}}" data-state="{{$v['is_enable']}}" data-is-update-status="1"></a>
</td>
<td class="am-operate-grid" data-width="170">
<div class="am-scrollable-vertical">
<button class="am-btn am-btn-secondary am-btn-xs am-radius submit-edit" data-am-modal="{target: '#data-save-win'}" data-json='{{:json_encode($v)}}'>
<i class="am-icon-edit"></i>
<span>编辑</span>
</button>
<button class="am-btn am-btn-danger am-btn-xs am-radius submit-delete" data-url="{{:MyUrl('admin/link/delete')}}" data-id="{{$v.id}}">
<i class="am-icon-trash-o"></i>
<span>删除</span>
</button>
</div>
</td>
</tr>
{{/foreach}}
{{/if}}
</tbody>
</table>
{{if empty($data_list)}}
<div class="table-no"><i class="am-icon-warning"></i> 没有相关数据</div>
{{/if}}
</div>
<!-- list end -->
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus submit-add" data-am-modal="{target: '#data-save-win'}"> 新增</button>
<!-- 父级内容 -->
{__block__}
{{/block}}
<!-- save win start -->
<div class="am-popup am-radius" id="data-save-win">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title" data-add-title="友情链接添加" data-edit-title="友情链接编辑">友情链接添加</h4>
<span data-am-modal-close class="am-close">&times;</span>
</div>
<div class="am-popup-bd">
<!-- form start -->
<form class="am-form form-validation" action="{{:MyUrl('admin/link/Save')}}" method="POST" request-type="ajax-reload" request-value="">
<div class="am-form-group">
<label>名称</label>
<input type="text" placeholder="名称" name="name" minlength="2" maxlength="16" data-validation-message="名称格式 2~16 个字符" class="am-radius" required />
</div>
<div class="am-form-group">
<label>链接地址<span class="am-form-group-label-tips">带http://或https://</span></label>
<input type="url" placeholder="链接地址" name="url" data-validation-message="链接地址格式有误" class="am-radius" required />
</div>
<div class="am-form-group">
<label>顺序</label>
<input type="number" placeholder="顺序" name="sort" min="0" max="255" data-validation-message="顺序 0~255 之间的数值" class="am-radius" value="0" required />
</div>
{{include file="lib/is_new_window_open" /}}
{{include file="lib/enable" /}}
<div class="am-form-group am-form-success">
<label>描述</label>
<textarea rows="3" maxlength="60" name="describe" class="am-radius" placeholder="描述" data-validation-message="描述不能大于60个字符"></textarea>
</div>
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
</form>
<!-- form end -->
</div>
<!-- 扩展 -->
{{block name="form_extend"}}
<!-- save win start -->
<div class="am-popup am-radius" id="data-save-win">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title" data-add-title="友情链接添加" data-edit-title="友情链接编辑">友情链接添加</h4>
<span data-am-modal-close class="am-close">&times;</span>
</div>
<div class="am-popup-bd">
<!-- form start -->
<form class="am-form form-validation" action="{{:MyUrl('admin/link/Save')}}" method="POST" request-type="ajax-reload" request-value="">
<div class="am-form-group">
<label>名称</label>
<input type="text" placeholder="名称" name="name" minlength="2" maxlength="16" data-validation-message="名称格式 2~16 个字符" class="am-radius" required />
</div>
<div class="am-form-group">
<label>链接地址<span class="am-form-group-label-tips">带http://或https://</span></label>
<input type="url" placeholder="链接地址" name="url" data-validation-message="链接地址格式有误" class="am-radius" required />
</div>
<div class="am-form-group">
<label>顺序</label>
<input type="number" placeholder="顺序" name="sort" min="0" max="255" data-validation-message="顺序 0~255 之间的数值" class="am-radius" value="0" required />
</div>
{{include file="lib/is_new_window_open" /}}
{{include file="lib/enable" /}}
<div class="am-form-group am-form-success">
<label>描述</label>
<textarea rows="3" maxlength="60" name="describe" class="am-radius" placeholder="描述" data-validation-message="描述不能大于60个字符"></textarea>
</div>
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
</form>
<!-- form end -->
</div>
</div>
<!-- save win end -->
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
\ No newline at end of file
<!-- save win end -->
{{/block}}
\ No newline at end of file
<!-- 商品基础信息 -->
{{if !empty($module_data)}}
<div title="{{$module_data.name}}">
<span>{{$module_data.name}}</span>
<a href="{{$module_data.url}}" target="_blank">
<i class="am-icon-external-link"></i>
</a>
</div>
{{/if}}
\ No newline at end of file
<!-- 操作栏 -->
<button type="button" class="am-btn am-btn-secondary am-btn-xs am-radius am-btn-block submit-edit" data-am-modal="{target: '#data-save-win'}" data-json='{{:json_encode($module_data)}}'>
<i class="am-icon-edit"></i>
<span>编辑</span>
</button>
<button type="button" class="am-btn am-btn-danger am-btn-xs am-radius am-btn-block submit-delete" data-url="{{:MyUrl('admin/link/delete')}}" data-id="{{$module_data.id}}" data-key="ids">
<i class="am-icon-trash-o"></i>
<span>删除</span>
</button>
\ No newline at end of file
<!-- 商品基础信息 -->
{{if !empty($module_data['url'])}}
<a href="{{$module_data.url}}" target="_blank" title="{{$module_data.name}}">{{$module_data.url}}</a>
{{/if}}
\ No newline at end of file
<!-- 商品基础信息 -->
{{if !empty($module_data)}}
<div {{if $module_data['pid'] gt 0}}class="am-padding-left-lg am-margin-left-lg"{{/if}} title="{{$module_data.name}}">
<span>{{$module_data.name}}</span>
<a href="{{$module_data.url}}" target="_blank">
<i class="am-icon-external-link"></i>
</a>
</div>
{{/if}}
\ No newline at end of file
<!-- 操作栏 -->
<button type="button" class="am-btn am-btn-secondary am-btn-xs am-radius am-btn-block submit-edit" data-am-modal="{target: '#nav-{{$module_data.data_type}}-save-win'}" data-json='{{:json_encode($module_data)}}' data-tag="nav-{{$module_data.data_type}}-save-win">
<i class="am-icon-edit"></i>
<span>编辑</span>
</button>
<button type="button" class="am-btn am-btn-danger am-btn-xs am-radius am-btn-block submit-delete" data-url="{{:MyUrl('admin/navigation/delete')}}" data-id="{{$module_data.id}}" data-key="ids">
<i class="am-icon-trash-o"></i>
<span>删除</span>
</button>
\ No newline at end of file
<!-- 凭证 -->
{{if !empty($module_data) and !empty($module_data['images'])}}
<div data-am-widget="slider" class="am-slider am-slider-a1" data-am-slider='{&quot;directionNav&quot;:false, slideshow:false}' >
<div data-am-widget="slider" class="am-slider am-slider-default" data-am-slider='{"controlNav":false}'>
<ul class="am-slides">
{{foreach $module_data.images as $img}}
{{foreach $module_data.images as $ik=>$iv}}
<li>
<a href="{{$img}}" target="_blank">
<img src="{{$img}}" />
<a href="{{$iv}}" target="_blank">
<img src="{{$iv}}" />
</a>
<div class="am-slider-desc">
<div class="am-slider-counter">
<strong class="am-text-lg">{{$ik+1}}</strong>
<span class="am-margin-right-sm">/{{:count($module_data['images'])}}</span>
<span>{{$iv}}</span>
</div>
</div>
</li>
{{/foreach}}
</ul>
......
......@@ -46,6 +46,12 @@
<!-- form -->
{{if !empty($form_table) and !empty($form_table['base']) and !empty($form_table['form']) and is_array($form_table['base']) and is_array($form_table['form'])}}
<form class="form-validation-search" method="post" action="{{if isset($form_table['base']['is_search']) and $form_table['base']['is_search'] eq 1 and !empty($form_table['base']['search_url'])}}{{$form_table.base.search_url}}{{/if}}" request-type="jump" request-value="{{if isset($form_table['base']['is_search']) and $form_table['base']['is_search'] eq 1 and !empty($form_table['base']['search_url'])}}{{$form_table.base.search_url}}{{/if}}">
<!-- nav start -->
<div class="am-g form-table-navigation">
{{block name="form_navigation"}}{{/block}}
</div>
<!-- nav end -->
<!-- top operate start -->
<div class="am-g form-table-operate-top">
{{block name="form_operate_top"}}
......@@ -391,7 +397,7 @@
<!-- page start -->
{{block name="form_page"}}
{{if !empty($data_list)}}
{{if !empty($data_list) and isset($page_html)}}
{{$page_html|raw}}
{{/if}}
{{/block}}
......
......@@ -45,47 +45,58 @@ class Article extends Common
public function Index()
{
// 获取文章
$id = input('id');
if(empty($this->data_request['id']))
{
$this->assign('msg', '文章ID有误');
return $this->fetch('public/tips_error');
}
// 获取数据
$id = intval($this->data_request['id']);
$params = [
'where' => ['a.is_enable'=>1, 'a.id'=>$id],
'field' => 'a.id,a.title,a.title_color,a.jump_url,a.content,a.access_count,a.article_category_id,seo_title,seo_keywords,seo_desc,a.add_time',
'm' => 0,
'n' => 1,
'where' => [
'is_enable' => 1,
'id' => $id,
],
'field' => 'id,title,title_color,jump_url,content,access_count,article_category_id,seo_title,seo_keywords,seo_desc,add_time',
'm' => 0,
'n' => 1,
];
$article = ArticleService::ArticleList($params);
if(!empty($article['data'][0]))
$ret = ArticleService::ArticleList($params);
if(!empty($ret['data'][0]))
{
// 访问统计
ArticleService::ArticleAccessCountInc(['id'=>$id]);
// 是否外部链接
if(!empty($article['data'][0]['jump_url']))
if(!empty($ret['data'][0]['jump_url']))
{
return redirect($article['data'][0]['jump_url']);
return redirect($ret['data'][0]['jump_url']);
}
// 获取分类和文字
// 获取分类
$article_category_content = ArticleService::ArticleCategoryListContent();
$this->assign('category_list', $article_category_content['data']);
// seo
$seo_title = empty($article['data'][0]['seo_title']) ? $article['data'][0]['title'] : $article['data'][0]['seo_title'];
$seo_title = empty($ret['data'][0]['seo_title']) ? $ret['data'][0]['title'] : $ret['data'][0]['seo_title'];
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle($seo_title, 2));
if(!empty($article['data'][0]['seo_keywords']))
if(!empty($ret['data'][0]['seo_keywords']))
{
$this->assign('home_seo_site_keywords', $article['data'][0]['seo_keywords']);
$this->assign('home_seo_site_keywords', $ret['data'][0]['seo_keywords']);
}
if(!empty($article['data'][0]['seo_desc']))
if(!empty($ret['data'][0]['seo_desc']))
{
$this->assign('home_seo_site_description', $article['data'][0]['seo_desc']);
$this->assign('home_seo_site_description', $ret['data'][0]['seo_desc']);
}
$this->assign('article', $article['data'][0]);
$this->assign('article', $ret['data'][0]);
return $this->fetch();
} else {
$this->assign('msg', '文章不存在或已删除');
return $this->fetch('public/tips_error');
}
// 无数据
$this->assign('msg', '文章不存在或已删除');
return $this->fetch('public/tips_error');
}
}
?>
\ No newline at end of file
......@@ -19,7 +19,7 @@
<div class="am-u-sm-12 article-header">
<h1 class="am-article-title">{{$article.title}}</h1>
<p class="am-article-meta">
<span>发布时间:{{$article.add_time_time}}</span>
<span>发布时间:{{$article.add_time}}</span>
<span>浏览次数:{{$article.access_count}}</span>
</p>
<hr class="am-article-divider" />
......
......@@ -205,14 +205,6 @@ return array(
1 => array('id' => 1, 'name' => '是'),
),
// 导航数据类型
'common_nav_type_list' => array(
'custom' => '自定义',
'article' => '文章',
'customview' => '自定义页面',
'goods_category' => '商品分类',
),
// 是否含头部
'common_is_header_list' => array(
0 => array('id' => 0, 'name' => '否'),
......@@ -239,6 +231,14 @@ return array(
1 => array('value' => 1, 'name' => '已评价'),
),
// 导航数据类型
'common_nav_type_list' => array(
'custom' => array('value'=>'custom', 'name'=>'自定义'),
'article' => array('value'=>'article', 'name'=>'文章'),
'customview' => array('value'=>'customview', 'name'=>'自定义页面'),
'goods_category' => array('value'=>'goods_category', 'name'=>'商品分类'),
),
// 搜索框下热门关键字类型
'common_search_keywords_type_list' => array(
0 => array('value' => 0, 'name' => '关闭'),
......
......@@ -43,15 +43,29 @@ class AdminRoleService
$data = Db::name('Role')->field($field)->where($where)->order($order_by)->limit($m, $n)->select();
if(!empty($data))
{
foreach($data as &$v)
// 获取对应权限数据
$powers = [];
$ids = array_column($data, 'id');
$powers_data = Db::name('Role')->alias('r')->join(['__ROLE_POWER__'=>'rp'], 'rp.role_id = r.id')->join(['__POWER__'=>'p'], 'rp.power_id = p.id')->where(['r.id'=>$ids])->field('rp.role_id, rp.power_id, p.name')->select();
if(!empty($powers_data))
{
// 关联查询权限和角色数据
if($v['id'] == 1)
foreach($powers_data as $p)
{
$v['items'] = Db::name('Power')->column('name');
} else {
$v['items'] = Db::name('Role')->alias('r')->join(['__ROLE_POWER__'=>'rp'], 'rp.role_id = r.id')->join(['__POWER__'=>'p'], 'rp.power_id = p.id')->where(array('r.id'=>$v['id']))->column('p.name');
$powers[$p['role_id']][] = $p['name'];
}
}
// 是否存在超级管理角色组
// 超级管理员数据库中并没存储关联关系,所以这里直接读取全部权限菜单
if(in_array(1, $ids))
{
$powers[1] = Db::name('Power')->column('name');
}
// 循环处理数据
foreach($data as &$v)
{
// 对应权限数据
$v['items'] = array_key_exists($v['id'], $powers) ? $powers[$v['id']] : [];
// 时间
$v['add_time'] = date('Y-m-d H:i:s', $v['add_time']);
......
......@@ -35,13 +35,14 @@ class ArticleService
public static function ArticleList($params)
{
$where = empty($params['where']) ? [] : $params['where'];
$field = empty($params['field']) ? 'a.*' : $params['field'];
$field = empty($params['field']) ? '*' : $params['field'];
$m = isset($params['m']) ? intval($params['m']) : 0;
$n = isset($params['n']) ? intval($params['n']) : 10;
$data = Db::name('Article')->alias('a')->join(['__ARTICLE_CATEGORY__'=>'ac'], 'a.article_category_id=ac.id')->field($field)->where($where)->order('a.id desc')->limit($m, $n)->select();
$data = Db::name('Article')->field($field)->where($where)->order('id desc')->limit($m, $n)->select();
if(!empty($data))
{
$names = Db::name('ArticleCategory')->where(['id'=>array_column($data, 'article_category_id')])->column('name', 'id');
$common_is_enable_tips = lang('common_is_enable_tips');
foreach($data as &$v)
{
......@@ -51,13 +52,7 @@ class ArticleService
// 分类名称
if(isset($v['article_category_id']))
{
$v['article_category_name'] = Db::name('ArticleCategory')->where(['id'=>$v['article_category_id']])->value('name');
}
// 是否启用
if(isset($v['is_enable']))
{
$v['is_enable_text'] = $common_is_enable_tips[$v['is_enable']]['name'];
$v['article_category_name'] = isset($names[$v['article_category_id']]) ? $names[$v['article_category_id']] : '';
}
// 内容
......@@ -80,15 +75,14 @@ class ArticleService
}
}
// 时间
if(isset($v['add_time']))
{
$v['add_time_time'] = date('Y-m-d H:i:s', $v['add_time']);
$v['add_time_date'] = date('Y-m-d', $v['add_time']);
$v['add_time'] = date('Y-m-d H:i:s', $v['add_time']);
}
if(isset($v['upd_time']))
{
$v['upd_time_time'] = date('Y-m-d H:i:s', $v['upd_time']);
$v['upd_time_date'] = date('Y-m-d', $v['upd_time']);
$v['upd_time'] = empty($v['upd_time']) ? '' : date('Y-m-d H:i:s', $v['upd_time']);
}
}
}
......@@ -105,59 +99,7 @@ class ArticleService
*/
public static function ArticleTotal($where)
{
return (int) Db::name('Article')->alias('a')->join(['__ARTICLE_CATEGORY__'=>'ac'], 'a.article_category_id=ac.id')->where($where)->count();
}
/**
* 列表条件
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-29
* @desc description
* @param [array] $params [输入参数]
*/
public static function ArticleListWhere($params = [])
{
$where = [];
if(!empty($params['keywords']))
{
$where[] = ['a.title', 'like', '%'.$params['keywords'].'%'];
}
// 是否更多条件
if(isset($params['is_more']) && $params['is_more'] == 1)
{
// 等值
if(isset($params['is_enable']) && $params['is_enable'] > -1)
{
$where[] = ['a.is_enable', '=', intval($params['is_enable'])];
}
if(isset($params['article_category_id']) && $params['article_category_id'] > -1)
{
$where[] = ['a.article_category_id', '=', intval($params['article_category_id'])];
}
if(isset($params['is_home_recommended']) && $params['is_home_recommended'] > -1)
{
$where[] = ['a.is_home_recommended', '=', intval($params['is_home_recommended'])];
}
if(isset($params['access_count']) && $params['access_count'] > -1)
{
$where[] = ['a.access_count', '>', intval($params['access_count'])];
}
if(!empty($params['time_start']))
{
$where[] = ['a.add_time', '>', strtotime($params['time_start'])];
}
if(!empty($params['time_end']))
{
$where[] = ['a.add_time', '<', strtotime($params['time_end'])];
}
}
return $where;
return (int) Db::name('Article')->where($where)->count();
}
/**
......@@ -229,7 +171,7 @@ class ArticleService
$content = isset($params['content']) ? htmlspecialchars_decode($params['content']) : '';
// 数据
$images = self::MatchContentImage($content);
$images = ResourcesService::RichTextMatchContentImage($content, 'article');
$data = [
'title' => $params['title'],
'title_color' => empty($params['title_color']) ? '' : $params['title_color'],
......@@ -277,26 +219,6 @@ class ArticleService
}
}
/**
* 正则匹配文章图片
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-01-22T18:06:53+0800
* @param [string] $content [文章内容]
* @return [array] [文章图片数组(一维)]
*/
private static function MatchContentImage($content)
{
if(!empty($content))
{
$pattern = '/<img.*?src=[\'|\"](\/static\/upload\/article\/image\/.*?[\.gif|\.jpg|\.jpeg|\.png|\.bmp])[\'|\"].*?[\/]?>/';
preg_match_all($pattern, $content, $match);
return empty($match[1]) ? [] : $match[1];
}
return array();
}
/**
* 获取分类和所有文章
* @author Devil
......@@ -376,27 +298,24 @@ class ArticleService
*/
public static function ArticleDelete($params = [])
{
// 请求参数
$p = [
[
'checked_type' => 'empty',
'key_name' => 'id',
'error_msg' => '操作id有误',
],
];
$ret = ParamsChecked($params, $p);
if($ret !== true)
// 参数是否有误
if(empty($params['ids']))
{
return DataReturn($ret, -1);
return DataReturn('商品id有误', -1);
}
// 是否数组
if(!is_array($params['ids']))
{
$params['ids'] = explode(',', $params['ids']);
}
// 删除操作
if(Db::name('Article')->where(['id'=>$params['id']])->delete())
if(Db::name('Article')->where(['id'=>$params['ids']])->delete())
{
return DataReturn('删除成功');
}
return DataReturn('删除失败或资源不存在', -100);
return DataReturn('删除失败', -100);
}
/**
......@@ -435,11 +354,11 @@ class ArticleService
}
// 数据更新
if(Db::name('Article')->where(['id'=>intval($params['id'])])->update([$params['field']=>intval($params['state'])]))
if(Db::name('Article')->where(['id'=>intval($params['id'])])->update([$params['field']=>intval($params['state']), 'upd_time'=>time()]))
{
return DataReturn('编辑成功');
}
return DataReturn('编辑失败或数据未改变', -100);
return DataReturn('编辑失败', -100);
}
/**
......
......@@ -34,7 +34,7 @@ class CustomViewService
public static function CustomViewList($params = [])
{
$where = empty($params['where']) ? [] : $params['where'];
$field = empty($params['field']) ? 'id,title,content,is_header,is_footer,is_full_screen,access_count,is_enable' : $params['field'];
$field = empty($params['field']) ? '*' : $params['field'];
$m = isset($params['m']) ? intval($params['m']) : 0;
$n = isset($params['n']) ? intval($params['n']) : 10;
......@@ -57,29 +57,24 @@ class CustomViewService
}
// 图片
if(isset($v['images']))
if(!empty($v['images']))
{
if(!empty($v['images']))
$images = json_decode($v['images'], true);
foreach($images as &$img)
{
$images = json_decode($v['images'], true);
foreach($images as &$img)
{
$img = ResourcesService::AttachmentPathViewHandle($img);
}
$v['images'] = $images;
$img = ResourcesService::AttachmentPathViewHandle($img);
}
$v['images'] = $images;
}
// 时间
if(isset($v['add_time']))
{
$v['add_time_time'] = date('Y-m-d H:i:s', $v['add_time']);
$v['add_time_date'] = date('Y-m-d', $v['add_time']);
$v['add_time'] = date('Y-m-d H:i:s', $v['add_time']);
}
if(isset($v['upd_time']))
{
$v['upd_time_time'] = date('Y-m-d H:i:s', $v['upd_time']);
$v['upd_time_date'] = date('Y-m-d', $v['upd_time']);
$v['upd_time'] = empty($v['upd_time']) ? '' : date('Y-m-d H:i:s', $v['upd_time']);
}
}
}
......@@ -100,64 +95,6 @@ class CustomViewService
return (int) Db::name('CustomView')->where($where)->count();
}
/**
* 列表条件
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-29
* @desc description
* @param [array] $params [输入参数]
*/
public static function CustomViewListWhere($params = [])
{
$where = [];
// id
if(!empty($params['id']))
{
$where[] = ['id', '=', $params['id']];
}
if(!empty($params['keywords']))
{
$where[] = ['title', 'like', '%'.$params['keywords'].'%'];
}
// 是否更多条件
if(isset($params['is_more']) && $params['is_more'] == 1)
{
// 等值
if(isset($params['is_enable']) && $params['is_enable'] > -1)
{
$where[] = ['is_enable', '=', intval($params['is_enable'])];
}
if(isset($params['is_full_screen']) && $params['is_full_screen'] > -1)
{
$where[] = ['is_full_screen', '=', intval($params['is_full_screen'])];
}
if(isset($params['is_header']) && $params['is_header'] > -1)
{
$where[] = ['is_header', '=', intval($params['is_header'])];
}
if(isset($params['is_footer']) && $params['is_footer'] > -1)
{
$where[] = ['is_footer', '=', intval($params['is_footer'])];
}
if(!empty($params['time_start']))
{
$where[] = ['add_time', '>', strtotime($params['time_start'])];
}
if(!empty($params['time_end']))
{
$where[] = ['add_time', '<', strtotime($params['time_end'])];
}
}
return $where;
}
/**
* 自定义页面访问统计加1
* @author Devil
......@@ -198,8 +135,8 @@ class CustomViewService
[
'checked_type' => 'length',
'key_name' => 'content',
'checked_data' => '50,105000',
'error_msg' => '内容长度最少 50~105000 个字符',
'checked_data' => '10,105000',
'error_msg' => '内容长度最少 10~105000 个字符',
],
];
$ret = ParamsChecked($params, $p);
......@@ -212,7 +149,7 @@ class CustomViewService
$content = isset($params['content']) ? htmlspecialchars_decode($params['content']) : '';
// 数据
$images = self::MatchContentImage($content);
$images = ResourcesService::RichTextMatchContentImage($content, 'customview');
$data = [
'title' => $params['title'],
'content' => ResourcesService::ContentStaticReplace($content, 'add'),
......@@ -242,26 +179,6 @@ class CustomViewService
}
}
/**
* 正则匹配文章图片
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-01-22T18:06:53+0800
* @param [string] $content [文章内容]
* @return [array] [文章图片数组(一维)]
*/
private static function MatchContentImage($content)
{
if(!empty($content))
{
$pattern = '/<img.*?src=[\'|\"](\/static\/upload\/customview\/image\/.*?[\.gif|\.jpg|\.jpeg|\.png|\.bmp])[\'|\"].*?[\/]?>/';
preg_match_all($pattern, $content, $match);
return empty($match[1]) ? [] : $match[1];
}
return [];
}
/**
* 删除
* @author Devil
......@@ -273,27 +190,24 @@ class CustomViewService
*/
public static function CustomViewDelete($params = [])
{
// 请求参数
$p = [
[
'checked_type' => 'empty',
'key_name' => 'id',
'error_msg' => '操作id有误',
],
];
$ret = ParamsChecked($params, $p);
if($ret !== true)
// 参数是否有误
if(empty($params['ids']))
{
return DataReturn($ret, -1);
return DataReturn('操作id有误', -1);
}
// 是否数组
if(!is_array($params['ids']))
{
$params['ids'] = explode(',', $params['ids']);
}
// 删除操作
if(Db::name('CustomView')->where(['id'=>$params['id']])->delete())
if(Db::name('CustomView')->where(['id'=>$params['ids']])->delete())
{
return DataReturn('删除成功');
}
return DataReturn('删除失败或资源不存在', -100);
return DataReturn('删除失败', -100);
}
/**
......@@ -332,11 +246,11 @@ class CustomViewService
}
// 数据更新
if(Db::name('CustomView')->where(['id'=>intval($params['id'])])->update([$params['field']=>intval($params['state'])]))
if(Db::name('CustomView')->where(['id'=>intval($params['id'])])->update([$params['field']=>intval($params['state']), 'upd_time'=>time()]))
{
return DataReturn('编辑成功');
}
return DataReturn('编辑失败或数据未改变', -100);
return DataReturn('编辑失败', -100);
}
}
?>
\ No newline at end of file
......@@ -328,82 +328,6 @@ class GoodsCommentsService
return (int) Db::name('GoodsComments')->where($where)->count();
}
/**
* 商品评论列表条件
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-29
* @desc description
* @param [array] $params [输入参数]
*/
public static function GoodsCommentsListWhere($params = [])
{
$where = [];
// 用户id
if(!empty($params['user']))
{
$where[] = ['user_id', '=', $params['user']['id']];
}
// 关键字根据用户筛选,商品标题
if(!empty($params['keywords']))
{
if(empty($params['user']))
{
$user_ids = Db::name('User')->where('username|nickname|mobile|email', '=', $params['keywords'])->column('id');
if(!empty($user_ids))
{
$where[] = ['user_id', 'in', $user_ids];
} else {
// 无数据条件,走商品
$goods_ids = Db::name('Goods')->where('title', 'like', '%'.$params['keywords'].'%')->column('id');
if(!empty($goods_ids))
{
$where[] = ['goods_id', 'in', $goods_ids];
} else {
$where[] = ['id', '=', 0];
}
}
}
}
// 是否更多条件
if(isset($params['is_more']) && $params['is_more'] == 1)
{
// 等值
if(isset($params['is_show']) && $params['is_show'] > -1)
{
$where[] = ['is_show', '=', intval($params['is_show'])];
}
if(isset($params['is_anonymous']) && $params['is_anonymous'] > -1)
{
$where[] = ['is_anonymous', '=', intval($params['is_anonymous'])];
}
if(isset($params['is_reply']) && $params['is_reply'] > -1)
{
$where[] = ['is_reply', '=', intval($params['is_reply'])];
}
if(!empty($params['business_type']))
{
$where[] = ['business_type', '=', $params['business_type']];
}
if(!empty($params['time_start']))
{
$where[] = ['add_time', '>', strtotime($params['time_start'])];
}
if(!empty($params['time_end']))
{
$where[] = ['add_time', '<', strtotime($params['time_end'])];
}
}
return $where;
}
/**
* 评论保存
* @author Devil
......
......@@ -35,6 +35,15 @@ class LinkService
{
$where = empty($params['where']) ? [] : $params['where'];
$data = Db::name('Link')->where($where)->order('sort asc')->select();
if(!empty($data))
{
foreach($data as &$v)
{
// 时间
$v['add_time'] = date('Y-m-d H:i:s', $v['add_time']);
$v['upd_time'] = empty($v['upd_time']) ? '' : date('Y-m-d H:i:s', $v['upd_time']);
}
}
return DataReturn('处理成功', 0, $data);
}
......@@ -133,27 +142,24 @@ class LinkService
*/
public static function LinkDelete($params = [])
{
// 请求参数
$p = [
[
'checked_type' => 'empty',
'key_name' => 'id',
'error_msg' => '操作id有误',
],
];
$ret = ParamsChecked($params, $p);
if($ret !== true)
// 参数是否有误
if(empty($params['ids']))
{
return DataReturn($ret, -1);
return DataReturn('操作id有误', -1);
}
// 是否数组
if(!is_array($params['ids']))
{
$params['ids'] = explode(',', $params['ids']);
}
// 删除操作
if(Db::name('Link')->where(['id'=>$params['id']])->delete())
if(Db::name('Link')->where(['id'=>$params['ids']])->delete())
{
return DataReturn('删除成功');
}
return DataReturn('删除失败或资源不存在', -100);
return DataReturn('删除失败', -100);
}
/**
......@@ -173,6 +179,11 @@ class LinkService
'key_name' => 'id',
'error_msg' => '操作id有误',
],
[
'checked_type' => 'empty',
'key_name' => 'field',
'error_msg' => '未指定操作字段',
],
[
'checked_type' => 'in',
'key_name' => 'state',
......@@ -187,11 +198,11 @@ class LinkService
}
// 数据更新
if(Db::name('Link')->where(['id'=>intval($params['id'])])->update(['is_enable'=>intval($params['state'])]))
if(Db::name('Link')->where(['id'=>intval($params['id'])])->update([$params['field']=>intval($params['state']), 'upd_time'=>time()]))
{
return DataReturn('编辑成功');
}
return DataReturn('编辑失败或数据未改变', -100);
return DataReturn('编辑失败', -100);
}
}
?>
\ No newline at end of file
......@@ -41,56 +41,18 @@ class NavigationService
$header = cache(config('shopxo.cache_common_home_nav_header_key'));
$footer = cache(config('shopxo.cache_common_home_nav_footer_key'));
// 导航模型
$field = array('id', 'pid', 'name', 'url', 'value', 'data_type', 'is_new_window_open');
// 缓存没数据则从数据库重新读取,顶部菜单
if(empty($header))
{
// 获取导航数据
$header = self::NavDataDealWith(Db::name('Navigation')->field($field)->where(array('nav_type'=>'header', 'is_show'=>1, 'pid'=>0))->order('sort')->select());
if(!empty($header))
{
foreach($header as &$v)
{
$v['items'] = self::NavDataDealWith(Db::name('Navigation')->field($field)->where(array('nav_type'=>'header', 'is_show'=>1, 'pid'=>$v['id']))->order('sort')->select());
}
}
// 大导航钩子
$hook_name = 'plugins_service_navigation_header_handle';
Hook::listen($hook_name, [
'hook_name' => $hook_name,
'is_backend' => true,
'params' => &$params,
'header' => &$header,
]);
cache(config('shopxo.cache_common_home_nav_header_key'), $header);
$header = self::NavDataAll('header');
}
// 底部导航
if(empty($footer))
{
$footer = self::NavDataDealWith(Db::name('Navigation')->field($field)->where(array('nav_type'=>'footer', 'is_show'=>1, 'pid'=>0))->order('sort')->select());
if(!empty($footer))
{
foreach($footer as &$v)
{
$v['items'] = self::NavDataDealWith(Db::name('Navigation')->field($field)->where(array('nav_type'=>'footer', 'is_show'=>1, 'pid'=>$v['id']))->order('sort')->select());
}
}
// 底部导航钩子
$hook_name = 'plugins_service_navigation_footer_handle';
Hook::listen($hook_name, [
'hook_name' => $hook_name,
'is_backend' => true,
'params' => &$params,
'footer' => &$footer,
]);
cache(config('shopxo.cache_common_home_nav_footer_key'), $footer);
// 获取导航数据
$footer = self::NavDataAll('footer');
}
// 中间大导航添加首页导航
......@@ -140,6 +102,58 @@ class NavigationService
];
}
/**
* 获取导航数据
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-15
* @desc description
* @param [string] $nav_type [导航类型(header, footer)]
*/
public static function NavDataAll($nav_type)
{
// 指定字段
$field = array('id', 'pid', 'name', 'url', 'value', 'data_type', 'is_new_window_open');
// 获取导航数据
$data = self::NavDataDealWith(Db::name('Navigation')->field($field)->where(array('nav_type'=>$nav_type, 'is_show'=>1, 'pid'=>0))->order('sort')->select());
if(!empty($data))
{
// 获取子数据
$items = [];
$ids = array_column($data, 'id');
$items_data = self::NavDataDealWith(Db::name('Navigation')->field($field)->where(array('nav_type'=>$nav_type, 'is_show'=>1, 'pid'=>$ids))->order('sort')->select());
if(!empty($items_data))
{
foreach($items_data as $it)
{
$items[$it['pid']][] = $it;
}
}
// 数据组合
foreach($data as &$v)
{
$v['items'] = isset($items[$v['id']]) ? $items[$v['id']] : [];
}
}
// 大导航钩子
$hook_name = 'plugins_service_navigation_'.$nav_type.'_handle';
Hook::listen($hook_name, [
'hook_name' => $hook_name,
'is_backend' => true,
'params' => &$params,
'data' => &$data,
$nav_type => &$data,
]);
// 缓存
cache(config('shopxo.cache_common_home_nav_'.$nav_type.'_key'), $data);
return $data;
}
/**
* [NavDataDealWith 导航数据处理]
* @author Devil
......@@ -186,22 +200,67 @@ class NavigationService
* @version 1.0.0
* @date 2018-12-18
* @desc description
* @param [array] $params [输入参数]
* @param [array] $params [输入参数]
*/
public static function NavList($params = [])
{
if(empty($params['nav_type']))
// 导航条件
$where = empty($params['where']) ? [] : $params['where'];
$where1 = $where;
$where1[] = ['pid', '=', 0];
$field = '*';
$data = self::NavigationHandle(self::NavDataDealWith(Db::name('Navigation')->field($field)->where($where1)->order('sort')->select()));
if(!empty($data))
{
return [];
// 子级数据
$items = [];
$where2 = $where;
$where2[] = ['pid', 'in', array_column($data, 'id')];
$items_data = self::NavigationHandle(self::NavDataDealWith(Db::name('Navigation')->field($field)->where($where2)->order('sort')->select()));
if(!empty($items_data))
{
foreach($items_data as $it)
{
$items[$it['pid']][] = $it;
}
}
// 数据处理
foreach($data as $k=>$v)
{
// 数据类型
if(isset($items[$v['id']]))
{
array_splice($data, $k+1, 0, $items[$v['id']]);
}
}
}
return DataReturn('处理成功', 0, $data);
}
$field = 'id,pid,name,url,value,data_type,sort,is_show,is_new_window_open';
$data = self::NavDataDealWith(Db::name('Navigation')->field($field)->where(['nav_type'=>$params['nav_type'], 'pid'=>0])->order('sort')->select());
if(!empty($data))
/**
* 数据处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-15
* @desc description
* @param [array] $data [导航数据]
*/
public static function NavigationHandle($data)
{
if(!empty($data) && is_array($data))
{
$nav_type_list = lang('common_nav_type_list');
foreach($data as &$v)
{
$v['items'] = self::NavDataDealWith(Db::name('Navigation')->field($field)->where(['nav_type'=>$params['nav_type'], 'pid'=>$v['id']])->order('sort')->select());
// 数据类型
$v['data_type_text'] = isset($nav_type_list[$v['data_type']]) ? $nav_type_list[$v['data_type']]['name'] : '';
// 时间
$v['add_time'] = date('Y-m-d H:i:s', $v['add_time']);
$v['upd_time'] = empty($v['upd_time']) ? '' : date('Y-m-d H:i:s', $v['upd_time']);
}
}
return $data;
......@@ -232,7 +291,7 @@ class NavigationService
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-07T21:58:19+0800
* @param [array] $params [输入参数]
* @param [array] $params [输入参数]
*/
public static function NavSave($params = [])
{
......@@ -364,7 +423,7 @@ class NavigationService
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-02-05T20:12:30+0800
* @param [array] $params [输入参数]
* @param [array] $params [输入参数]
*/
public static function NacDataSave($params = [])
{
......@@ -446,25 +505,22 @@ class NavigationService
*/
public static function NavDelete($params = [])
{
// 请求参数
$p = [
[
'checked_type' => 'empty',
'key_name' => 'id',
'error_msg' => '操作id有误',
],
];
$ret = ParamsChecked($params, $p);
if($ret !== true)
// 参数是否有误
if(empty($params['ids']))
{
return DataReturn($ret, -1);
return DataReturn('操作id有误', -1);
}
// 是否数组
if(!is_array($params['ids']))
{
$params['ids'] = explode(',', $params['ids']);
}
// 启动事务
Db::startTrans();
// 删除操作
if(Db::name('Navigation')->where(['id'=>$params['id']])->delete() !== false && Db::name('Navigation')->where(['pid'=>$params['id']])->delete() !== false)
if(Db::name('Navigation')->where(['id'=>$params['ids']])->delete() !== false && Db::name('Navigation')->where(['pid'=>$params['ids']])->delete() !== false)
{
// 提交事务
Db::commit();
......@@ -478,8 +534,7 @@ class NavigationService
// 回滚事务
Db::rollback();
return DataReturn('删除失败或资源不存在', -100);
return DataReturn('删除失败', -100);
}
/**
......@@ -499,6 +554,11 @@ class NavigationService
'key_name' => 'id',
'error_msg' => '操作id有误',
],
[
'checked_type' => 'empty',
'key_name' => 'field',
'error_msg' => '未指定操作字段',
],
[
'checked_type' => 'in',
'key_name' => 'state',
......@@ -513,7 +573,7 @@ class NavigationService
}
// 数据更新
if(Db::name('Navigation')->where(['id'=>intval($params['id'])])->update(['is_show'=>intval($params['state'])]))
if(Db::name('Navigation')->where(['id'=>intval($params['id'])])->update([$params['field']=>intval($params['state']), 'upd_time'=>time()]))
{
// 清除缓存
cache(config('shopxo.cache_common_home_nav_header_key'), null);
......@@ -521,7 +581,7 @@ class NavigationService
return DataReturn('编辑成功');
}
return DataReturn('编辑失败或数据未改变', -100);
return DataReturn('编辑失败', -100);
}
/**
......
......@@ -538,5 +538,26 @@ class ResourcesService
];
return str_replace($search, $replace, $content);
}
/**
* 正则匹配富文本图片
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-16
* @desc description
* @param [string] $content [内容]
* @param [string] $type [模块名称]
*/
public static function RichTextMatchContentImage($content, $type)
{
if(!empty($content))
{
$pattern = '/<img.*?src=[\'|\"](\/static\/upload\/images\/'.$type.'\/image\/.*?[\.gif|\.jpg|\.jpeg|\.png|\.bmp])[\'|\"].*?[\/]?>/';
preg_match_all($pattern, self::AttachmentPathHandle($content), $match);
return empty($match[1]) ? [] : $match[1];
}
return [];
}
}
?>
\ No newline at end of file
此差异已折叠。
/**
* 列表
*/
.content-right table.am-table .am-slider {
overflow: hidden;
box-shadow: none;
-webkit-box-shadow: none;
}
.content-right table.am-table .reply-content {
max-height: 80px;
}
......
......@@ -2,12 +2,4 @@
* 商品列表
*/
.goods-spec li { color: #888; line-height: 16px; }
.original-price { color: #9c9c9c; text-decoration: line-through; }
/**
* 列表
*/
table.am-table .am-slider {
box-shadow: none;
-webkit-box-shadow: none;
}
.original-price { color: #9c9c9c; text-decoration: line-through; }
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册