后台菜单优化

feat/task1-c-wallet
devil 2020-07-13 21:33:55 +08:00
parent 1f49002bb5
commit 04787a07f8
66 changed files with 1705 additions and 1645 deletions

View File

@ -0,0 +1,174 @@
<?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\controller;
use app\service\AppMiniService;
use app\service\ConfigService;
/**
* 小程序管理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-13
* @desc description
*/
class Appmini extends Common
{
private $application_name;
private $old_path;
private $new_path;
private $params;
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-13
* @desc description
*/
public function __construct()
{
// 调用父类前置方法
parent::__construct();
// 登录校验
$this->IsLogin();
// 权限校验
$this->IsPower();
// 参数
$this->params = $this->data_request;
$this->params['application_name'] = empty($this->data_request['nav_type']) ? 'weixin' : trim($this->data_request['nav_type']);
$this->assign('nav_type', $this->params['application_name']);
}
/**
* 列表
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-13
* @desc description
*/
public function Index()
{
// 提示信息
$nav_dev_tips = [
// 微信
'weixin' => '右上角 -> 详情 -> 不校验合法域名、web-view业务域名、TLS 版本以及 HTTPS 证书(勾选改选项即可进行小程序开发调试)。',
// 支付宝
'alipay' => '右上角 -> 详情 -> 域名信息下 -> 忽略 httpRequest 域名合法性检查(仅限调试时,且支付宝 10.1.35 版本以上)(勾选改选项即可进行小程序开发调试)。',
// 百度
'baidu' => '顶部导航 -> 校验域名(关闭即可)。',
// 百度
'toutiao' => '顶部导航 -> 详情 -> 不校验合法域名、web-view业务域名TLS版本以及HTTPS证书勾选改选项即可进行小程序开发调试。',
// QQ
'qq' => '顶部导航 -> 详情 -> 不校验合法域名、web-view业务域名TLS版本以及HTTPS证书勾选改选项即可进行小程序开发调试。',
];
$this->assign('nav_dev_tips', $nav_dev_tips);
// 小程序平台
$this->assign('common_appmini_type', lang('common_appmini_type'));
// 源码包列表
$ret = AppMiniService::DataList($this->params);
$this->assign('data_list', $ret['data']);
return $this->fetch();
}
/**
* 配置
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-13
* @desc description
*/
public function Config()
{
// 是否
$this->assign('common_is_text_list', lang('common_is_text_list'));
// 小程序平台
$this->assign('common_appmini_type', lang('common_appmini_type'));
// 配置信息
$this->assign('data', ConfigService::ConfigList());
return $this->fetch();
}
/**
* 生成
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-13
* @desc description
*/
public function Created()
{
// 是否ajax请求
if(!IS_AJAX)
{
$this->error('非法访问');
}
// 配置内容
$app_mini_title = MyC('common_app_mini_weixin_title');
$app_mini_describe = MyC('common_app_mini_weixin_describe');
if(empty($app_mini_title) || empty($app_mini_describe))
{
return DataReturn('配置信息不能为空', -1);
}
// 开始操作
$this->params['app_mini_title'] = $app_mini_title;
$this->params['app_mini_describe'] = $app_mini_describe;
return AppMiniService::Created($this->params);
}
/**
* 保存
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-13
* @desc description
*/
public function Save()
{
return ConfigService::ConfigSave($_POST);
}
/**
* 删除
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-13
* @desc description
*/
public function Delete()
{
// 是否ajax请求
if(!IS_AJAX)
{
$this->error('非法访问');
}
// 开始操作
return AppMiniService::Delete($this->params);
}
}
?>

View File

@ -1,70 +0,0 @@
<?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\controller;
use app\service\ConfigService;
/**
* 支付宝小程序 - 配置
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class AppMiniAlipayConfig extends Common
{
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:39:08+0800
*/
public function __construct()
{
// 调用父类前置方法
parent::__construct();
// 登录校验
$this->IsLogin();
// 权限校验
$this->IsPower();
}
/**
* [Index 配置列表]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
*/
public function Index()
{
// 配置信息
$this->assign('data', ConfigService::ConfigList());
return $this->fetch();
}
/**
* [Save 配置数据保存]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-01-02T23:08:19+0800
*/
public function Save()
{
return ConfigService::ConfigSave($_POST);
}
}
?>

View File

@ -1,114 +0,0 @@
<?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\controller;
use app\service\AppMiniService;
/**
* 支付宝小程序管理
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class AppMiniAlipayList extends Common
{
private $application_name;
private $old_path;
private $new_path;
private $params;
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:39:08+0800
*/
public function __construct()
{
// 调用父类前置方法
parent::__construct();
// 登录校验
$this->IsLogin();
// 权限校验
$this->IsPower();
// 参数
$this->params = $this->data_request;
$this->params['application_name'] = 'alipay';
}
/**
* [Index 列表]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
*/
public function Index()
{
$ret = AppMiniService::DataList($this->params);
$this->assign('data_list', $ret['data']);
return $this->fetch();
}
/**
* [Created 生成]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-02-05T20:12:30+0800
*/
public function Created()
{
// 是否ajax请求
if(!IS_AJAX)
{
$this->error('非法访问');
}
// 配置内容
$app_mini_title = MyC('common_app_mini_alipay_title');
$app_mini_describe = MyC('common_app_mini_alipay_describe');
if(empty($app_mini_title) || empty($app_mini_describe))
{
return DataReturn('配置信息不能为空', -1);
}
// 开始操作
$this->params['app_mini_title'] = $app_mini_title;
$this->params['app_mini_describe'] = $app_mini_describe;
return AppMiniService::Created($this->params);
}
/**
* [Delete 删除包]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-09T21:13:47+0800
*/
public function Delete()
{
// 是否ajax请求
if(!IS_AJAX)
{
$this->error('非法访问');
}
// 开始操作
return AppMiniService::Delete($this->params);
}
}
?>

View File

@ -1,70 +0,0 @@
<?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\controller;
use app\service\ConfigService;
/**
* 百度小程序 - 配置
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class AppMiniBaiduConfig extends Common
{
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:39:08+0800
*/
public function __construct()
{
// 调用父类前置方法
parent::__construct();
// 登录校验
$this->IsLogin();
// 权限校验
$this->IsPower();
}
/**
* [Index 配置列表]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
*/
public function Index()
{
// 配置信息
$this->assign('data', ConfigService::ConfigList());
return $this->fetch();
}
/**
* [Save 配置数据保存]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-01-02T23:08:19+0800
*/
public function Save()
{
return ConfigService::ConfigSave($_POST);
}
}
?>

View File

@ -1,114 +0,0 @@
<?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\controller;
use app\service\AppMiniService;
/**
* 百度小程序管理
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class AppMiniBaiduList extends Common
{
private $application_name;
private $old_path;
private $new_path;
private $params;
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:39:08+0800
*/
public function __construct()
{
// 调用父类前置方法
parent::__construct();
// 登录校验
$this->IsLogin();
// 权限校验
$this->IsPower();
// 参数
$this->params = $this->data_request;
$this->params['application_name'] = 'baidu';
}
/**
* [Index 列表]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
*/
public function Index()
{
$ret = AppMiniService::DataList($this->params);
$this->assign('data_list', $ret['data']);
return $this->fetch();
}
/**
* [Created 生成]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-02-05T20:12:30+0800
*/
public function Created()
{
// 是否ajax请求
if(!IS_AJAX)
{
$this->error('非法访问');
}
// 配置内容
$app_mini_title = MyC('common_app_mini_baidu_title');
$app_mini_describe = MyC('common_app_mini_baidu_describe');
if(empty($app_mini_title) || empty($app_mini_describe))
{
return DataReturn('配置信息不能为空', -1);
}
// 开始操作
$this->params['app_mini_title'] = $app_mini_title;
$this->params['app_mini_describe'] = $app_mini_describe;
return AppMiniService::Created($this->params);
}
/**
* [Delete 删除包]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-09T21:13:47+0800
*/
public function Delete()
{
// 是否ajax请求
if(!IS_AJAX)
{
$this->error('非法访问');
}
// 开始操作
return AppMiniService::Delete($this->params);
}
}
?>

View File

@ -1,70 +0,0 @@
<?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\controller;
use app\service\ConfigService;
/**
* QQ小程序 - 配置
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class AppMiniQQConfig extends Common
{
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:39:08+0800
*/
public function __construct()
{
// 调用父类前置方法
parent::__construct();
// 登录校验
$this->IsLogin();
// 权限校验
$this->IsPower();
}
/**
* [Index 配置列表]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
*/
public function Index()
{
// 配置信息
$this->assign('data', ConfigService::ConfigList());
return $this->fetch();
}
/**
* [Save 配置数据保存]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-01-02T23:08:19+0800
*/
public function Save()
{
return ConfigService::ConfigSave($_POST);
}
}
?>

View File

@ -1,114 +0,0 @@
<?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\controller;
use app\service\AppMiniService;
/**
* QQ小程序管理
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class AppMiniQQList extends Common
{
private $application_name;
private $old_path;
private $new_path;
private $params;
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:39:08+0800
*/
public function __construct()
{
// 调用父类前置方法
parent::__construct();
// 登录校验
$this->IsLogin();
// 权限校验
$this->IsPower();
// 参数
$this->params = $this->data_request;
$this->params['application_name'] = 'qq';
}
/**
* [Index 列表]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
*/
public function Index()
{
$ret = AppMiniService::DataList($this->params);
$this->assign('data_list', $ret['data']);
return $this->fetch();
}
/**
* [Created 生成]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-02-05T20:12:30+0800
*/
public function Created()
{
// 是否ajax请求
if(!IS_AJAX)
{
$this->error('非法访问');
}
// 配置内容
$app_mini_title = MyC('common_app_mini_qq_title');
$app_mini_describe = MyC('common_app_mini_qq_describe');
if(empty($app_mini_title) || empty($app_mini_describe))
{
return DataReturn('配置信息不能为空', -1);
}
// 开始操作
$this->params['app_mini_title'] = $app_mini_title;
$this->params['app_mini_describe'] = $app_mini_describe;
return AppMiniService::Created($this->params);
}
/**
* [Delete 删除包]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-09T21:13:47+0800
*/
public function Delete()
{
// 是否ajax请求
if(!IS_AJAX)
{
$this->error('非法访问');
}
// 开始操作
return AppMiniService::Delete($this->params);
}
}
?>

View File

@ -1,70 +0,0 @@
<?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\controller;
use app\service\ConfigService;
/**
* 头条小程序 - 配置
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class AppMiniToutiaoConfig extends Common
{
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:39:08+0800
*/
public function __construct()
{
// 调用父类前置方法
parent::__construct();
// 登录校验
$this->IsLogin();
// 权限校验
$this->IsPower();
}
/**
* [Index 配置列表]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
*/
public function Index()
{
// 配置信息
$this->assign('data', ConfigService::ConfigList());
return $this->fetch();
}
/**
* [Save 配置数据保存]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-01-02T23:08:19+0800
*/
public function Save()
{
return ConfigService::ConfigSave($_POST);
}
}
?>

View File

@ -1,114 +0,0 @@
<?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\controller;
use app\service\AppMiniService;
/**
* 头条小程序管理
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class AppMiniToutiaoList extends Common
{
private $application_name;
private $old_path;
private $new_path;
private $params;
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:39:08+0800
*/
public function __construct()
{
// 调用父类前置方法
parent::__construct();
// 登录校验
$this->IsLogin();
// 权限校验
$this->IsPower();
// 参数
$this->params = $this->data_request;
$this->params['application_name'] = 'toutiao';
}
/**
* [Index 列表]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
*/
public function Index()
{
$ret = AppMiniService::DataList($this->params);
$this->assign('data_list', $ret['data']);
return $this->fetch();
}
/**
* [Created 生成]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-02-05T20:12:30+0800
*/
public function Created()
{
// 是否ajax请求
if(!IS_AJAX)
{
$this->error('非法访问');
}
// 配置内容
$app_mini_title = MyC('common_app_mini_toutiao_title');
$app_mini_describe = MyC('common_app_mini_toutiao_describe');
if(empty($app_mini_title) || empty($app_mini_describe))
{
return DataReturn('配置信息不能为空', -1);
}
// 开始操作
$this->params['app_mini_title'] = $app_mini_title;
$this->params['app_mini_describe'] = $app_mini_describe;
return AppMiniService::Created($this->params);
}
/**
* [Delete 删除包]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-09T21:13:47+0800
*/
public function Delete()
{
// 是否ajax请求
if(!IS_AJAX)
{
$this->error('非法访问');
}
// 开始操作
return AppMiniService::Delete($this->params);
}
}
?>

View File

@ -1,70 +0,0 @@
<?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\controller;
use app\service\ConfigService;
/**
* 微信小程序 - 配置
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class AppMiniWeixinConfig extends Common
{
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:39:08+0800
*/
public function __construct()
{
// 调用父类前置方法
parent::__construct();
// 登录校验
$this->IsLogin();
// 权限校验
$this->IsPower();
}
/**
* [Index 配置列表]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
*/
public function Index()
{
// 配置信息
$this->assign('data', ConfigService::ConfigList());
return $this->fetch();
}
/**
* [Save 配置数据保存]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-01-02T23:08:19+0800
*/
public function Save()
{
return ConfigService::ConfigSave($_POST);
}
}
?>

View File

@ -1,114 +0,0 @@
<?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\controller;
use app\service\AppMiniService;
/**
* 微信小程序管理
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class AppMiniWeixinList extends Common
{
private $application_name;
private $old_path;
private $new_path;
private $params;
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:39:08+0800
*/
public function __construct()
{
// 调用父类前置方法
parent::__construct();
// 登录校验
$this->IsLogin();
// 权限校验
$this->IsPower();
// 参数
$this->params = $this->data_request;
$this->params['application_name'] = 'weixin';
}
/**
* [Index 列表]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
*/
public function Index()
{
$ret = AppMiniService::DataList($this->params);
$this->assign('data_list', $ret['data']);
return $this->fetch();
}
/**
* [Created 生成]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-02-05T20:12:30+0800
*/
public function Created()
{
// 是否ajax请求
if(!IS_AJAX)
{
$this->error('非法访问');
}
// 配置内容
$app_mini_title = MyC('common_app_mini_weixin_title');
$app_mini_describe = MyC('common_app_mini_weixin_describe');
if(empty($app_mini_title) || empty($app_mini_describe))
{
return DataReturn('配置信息不能为空', -1);
}
// 开始操作
$this->params['app_mini_title'] = $app_mini_title;
$this->params['app_mini_describe'] = $app_mini_describe;
return AppMiniService::Created($this->params);
}
/**
* [Delete 删除包]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-09T21:13:47+0800
*/
public function Delete()
{
// 是否ajax请求
if(!IS_AJAX)
{
$this->error('非法访问');
}
// 开始操作
return AppMiniService::Delete($this->params);
}
}
?>

View File

@ -286,22 +286,18 @@ class Common extends Controller
*/
protected function IsPower()
{
// 不需要校验权限的方法
$unwanted_power = array('getnodeson');
if(!in_array(strtolower(request()->action()), $unwanted_power))
{
// 角色组权限列表校验
$power = empty($this->power) ? [] : $this->power;
if(!in_array(strtolower(request()->controller().'_'.request()->action()), $power))
{
if(IS_AJAX)
{
exit(json_encode(DataReturn('无权限', -1000)));
} else {
return $this->error('无权限');
}
}
}
$unwanted_power = ['getnodeson'];
if(!AdminIsPower(null, null, $unwanted_power))
{
if(IS_AJAX)
{
exit(json_encode(DataReturn('无权限', -1000)));
} else {
return $this->error('无权限');
}
}
}
/**

View File

@ -83,6 +83,9 @@ class Order extends Common
// 快递公司
$this->assign('express_list', ExpressService::ExpressList());
// 加载百度地图api
$this->assign('is_load_baidu_map_api', 1);
// 基础参数赋值
$this->assign('params', $this->data_request);
$this->assign('page_html', $page->GetPageHtml());

View File

@ -0,0 +1,220 @@
<?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\controller;
use think\facade\Hook;
use app\service\WarehouseGoodsService;
/**
* 仓库商品管理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-11
* @desc description
*/
class WarehouseGoods extends Common
{
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-11
* @desc description
*/
public function __construct()
{
// 调用父类前置方法
parent::__construct();
// 登录校验
$this->IsLogin();
// 权限校验
$this->IsPower();
}
/**
* 列表
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-11
* @desc description
*/
public function Index()
{
// 总数
$total = WarehouseGoodsService::WarehouseGoodsTotal($this->form_where);
// 分页
$page_params = [
'number' => $this->page_size,
'total' => $total,
'where' => $this->data_request,
'page' => $this->page,
'url' => MyUrl('admin/warehousegoods/index'),
];
$page = new \base\Page($page_params);
// 获取数据列表
$data_params = [
'where' => $this->form_where,
'm' => $page->GetPageStarNumber(),
'n' => $this->page_size,
];
$ret = WarehouseGoodsService::WarehouseGoodsList($data_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
* @date 2020-07-11
*/
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 = WarehouseGoodsService::WarehouseGoodsList($data_params);
$data = (empty($ret['data']) || empty($ret['data'][0])) ? [] : $ret['data'][0];
$this->assign('data', $data);
}
return $this->fetch();
}
/**
* 文章添加/编辑页面
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-11
* @desc description
*/
public function SaveInfo()
{
// 参数
$params = $this->data_request;
// 数据
$data = [];
if(!empty($params['id']))
{
// 获取列表
$data_params = array(
'where' => ['id'=>intval($params['id'])],
);
$ret = WarehouseGoodsService::WarehouseList($data_params);
$data = empty($ret['data'][0]) ? [] : $ret['data'][0];
}
// 文章编辑页面钩子
$hook_name = 'plugins_view_admin_warehouse_goods_save';
$this->assign($hook_name.'_data', Hook::listen($hook_name,
[
'hook_name' => $hook_name,
'is_backend' => true,
'warehouse_id' => isset($params['id']) ? $params['id'] : 0,
'data' => &$data,
'params' => &$params,
]));
// 数据
$this->assign('data', $data);
$this->assign('params', $params);
return $this->fetch();
}
/**
* 文章添加/编辑
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-11
* @desc description
*/
public function Save()
{
// 是否ajax请求
if(!IS_AJAX)
{
return $this->error('非法访问');
}
// 开始处理
$params = $this->data_request;
return WarehouseGoodsService::WarehouseSave($params);
}
/**
* 删除
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-11
* @desc description
*/
public function Delete()
{
// 是否ajax请求
if(!IS_AJAX)
{
return $this->error('非法访问');
}
// 开始处理
$params = $this->data_request;
$params['admin'] = $this->admin;
return WarehouseGoodsService::WarehouseGoodsDelete($params);
}
/**
* 状态更新
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-11
* @desc description
*/
public function StatusUpdate()
{
// 是否ajax请求
if(!IS_AJAX)
{
return $this->error('非法访问');
}
// 开始处理
$params = $this->data_request;
$params['admin'] = $this->admin;
return WarehouseGoodsService::WarehouseGoodsStatusUpdate($params);
}
}
?>

View File

@ -0,0 +1,88 @@
<?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-22
* @desc description
*/
class Appmini
{
// 基础条件
public $condition_base = [];
/**
* 入口
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-22
* @desc description
* @param [array] $params [输入参数]
*/
public function Run($params = [])
{
$nav_type = empty($params['nav_type']) ? 'weixin' : trim($params['nav_type']);
return [
// 基础配置
'base' => [
'key_field' => 'name',
'is_delete' => 1,
'delete_url' => MyUrl('admin/appmini/delete', ['nav_type'=>$nav_type]),
'delete_key' => 'ids',
],
// 表单配置
'form' => [
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'align' => 'center',
'width' => 80,
],
[
'label' => '包名',
'view_type' => 'field',
'view_key' => 'name',
],
[
'label' => '大小',
'view_type' => 'field',
'view_key' => 'size',
],
[
'label' => '下载地址',
'view_type' => 'field',
'view_key' => 'url',
'grid_size' => 'auto',
],
[
'label' => '创建时间',
'view_type' => 'field',
'view_key' => 'time',
],
[
'label' => '操作',
'view_type' => 'operate',
'view_key' => 'appmini/module/operate',
'align' => 'center',
'fixed' => 'right',
],
],
];
}
}
?>

View File

@ -67,7 +67,7 @@ class Goodscomments
'form_name' => 'id',
'where_type' => 'like',
'where_type_custom' => 'in',
'where_handle_custom' => 'WhereValueBaseInfo',
'where_handle_custom' => 'WhereGoodsInfo',
'placeholder' => '请输入商品名称/型号',
],
],
@ -252,7 +252,7 @@ class Goodscomments
}
/**
* 基础信息条件处理
* 商品信息条件处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
@ -261,12 +261,12 @@ class Goodscomments
* @param [string] $value [条件值]
* @param [array] $params [输入参数]
*/
public function WhereValueBaseInfo($value, $params = [])
public function WhereGoodsInfo($value, $params = [])
{
if(!empty($value))
{
// 获取商品评论关联的商品 id
$ids = Db::name('GoodsComments')->alias('gc')->join(['__GOODS__'=>'g'], 'gc.goods_id=g.id')->where('title|model', 'like', '%'.$value.'%')->column('gc.id');
// 获取关联的商品 id
$ids = Db::name('GoodsComments')->alias('gc')->join(['__GOODS__'=>'g'], 'gc.goods_id=g.id')->where('g.title|g.model', 'like', '%'.$value.'%')->column('gc.id');
// 避免空条件造成无效的错觉
return empty($ids) ? [0] : $ids;

View File

@ -81,7 +81,7 @@ class Order
'form_name' => 'id',
'where_type' => 'like',
'where_type_custom' => 'in',
'where_handle_custom' => 'WhereValueBaseInfo',
'where_handle_custom' => 'WhereGoodsInfo',
'placeholder' => '请输入商品名称/型号',
],
],
@ -468,7 +468,7 @@ class Order
}
/**
* 基础信息条件处理
* 商品信息条件处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
@ -477,7 +477,7 @@ class Order
* @param [string] $value [条件值]
* @param [array] $params [输入参数]
*/
public function WhereValueBaseInfo($value, $params = [])
public function WhereGoodsInfo($value, $params = [])
{
if(!empty($value))
{

View File

@ -65,7 +65,7 @@ class Orderaftersale
'form_name' => 'id',
'where_type' => 'like',
'where_type_custom' => 'in',
'where_handle_custom' => 'WhereValueBaseInfo',
'where_handle_custom' => 'WhereGoodsInfo',
'placeholder' => '请输入商品名称/型号',
],
],
@ -280,7 +280,7 @@ class Orderaftersale
}
/**
* 基础信息条件处理
* 商品信息条件处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
@ -289,12 +289,12 @@ class Orderaftersale
* @param [string] $value [条件值]
* @param [array] $params [输入参数]
*/
public function WhereValueBaseInfo($value, $params = [])
public function WhereGoodsInfo($value, $params = [])
{
if(!empty($value))
{
// 获取订单详情搜索的订单售后 id
$ids = Db::name('OrderAftersale')->alias('oa')->join(['__ORDER_DETAIL__'=>'od'], 'oa.order_detail_id=od.id')->where('title|model', 'like', '%'.$value.'%')->column('oa.id');
$ids = Db::name('OrderAftersale')->alias('oa')->join(['__ORDER_DETAIL__'=>'od'], 'oa.order_detail_id=od.id')->where('od.title|od.model', 'like', '%'.$value.'%')->column('oa.id');
// 避免空条件造成无效的错觉
return empty($ids) ? [0] : $ids;

View File

@ -0,0 +1,176 @@
<?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 think\Db;
use app\service\WarehouseService;
use app\service\RegionService;
/**
* 仓库商品动态表格
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-12
* @desc description
*/
class Warehousegoods
{
// 基础条件
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/warehousegoods/index'),
'is_delete' => 1,
'delete_url' => MyUrl('admin/warehousegoods/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' => 'warehousegoods/module/goods',
'grid_size' => 'lg',
'search_config' => [
'form_type' => 'input',
'form_name' => 'id',
'where_type' => 'like',
'where_type_custom' => 'in',
'where_handle_custom' => 'WhereGoodsInfo',
'placeholder' => '请输入商品名称/型号',
],
],
[
'label' => '仓库',
'view_type' => 'field',
'view_key' => 'warehouse_name',
'search_config' => [
'form_type' => 'select',
'form_name' => 'warehouse_id',
'data' => $this->WarehouseList(),
'data_key' => 'id',
'data_name' => 'name',
'where_type' => 'in',
'is_multiple' => 1,
],
],
[
'label' => '是否启用',
'view_type' => 'status',
'view_key' => 'is_enable',
'post_url' => MyUrl('admin/warehousegoods/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' => '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' => 'warehousegoods/module/operate',
'align' => 'center',
'fixed' => 'right',
],
],
];
}
/**
* 获取仓库数据
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-12
* @desc description
*/
public function WarehouseList()
{
$result = [];
$ids = Db::name('WarehouseGoods')->column('warehouse_id');
if(!empty($ids))
{
$result = Db::name('Warehouse')->field('id,name')->where(['id'=>$ids])->select();
}
return $result;
}
/**
* 商品信息条件处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-12
* @desc description
* @param [string] $value [条件值]
* @param [array] $params [输入参数]
*/
public function WhereGoodsInfo($value, $params = [])
{
if(!empty($value))
{
// 获取关联的商品 id
$ids = Db::name('WarehouseGoods')->alias('wg')->join(['__GOODS__'=>'g'], 'wg.goods_id=g.id')->where('g.title|g.model', 'like', '%'.$value.'%')->column('wg.id');
// 避免空条件造成无效的错觉
return empty($ids) ? [0] : $ids;
}
return $value;
}
}
?>

View File

@ -1,41 +0,0 @@
{{include file="public/header" /}}
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- table nav start -->
{{include file="appconfig/nav" /}}
<!-- table nav end -->
<!-- tips -->
<div class="am-alert am-alert-warning" data-am-alert>
<p>
<span>PS如【APP/小程序】中开启(开启在线客服),则以下配置必填 [企业编码] 和 [聊天窗编码]</span>
<a href="https://opendocs.alipay.com/mini/component/contact-button" target="_blank" class="am-margin-left-sm">配置教程 <i class="am-icon-external-link"></i></a>
</p>
</div>
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/appconfig/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/appconfig/index', ['nav_type'=>'alipaymini'])}}" enctype="multipart/form-data">
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_tnt_inst_id.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_alipay_tnt_inst_id.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_alipay_tnt_inst_id.only_tag}}" placeholder="{{$data.common_app_mini_alipay_tnt_inst_id.name}}" data-validation-message="{{$data.common_app_mini_alipay_tnt_inst_id.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_tnt_inst_id.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_scene.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_alipay_scene.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_alipay_scene.only_tag}}" placeholder="{{$data.common_app_mini_alipay_scene.name}}" data-validation-message="{{$data.common_app_mini_alipay_scene.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_scene.value}}"{{/if}} />
</div>
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="nav_type" value="{{$nav_type}}" />
<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>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -61,15 +61,6 @@
</select>
</div>
<div class="am-form-group">
<label>{{$data.common_app_is_limitedtimediscount.name}}<span class="am-form-group-label-tips">{{$data.common_app_is_limitedtimediscount.describe}}</span></label>
<select name="{{$data.common_app_is_limitedtimediscount.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_app_is_limitedtimediscount.error_tips}}" required>
{{foreach $common_is_text_list as $v}}
<option value="{{$v.id}}" {{if isset($data['common_app_is_limitedtimediscount']['value']) and $data['common_app_is_limitedtimediscount']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
<div class="am-form-group">
<label>{{$data.common_app_is_head_vice_nav.name}}<span class="am-form-group-label-tips">{{$data.common_app_is_head_vice_nav.describe}}</span></label>
<select name="{{$data.common_app_is_head_vice_nav.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_app_is_head_vice_nav.error_tips}}" required>

View File

@ -5,10 +5,4 @@
<li {{if $nav_type eq 'app'}}class="am-active"{{/if}} data-type="app">
<a href="{{:MyUrl('admin/appconfig/index', ['nav_type'=>'app'])}}">APP/小程序</a>
</li>
<li {{if $nav_type eq 'weixinmini'}}class="am-active"{{/if}} data-type="weixinmini">
<a href="{{:MyUrl('admin/appconfig/index', ['nav_type'=>'weixinmini'])}}">微信小程序</a>
</li>
<li {{if $nav_type eq 'alipaymini'}}class="am-active"{{/if}} data-type="alipaymini">
<a href="{{:MyUrl('admin/appconfig/index', ['nav_type'=>'alipaymini'])}}">支付宝小程序</a>
</li>
</ul>

View File

@ -1,71 +0,0 @@
{{include file="public/header" /}}
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- table nav start -->
{{include file="appconfig/nav" /}}
<!-- table nav end -->
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/appconfig/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/appconfig/index', ['nav_type'=>'weixinmini'])}}" enctype="multipart/form-data">
<div class="am-form-group">
<label>{{$data.common_app_is_good_thing.name}}<span class="am-form-group-label-tips">{{$data.common_app_is_good_thing.describe}}</span></label>
<select name="{{$data.common_app_is_good_thing.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_app_is_good_thing.error_tips}}" required>
{{foreach $common_is_text_list as $v}}
<option value="{{$v.id}}" {{if isset($data['common_app_is_good_thing']['value']) and $data['common_app_is_good_thing']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
<div class="am-form-group">
<label>{{$data.common_app_is_good_thing_ver.name}}</label>
<div class="am-alert am-alert-warning">
<p>1. 获取最新组件版本号,默认[ 4.0.1 ]</p>
<p>2. 好物推荐组件权限操作[ 添加插件 ]按钮后等待审核通过方可使用</p>
<p>3. 点击左侧导航[ 使用插件 ],找到 json 代码串[ plugins->goodsSharePlugin ]参数下的[ version ]的值填入</p>
<a href="https://mp.weixin.qq.com/wxopen/plugindevdoc?appid=wx56c8f077de74b07c&token=1011820682&lang=zh_CN" target="_blank">去申请权限并获取组件版本号 <i class="am-icon-external-link"></i></a>
</div>
<input type="text" name="{{$data.common_app_is_good_thing_ver.only_tag}}" placeholder="{{$data.common_app_is_good_thing_ver.name}}" data-validation-message="{{$data.common_app_is_good_thing_ver.error_tips}}" class="am-radius am-margin-top-xs" {{if !empty($data)}}value="{{$data.common_app_is_good_thing_ver.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_weixin_liveplayer.name}}<span class="am-form-group-label-tips">{{$data.common_app_weixin_liveplayer.describe}}</span></label>
<select name="{{$data.common_app_weixin_liveplayer.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_app_weixin_liveplayer.error_tips}}" required>
{{foreach $common_is_text_list as $v}}
<option value="{{$v.id}}" {{if isset($data['common_app_weixin_liveplayer']['value']) and $data['common_app_weixin_liveplayer']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
<div class="am-form-group">
<label>{{$data.common_app_weixin_liveplayer_ver.name}}</label>
<div class="am-alert am-alert-warning">
<p>1. 获取最新组件版本号,默认[ 1.0.18 ]</p>
<p>2. 登录微信小程序平台,左侧导航[ 直播 ],申请直播权限后等待审核通过方可使用</p>
<p>3. 点击左侧导航[ 小程序直播->接入说明 ],找到[ 使用方法说明->1. 【直播组件】如何引入 ]json 代码串[ plugins->live-player-plugin ]参数下的[ version ]的值填入</p>
<a href="https://developers.weixin.qq.com/miniprogram/dev/framework/liveplayer/live-player-plugin.html" target="_blank">去获取组件版本号 <i class="am-icon-external-link"></i></a>
</div>
<input type="text" name="{{$data.common_app_weixin_liveplayer_ver.only_tag}}" placeholder="{{$data.common_app_weixin_liveplayer_ver.name}}" data-validation-message="{{$data.common_app_weixin_liveplayer_ver.error_tips}}" class="am-radius am-margin-top-xs" {{if !empty($data)}}value="{{$data.common_app_weixin_liveplayer_ver.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_is_poster_share.name}}<span class="am-form-group-label-tips">{{$data.common_app_is_poster_share.describe}}</span></label>
<select name="{{$data.common_app_is_poster_share.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_app_is_poster_share.error_tips}}" required>
{{foreach $common_is_text_list as $v}}
<option value="{{$v.id}}" {{if isset($data['common_app_is_poster_share']['value']) and $data['common_app_is_poster_share']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="nav_type" value="{{$nav_type}}" />
<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>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -0,0 +1,261 @@
{{include file="public/header" /}}
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- table nav start -->
{{include file="appmini/nav" /}}
<!-- table nav end -->
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/appmini/save', ['nav_type'=>$nav_type])}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/appmini/config', ['nav_type'=>$nav_type])}}">
{{switch $nav_type}}
{{case weixin}}
<!-- 微信 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">基础配置</h3>
</div>
<div class="am-panel-bd">
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_weixin_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_weixin_appid.only_tag}}" placeholder="{{$data.common_app_mini_weixin_appid.name}}" data-validation-message="{{$data.common_app_mini_weixin_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_weixin_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_weixin_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_weixin_appsecret.name}}" data-validation-message="{{$data.common_app_mini_weixin_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_appsecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_weixin_title.only_tag}}" placeholder="{{$data.common_app_mini_weixin_title.name}}" data-validation-message="{{$data.common_app_mini_weixin_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_weixin_describe.only_tag}}" placeholder="{{$data.common_app_mini_weixin_describe.name}}" data-validation-message="{{$data.common_app_mini_weixin_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_describe.value}}"{{/if}} />
</div>
</div>
</div>
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">扩展插件配置</h3>
</div>
<div class="am-panel-bd">
<div class="am-form-group">
<label>{{$data.common_app_is_good_thing.name}}<span class="am-form-group-label-tips">{{$data.common_app_is_good_thing.describe}}</span></label>
<select name="{{$data.common_app_is_good_thing.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_app_is_good_thing.error_tips}}" required>
{{foreach $common_is_text_list as $v}}
<option value="{{$v.id}}" {{if isset($data['common_app_is_good_thing']['value']) and $data['common_app_is_good_thing']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
<div class="am-form-group">
<label>{{$data.common_app_is_good_thing_ver.name}}</label>
<div class="am-alert am-alert-warning">
<p>1. 获取最新组件版本号,默认[ 4.0.1 ]</p>
<p>2. 好物推荐组件权限操作[ 添加插件 ]按钮后等待审核通过方可使用</p>
<p>3. 点击左侧导航[ 使用插件 ],找到 json 代码串[ plugins->goodsSharePlugin ]参数下的[ version ]的值填入</p>
<a href="https://mp.weixin.qq.com/wxopen/plugindevdoc?appid=wx56c8f077de74b07c&token=1011820682&lang=zh_CN" target="_blank">去申请权限并获取组件版本号 <i class="am-icon-external-link"></i></a>
</div>
<input type="text" name="{{$data.common_app_is_good_thing_ver.only_tag}}" placeholder="{{$data.common_app_is_good_thing_ver.name}}" data-validation-message="{{$data.common_app_is_good_thing_ver.error_tips}}" class="am-radius am-margin-top-xs" {{if !empty($data)}}value="{{$data.common_app_is_good_thing_ver.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_weixin_liveplayer.name}}<span class="am-form-group-label-tips">{{$data.common_app_weixin_liveplayer.describe}}</span></label>
<select name="{{$data.common_app_weixin_liveplayer.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_app_weixin_liveplayer.error_tips}}" required>
{{foreach $common_is_text_list as $v}}
<option value="{{$v.id}}" {{if isset($data['common_app_weixin_liveplayer']['value']) and $data['common_app_weixin_liveplayer']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
<div class="am-form-group">
<label>{{$data.common_app_weixin_liveplayer_ver.name}}</label>
<div class="am-alert am-alert-warning">
<p>1. 获取最新组件版本号,默认[ 1.0.18 ]</p>
<p>2. 登录微信小程序平台,左侧导航[ 直播 ],申请直播权限后等待审核通过方可使用</p>
<p>3. 点击左侧导航[ 小程序直播->接入说明 ],找到[ 使用方法说明->1. 【直播组件】如何引入 ]json 代码串[ plugins->live-player-plugin ]参数下的[ version ]的值填入</p>
<a href="https://developers.weixin.qq.com/miniprogram/dev/framework/liveplayer/live-player-plugin.html" target="_blank">去获取组件版本号 <i class="am-icon-external-link"></i></a>
</div>
<input type="text" name="{{$data.common_app_weixin_liveplayer_ver.only_tag}}" placeholder="{{$data.common_app_weixin_liveplayer_ver.name}}" data-validation-message="{{$data.common_app_weixin_liveplayer_ver.error_tips}}" class="am-radius am-margin-top-xs" {{if !empty($data)}}value="{{$data.common_app_weixin_liveplayer_ver.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_is_poster_share.name}}<span class="am-form-group-label-tips">{{$data.common_app_is_poster_share.describe}}</span></label>
<select name="{{$data.common_app_is_poster_share.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_app_is_poster_share.error_tips}}" required>
{{foreach $common_is_text_list as $v}}
<option value="{{$v.id}}" {{if isset($data['common_app_is_poster_share']['value']) and $data['common_app_is_poster_share']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
</div>
</div>
{{/case}}
{{case alipay}}
<!-- 支付宝 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">基础配置</h3>
</div>
<div class="am-panel-bd">
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_appid.name}}</label>
<input type="text" name="{{$data.common_app_mini_alipay_appid.only_tag}}" placeholder="{{$data.common_app_mini_alipay_appid.name}}" data-validation-message="{{$data.common_app_mini_alipay_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_rsa_public.name}}</label>
<textarea rows="3" name="{{$data.common_app_mini_alipay_rsa_public.only_tag}}" class="am-radius" placeholder="{{$data.common_app_mini_alipay_rsa_public.name}}" data-validation-message="{{$data.common_app_mini_alipay_rsa_public.error_tips}}">{{if !empty($data)}}{{$data.common_app_mini_alipay_rsa_public.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_rsa_private.name}}</label>
<textarea rows="3" name="{{$data.common_app_mini_alipay_rsa_private.only_tag}}" class="am-radius" placeholder="{{$data.common_app_mini_alipay_rsa_private.name}}" data-validation-message="{{$data.common_app_mini_alipay_rsa_private.error_tips}}">{{if !empty($data)}}{{$data.common_app_mini_alipay_rsa_private.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_out_rsa_public.name}}</label>
<textarea rows="3" name="{{$data.common_app_mini_alipay_out_rsa_public.only_tag}}" class="am-radius" placeholder="{{$data.common_app_mini_alipay_out_rsa_public.name}}" data-validation-message="{{$data.common_app_mini_alipay_out_rsa_public.error_tips}}">{{if !empty($data)}}{{$data.common_app_mini_alipay_out_rsa_public.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_alipay_title.only_tag}}" placeholder="{{$data.common_app_mini_alipay_title.name}}" data-validation-message="{{$data.common_app_mini_alipay_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_alipay_describe.only_tag}}" placeholder="{{$data.common_app_mini_alipay_describe.name}}" data-validation-message="{{$data.common_app_mini_alipay_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_describe.value}}"{{/if}} />
</div>
</div>
</div>
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">客服配置</h3>
</div>
<div class="am-panel-bd">
<!-- tips -->
<div class="am-alert am-alert-warning" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p>
<span>PS如【APP/小程序】中开启(开启在线客服),则以下配置必填 [企业编码] 和 [聊天窗编码]</span>
<a href="https://opendocs.alipay.com/mini/component/contact-button" target="_blank" class="am-margin-left-sm">配置教程 <i class="am-icon-external-link"></i></a>
</p>
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_tnt_inst_id.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_alipay_tnt_inst_id.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_alipay_tnt_inst_id.only_tag}}" placeholder="{{$data.common_app_mini_alipay_tnt_inst_id.name}}" data-validation-message="{{$data.common_app_mini_alipay_tnt_inst_id.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_tnt_inst_id.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_scene.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_alipay_scene.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_alipay_scene.only_tag}}" placeholder="{{$data.common_app_mini_alipay_scene.name}}" data-validation-message="{{$data.common_app_mini_alipay_scene.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_scene.value}}"{{/if}} />
</div>
</div>
</div>
{{/case}}
{{case baidu}}
<!-- 百度 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">基础配置</h3>
</div>
<div class="am-panel-bd">
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_baidu_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_baidu_appid.only_tag}}" placeholder="{{$data.common_app_mini_baidu_appid.name}}" data-validation-message="{{$data.common_app_mini_baidu_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_appkey.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_baidu_appkey.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_baidu_appkey.only_tag}}" placeholder="{{$data.common_app_mini_baidu_appkey.name}}" data-validation-message="{{$data.common_app_mini_baidu_appkey.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_appkey.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_baidu_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_baidu_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_baidu_appsecret.name}}" data-validation-message="{{$data.common_app_mini_baidu_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_appsecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_baidu_title.only_tag}}" placeholder="{{$data.common_app_mini_baidu_title.name}}" data-validation-message="{{$data.common_app_mini_baidu_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_baidu_describe.only_tag}}" placeholder="{{$data.common_app_mini_baidu_describe.name}}" data-validation-message="{{$data.common_app_mini_baidu_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_describe.value}}"{{/if}} />
</div>
</div>
</div>
{{/case}}
{{case toutiao}}
<!-- 头条 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">基础配置</h3>
</div>
<div class="am-panel-bd">
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_toutiao_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_toutiao_appid.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_appid.name}}" data-validation-message="{{$data.common_app_mini_toutiao_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_toutiao_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_toutiao_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_appsecret.name}}" data-validation-message="{{$data.common_app_mini_toutiao_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_appsecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_pay_merchant_id.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_toutiao_pay_merchant_id.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_toutiao_pay_merchant_id.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_pay_merchant_id.name}}" data-validation-message="{{$data.common_app_mini_toutiao_pay_merchant_id.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_pay_merchant_id.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_pay_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_toutiao_pay_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_toutiao_pay_appid.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_pay_appid.name}}" data-validation-message="{{$data.common_app_mini_toutiao_pay_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_pay_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_pay_secret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_toutiao_pay_secret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_toutiao_pay_secret.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_pay_secret.name}}" data-validation-message="{{$data.common_app_mini_toutiao_pay_secret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_pay_secret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_toutiao_title.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_title.name}}" data-validation-message="{{$data.common_app_mini_toutiao_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_toutiao_describe.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_describe.name}}" data-validation-message="{{$data.common_app_mini_toutiao_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_describe.value}}"{{/if}} />
</div>
</div>
</div>
{{/case}}
{{case qq}}
<!-- QQ -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">基础配置</h3>
</div>
<div class="am-panel-bd">
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_qq_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_qq_appid.only_tag}}" placeholder="{{$data.common_app_mini_qq_appid.name}}" data-validation-message="{{$data.common_app_mini_qq_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_qq_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_qq_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_qq_appsecret.name}}" data-validation-message="{{$data.common_app_mini_qq_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_appsecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_apptoken.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_qq_apptoken.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_qq_apptoken.only_tag}}" placeholder="{{$data.common_app_mini_qq_apptoken.name}}" data-validation-message="{{$data.common_app_mini_qq_apptoken.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_apptoken.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_qq_title.only_tag}}" placeholder="{{$data.common_app_mini_qq_title.name}}" data-validation-message="{{$data.common_app_mini_qq_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_qq_describe.only_tag}}" placeholder="{{$data.common_app_mini_qq_describe.name}}" data-validation-message="{{$data.common_app_mini_qq_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_describe.value}}"{{/if}} />
</div>
</div>
</div>
{{/case}}
{{default /}}
<div class="table-no"><i class="am-icon-warning"></i> {{$nav_type}}无配置信息</div>
{{/switch}}
<div class="am-form-group am-form-group-refreshing">
<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>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -0,0 +1,30 @@
<!-- 继承公共的 form -->
{{extend name="public/module/form" /}}
<!-- 导航 -->
{{block name="form_navigation"}}
{{include file="appmini/nav" /}}
<!-- tips -->
{{if config('shopxo.is_develop') eq true}}
<div class="am-alert am-alert-warning am-radius" data-am-alert="">
<p>当前为开发模式</p>
<p class="am-margin-left-lg">1. 发布小程序必须采用 https 协议,上线需确认 app.js 中 request_url 参数值是否正确。</p>
<p class="am-margin-left-lg">2. 发布小程序,建议关闭开发者模式、从正式环境重新生成小程序下载使用开发者工具上传审核。</p>
{{if isset($nav_dev_tips[$nav_type])}}
<p class="am-margin-left-lg">3. 非 https 环境下,在开发者工具 -> {{$nav_dev_tips[$nav_type]}}</p>
{{/if}}
</div>
{{else /}}
<div class="am-alert am-alert-warning am-radius" data-am-alert="">
<p>1. 生成小程序必须在 https 协议下进行操作、请配置好服务器 ssl 并使用 https 协议登录后台管理生成小程序。</p>
<p>2. 如需非 https 协议下生成小程序,请在 config/shopxo.php 文件中 is_develop值改为true开启开发者模式。</p>
</div>
{{/if}}
{{/block}}
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<button type="button" class="am-btn am-btn-secondary am-btn-xs am-icon-refresh am-radius submit-ajax" data-url="{{:MyUrl('admin/appmini/created', ['nav_type'=>$nav_type])}}" data-view="reload" data-msg="生成时间比较长,请不要关闭浏览器窗口!"> 生成</button>
<!-- 父级内容 -->
{__block__}
{{/block}}

View File

@ -3,7 +3,7 @@
<i class="am-icon-download"></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/appminiqqlist/delete')}}" data-id="{{$module_data.name}}" data-view="reload" data-key="ids">
<button type="button" class="am-btn am-btn-danger am-btn-xs am-radius am-btn-block submit-delete" data-url="{{:MyUrl('admin/appmini/delete', ['nav_type'=>$nav_type])}}" data-id="{{$module_data.name}}" data-key="ids">
<i class="am-icon-trash-o"></i>
<span>删除</span>
</button>

View File

@ -0,0 +1,9 @@
{{if !empty($common_appmini_type) and is_array($common_appmini_type)}}
<ul class="am-nav am-nav-pills table-nav am-margin-bottom-sm">
{{foreach $common_appmini_type as $nav}}
<li {{if isset($nav_type) and $nav_type eq $nav['value']}}class="am-active"{{/if}} data-type="{{$nav.value}}">
<a href="{{:MyUrl('admin/appmini/'.$action_name, ['nav_type'=>$nav['value']])}}">{{$nav.name}}</a>
</li>
{{/foreach}}
</ul>
{{/if}}

View File

@ -1,44 +0,0 @@
{{include file="public/header" /}}
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/appminialipayconfig/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/appminialipayconfig/index')}}">
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_appid.name}}</label>
<input type="text" name="{{$data.common_app_mini_alipay_appid.only_tag}}" placeholder="{{$data.common_app_mini_alipay_appid.name}}" data-validation-message="{{$data.common_app_mini_alipay_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_rsa_public.name}}</label>
<textarea rows="3" name="{{$data.common_app_mini_alipay_rsa_public.only_tag}}" class="am-radius" placeholder="{{$data.common_app_mini_alipay_rsa_public.name}}" data-validation-message="{{$data.common_app_mini_alipay_rsa_public.error_tips}}">{{if !empty($data)}}{{$data.common_app_mini_alipay_rsa_public.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_rsa_private.name}}</label>
<textarea rows="3" name="{{$data.common_app_mini_alipay_rsa_private.only_tag}}" class="am-radius" placeholder="{{$data.common_app_mini_alipay_rsa_private.name}}" data-validation-message="{{$data.common_app_mini_alipay_rsa_private.error_tips}}">{{if !empty($data)}}{{$data.common_app_mini_alipay_rsa_private.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_out_rsa_public.name}}</label>
<textarea rows="3" name="{{$data.common_app_mini_alipay_out_rsa_public.only_tag}}" class="am-radius" placeholder="{{$data.common_app_mini_alipay_out_rsa_public.name}}" data-validation-message="{{$data.common_app_mini_alipay_out_rsa_public.error_tips}}">{{if !empty($data)}}{{$data.common_app_mini_alipay_out_rsa_public.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_alipay_title.only_tag}}" placeholder="{{$data.common_app_mini_alipay_title.name}}" data-validation-message="{{$data.common_app_mini_alipay_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_alipay_describe.only_tag}}" placeholder="{{$data.common_app_mini_alipay_describe.name}}" data-validation-message="{{$data.common_app_mini_alipay_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_describe.value}}"{{/if}} />
</div>
<div class="am-form-group am-form-group-refreshing">
<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>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -1,24 +0,0 @@
<!-- 继承公共的 form -->
{{extend name="public/module/form" /}}
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<button type="button" class="am-btn am-btn-secondary am-btn-xs am-icon-cloud-upload am-radius submit-ajax" data-url="{{:MyUrl('admin/appminialipaylist/created')}}" data-view="reload" data-msg="生成时间比较长,请不要关闭浏览器窗口!" data-am-modal="{target: '#payment-upload-win'}"> 生成</button>
<!-- 父级内容 -->
{__block__}
<!-- tips -->
{{if config('shopxo.is_develop') eq true}}
<div class="am-alert am-alert-warning am-radius" data-am-alert="">
当前为开发模式<br />
&nbsp;&nbsp;&nbsp;1. 发布小程序必须采用 https 协议,上线需确认 app.js 中 request_url 参数值是否正确。<br />
&nbsp;&nbsp;&nbsp;2. 发布小程序,建议关闭开发者模式、从正式环境重新生成小程序下载使用开发者工具上传审核。<br />
&nbsp;&nbsp;&nbsp;3. 非 https 环境下,在开发者工具 -> 右上角 -> 详情 -> 域名信息下 -> 忽略 httpRequest 域名合法性检查(仅限调试时,且支付宝 10.1.35 版本以上)(勾选改选项即可进行小程序开发调试)。
</div>
{{else /}}
<div class="am-alert am-alert-warning am-radius" data-am-alert="">
1. 生成小程序必须在 https 协议下进行操作、请配置好服务器 ssl 并使用 https 协议登录后台管理生成小程序。<br />
2. 如需非 https 协议下生成小程序,请在 config/shopxo.php 文件中 is_develop值改为true开启开发者模式。
</div>
{{/if}}
{{/block}}

View File

@ -1,9 +0,0 @@
<!-- 操作栏 -->
<a class="am-btn am-btn-success am-btn-xs am-radius am-btn-block" href="{{$module_data.url}}">
<i class="am-icon-download"></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/appminialipaylist/delete')}}" data-id="{{$module_data.name}}" data-view="reload" data-key="ids">
<i class="am-icon-trash-o"></i>
<span>删除</span>
</button>

View File

@ -1,40 +0,0 @@
{{include file="public/header" /}}
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/appminibaiduconfig/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/appminibaiduconfig/index')}}">
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_baidu_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_baidu_appid.only_tag}}" placeholder="{{$data.common_app_mini_baidu_appid.name}}" data-validation-message="{{$data.common_app_mini_baidu_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_appkey.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_baidu_appkey.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_baidu_appkey.only_tag}}" placeholder="{{$data.common_app_mini_baidu_appkey.name}}" data-validation-message="{{$data.common_app_mini_baidu_appkey.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_appkey.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_baidu_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_baidu_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_baidu_appsecret.name}}" data-validation-message="{{$data.common_app_mini_baidu_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_appsecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_baidu_title.only_tag}}" placeholder="{{$data.common_app_mini_baidu_title.name}}" data-validation-message="{{$data.common_app_mini_baidu_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_baidu_describe.only_tag}}" placeholder="{{$data.common_app_mini_baidu_describe.name}}" data-validation-message="{{$data.common_app_mini_baidu_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_describe.value}}"{{/if}} />
</div>
<div class="am-form-group am-form-group-refreshing">
<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>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -1,24 +0,0 @@
<!-- 继承公共的 form -->
{{extend name="public/module/form" /}}
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<button type="button" class="am-btn am-btn-secondary am-btn-xs am-icon-cloud-upload am-radius submit-ajax" data-url="{{:MyUrl('admin/appminibaidulist/created')}}" data-view="reload" data-msg="生成时间比较长,请不要关闭浏览器窗口!" data-am-modal="{target: '#payment-upload-win'}"> 生成</button>
<!-- 父级内容 -->
{__block__}
<!-- tips -->
{{if config('shopxo.is_develop') eq true}}
<div class="am-alert am-alert-warning am-radius" data-am-alert="">
当前为开发模式<br />
&nbsp;&nbsp;&nbsp;1. 发布小程序必须采用 https 协议,上线需确认 app.js 中 request_url 参数值是否正确。<br />
&nbsp;&nbsp;&nbsp;2. 发布小程序,建议关闭开发者模式、从正式环境重新生成小程序下载使用开发者工具上传审核。<br />
&nbsp;&nbsp;&nbsp;3. 非 https 环境下,在开发者工具 -> 顶部导航 -> 校验域名(关闭即可)。
</div>
{{else /}}
<div class="am-alert am-alert-warning am-radius" data-am-alert="">
1. 生成小程序必须在 https 协议下进行操作、请配置好服务器 ssl 并使用 https 协议登录后台管理生成小程序。<br />
2. 如需非 https 协议下生成小程序,请在 config/shopxo.php 文件中 is_develop值改为true开启开发者模式。
</div>
{{/if}}
{{/block}}

View File

@ -1,9 +0,0 @@
<!-- 操作栏 -->
<a class="am-btn am-btn-success am-btn-xs am-radius am-btn-block" href="{{$module_data.url}}">
<i class="am-icon-download"></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/appminibaidulist/delete')}}" data-id="{{$module_data.name}}" data-view="reload" data-key="ids">
<i class="am-icon-trash-o"></i>
<span>删除</span>
</button>

View File

@ -1,40 +0,0 @@
{{include file="public/header" /}}
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/appminiqqconfig/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/appminiqqconfig/index')}}">
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_qq_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_qq_appid.only_tag}}" placeholder="{{$data.common_app_mini_qq_appid.name}}" data-validation-message="{{$data.common_app_mini_qq_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_qq_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_qq_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_qq_appsecret.name}}" data-validation-message="{{$data.common_app_mini_qq_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_appsecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_apptoken.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_qq_apptoken.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_qq_apptoken.only_tag}}" placeholder="{{$data.common_app_mini_qq_apptoken.name}}" data-validation-message="{{$data.common_app_mini_qq_apptoken.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_apptoken.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_qq_title.only_tag}}" placeholder="{{$data.common_app_mini_qq_title.name}}" data-validation-message="{{$data.common_app_mini_qq_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_qq_describe.only_tag}}" placeholder="{{$data.common_app_mini_qq_describe.name}}" data-validation-message="{{$data.common_app_mini_qq_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_describe.value}}"{{/if}} />
</div>
<div class="am-form-group am-form-group-refreshing">
<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>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -1,24 +0,0 @@
<!-- 继承公共的 form -->
{{extend name="public/module/form" /}}
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<button type="button" class="am-btn am-btn-secondary am-btn-xs am-icon-cloud-upload am-radius submit-ajax" data-url="{{:MyUrl('admin/appminiqqlist/created')}}" data-view="reload" data-msg="生成时间比较长,请不要关闭浏览器窗口!" data-am-modal="{target: '#payment-upload-win'}"> 生成</button>
<!-- 父级内容 -->
{__block__}
<!-- tips -->
{{if config('shopxo.is_develop') eq true}}
<div class="am-alert am-alert-warning am-radius" data-am-alert="">
当前为开发模式<br />
&nbsp;&nbsp;&nbsp;1. 发布小程序必须采用 https 协议,上线需确认 app.js 中 request_url 参数值是否正确。<br />
&nbsp;&nbsp;&nbsp;2. 发布小程序,建议关闭开发者模式、从正式环境重新生成小程序下载使用开发者工具上传审核。<br />
&nbsp;&nbsp;&nbsp;3. 非 https 环境下,在开发者工具 -> 顶部导航 -> 详情 -> 不校验合法域名、web-view业务域名TLS版本以及HTTPS证书勾选改选项即可进行小程序开发调试
</div>
{{else /}}
<div class="am-alert am-alert-warning am-radius" data-am-alert="">
1. 生成小程序必须在 https 协议下进行操作、请配置好服务器 ssl 并使用 https 协议登录后台管理生成小程序。<br />
2. 如需非 https 协议下生成小程序,请在 config/shopxo.php 文件中 is_develop值改为true开启开发者模式。
</div>
{{/if}}
{{/block}}

View File

@ -1,49 +0,0 @@
{{include file="public/header" /}}
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/appminitoutiaoconfig/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/appminitoutiaoconfig/index')}}">
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_toutiao_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_toutiao_appid.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_appid.name}}" data-validation-message="{{$data.common_app_mini_toutiao_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_toutiao_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_toutiao_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_appsecret.name}}" data-validation-message="{{$data.common_app_mini_toutiao_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_appsecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_pay_merchant_id.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_toutiao_pay_merchant_id.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_toutiao_pay_merchant_id.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_pay_merchant_id.name}}" data-validation-message="{{$data.common_app_mini_toutiao_pay_merchant_id.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_pay_merchant_id.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_pay_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_toutiao_pay_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_toutiao_pay_appid.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_pay_appid.name}}" data-validation-message="{{$data.common_app_mini_toutiao_pay_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_pay_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_pay_secret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_toutiao_pay_secret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_toutiao_pay_secret.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_pay_secret.name}}" data-validation-message="{{$data.common_app_mini_toutiao_pay_secret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_pay_secret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_toutiao_title.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_title.name}}" data-validation-message="{{$data.common_app_mini_toutiao_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_toutiao_describe.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_describe.name}}" data-validation-message="{{$data.common_app_mini_toutiao_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_describe.value}}"{{/if}} />
</div>
<div class="am-form-group am-form-group-refreshing">
<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>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -1,24 +0,0 @@
<!-- 继承公共的 form -->
{{extend name="public/module/form" /}}
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<button type="button" class="am-btn am-btn-secondary am-btn-xs am-icon-cloud-upload am-radius submit-ajax" data-url="{{:MyUrl('admin/appminitoutiaolist/created')}}" data-view="reload" data-msg="生成时间比较长,请不要关闭浏览器窗口!" data-am-modal="{target: '#payment-upload-win'}"> 生成</button>
<!-- 父级内容 -->
{__block__}
<!-- tips -->
{{if config('shopxo.is_develop') eq true}}
<div class="am-alert am-alert-warning am-radius" data-am-alert="">
当前为开发模式<br />
&nbsp;&nbsp;&nbsp;1. 发布小程序必须采用 https 协议,上线需确认 app.js 中 request_url 参数值是否正确。<br />
&nbsp;&nbsp;&nbsp;2. 发布小程序,建议关闭开发者模式、从正式环境重新生成小程序下载使用开发者工具上传审核。<br />
&nbsp;&nbsp;&nbsp;3. 非 https 环境下,在开发者工具 -> 顶部导航 -> 详情 -> 不校验合法域名、web-view业务域名TLS版本以及HTTPS证书勾选改选项即可进行小程序开发调试
</div>
{{else /}}
<div class="am-alert am-alert-warning am-radius" data-am-alert="">
1. 生成小程序必须在 https 协议下进行操作、请配置好服务器 ssl 并使用 https 协议登录后台管理生成小程序。<br />
2. 如需非 https 协议下生成小程序,请在 config/shopxo.php 文件中 is_develop值改为true开启开发者模式。
</div>
{{/if}}
{{/block}}

View File

@ -1,9 +0,0 @@
<!-- 操作栏 -->
<a class="am-btn am-btn-success am-btn-xs am-radius am-btn-block" href="{{$module_data.url}}">
<i class="am-icon-download"></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/appminitoutiaolist/delete')}}" data-id="{{$module_data.name}}" data-view="reload" data-key="ids">
<i class="am-icon-trash-o"></i>
<span>删除</span>
</button>

View File

@ -1,36 +0,0 @@
{{include file="public/header" /}}
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/appminiweixinconfig/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/appminiweixinconfig/index')}}">
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_weixin_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_weixin_appid.only_tag}}" placeholder="{{$data.common_app_mini_weixin_appid.name}}" data-validation-message="{{$data.common_app_mini_weixin_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_weixin_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_weixin_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_weixin_appsecret.name}}" data-validation-message="{{$data.common_app_mini_weixin_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_appsecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_weixin_title.only_tag}}" placeholder="{{$data.common_app_mini_weixin_title.name}}" data-validation-message="{{$data.common_app_mini_weixin_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_weixin_describe.only_tag}}" placeholder="{{$data.common_app_mini_weixin_describe.name}}" data-validation-message="{{$data.common_app_mini_weixin_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_describe.value}}"{{/if}} />
</div>
<div class="am-form-group am-form-group-refreshing">
<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>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -1,24 +0,0 @@
<!-- 继承公共的 form -->
{{extend name="public/module/form" /}}
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<button type="button" class="am-btn am-btn-secondary am-btn-xs am-icon-cloud-upload am-radius submit-ajax" data-url="{{:MyUrl('admin/appminiweixinlist/created')}}" data-view="reload" data-msg="生成时间比较长,请不要关闭浏览器窗口!" data-am-modal="{target: '#payment-upload-win'}"> 生成</button>
<!-- 父级内容 -->
{__block__}
<!-- tips -->
{{if config('shopxo.is_develop') eq true}}
<div class="am-alert am-alert-warning am-radius" data-am-alert="">
当前为开发模式<br />
&nbsp;&nbsp;&nbsp;1. 发布小程序必须采用 https 协议,上线需确认 app.js 中 request_url 参数值是否正确。<br />
&nbsp;&nbsp;&nbsp;2. 发布小程序,建议关闭开发者模式、从正式环境重新生成小程序下载使用开发者工具上传审核。<br />
&nbsp;&nbsp;&nbsp;3. 非 https 环境下,在开发者工具 -> 右上角 -> 详情 -> 不校验合法域名、web-view业务域名、TLS 版本以及 HTTPS 证书(勾选改选项即可进行小程序开发调试)。
</div>
{{else /}}
<div class="am-alert am-alert-warning am-radius" data-am-alert="">
1. 生成小程序必须在 https 协议下进行操作、请配置好服务器 ssl 并使用 https 协议登录后台管理生成小程序。<br />
2. 如需非 https 协议下生成小程序,请在 config/shopxo.php 文件中 is_develop值改为true开启开发者模式。
</div>
{{/if}}
{{/block}}

View File

@ -1,9 +0,0 @@
<!-- 操作栏 -->
<a class="am-btn am-btn-success am-btn-xs am-radius am-btn-block" href="{{$module_data.url}}">
<i class="am-icon-download"></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/appminiweixinlist/delete')}}" data-id="{{$module_data.name}}" data-view="reload" data-key="ids">
<i class="am-icon-trash-o"></i>
<span>删除</span>
</button>

View File

@ -11,7 +11,7 @@
<div class="am-panel-hd">订单商品</div>
<div class="am-panel-bd">
{{if !empty($data['items'])}}
{{:ModuleInclude('order/module/info', $data)}}
{{:ModuleInclude('order/module/goods', $data)}}
{{else /}}
<div class="table-no"><i class="am-icon-warning"></i> 没有相关数据</div>
{{/if}}

View File

@ -1,12 +1,24 @@
<!-- 地址信息 -->
{{if !empty($module_data)}}
{{if in_array($module_data['order_model'], [0,2]) and !empty($module_data['address_data'])}}
{{$module_data.address_data.name}}<br />
{{$module_data.address_data.tel}}<br />
{{$module_data.address_data.province_name}}<br />
{{$module_data.address_data.city_name}}<br />
{{$module_data.address_data.county_name}}<br />
{{$module_data.address_data.address}}
<div>
{{if !empty($module_data['address_data']['alias'])}}
<span class="am-badge am-badge-secondary am-radius">{{$module_data.address_data.alias}}</span>
{{/if}}
<span>{{$module_data.address_data.name}}</span>
</div>
<div>{{$module_data.address_data.tel}}</div>
<div class="am-margin-top-xs">
<span>{{$module_data.address_data.province_name}}</span>
<span>{{$module_data.address_data.city_name}}</span>
<span>{{$module_data.address_data.county_name}}</span>
<span>{{$module_data.address_data.address}}</span>
{{if isset($module_data['address_data']['lng']) and isset($module_data['address_data']['lat']) and $module_data.address_data.lng gt 0 and $module_data.address_data.lat gt 0}}
<div class="am-margin-top-xs">
<button type="button" class="am-btn am-btn-success am-btn-xs am-radius am-icon-map-marker am-padding-xs submit-map-popup" data-lng="{{$module_data.address_data.lng}}" data-lat="{{$module_data.address_data.lat}}"> 查看位置</button>
</div>
{{/if}}
</div>
{{else /}}
<span class="cr-ddd">无信息</span>
{{/if}}

View File

@ -38,7 +38,7 @@
<!-- amazeui插件 -->
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-switch/amazeui.switch.min.js"></script>
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-chosen/amazeui.chosen.min.js"></script>
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-dialog/amazeui.dialog.min.js"></script>
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-dialog/amazeui.dialog.js"></script>
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-tagsinput/amazeui.tagsinput.min.js"></script>
<!-- 日期组件 -->

View File

@ -0,0 +1,16 @@
<!-- 继承公共的 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">
hello
</div>
</div>
{{/block}}

View File

@ -0,0 +1,9 @@
<!-- 继承公共的 form -->
{{extend name="public/module/form" /}}
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<a href="{{:MyUrl('admin/warehousegoods/saveinfo')}}" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus"> 新增</a>
<!-- 父级内容 -->
{__block__}
{{/block}}

View File

@ -0,0 +1,14 @@
<!-- 商品基础信息 -->
{{if !empty($module_data)}}
{{if !empty($module_data['goods'])}}
<div class="am-nbfc">
<a href="{{$module_data.goods.goods_url}}" target="_blank">
<img src="{{$module_data.goods.images}}" alt="{{$module_data.goods.title}}" class="am-img-thumbnail am-radius am-align-left am-margin-right-xs am-fl" width="60" height="60" />
</a>
<a class="am-text-top am-nowrap-initial" href="{{$module_data.goods.goods_url}}" target="_blank">{{$module_data.goods.title}}</a>
</div>
<p>{{$price_symbol}}{{$module_data.goods.price}}</p>
{{else /}}
商品信息异常
{{/if}}
{{/if}}

View File

@ -0,0 +1,13 @@
<!-- 操作栏 -->
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/warehousegoods/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/warehousegoods/saveinfo', array('wid'=>$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/warehousegoods/delete')}}" data-id="{{$module_data.id}}" data-key="ids">
<i class="am-icon-trash-o"></i>
<span>删除</span>
</button>

View File

@ -0,0 +1,79 @@
{{include file="public/header" /}}
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/warehouse/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/warehouse/index', $params)}}">
<legend>
<span class="am-text-default">仓库{{if empty($data['id'])}}添加{{else /}}编辑{{/if}}</span>
<a href="{{:MyUrl('admin/warehouse/index', $params)}}" class="am-fr am-text-sm am-margin-top-xs am-icon-mail-reply"> 返回</a>
</legend>
<div class="am-form-group">
<label>名称<span class="am-form-group-label-tips-must">必填</span></label>
<input type="text" name="name" placeholder="名称" minlength="2" maxlength="16" data-validation-message="名称格式 2~16 个字符之间" class="am-radius" {{if !empty($data)}} value="{{$data.name}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>别名<span class="am-form-group-label-tips">选填</span></label>
<input type="text" name="alias" placeholder="别名" minlength="0" maxlength="16" data-validation-message="别名格式最多 16 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.alias}}"{{/if}} />
</div>
<div class="am-form-group">
<label>权重<span class="am-form-group-label-tips">选填</span></label>
<input type="number" name="level" placeholder="权重" minlength="0" maxlength="16" data-validation-message="请输入有效权重数值" class="am-radius" {{if !empty($data)}} value="{{$data.level}}"{{/if}} />
</div>
<div class="am-form-group">
<label>联系人<span class="am-form-group-label-tips-must">必填</span></label>
<input type="text" name="contacts_name" placeholder="联系人" minlength="2" maxlength="16" data-validation-message="联系人格式 2~16 个字符之间" class="am-radius" {{if !empty($data)}} value="{{$data.contacts_name}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>联系电话<span class="am-form-group-label-tips-must">必填</span></label>
<input type="text" name="contacts_tel" placeholder="电话" minlength="6" maxlength="30" data-validation-message="电话格式有误" class="am-radius" {{if !empty($data)}} value="{{$data.contacts_tel}}"{{/if}} required />
</div>
{{include file="lib/region_linkage" /}}
<div class="am-form-group">
<label>详细地址<span class="am-form-group-label-tips-must">必填</span></label>
<div class="am-input-group am-input-group-sm">
<input type="hidden" name="lng" id="form-lng" {{if !empty($data)}} value="{{$data.lng}}"{{/if}} />
<input type="hidden" name="lat" id="form-lat" {{if !empty($data)}} value="{{$data.lat}}"{{/if}} />
<input type="text" name="address" id="form-address" placeholder="详细地址" minlength="2" maxlength="80" data-validation-message="详细地址格式 1~80 个字符之间" class="am-radius" {{if !empty($data)}} value="{{$data.address}}"{{/if}} required />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius" type="button" id="map-location-submit"><span class="am-icon-map-marker"></span> 定位</button>
</span>
</div>
<div id="map" data-level="17" class="am-margin-top-xs"></div>
</div>
<div class="am-form-group">
<label class="block">是否默认</label>
<input name="is_default" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="49" data-am-switch {{if isset($data['is_default']) and $data['is_default'] eq 1}}checked="true"{{/if}} />
</div>
<div class="am-form-group">
<label class="block">是否启用</label>
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="49" data-am-switch {{if isset($data['is_enable']) and $data['is_enable'] eq 1}}checked="true"{{/if}} />
</div>
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<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>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
<script type="text/javascript">
$(function()
{
// 百度地图初始化
MapInit({{if !empty($data['lng'])}}{{$data['lng']}}{{else /}}116.400244{{/if}},{{if !empty($data['lat'])}}{{$data['lat']}}{{else /}}39.92556{{/if}});
});
</script>

View File

@ -11,6 +11,70 @@
// 应用公共文件
/**
* 后台管理权限校验方法
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-12
* @desc description
* @param [string] $controller [控制器(默认读取当前)]
* @param [string] $action [方法(默认读取当前)]
* @param [array] $unwanted_power [不校验权限的方法(默认空)]
*/
function AdminIsPower($controller = null, $action = null, $unwanted_power = [])
{
// 控制器/方法
$controller = strtolower(empty($controller) ? request()->controller() : $controller);
$action = strtolower(empty($action) ? request()->action() : $action);
// 管理员
$admin = session('admin');
if(!empty($admin))
{
// 不需要校验权限的方法
if(!empty($unwanted_power) && in_array($action, $unwanted_power))
{
return true;
}
// 权限
// 角色组权限列表校验
$power = isset($admin['id']) ? cache(config('cache_admin_power_key').$admin['id']) : [];
if(!empty($power) && is_array($power) && in_array($controller.'_'.$action, $power))
{
return true;
}
}
return false;
}
/**
* 获取数组字段名称
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-12
* @desc description
* @param [array] $data [数组(一维或二维数组)]
*/
function ArrayKeys($data)
{
if(is_array($data))
{
// 是否二维数组
if(isset($data[0]) && is_array($data[0]))
{
return array_keys($data[0]);
}
// 一维数组
return array_keys($data);
}
return [];
}
/**
* 商品销售模式
* @author Devil

View File

@ -314,19 +314,8 @@
<div class="am-panel-bd">
<span>{{$data.address_data.name}}, {{$data.address_data.tel}}, {{$data.address_data.province_name}} {{$data.address_data.city_name}} {{$data.address_data.county_name}} {{$data.address_data.address}}</span>
{{if $data.order_model eq 2 and $data.address_data.lng gt 0 and $data.address_data.lat gt 0}}
<button type="button" class="am-btn am-btn-success am-radius am-icon-map-marker extraction-receive-map-submit" data-lng="{{$data.address_data.lng}}" data-lat="{{$data.address_data.lat}}"> 查看位置</button>
<div class="am-popup" id="popup-extraction-receive-map">
<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">
<div id="map" data-level="17"></div>
</div>
</div>
</div>
{{/if}}
<button type="button" class="am-btn am-btn-success am-radius am-icon-map-marker submit-map-popup" data-lng="{{$data.address_data.lng}}" data-lat="{{$data.address_data.lat}}"> 查看位置</button>
{{/if}}
</div>
</div>
{{/if}}

View File

@ -37,7 +37,7 @@
<!-- amazeui插件 -->
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-switch/amazeui.switch.min.js?v={{:MyC('home_static_cache_version')}}"></script>
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-chosen/amazeui.chosen.min.js?v={{:MyC('home_static_cache_version')}}"></script>
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-dialog/amazeui.dialog.min.js?v={{:MyC('home_static_cache_version')}}"></script>
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-dialog/amazeui.dialog.js?v={{:MyC('home_static_cache_version')}}"></script>
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/common/lib/amazeui-tagsinput/amazeui.tagsinput.min.js?v={{:MyC('home_static_cache_version')}}"></script>
<!-- 图像裁剪插件 -->

View File

@ -128,8 +128,17 @@ return array(
'h5' => array('value' => 'h5', 'name' => 'H5手机网站'),
'ios' => array('value' => 'ios', 'name' => '苹果APP'),
'android' => array('value' => 'android', 'name' => '安卓APP'),
'alipay' => array('value' => 'alipay', 'name' => '支付宝小程序'),
'weixin' => array('value' => 'weixin', 'name' => '微信小程序'),
'alipay' => array('value' => 'alipay', 'name' => '支付宝小程序'),
'baidu' => array('value' => 'baidu', 'name' => '百度小程序'),
'toutiao' => array('value' => 'toutiao', 'name' => '头条小程序'),
'qq' => array('value' => 'qq', 'name' => 'QQ小程序'),
),
// 小程序平台
'common_appmini_type' => array(
'weixin' => array('value' => 'weixin', 'name' => '微信小程序'),
'alipay' => array('value' => 'alipay', 'name' => '支付宝小程序'),
'baidu' => array('value' => 'baidu', 'name' => '百度小程序'),
'toutiao' => array('value' => 'toutiao', 'name' => '头条小程序'),
'qq' => array('value' => 'qq', 'name' => 'QQ小程序'),

View File

@ -202,9 +202,30 @@ class GoodsCommentsService
$data = Db::name('GoodsComments')->where($where)->limit($m, $n)->order($order_by)->select();
if(!empty($data))
{
// 获取商品信息
$goods_params = [
'where' => [
'id' => array_unique(array_column($data, 'goods_id')),
'is_delete_time' => 0,
],
'field' => 'id,title,images,price,min_price',
];
$ret = GoodsService::GoodsList($goods_params);
$goods = [];
if(!empty($ret['data']))
{
foreach($ret['data'] as $g)
{
$goods[$g['id']] = $g;
}
}
// 静态数据
$common_is_text_list = lang('common_is_text_list');
$common_goods_comments_rating_list = lang('common_goods_comments_rating_list');
$common_goods_comments_business_type_list = lang('common_goods_comments_business_type_list');
$comments_rating_list = lang('common_goods_comments_rating_list');
$comments_business_type_list = lang('common_goods_comments_business_type_list');
// 数据处理
foreach($data as &$v)
{
// 用户信息
@ -233,19 +254,11 @@ class GoodsCommentsService
}
}
// 获取商品信息
$goods_params = [
'where' => [
'id' => $v['goods_id'],
'is_delete_time' => 0,
],
'field' => 'id,title,images,price,min_price',
];
$ret = GoodsService::GoodsList($goods_params);
$v['goods'] = isset($ret['data'][0]) ? $ret['data'][0] : [];
// 商品信息
$v['goods'] = isset($goods[$v['goods_id']]) ? $goods[$v['goods_id']] : [];
// 业务类型
$v['business_type_text'] = array_key_exists($v['business_type'], $common_goods_comments_business_type_list) ? $common_goods_comments_business_type_list[$v['business_type']]['name'] : null;
$v['business_type_text'] = array_key_exists($v['business_type'], $comments_business_type_list) ? $comments_business_type_list[$v['business_type']]['name'] : null;
$msg = null;
switch($v['business_type'])
{
@ -256,8 +269,8 @@ class GoodsCommentsService
$v['msg'] = empty($msg) ? null : $msg;
// 评分
$v['rating_text'] = $common_goods_comments_rating_list[$v['rating']]['name'];
$v['rating_badge'] = $common_goods_comments_rating_list[$v['rating']]['badge'];
$v['rating_text'] = $comments_rating_list[$v['rating']]['name'];
$v['rating_badge'] = $comments_rating_list[$v['rating']]['badge'];
// 是否
$v['is_reply_text'] = isset($common_is_text_list[$v['is_reply']]) ? $common_is_text_list[$v['is_reply']]['name'] : '';

View File

@ -193,7 +193,7 @@ class IntegralService
$order = Db::name('Order')->field('id,user_id,status')->find(intval($params['order_id']));
if(empty($order))
{
return DataReturn('订单不存在或已删除,止操作', 0);
return DataReturn('订单不存在或已删除,止操作', 0);
}
if(!in_array($order['status'], [4]))
{
@ -204,7 +204,7 @@ class IntegralService
$user = Db::name('User')->field('id')->find($order['user_id']);
if(empty($user))
{
return DataReturn('用户不存在或已删除,止操作', 0);
return DataReturn('用户不存在或已删除,止操作', 0);
}
// 获取订单商品
@ -257,6 +257,11 @@ class IntegralService
{
// 请求参数
$p = [
[
'checked_type' => 'empty',
'key_name' => 'order_id',
'error_msg' => '订单id有误',
],
[
'checked_type' => 'empty',
'key_name' => 'order_detail_id',
@ -269,18 +274,25 @@ class IntegralService
return DataReturn($ret, -1);
}
// 订单是否存在完成状态(订单赠送积分的条件是完成赠送)
$order_status_history = Db::name('OrderStatusHistory')->where(['order_id'=>intval($params['order_id'])])->column('new_status');
if(empty($order_status_history) || !in_array(4, $order_status_history))
{
return DataReturn('订单状态有误或未存在完成状态,终止操作', 0);
}
// 订单详情
$order_detail = Db::name('OrderDetail')->field('id,user_id,order_id,goods_id,total_price,refund_price')->find(intval($params['order_detail_id']));
if(empty($order_detail))
{
return DataReturn('订单详情不存在或已删除,中止操作', 0);
return DataReturn('订单详情不存在或已删除,止操作', 0);
}
// 获取用户信息
$user = Db::name('User')->field('id,integral')->find($order_detail['user_id']);
if(empty($user))
{
return DataReturn('用户不存在或已删除,止操作', 0);
return DataReturn('用户不存在或已删除,止操作', 0);
}
// 获取商品相关信息

View File

@ -972,7 +972,7 @@ class OrderAftersaleService
}
// 积分释放
$ret = IntegralService::OrderGoodsIntegralRollback(['order_detail_id'=>$aftersale['order_detail_id']]);
$ret = IntegralService::OrderGoodsIntegralRollback(['order_id'=>$order['data']['id'], 'order_detail_id'=>$aftersale['order_detail_id']]);
if($ret['code'] != 0)
{
Db::rollback();

View File

@ -0,0 +1,202 @@
<?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\service;
use think\Db;
use think\facade\Hook;
use app\service\ResourcesService;
use app\service\GoodsService;
use app\service\UserService;
/**
* 仓库商品服务层
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-07
* @desc description
*/
class WarehouseGoodsService
{
/**
* 数据列表
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-11
* @desc description
* @param [array] $params [输入参数]
*/
public static function WarehouseGoodsList($params = [])
{
$where = empty($params['where']) ? [] : $params['where'];
$field = empty($params['field']) ? '*' : $params['field'];
$m = isset($params['m']) ? intval($params['m']) : 0;
$n = isset($params['n']) ? intval($params['n']) : 10;
$order_by = 'id desc';
$data = Db::name('WarehouseGoods')->field($field)->where($where)->order($order_by)->limit($m, $n)->select();
if(!empty($data))
{
// 字段列表
$keys = ArrayKeys($data);
// 获取商品信息
if(in_array('goods_id', $keys))
{
$goods_params = [
'where' => [
'id' => array_unique(array_column($data, 'goods_id')),
'is_delete_time' => 0,
],
'field' => 'id,title,images,price,min_price',
];
$ret = GoodsService::GoodsList($goods_params);
$goods = [];
if(!empty($ret['data']))
{
foreach($ret['data'] as $g)
{
$goods[$g['id']] = $g;
}
}
}
// 仓库名称
if(in_array('warehouse_id', $keys))
{
$warehouse = Db::name('Warehouse')->where(['id'=>array_column($data, 'warehouse_id')])->column('name', 'id');
}
// 数据处理
foreach($data as &$v)
{
// 用户
if(isset($v['user_id']))
{
$v['user'] = UserService::GetUserViewInfo($v['user_id']);
}
// 商品信息
if(isset($v['goods_id']))
{
$v['goods'] = isset($goods[$v['goods_id']]) ? $goods[$v['goods_id']] : [];
}
// 仓库
if(isset($v['warehouse_id']))
{
$v['warehouse_name'] = isset($warehouse[$v['warehouse_id']]) ? $warehouse[$v['warehouse_id']] : '';
}
// 时间
if(isset($v['add_time']))
{
$v['add_time'] = date('Y-m-d H:i:s', $v['add_time']);
}
if(isset($v['upd_time']))
{
$v['upd_time'] = empty($v['upd_time']) ? '' : date('Y-m-d H:i:s', $v['upd_time']);
}
}
}
return DataReturn('处理成功', 0, $data);
}
/**
* 总数
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-11
* @desc description
* @param [array] $where [条件]
*/
public static function WarehouseGoodsTotal($where = [])
{
return (int) Db::name('WarehouseGoods')->where($where)->count();
}
/**
* 删除
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-12-18
* @desc description
* @param [array] $params [输入参数]
*/
public static function WarehouseGoodsDelete($params = [])
{
// 参数是否有误
if(empty($params['ids']))
{
return DataReturn('商品id有误', -1);
}
// 是否数组
if(!is_array($params['ids']))
{
$params['ids'] = explode(',', $params['ids']);
}
// 删除操作
if(Db::name('WarehouseGoods')->where(['id'=>$params['ids']])->delete())
{
return DataReturn('删除成功');
}
return DataReturn('删除失败', -100);
}
/**
* 状态更新
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-07
* @desc description
* @param [array] $params [输入参数]
*/
public static function WarehouseGoodsStatusUpdate($params = [])
{
// 请求参数
$p = [
[
'checked_type' => 'empty',
'key_name' => 'id',
'error_msg' => '操作id有误',
],
[
'checked_type' => 'empty',
'key_name' => 'field',
'error_msg' => '操作字段有误',
],
[
'checked_type' => 'in',
'key_name' => 'state',
'checked_data' => [0,1],
'error_msg' => '状态有误',
],
];
$ret = ParamsChecked($params, $p);
if($ret !== true)
{
return DataReturn($ret, -1);
}
// 数据更新
if(Db::name('WarehouseGoods')->where(['id'=>intval($params['id'])])->update([$params['field']=>intval($params['state']), 'upd_time'=>time()]))
{
return DataReturn('编辑成功');
}
return DataReturn('编辑失败', -100);
}
}
?>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,3 @@
.am-panel .am-form-group:last-child {
border-bottom: 0;
}

File diff suppressed because one or more lines are too long

View File

@ -18,10 +18,7 @@ ul.home_site_user_register_bg_images-images-view li {
/**
*
*/
.content-right .am-panel .am-panel-bd .am-form-group:last-child {
margin-bottom: 0;
}
.content-right .am-panel .am-panel-bd .am-form-group {
.am-panel .am-form-group:last-child {
border-bottom: 0;
}

View File

@ -62,17 +62,31 @@ form.am-form .am-form-group-refreshing, .plug-file-upload-view, .content-app-ite
#common-prompt.prompt-bottom { bottom: 0; }
/**
* iframe
*
*/
.popup-iframe-not-title {
#map {
width: 100%;
height: 250px;
}
.map-popup #map {
height: 100%;
}
/**
*
*/
.am-popup .am-popup-bd {
height: 100%;
}
.popup-not-title {
padding: 25px;
background: transparent;
}
.popup-iframe-not-title .am-popup-inner {
.popup-not-title .am-popup-inner {
padding-top: 0;
background: #fff;
}
.popup-iframe-not-title .am-popup-inner .am-close {
.popup-not-title .am-popup-inner .am-close {
position: absolute;
right: 10px;
top: 10px;
@ -85,11 +99,13 @@ form.am-form .am-form-group-refreshing, .plug-file-upload-view, .content-app-ite
border: 3px solid #f4f4f4;
width: 32px;
height: 32px;
z-index: 1;
}
.popup-iframe-not-title .am-popup-inner .am-close:hover {
.popup-not-title .am-popup-inner .am-close:hover {
background: #f22a30;
}
/**
* iframe
*/
@ -580,12 +596,4 @@ button.colorpicker-submit img {
}
.region-linkage .chosen-select .chosen-single {
width: 100%;
}
/**
*
*/
#map {
width: 100%;
height: 250px;
}

View File

@ -789,33 +789,12 @@ function CheckVideo()
*/
function ModalLoad(url, title, tag, class_tag)
{
tag = tag || 'common-popup-modal';
if($('#'+tag).length > 0)
{
$('#'+tag).remove();
}
// 是否存在标题
if((title || null) != null)
{
var html = '<div class="am-popup popup-iframe '+class_tag+'" id="'+tag+'">';
html += '<div class="am-popup-inner">';
html += '<div class="am-popup-hd">';
html += '<h4 class="am-popup-title">'+title+'</h4>';
html += '<span data-am-modal-close class="am-close am-icon-times"></span>';
html += '</div>';
} else {
var html = '<div class="am-popup popup-iframe popup-iframe-not-title '+class_tag+'" id="'+tag+'">';
html += '<div class="am-popup-inner">';
html += '<span data-am-modal-close class="am-close am-close-alt am-icon-times am-close-spin"></span>';
}
// 弹窗内容
html += '<iframe src="'+url+'" width="100%" height="100%"></iframe>';
html += '</div>';
html += '</div>';
$('body').append(html);
$('#'+tag).modal();
class_tag = class_tag || '';
AMUI.dialog.popup({
title: title || '',
content: '<iframe src="'+url+'" width="100%" height="100%"></iframe>',
class: ' popup-iframe '+class_tag
});
}
/**
@ -2458,4 +2437,24 @@ $(function()
ModalLoad(url);
});
// 地图弹窗
$(document).on('click', '.submit-map-popup', function()
{
// 参数
var lng = $(this).data('lng') || null;
var lat = $(this).data('lat') || null;
if(lng == null || lat == null)
{
Prompt('坐标有误');
return false;
}
// 弹窗
AMUI.dialog.popup({
content: '<div id="map" data-level="17"></div>',
class: 'map-popup'
});
MapInit(lng, lat, null, null, false);
});
});

View File

@ -129,19 +129,30 @@ dialog.actions = function(options) {
dialog.popup = function(options) {
options = options || {};
options.title = options.title || '标题';
options.title = options.title || null;
options.content = options.content || '正文';
options.class = options.class || '';
options.onClose = options.onClose || function() {
};
var html = [];
html.push('<div class="am-popup">');
html.push('<div class="am-popup-inner">');
html.push('<div class="am-popup-hd">');
html.push('<h4 class="am-popup-title">' + options.title + '</h4>');
html.push('<span data-am-modal-close class="am-close">&times;</span>');
html.push('</div>');
html.push('<div class="am-popup-bd">' + options.content + '</div>');
// 是否存在标题
if(options.title != null)
{
html.push('<div class="am-popup '+options.class+'">');
html.push('<div class="am-popup-inner">');
html.push('<div class="am-popup-hd">');
html.push('<h4 class="am-popup-title">' + options.title + '</h4>');
html.push('<span data-am-modal-close class="am-close">&times;</span>');
html.push('</div>');
html.push('<div class="am-popup-bd">' + options.content + '</div>');
} else {
html.push('<div class="am-popup '+options.class+' popup-not-title">');
html.push('<div class="am-popup-inner">');
html.push('<span data-am-modal-close class="am-close am-close-alt am-icon-times am-close-spin"></span>');
html.push(options.content);
}
html.push('</div> ');
html.push('</div>');
return $(html.join('')).appendTo('body').modal()

View File

@ -1,2 +0,0 @@
/*! amazeui-dialog v0.0.2 | by Amaze UI Team | (c) 2016 AllMobilize, Inc. | Licensed under MIT | 2016-06-22T10:19:33+0800 */
!function o(n,a,i){function s(d,l){if(!a[d]){if(!n[d]){var e="function"==typeof require&&require;if(!l&&e)return e(d,!0);if(t)return t(d,!0);var u=new Error("Cannot find module '"+d+"'");throw u.code="MODULE_NOT_FOUND",u}var m=a[d]={exports:{}};n[d][0].call(m.exports,function(o){var a=n[d][1][o];return s(a?a:o)},m,m.exports,o,n,a,i)}return a[d].exports}for(var t="function"==typeof require&&require,d=0;d<i.length;d++)s(i[d]);return s}({1:[function(o,n,a){(function(o){"use strict";var a="undefined"!=typeof window?window.jQuery:"undefined"!=typeof o?o.jQuery:null,i="undefined"!=typeof window?window.AMUI:"undefined"!=typeof o?o.AMUI:null,s=s||{};s.alert=function(o){o=o||{},o.title=o.title||"提示",o.content=o.content||"提示内容",o.onConfirm=o.onConfirm||function(){};var n=[];return n.push('<div class="am-modal am-modal-alert" tabindex="-1">'),n.push('<div class="am-modal-dialog">'),n.push('<div class="am-modal-hd">'+o.title+"</div>"),n.push('<div class="am-modal-bd">'+o.content+"</div>"),n.push('<div class="am-modal-footer"><span class="am-modal-btn">确定</span></div>'),n.push("</div>"),n.push("</div>"),a(n.join("")).appendTo("body").modal().on("closed.modal.amui",function(){o.onConfirm(),a(this).remove()})},s.confirm=function(o){o=o||{},o.title=o.title||"提示",o.content=o.content||"提示内容",o.onConfirm=o.onConfirm||function(){},o.onCancel=o.onCancel||function(){};var n=[];return n.push('<div class="am-modal am-modal-confirm" tabindex="-1">'),n.push('<div class="am-modal-dialog">'),n.push('<div class="am-modal-hd">'+o.title+"</div>"),n.push('<div class="am-modal-bd">'+o.content+"</div>"),n.push('<div class="am-modal-footer">'),n.push('<span class="am-modal-btn" data-am-modal-cancel>取消</span>'),n.push('<span class="am-modal-btn" data-am-modal-confirm>确定</span>'),n.push("</div>"),n.push("</div>"),n.push("</div>"),a(n.join("")).appendTo("body").modal({onConfirm:function(e){o.onConfirm(e)},onCancel:function(){o.onCancel()}}).on("closed.modal.amui",function(){a(this).remove()})},s.loading=function(o){o=o||{},o.title=o.title||"正在载入...";var n=[];return n.push('<div class="am-modal am-modal-loading am-modal-no-btn" tabindex="-1" id="my-modal-loading">'),n.push('<div class="am-modal-dialog">'),n.push('<div class="am-modal-hd">'+o.title+"</div>"),n.push('<div class="am-modal-bd">'),n.push('<span class="am-icon-spinner am-icon-spin"></span>'),n.push("</div>"),n.push("</div>"),n.push("</div>"),a(n.join("")).appendTo("body").modal().on("closed.modal.amui",function(){a(this).remove()})},s.actions=function(o){o=o||{},o.title=o.title||"您想整咋样?",o.items=o.items||[],o.onSelected=o.onSelected||function(){i.close()};var n=[];n.push('<div class="am-modal-actions">'),n.push('<div class="am-modal-actions-group">'),n.push('<ul class="am-list">'),n.push('<li class="am-modal-actions-header">'+o.title+"</li>"),o.items.forEach(function(o,a){n.push('<li index="'+a+'">'+o.content+"</li>")}),n.push("</ul>"),n.push("</div>"),n.push('<div class="am-modal-actions-group">'),n.push('<button class="am-btn am-btn-secondary am-btn-block" data-am-modal-close>取消</button>'),n.push("</div>"),n.push("</div>");var i=a(n.join("")).appendTo("body");return i.find(".am-list>li").bind("click",function(n){o.onSelected(a(this).attr("index"),this)}),{show:function(){i.modal("open")},close:function(){i.modal("close")}}},s.popup=function(o){o=o||{},o.title=o.title||"标题",o.content=o.content||"正文",o.onClose=o.onClose||function(){};var n=[];return n.push('<div class="am-popup">'),n.push('<div class="am-popup-inner">'),n.push('<div class="am-popup-hd">'),n.push('<h4 class="am-popup-title">'+o.title+"</h4>"),n.push('<span data-am-modal-close class="am-close">&times;</span>'),n.push("</div>"),n.push('<div class="am-popup-bd">'+o.content+"</div>"),n.push("</div> "),n.push("</div>"),a(n.join("")).appendTo("body").modal().on("closed.modal.amui",function(){a(this).remove(),o.onClose()})},n.exports=i.dialog=s}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1]);

View File

@ -83,12 +83,4 @@ $(function()
}
}
}
// 订单详情自提点地图查看
$('.extraction-receive-map-submit').on('click', function()
{
$('#popup-extraction-receive-map').modal();
MapInit($(this).data('lng'), $(this).data('lat'), null, null, false);
});
});